From f2de498d61cb1ab076e6cd2348384f1bab6c250f Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Sun, 15 May 2016 22:57:34 +1000 Subject: [PATCH] Show saved status of column preferences --- .../controllers/columns_dropdown_controller.js.coffee | 1 + .../admin/index_utils/services/columns.js.coffee | 11 +++++++++-- .../templates/admin/columns_dropdown.html.haml | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/admin/dropdown/controllers/columns_dropdown_controller.js.coffee b/app/assets/javascripts/admin/dropdown/controllers/columns_dropdown_controller.js.coffee index 6c27980495..4b3a5a4516 100644 --- a/app/assets/javascripts/admin/dropdown/controllers/columns_dropdown_controller.js.coffee +++ b/app/assets/javascripts/admin/dropdown/controllers/columns_dropdown_controller.js.coffee @@ -2,3 +2,4 @@ angular.module("admin.dropdown").controller "ColumnsDropdownCtrl", ($scope, Colu $scope.columns = Columns.columns $scope.toggle = Columns.toggleColumn $scope.saveColumnPreferences = Columns.savePreferences + $scope.saved = Columns.preferencesSaved diff --git a/app/assets/javascripts/admin/index_utils/services/columns.js.coffee b/app/assets/javascripts/admin/index_utils/services/columns.js.coffee index 99adc85fdd..f2ed5463ae 100644 --- a/app/assets/javascripts/admin/index_utils/services/columns.js.coffee +++ b/app/assets/javascripts/admin/index_utils/services/columns.js.coffee @@ -1,13 +1,14 @@ angular.module("admin.indexUtils").factory 'Columns', ($rootScope, $http, columns) -> new class Columns + savedColumns: {} columns: {} visibleCount: 0 - saving: false constructor: -> @columns = {} for column in columns @columns[column.column_name] = column + @savedColumns[column.column_name] = angular.copy(column) @calculateVisibleCount() toggleColumn: (column) => @@ -18,10 +19,16 @@ angular.module("admin.indexUtils").factory 'Columns', ($rootScope, $http, column @visibleCount = (column for name, column of @columns when column.visible).length $rootScope.$broadcast "columnCount:changed", @visibleCount - savePreferences: (action_name) -> + preferencesSaved: => + angular.equals(@columns, @savedColumns) + + savePreferences: (action_name) => $http method: "PUT" url: "/admin/column_preferences/bulk_update" data: action_name: action_name column_preferences: (preference for column_name, preference of @columns) + .success (data) => + for column in data + @savedColumns[column.column_name] = column diff --git a/app/assets/javascripts/templates/admin/columns_dropdown.html.haml b/app/assets/javascripts/templates/admin/columns_dropdown.html.haml index bf52142e30..401c3df9cc 100644 --- a/app/assets/javascripts/templates/admin/columns_dropdown.html.haml +++ b/app/assets/javascripts/templates/admin/columns_dropdown.html.haml @@ -7,4 +7,4 @@ %span.name {{column.name }} %hr %div.menu_item.text-center - %input.fullwidth.red{ type: "button", value: 'Save As Default', ng: { click: "saveColumnPreferences(action)"} } + %input.fullwidth.red{ type: "button", ng: { value: "saved() ? 'Saved': 'Save As Default'", disabled: "saved()", click: "saveColumnPreferences(action)"} }