From 40f36541fab875130e3a9697f69c1bf692a8fd71 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 9 Jun 2015 10:31:17 -0700 Subject: [PATCH 1/2] [Core] Add missing models When requested models are missing, add models of an explicitly unknown type to allow this to be expressed to the user. WTD-1241. --- platform/core/bundle.json | 13 ++++- .../core/src/models/MissingModelDecorator.js | 54 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 platform/core/src/models/MissingModelDecorator.js diff --git a/platform/core/bundle.json b/platform/core/bundle.json index 5a2727eb75..666567fced 100644 --- a/platform/core/bundle.json +++ b/platform/core/bundle.json @@ -70,6 +70,12 @@ "type": "decorator", "implementation": "models/CachingModelDecorator.js" }, + { + "provides": "modelService", + "type": "decorator", + "priority": "fallback", + "implementation": "models/MissingModelDecorator.js" + }, { "provides": "typeService", "type": "provider", @@ -132,6 +138,11 @@ "features": "creation", "description": "A folder, useful for storing and organizing domain objects.", "model": { "composition": [] } + }, + { + "key": "unknown", + "name": "Unknown Type", + "glyph": "?" } ], "capabilities": [ @@ -193,4 +204,4 @@ } ] } -} \ No newline at end of file +} diff --git a/platform/core/src/models/MissingModelDecorator.js b/platform/core/src/models/MissingModelDecorator.js new file mode 100644 index 0000000000..fd59caf9a2 --- /dev/null +++ b/platform/core/src/models/MissingModelDecorator.js @@ -0,0 +1,54 @@ +/***************************************************************************** + * 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*/ +define( + [], + function () { + "use strict"; + + function MissingModelDecorator(modelService) { + function missingModel(id) { + return { + type: "unknown", + name: "Missing: " + id + }; + } + + return { + getModels: function (ids) { + function addMissingModels(models) { + var result = {}; + ids.forEach(function (id) { + result[id] = models[id] || missingModel(id); + }); + return result; + } + + return modelService.getModels(ids).then(addMissingModels); + } + }; + } + + return MissingModelDecorator; + } +); From 30e51e783e8aa23e86f0ff3b41119dabda18de57 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 23 Jun 2015 13:03:17 -0700 Subject: [PATCH 2/2] [Core] Add JSDoc Add JSDoc to decorator which provides missing models, WTD-1241. --- platform/core/src/models/MissingModelDecorator.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/core/src/models/MissingModelDecorator.js b/platform/core/src/models/MissingModelDecorator.js index fd59caf9a2..3c82bd2726 100644 --- a/platform/core/src/models/MissingModelDecorator.js +++ b/platform/core/src/models/MissingModelDecorator.js @@ -26,6 +26,11 @@ define( function () { "use strict"; + /** + * Adds placeholder domain object models for any models which + * fail to load from the underlying model service. + * @implements {ModelService} + */ function MissingModelDecorator(modelService) { function missingModel(id) { return {