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
}
func GetUserPreferences(c *middleware.Context) Response {
// GET /api/user/prefs
func GetUserPreferences(c *middleware.Context) {
query := m.GetPreferencesQuery{PrefId: c.UserId, PrefType: `user`}
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 (
// Typed errors
var (
ErrPreferenceNotFound = errors.New("Preference not found")
ErrPreferencesNotFound = errors.New("Preferences not found")
)
type Preferences struct {
......@@ -23,7 +23,7 @@ type GetPreferencesQuery struct {
PrefId int64
PrefType string
Result PreferencesDTO
Result *Preferences
}
// ---------------------
......
......@@ -22,10 +22,11 @@ func GetPreferences(query *m.GetPreferencesQuery) error {
if resultsErr != nil {
return resultsErr
}
query.Result = m.PreferencesDTO{
PrefId: prefResults[0].PrefId,
PrefType: prefResults[0].PrefType,
PrefData: prefResults[0].PrefData,
if len(prefResults) > 0 {
query.Result = &prefResults[0]
} else {
query.Result = new(m.Preferences)
}
return nil
......@@ -45,15 +46,25 @@ func SavePreferences(cmd *m.SavePreferencesCommand) error {
return resultsErr
}
var matchedPref m.Preferences
matchedPref = prefResults[0]
matchedPref.PrefData = cmd.PrefData
affectedRows, updateErr := sess.Id(matchedPref.Id).Update(&matchedPref)
var savePref m.Preferences
var affectedRows int64
var saveErr error
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 {
return m.ErrPreferenceNotFound
return m.ErrPreferencesNotFound
}
return updateErr
return saveErr
})
}
......@@ -39,7 +39,6 @@ export class SideMenuCtrl {
this.orgMenu = [
{section: 'You', cssClass: 'dropdown-menu-title'},
{text: 'Profile', url: this.getUrl('/profile')},
{text: 'Preferences', url: this.getUrl('/preferences')},
];
if (this.isSignedIn) {
......
......@@ -89,10 +89,6 @@ function setupAngularRoutes($routeProvider, $locationProvider) {
templateUrl: 'public/app/features/profile/partials/profile.html',
controller : 'ProfileCtrl',
})
.when('/preferences', {
templateUrl: 'public/app/features/profile/partials/preferences.html',
controller : 'PreferencesCtrl',
})
.when('/profile/password', {
templateUrl: 'public/app/features/profile/partials/password.html',
controller : 'ChangePasswordCtrl',
......
......@@ -10,6 +10,5 @@ define([
'./profile/profileCtrl',
'./profile/changePasswordCtrl',
'./profile/selectOrgCtrl',
'./profile/preferencesCtrl',
'./styleguide/styleguide',
], 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 @@
</div>
<form name="userForm" class="gf-form-group">
<h3 class="page-heading">Information</h3>
<h3 class="page-heading">Preferences</h3>
<div class="gf-form">
<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