From 01045e6ee10690c13db116b65e68a85493bd72c9 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Fri, 11 Sep 2015 14:48:17 -0700 Subject: [PATCH] [Persistence] Add local storage indicator --- platform/persistence/local/bundle.json | 7 ++- .../local/src/LocalStorageIndicator.js | 60 ++++++++++++++++++ .../local/test/LocalStorageIndicatorSpec.js | 62 +++++++++++++++++++ platform/persistence/local/test/suite.json | 1 + 4 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 platform/persistence/local/src/LocalStorageIndicator.js create mode 100644 platform/persistence/local/test/LocalStorageIndicatorSpec.js diff --git a/platform/persistence/local/bundle.json b/platform/persistence/local/bundle.json index b164f9aaa9..e5d338d21d 100644 --- a/platform/persistence/local/bundle.json +++ b/platform/persistence/local/bundle.json @@ -13,6 +13,11 @@ "key": "PERSISTENCE_SPACE", "value": "mct" } + ], + "indicators": [ + { + "implementation": "LocalStorageIndicator.js" + } ] } -} \ No newline at end of file +} diff --git a/platform/persistence/local/src/LocalStorageIndicator.js b/platform/persistence/local/src/LocalStorageIndicator.js new file mode 100644 index 0000000000..df6f868ead --- /dev/null +++ b/platform/persistence/local/src/LocalStorageIndicator.js @@ -0,0 +1,60 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is 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. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,window*/ + +define( + [], + function () { + "use strict"; + + var LOCAL_STORAGE_WARNING = [ + "Using browser local storage for persistence.", + "Anything you create or change will be visible only", + "in this browser on this machine." + ].join(' '); + + /** + * Indicator for local storage persistence. Provides a minimum + * level of feedback indicating that local storage is in use. + * @constructor + * @memberof platform/persistence/local + * @implements {Indicator} + */ + function LocalStorageIndicator() { + } + + LocalStorageIndicator.prototype.getGlyph = function () { + return "D"; + }; + LocalStorageIndicator.prototype.getGlyphClass = function () { + return 'caution'; + }; + LocalStorageIndicator.prototype.getText = function () { + return "Off-line storage"; + }; + LocalStorageIndicator.prototype.getDescription = function () { + return LOCAL_STORAGE_WARNING; + }; + + return LocalStorageIndicator; + } +); diff --git a/platform/persistence/local/test/LocalStorageIndicatorSpec.js b/platform/persistence/local/test/LocalStorageIndicatorSpec.js new file mode 100644 index 0000000000..0e71ebceba --- /dev/null +++ b/platform/persistence/local/test/LocalStorageIndicatorSpec.js @@ -0,0 +1,62 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is 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. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +define( + ["../src/LocalStorageIndicator"], + function (LocalStorageIndicator) { + "use strict"; + + describe("The local storage status indicator", function () { + var indicator; + + beforeEach(function () { + indicator = new LocalStorageIndicator(); + }); + + it("provides text to display in status area", function () { + // Don't particularly care what is there so long + // as interface is appropriately implemented. + expect(indicator.getText()).toEqual(jasmine.any(String)); + }); + + it("has a database icon", function () { + expect(indicator.getGlyph()).toEqual("D"); + }); + + it("has a 'caution' class to draw attention", function () { + expect(indicator.getGlyphClass()).toEqual("caution"); + }); + + it("provides a description for a tooltip", function () { + // Just want some non-empty string here. Providing a + // message here is important but don't want to test wording. + var description = indicator.getDescription(); + expect(description).toEqual(jasmine.any(String)); + expect(description.length).not.toEqual(0); + }); + + + + }); + } +); diff --git a/platform/persistence/local/test/suite.json b/platform/persistence/local/test/suite.json index 5df8f84695..057958d7a4 100644 --- a/platform/persistence/local/test/suite.json +++ b/platform/persistence/local/test/suite.json @@ -1,3 +1,4 @@ [ + "LocalStorageIndicator", "LocalStoragePersistenceProvider" ]