diff --git a/platform/commonUI/browse/bundle.js b/platform/commonUI/browse/bundle.js index 222be9afcd..1526b63384 100644 --- a/platform/commonUI/browse/bundle.js +++ b/platform/commonUI/browse/bundle.js @@ -240,7 +240,7 @@ define([ "views": [ { "key": "items", - "name": "Items", + "name": "Grid", "cssClass": "icon-thumbs-strip", "description": "Grid of available items", "template": itemsTemplate, diff --git a/platform/commonUI/general/res/fonts/symbols/icomoon-project-openmct-symbols-16px.json b/platform/commonUI/general/res/fonts/symbols/icomoon-project-openmct-symbols-16px.json index 844858334d..57e2d60579 100644 --- a/platform/commonUI/general/res/fonts/symbols/icomoon-project-openmct-symbols-16px.json +++ b/platform/commonUI/general/res/fonts/symbols/icomoon-project-openmct-symbols-16px.json @@ -1,8 +1,8 @@ { "metadata": { "name": "openmct-symbols-16px", - "lastOpened": 1487197651675, - "created": 1487194069058 + "lastOpened": 0, + "created": 1497475810461 }, "iconSets": [ { @@ -573,20 +573,28 @@ "tempChar": "" }, { - "order": 122, + "order": 124, "id": 106, "name": "icon-expand", "prevSize": 24, "code": 921665, "tempChar": "" }, + { + "order": 123, + "id": 107, + "name": "icon-list-view", + "prevSize": 24, + "code": 921666, + "tempChar": "" + }, { "order": 37, "prevSize": 24, "name": "icon-activity", "id": 32, "code": 921856, - "tempChar": "" + "tempChar": "" }, { "order": 36, @@ -594,7 +602,7 @@ "name": "icon-activity-mode", "id": 31, "code": 921857, - "tempChar": "" + "tempChar": "" }, { "order": 52, @@ -602,7 +610,7 @@ "name": "icon-autoflow-tabular", "id": 47, "code": 921858, - "tempChar": "" + "tempChar": "" }, { "order": 55, @@ -610,7 +618,7 @@ "name": "icon-clock", "id": 50, "code": 921859, - "tempChar": "" + "tempChar": "" }, { "order": 58, @@ -618,7 +626,7 @@ "name": "icon-database", "id": 53, "code": 921860, - "tempChar": "" + "tempChar": "" }, { "order": 57, @@ -626,7 +634,7 @@ "name": "icon-database-query", "id": 52, "code": 921861, - "tempChar": "" + "tempChar": "" }, { "order": 17, @@ -634,7 +642,7 @@ "name": "icon-dataset", "id": 12, "code": 921862, - "tempChar": "" + "tempChar": "" }, { "order": 22, @@ -642,7 +650,7 @@ "name": "icon-datatable", "id": 17, "code": 921863, - "tempChar": "" + "tempChar": "" }, { "order": 59, @@ -650,7 +658,7 @@ "name": "icon-dictionary", "id": 54, "code": 921864, - "tempChar": "" + "tempChar": "" }, { "order": 62, @@ -658,7 +666,7 @@ "name": "icon-folder", "id": 57, "code": 921865, - "tempChar": "" + "tempChar": "" }, { "order": 66, @@ -666,7 +674,7 @@ "name": "icon-image", "id": 61, "code": 921872, - "tempChar": "" + "tempChar": "" }, { "order": 68, @@ -674,7 +682,7 @@ "name": "icon-layout", "id": 63, "code": 921873, - "tempChar": "" + "tempChar": "" }, { "order": 77, @@ -682,7 +690,7 @@ "name": "icon-object", "id": 72, "code": 921874, - "tempChar": "" + "tempChar": "" }, { "order": 78, @@ -690,7 +698,7 @@ "name": "icon-object-unknown", "id": 73, "code": 921875, - "tempChar": "" + "tempChar": "" }, { "order": 79, @@ -698,7 +706,7 @@ "name": "icon-packet", "id": 74, "code": 921876, - "tempChar": "" + "tempChar": "" }, { "order": 80, @@ -706,7 +714,7 @@ "name": "icon-page", "id": 75, "code": 921877, - "tempChar": "" + "tempChar": "" }, { "order": 114, @@ -714,7 +722,7 @@ "name": "icon-plot-overlay", "prevSize": 24, "code": 921878, - "tempChar": "" + "tempChar": "" }, { "order": 113, @@ -722,7 +730,7 @@ "name": "icon-plot-stacked", "prevSize": 24, "code": 921879, - "tempChar": "" + "tempChar": "" }, { "order": 10, @@ -730,7 +738,7 @@ "name": "icon-session", "id": 5, "code": 921880, - "tempChar": "" + "tempChar": "" }, { "order": 24, @@ -738,7 +746,7 @@ "name": "icon-tabular", "id": 19, "code": 921881, - "tempChar": "" + "tempChar": "" }, { "order": 7, @@ -746,7 +754,7 @@ "name": "icon-tabular-lad", "id": 2, "code": 921888, - "tempChar": "" + "tempChar": "" }, { "order": 6, @@ -754,7 +762,7 @@ "name": "icon-tabular-lad-set", "id": 1, "code": 921889, - "tempChar": "" + "tempChar": "" }, { "order": 8, @@ -762,7 +770,7 @@ "name": "icon-tabular-realtime", "id": 3, "code": 921890, - "tempChar": "" + "tempChar": "" }, { "order": 23, @@ -770,7 +778,7 @@ "name": "icon-tabular-scrolling", "id": 18, "code": 921891, - "tempChar": "" + "tempChar": "" }, { "order": 112, @@ -778,7 +786,7 @@ "name": "icon-telemetry", "id": 86, "code": 921892, - "tempChar": "" + "tempChar": "" }, { "order": 90, @@ -786,7 +794,7 @@ "name": "icon-telemetry-panel", "id": 85, "code": 921893, - "tempChar": "" + "tempChar": "" }, { "order": 93, @@ -794,7 +802,7 @@ "name": "icon-timeline", "id": 88, "code": 921894, - "tempChar": "" + "tempChar": "" }, { "order": 116, @@ -802,7 +810,7 @@ "name": "icon-timer-v1.5", "prevSize": 24, "code": 921895, - "tempChar": "" + "tempChar": "" }, { "order": 11, @@ -810,7 +818,7 @@ "name": "icon-topic", "id": 6, "code": 921896, - "tempChar": "" + "tempChar": "" }, { "order": 115, @@ -818,7 +826,7 @@ "name": "icon-box-with-dashed-lines", "id": 29, "code": 921897, - "tempChar": "" + "tempChar": "" } ], "metadata": { @@ -2363,6 +2371,51 @@ ] } }, + { + "id": 107, + "paths": [ + "M0 64h1024v128h-1024v-128z", + "M0 320h1024v128h-1024v-128z", + "M0 576h1024v128h-1024v-128z", + "M0 832h1024v128h-1024v-128z" + ], + "attrs": [ + { + "fill": "rgb(0, 161, 75)" + }, + { + "fill": "rgb(0, 161, 75)" + }, + { + "fill": "rgb(0, 161, 75)" + }, + { + "fill": "rgb(0, 161, 75)" + } + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 16, + "tags": [ + "icon-list-view" + ], + "colorPermutations": { + "1161751207457516161751": [ + { + "f": 1 + }, + { + "f": 1 + }, + { + "f": 1 + }, + { + "f": 1 + } + ] + } + }, { "paths": [ "M576 64h-256l320 320h-290.256c-44.264-76.516-126.99-128-221.744-128h-128v512h128c94.754 0 177.48-51.484 221.744-128h290.256l-320 320h256l448-448-448-448z" @@ -3237,4 +3290,4 @@ "showGrid": true }, "uid": -1 -} +} \ No newline at end of file diff --git a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.eot b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.eot index ed27fdfafa..f68a67f6d4 100755 Binary files a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.eot and b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.eot differ diff --git a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.svg b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.svg index 3bba7d224c..b649f8a0a9 100755 --- a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.svg +++ b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.svg @@ -78,6 +78,7 @@ + @@ -108,4 +109,4 @@ - + \ No newline at end of file diff --git a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.ttf b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.ttf index 783d69c302..cb3ec37b00 100755 Binary files a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.ttf and b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.ttf differ diff --git a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.woff b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.woff index ff270910f3..1ae7484ef1 100755 Binary files a/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.woff and b/platform/commonUI/general/res/fonts/symbols/openmct-symbols-16px.woff differ diff --git a/platform/commonUI/general/res/sass/_glyphs.scss b/platform/commonUI/general/res/sass/_glyphs.scss index 24d2052f0a..b341f021af 100644 --- a/platform/commonUI/general/res/sass/_glyphs.scss +++ b/platform/commonUI/general/res/sass/_glyphs.scss @@ -85,6 +85,7 @@ $glyph-icon-x-in-circle: '\e1038'; $glyph-icon-brightness: '\e1039'; $glyph-icon-contrast: '\e1040'; $glyph-icon-expand: '\e1041'; +$glyph-icon-list-view: '\e1042'; $glyph-icon-activity: '\e1100'; $glyph-icon-activity-mode: '\e1101'; $glyph-icon-autoflow-tabular: '\e1102'; @@ -189,6 +190,7 @@ $glyph-icon-box-with-dashed-lines: '\e1129'; .icon-brightness { @include glyphBefore($glyph-icon-brightness); } .icon-contrast { @include glyphBefore($glyph-icon-contrast); } .icon-expand { @include glyphBefore($glyph-icon-expand); } +.icon-list-view { @include glyphBefore($glyph-icon-list-view); } .icon-activity { @include glyphBefore($glyph-icon-activity); } .icon-activity-mode { @include glyphBefore($glyph-icon-activity-mode); } .icon-autoflow-tabular { @include glyphBefore($glyph-icon-autoflow-tabular); } diff --git a/platform/commonUI/general/res/sass/items/_item.scss b/platform/commonUI/general/res/sass/items/_item.scss index 4dcbcbc1c3..7d19ed0ce4 100644 --- a/platform/commonUI/general/res/sass/items/_item.scss +++ b/platform/commonUI/general/res/sass/items/_item.scss @@ -132,5 +132,33 @@ } } } - +} + +table.list-view { + $s: 1.2em; + width: 100%; + th, td { + cursor: pointer; + } + tr:hover td { + background-color: $colorItemBg; + color: $colorItemFg; + } + td { + $p: $interiorMargin; + @include ellipsize; + color: $colorItemFg; + font-size: 1em; + line-height: $s; + max-width: 0; + padding-top: $p; + padding-bottom: $p; + } + .t-item-icon { + font-size: $s; + margin-right: $interiorMargin; + } + .t-title-label { + @include ellipsize; // Yep, need it here too as well as the + } } diff --git a/platform/features/listview/bundle.js b/platform/features/listview/bundle.js new file mode 100644 index 0000000000..f1082fb35b --- /dev/null +++ b/platform/features/listview/bundle.js @@ -0,0 +1,64 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2017, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT 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 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. + *****************************************************************************/ + + define([ + './src/controllers/ListViewController', + './src/directives/MCTGesture', + 'text!./res/templates/listview.html', + 'legacyRegistry' +], function ( + ListViewController, + MCTGesture, + listViewTemplate, + legacyRegistry +) { + legacyRegistry.register("platform/features/listview", { + "name": "List View Plugin", + "description": "Allows folder contents to be shown in list format", + "extensions": + { + "views": [ + { + "key": "list", + "type": "folder", + "name": "List", + "cssClass": "icon-list-view", + "template": listViewTemplate + } + ], + "controllers": [ + { + "key": "ListViewController", + "implementation": ListViewController, + "depends": ["$scope"] + } + ], + "directives": [ + { + "key": "mctGesture", + "implementation" : MCTGesture, + "depends": ["gestureService"] + } + ] + } + }); +}); diff --git a/platform/features/listview/res/templates/listview.html b/platform/features/listview/res/templates/listview.html new file mode 100644 index 0000000000..bde831dae6 --- /dev/null +++ b/platform/features/listview/res/templates/listview.html @@ -0,0 +1,88 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ Name + + Type + + Created Date + + Update Date +
+
+ + + + {{child.title}} +
+
{{child.type}}{{child.persisted}}{{child.modified}}
+
diff --git a/platform/features/listview/src/controllers/ListViewController.js b/platform/features/listview/src/controllers/ListViewController.js new file mode 100644 index 0000000000..3dd99bb02f --- /dev/null +++ b/platform/features/listview/src/controllers/ListViewController.js @@ -0,0 +1,67 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2017, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT 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 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. + *****************************************************************************/ + +define(function () { + function ListViewController($scope) { + this.$scope = $scope; + $scope.orderByField = 'title'; + $scope.reverseSort = false; + + this.updateView(); + var unlisten = $scope.domainObject.getCapability('mutation') + .listen(this.updateView.bind(this)); + + $scope.$on('$destroy', function () { + unlisten(); + }); + + } + ListViewController.prototype.updateView = function () { + this.$scope.domainObject.useCapability('composition') + .then(function (children) { + var formattedChildren = this.formatChildren(children); + this.$scope.children = formattedChildren; + this.$scope.data = {children: formattedChildren}; + }.bind(this) + ); + }; + ListViewController.prototype.formatChildren = function (children) { + return children.map(function (child) { + return { + icon: child.getCapability('type').getCssClass(), + title: child.getModel().name, + type: child.getCapability('type').getName(), + persisted: new Date( + child.getModel().persisted + ).toUTCString(), + modified: new Date( + child.getModel().modified + ).toUTCString(), + asDomainObject: child, + location: child.getCapability('location'), + action: child.getCapability('action') + }; + }); + }; + + return ListViewController; +}); diff --git a/platform/features/listview/src/directives/MCTGesture.js b/platform/features/listview/src/directives/MCTGesture.js new file mode 100644 index 0000000000..cc97a279ef --- /dev/null +++ b/platform/features/listview/src/directives/MCTGesture.js @@ -0,0 +1,44 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2017, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT 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 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. + *****************************************************************************/ + + define(function () { + function MCTGesture(gestureService) { + return { + restrict : 'A', + scope: { + domainObject: '=mctObject' + }, + link : function ($scope, $element, attrs) { + var activeGestures = gestureService.attachGestures( + $element, + $scope.domainObject, + $scope.$eval(attrs.mctGesture) + ); + $scope.$on('$destroy', function () { + activeGestures.destroy(); + delete this.activeGestures; + }); + } + }; + } + return MCTGesture; +}); diff --git a/platform/features/listview/test/controllers/ListViewControllerSpec.js b/platform/features/listview/test/controllers/ListViewControllerSpec.js new file mode 100644 index 0000000000..a5d6e06a20 --- /dev/null +++ b/platform/features/listview/test/controllers/ListViewControllerSpec.js @@ -0,0 +1,138 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2017, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT 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 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. +*****************************************************************************/ + +define( + ["../../src/controllers/ListViewController"], + function (ListViewController) { + describe("The Controller for the ListView", function () { + var scope, + unlistenFunc, + domainObject, + childObject, + controller, + childModel, + typeCapability, + mutationCapability; + beforeEach(function () { + unlistenFunc = jasmine.createSpy("unlisten"); + + mutationCapability = jasmine.createSpyObj( + "mutationCapability", + ["listen"] + ); + mutationCapability.listen.andReturn(unlistenFunc); + + typeCapability = jasmine.createSpyObj( + "typeCapability", + ["getCssClass", "getName"] + ); + typeCapability.getCssClass.andReturn("icon-folder"); + typeCapability.getName.andReturn("Folder"); + + + childModel = jasmine.createSpyObj( + "childModel", + ["persisted", "modified", "name"] + ); + childModel.persisted = 1496867697303; + childModel.modified = 1496867697303; + childModel.name = "Battery Charge Status"; + + childObject = jasmine.createSpyObj( + "childObject", + ["getModel", "getCapability"] + ); + childObject.getModel.andReturn( + childModel + ); + // childObject.getCapability.andReturn( + // typeCapability + // ); + childObject.getCapability.andCallFake(function (arg) { + if (arg === 'location') { + return ''; + } else if (arg === 'type') { + return typeCapability; + } + }); + childObject.location = ''; + + domainObject = jasmine.createSpyObj( + "domainObject", + ["getCapability", "useCapability"] + ); + domainObject.useCapability.andReturn( + Promise.resolve([childObject]) + ); + domainObject.getCapability.andReturn( + mutationCapability + ); + + + scope = jasmine.createSpyObj( + "$scope", + ["$on"] + ); + scope.domainObject = domainObject; + + controller = new ListViewController(scope); + + waitsFor(function () { + return scope.children; + }); + }); + it("updates the view", function () { + expect(scope.children[0]).toEqual( + { + icon: "icon-folder", + title: "Battery Charge Status", + type: "Folder", + persisted: "Wed, 07 Jun 2017 20:34:57 GMT", + modified: "Wed, 07 Jun 2017 20:34:57 GMT", + asDomainObject: childObject, + location: '' + } + ); + }); + it("updates the scope when mutation occurs", function () { + domainObject.useCapability.andReturn( + Promise.resolve([]) + ); + expect(mutationCapability.listen).toHaveBeenCalledWith(jasmine.any(Function)); + mutationCapability.listen.mostRecentCall.args[0](); + waitsFor(function () { + return scope.children.length !== 1; + }); + runs(function () { + expect(scope.children.length).toEqual(0); + }); + }); + it("releases listeners on $destroy", function () { + expect(scope.$on).toHaveBeenCalledWith('$destroy', jasmine.any(Function)); + scope.$on.mostRecentCall.args[1](); + expect(unlistenFunc).toHaveBeenCalled(); + }); + + + }); + } +); diff --git a/platform/features/listview/test/directives/MCTGestureSpec.js b/platform/features/listview/test/directives/MCTGestureSpec.js new file mode 100644 index 0000000000..09a9da2cc4 --- /dev/null +++ b/platform/features/listview/test/directives/MCTGestureSpec.js @@ -0,0 +1,86 @@ +/***************************************************************************** + * Open MCT, Copyright (c) 2014-2017, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT 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 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. + *****************************************************************************/ + +define( + ["../../src/directives/MCTGesture"], + function (MCTGesture) { + describe("The Gesture Listener for the ListView items", function () { + var mctGesture, + gestureService, + scope, + element, + attrs, + attachedGesture; + beforeEach(function () { + attachedGesture = jasmine.createSpyObj( + "attachedGesture", + ['destroy'] + ); + gestureService = jasmine.createSpyObj( + "gestureService", + ["attachGestures"] + ); + gestureService.attachGestures.andReturn( + attachedGesture + ); + mctGesture = MCTGesture(gestureService); + }); + it("creates a directive Object", function () { + expect(mctGesture).toBeDefined(); + }); + it("has link function that attaches gesture to gestureService", + function () { + attrs = { + mctGesture: "menu,info" + }; + element = jasmine.createSpy("element"); + scope = jasmine.createSpyObj( + "$scope", + ["$on", "$eval"] + ); + scope.domainObject = "fake domainObject"; + mctGesture.link(scope, element, attrs); + expect(gestureService.attachGestures).toHaveBeenCalled(); + } + ); + it("release gesture service on $destroy", function () { + attrs = { + mctGesture: "menu,info" + }; + element = jasmine.createSpy("element"); + scope = jasmine.createSpyObj( + "$scope", + ["$on", "$eval"] + ); + scope.domainObject = "fake domainObject"; + mctGesture.link(scope, element, attrs); + expect(scope.$on).toHaveBeenCalledWith( + '$destroy', + jasmine.any(Function) + ); + scope.$on.mostRecentCall.args[1](); + expect(attachedGesture.destroy).toHaveBeenCalled(); + }); + + }); + } +); diff --git a/src/defaultRegistry.js b/src/defaultRegistry.js index c2808fad0d..226cea420c 100644 --- a/src/defaultRegistry.js +++ b/src/defaultRegistry.js @@ -69,6 +69,7 @@ define([ '../platform/features/conductor/compatibility/bundle', '../platform/features/imagery/bundle', '../platform/features/layout/bundle', + '../platform/features/listview/bundle', '../platform/features/my-items/bundle', '../platform/features/pages/bundle', '../platform/features/plot/bundle', @@ -115,6 +116,7 @@ define([ 'platform/features/fixed', 'platform/features/imagery', 'platform/features/layout', + 'platform/features/listview', 'platform/features/pages', 'platform/features/plot', 'platform/features/timeline',