Commit 9c8d5082 by utkarshcmu

Made API handling better, removed unused components

parent 8f42bec2
...@@ -20,13 +20,20 @@ func SaveUserPreferences(c *middleware.Context, cmd m.SavePreferencesCommand) Re ...@@ -20,13 +20,20 @@ func SaveUserPreferences(c *middleware.Context, cmd m.SavePreferencesCommand) Re
} }
func GetUserPreferences(c *middleware.Context) Response { // GET /api/user/prefs
func GetUserPreferences(c *middleware.Context) {
query := m.GetPreferencesQuery{PrefId: c.UserId, PrefType: `user`} query := m.GetPreferencesQuery{PrefId: c.UserId, PrefType: `user`}
if err := bus.Dispatch(&query); err != nil { if err := bus.Dispatch(&query); err != nil {
return ApiError(500, "Failed to get user", err) c.JsonApiErr(500, "Failed to get preferences for user", err)
} }
return Json(200, query.Result) dto := m.PreferencesDTO{
PrefId: query.Result.PrefId,
PrefType: query.Result.PrefType,
PrefData: query.Result.PrefData,
}
c.JSON(200, dto)
} }
...@@ -6,7 +6,7 @@ import ( ...@@ -6,7 +6,7 @@ import (
// Typed errors // Typed errors
var ( var (
ErrPreferenceNotFound = errors.New("Preference not found") ErrPreferencesNotFound = errors.New("Preferences not found")
) )
type Preferences struct { type Preferences struct {
...@@ -23,7 +23,7 @@ type GetPreferencesQuery struct { ...@@ -23,7 +23,7 @@ type GetPreferencesQuery struct {
PrefId int64 PrefId int64
PrefType string PrefType string
Result PreferencesDTO Result *Preferences
} }
// --------------------- // ---------------------
......
...@@ -22,10 +22,11 @@ func GetPreferences(query *m.GetPreferencesQuery) error { ...@@ -22,10 +22,11 @@ func GetPreferences(query *m.GetPreferencesQuery) error {
if resultsErr != nil { if resultsErr != nil {
return resultsErr return resultsErr
} }
query.Result = m.PreferencesDTO{
PrefId: prefResults[0].PrefId, if len(prefResults) > 0 {
PrefType: prefResults[0].PrefType, query.Result = &prefResults[0]
PrefData: prefResults[0].PrefData, } else {
query.Result = new(m.Preferences)
} }
return nil return nil
...@@ -45,15 +46,25 @@ func SavePreferences(cmd *m.SavePreferencesCommand) error { ...@@ -45,15 +46,25 @@ func SavePreferences(cmd *m.SavePreferencesCommand) error {
return resultsErr return resultsErr
} }
var matchedPref m.Preferences var savePref m.Preferences
matchedPref = prefResults[0] var affectedRows int64
matchedPref.PrefData = cmd.PrefData var saveErr error
affectedRows, updateErr := sess.Id(matchedPref.Id).Update(&matchedPref)
if len(prefResults) == 0 {
savePref.PrefId = cmd.PrefId
savePref.PrefType = cmd.PrefType
savePref.PrefData = cmd.PrefData
affectedRows, saveErr = sess.Insert(&savePref)
} else {
savePref = prefResults[0]
savePref.PrefData = cmd.PrefData
affectedRows, saveErr = sess.Id(savePref.Id).Update(&savePref)
}
if affectedRows == 0 { if affectedRows == 0 {
return m.ErrPreferenceNotFound return m.ErrPreferencesNotFound
} }
return updateErr return saveErr
}) })
} }
...@@ -39,7 +39,6 @@ export class SideMenuCtrl { ...@@ -39,7 +39,6 @@ export class SideMenuCtrl {
this.orgMenu = [ this.orgMenu = [
{section: 'You', cssClass: 'dropdown-menu-title'}, {section: 'You', cssClass: 'dropdown-menu-title'},
{text: 'Profile', url: this.getUrl('/profile')}, {text: 'Profile', url: this.getUrl('/profile')},
{text: 'Preferences', url: this.getUrl('/preferences')},
]; ];
if (this.isSignedIn) { if (this.isSignedIn) {
......
...@@ -89,10 +89,6 @@ function setupAngularRoutes($routeProvider, $locationProvider) { ...@@ -89,10 +89,6 @@ function setupAngularRoutes($routeProvider, $locationProvider) {
templateUrl: 'public/app/features/profile/partials/profile.html', templateUrl: 'public/app/features/profile/partials/profile.html',
controller : 'ProfileCtrl', controller : 'ProfileCtrl',
}) })
.when('/preferences', {
templateUrl: 'public/app/features/profile/partials/preferences.html',
controller : 'PreferencesCtrl',
})
.when('/profile/password', { .when('/profile/password', {
templateUrl: 'public/app/features/profile/partials/password.html', templateUrl: 'public/app/features/profile/partials/password.html',
controller : 'ChangePasswordCtrl', controller : 'ChangePasswordCtrl',
......
...@@ -10,6 +10,5 @@ define([ ...@@ -10,6 +10,5 @@ define([
'./profile/profileCtrl', './profile/profileCtrl',
'./profile/changePasswordCtrl', './profile/changePasswordCtrl',
'./profile/selectOrgCtrl', './profile/selectOrgCtrl',
'./profile/preferencesCtrl',
'./styleguide/styleguide', './styleguide/styleguide',
], function () {}); ], function () {});
<navbar icon="icon-gf icon-gf-users" title="Preferences" title-url="preferences">
</navbar>
<div class="page-container">
<div class="page-header">
<h1>Preferences</h1>
</div>
<form name="userForm" class="gf-form-group">
<div class="gf-form">
<span class="gf-form-label width-10">Home Dashboard</span>
<input class="gf-form-input max-width-21" type="text" ng-model="prefData.homeDashboard">
</div>
<div class="gf-form">
<span class="gf-form-label width-10">Time Range</span>
<input class="gf-form-input max-width-21" type="text" ng-model="prefData.timeRange">
</div>
<div class="gf-form">
<span class="gf-form-label width-10">Theme</span>
<input class="gf-form-input max-width-21" type="text" ng-model="prefData.theme">
</div>
<div class="gf-form-button-row">
<button type="submit" class="btn btn-success" ng-click="setUserPreferences()">Set Preferences</button>
<a class="btn-text" href="profile">Cancel</a>
</div>
</form>
</div>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</div> </div>
<form name="userForm" class="gf-form-group"> <form name="userForm" class="gf-form-group">
<h3 class="page-heading">Information</h3> <h3 class="page-heading">Preferences</h3>
<div class="gf-form"> <div class="gf-form">
<span class="gf-form-label width-7">Name</span> <span class="gf-form-label width-7">Name</span>
......
define([
'angular',
'app/core/config',
],
function (angular) {
'use strict';
var module = angular.module('grafana.controllers');
module.controller('PreferencesCtrl', function($scope, backendSrv, $location) {
$scope.prefData = {};
$scope.setUserPreferences = function() {
if (!$scope.userForm.$valid) { return; }
console.log($scope.command);
backendSrv.put('/api/user/prefs', { prefData : $scope.prefData }).then(function() {
$location.path("profile");
});
};
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment