summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/view-models/reportdashboard-page/src/components/models/LayoutStorage.js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/view-models/reportdashboard-page/src/components/models/LayoutStorage.js')
-rw-r--r--ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/view-models/reportdashboard-page/src/components/models/LayoutStorage.js253
1 files changed, 0 insertions, 253 deletions
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/view-models/reportdashboard-page/src/components/models/LayoutStorage.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/view-models/reportdashboard-page/src/components/models/LayoutStorage.js
deleted file mode 100644
index 3685fd3f..00000000
--- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/view-models/reportdashboard-page/src/components/models/LayoutStorage.js
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-angular.module('ui.dashboard')
- .factory('LayoutStorage', function() {
-
- var noopStorage = {
- setItem: function() {
-
- },
- getItem: function() {
-
- },
- removeItem: function() {
-
- }
- };
-
-
-
- function LayoutStorage(options) {
-
- var defaults = {
- storage: noopStorage,
- storageHash: '',
- stringifyStorage: true
- };
-
- angular.extend(defaults, options);
- angular.extend(options, defaults);
-
- this.id = options.storageId;
- this.storage = options.storage;
- this.storageHash = options.storageHash;
- this.stringifyStorage = options.stringifyStorage;
- this.widgetDefinitions = options.widgetDefinitions;
- this.defaultLayouts = options.defaultLayouts;
- this.lockDefaultLayouts = options.lockDefaultLayouts;
- this.widgetButtons = options.widgetButtons;
- this.explicitSave = options.explicitSave;
- this.defaultWidgets = options.defaultWidgets;
- this.settingsModalOptions = options.settingsModalOptions;
- this.onSettingsClose = options.onSettingsClose;
- this.onSettingsDismiss = options.onSettingsDismiss;
- this.options = options;
- this.options.unsavedChangeCount = 0;
-
- this.layouts = [];
- this.states = {};
- this.load();
- this._ensureActiveLayout();
- }
-
- LayoutStorage.prototype = {
-
- add: function(layouts) {
- if (!angular.isArray(layouts)) {
- layouts = [layouts];
- }
- var self = this;
- angular.forEach(layouts, function(layout) {
- layout.dashboard = layout.dashboard || {};
- layout.dashboard.storage = self;
- layout.dashboard.storageId = layout.id = self._getLayoutId.call(self,layout);
- layout.dashboard.widgetDefinitions = layout.widgetDefinitions || self.widgetDefinitions;
- layout.dashboard.stringifyStorage = false;
- layout.dashboard.defaultWidgets = layout.defaultWidgets || self.defaultWidgets;
- layout.dashboard.widgetButtons = self.widgetButtons;
- layout.dashboard.explicitSave = self.explicitSave;
- layout.dashboard.settingsModalOptions = self.settingsModalOptions;
- layout.dashboard.onSettingsClose = self.onSettingsClose;
- layout.dashboard.onSettingsDismiss = self.onSettingsDismiss;
- self.layouts.push(layout);
- });
- },
-
- remove: function(layout) {
- var index = this.layouts.indexOf(layout);
- if (index >= 0) {
- this.layouts.splice(index, 1);
- delete this.states[layout.id];
-
- // check for active
- if (layout.active && this.layouts.length) {
- var nextActive = index > 0 ? index - 1 : 0;
- this.layouts[nextActive].active = true;
- }
- }
- },
-
- save: function() {
-
- var state = {
- layouts: this._serializeLayouts(),
- states: this.states,
- storageHash: this.storageHash
- };
-
- if (this.stringifyStorage) {
- state = JSON.stringify(state);
- }
-
- this.storage.setItem(this.id, state);
- this.options.unsavedChangeCount = 0;
- },
-
- load: function() {
-
- var serialized = this.storage.getItem(this.id);
-
- this.clear();
-
- if (serialized) {
- // check for promise
- if (angular.isObject(serialized) && angular.isFunction(serialized.then)) {
- this._handleAsyncLoad(serialized);
- } else {
- this._handleSyncLoad(serialized);
- }
- } else {
- this._addDefaultLayouts();
- }
- },
-
- clear: function() {
- this.layouts = [];
- this.states = {};
- },
-
- setItem: function(id, value) {
- this.states[id] = value;
- this.save();
- },
-
- getItem: function(id) {
- return this.states[id];
- },
-
- removeItem: function(id) {
- delete this.states[id];
- this.save();
- },
-
- getActiveLayout: function() {
- var len = this.layouts.length;
- for (var i = 0; i < len; i++) {
- var layout = this.layouts[i];
- if (layout.active) {
- return layout;
- }
- }
- return false;
- },
-
- _addDefaultLayouts: function() {
- var self = this;
- var defaults = this.lockDefaultLayouts ? { locked: true } : {};
- angular.forEach(this.defaultLayouts, function(layout) {
- self.add(angular.extend(_.clone(defaults), layout));
- });
- },
-
- _serializeLayouts: function() {
- var result = [];
- angular.forEach(this.layouts, function(l) {
- result.push({
- title: l.title,
- id: l.id,
- active: l.active,
- locked: l.locked,
- defaultWidgets: l.dashboard.defaultWidgets
- });
- });
- return result;
- },
-
- _handleSyncLoad: function(serialized) {
-
- var deserialized;
-
- if (this.stringifyStorage) {
- try {
-
- deserialized = JSON.parse(serialized);
-
- } catch (e) {
- this._addDefaultLayouts();
- return;
- }
- } else {
-
- deserialized = serialized;
-
- }
-
- if (this.storageHash !== deserialized.storageHash) {
- this._addDefaultLayouts();
- return;
- }
- this.states = deserialized.states;
- this.add(deserialized.layouts);
- },
-
- _handleAsyncLoad: function(promise) {
- var self = this;
- promise.then(
- angular.bind(self, this._handleSyncLoad),
- angular.bind(self, this._addDefaultLayouts)
- );
- },
-
- _ensureActiveLayout: function() {
- for (var i = 0; i < this.layouts.length; i++) {
- var layout = this.layouts[i];
- if (layout.active) {
- return;
- }
- }
- if (this.layouts[0]) {
- this.layouts[0].active = true;
- }
- },
-
- _getLayoutId: function(layout) {
- if (layout.id) {
- return layout.id;
- }
- var max = 0;
- for (var i = 0; i < this.layouts.length; i++) {
- var id = this.layouts[i].id;
- max = Math.max(max, id * 1);
- }
- return max + 1;
- }
-
- };
- return LayoutStorage;
- }); \ No newline at end of file