grafana 286 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. commit 477f66f56bdd7f310d439ac428cb646fbb9b1949
  2. Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
  3. Date: Fri Aug 22 15:32:20 2014 +0200
  4. dashobard load/save work, and began register view
  5. diff --git a/src/app/partials/pro/login.html b/src/app/partials/pro/login.html
  6. index 92f1c4e89..22340b89f 100644
  7. --- a/src/app/partials/pro/login.html
  8. +++ b/src/app/partials/pro/login.html
  9. @@ -42,6 +42,12 @@
  10. <strong>Login failed:</strong> {{loginError}}
  11. </div>
  12. </form>
  13. +
  14. + <div class="register-box text-center">
  15. + <h3>If you do not already have an account<h3>
  16. + </a> <a href="/register" class="btn btn-info btn-large">Sign up now!</a>
  17. + </div>
  18. +
  19. </div>
  20. diff --git a/src/app/partials/pro/register.html b/src/app/partials/pro/register.html
  21. new file mode 100644
  22. index 000000000..3a3ffe0b4
  23. --- /dev/null
  24. +++ b/src/app/partials/pro/register.html
  25. @@ -0,0 +1,48 @@
  26. +
  27. +<div class="container">
  28. +
  29. + <div class="login-box">
  30. +
  31. + <div class="login-box-logo">
  32. + <img src="/img/logo_transparent_200x75.png">
  33. + <h3>Grafana account registration</32>
  34. + </div>
  35. +
  36. + <form name="loginForm" class="form-horizontal">
  37. + <div class="row-fluid">
  38. + <div class="span8">
  39. + <div class="control-group">
  40. + <label class="control-label" for="inputEmail">Email</label>
  41. + <div class="controls">
  42. + <input type="text" required ng-model="loginModel.email" id="inputEmail" placeholder="Email">
  43. + </div>
  44. + </div>
  45. + <div class="control-group">
  46. + <label class="control-label" for="inputPassword">Password</label>
  47. + <div class="controls">
  48. + <input type="password" required ng-model="loginModel.password" id="inputPassword" placeholder="Password">
  49. + </div>
  50. + </div>
  51. + <div class="control-group">
  52. + <label class="control-label" for="inputPassword2">Confirm password</label>
  53. + <div class="controls">
  54. + <input type="password" required ng-model="loginModel.password2" id="password2" placeholder="Confirm password">
  55. + </div>
  56. + </div>
  57. + </div>
  58. + <div class="span4">
  59. + <button type="submit" ng-click="login()" class="btn btn-success btn-large">
  60. + <i class="icon-lock"></i>
  61. + Sign up
  62. + </button>
  63. + </div>
  64. + </div>
  65. + <div class="alert alert-error" ng-show="loginError">
  66. + <button type="button" class="close" data-dismiss="alert">&times;</button>
  67. + <strong>Login failed:</strong> {{loginError}}
  68. + </div>
  69. + </form>
  70. + </div>
  71. +
  72. +
  73. +</div>
  74. diff --git a/src/app/routes/p_dashboard.js b/src/app/routes/p_dashboard.js
  75. index ef5da131e..8c4b8d438 100644
  76. --- a/src/app/routes/p_dashboard.js
  77. +++ b/src/app/routes/p_dashboard.js
  78. @@ -13,7 +13,7 @@ function (angular) {
  79. controller : 'DashFromDBProvider',
  80. reloadOnSearch: false,
  81. })
  82. - .when('/dashboard/:id', {
  83. + .when('/dashboard/db/:id', {
  84. templateUrl: '/app/partials/dashboard.html',
  85. controller : 'DashFromDBProvider',
  86. reloadOnSearch: false,
  87. diff --git a/src/app/routes/p_login.js b/src/app/routes/p_login.js
  88. index 127c4d47f..e97bba49a 100644
  89. --- a/src/app/routes/p_login.js
  90. +++ b/src/app/routes/p_login.js
  91. @@ -11,9 +11,47 @@ function (angular) {
  92. .when('/login', {
  93. templateUrl: 'app/partials/pro/login.html',
  94. controller : 'LoginCtrl',
  95. + })
  96. + .when('/register', {
  97. + templateUrl: 'app/partials/pro/register.html',
  98. + controller : 'RegisterCtrl',
  99. });
  100. });
  101. + module.controller('RegisterCtrl', function($scope, $http, $location, $routeParams) {
  102. + $scope.loginModel = {};
  103. +
  104. + $scope.init = function() {
  105. + if ($routeParams.logout) {
  106. + $scope.logout();
  107. + }
  108. + };
  109. +
  110. + $scope.register = function() {
  111. + delete $scope.registerError;
  112. +
  113. + if (!$scope.loginForm.$valid) {
  114. + return;
  115. + }
  116. +
  117. + $http.post('/api/register/user', $scope.loginModel).then(function() {
  118. + $scope.emitAppEvent('logged-in');
  119. + $location.path('/');
  120. + }, function(err) {
  121. + if (err.status === 401) {
  122. + $scope.registerError = "Username or password is incorrect";
  123. + }
  124. + else {
  125. + $scope.loginError = "Unexpected error";
  126. + }
  127. + });
  128. + };
  129. +
  130. + $scope.init();
  131. +
  132. + });
  133. +
  134. +
  135. module.controller('LoginCtrl', function($scope, $http, $location, $routeParams, alertSrv) {
  136. $scope.loginModel = {};
  137. diff --git a/src/app/services/grafana/grafanaDatasource.js b/src/app/services/grafana/grafanaDatasource.js
  138. index 9b83e4f36..684d0abe2 100644
  139. --- a/src/app/services/grafana/grafanaDatasource.js
  140. +++ b/src/app/services/grafana/grafanaDatasource.js
  141. @@ -49,7 +49,7 @@ function (angular) {
  142. return $http.post('/api/dashboard/', { dashboard: dashboard })
  143. .then(function(result) {
  144. - return { title: dashboard.title, url: '/dashboard/' + result.data.slug };
  145. + return { title: dashboard.title, url: '/dashboard/db/' + result.data.slug };
  146. }, function(data) {
  147. throw "Failed to search: " + data;
  148. });