Compare commits
62 Commits
select-tab
...
feature/th
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adde8f5b3a | ||
|
|
8a29387077 | ||
|
|
14a0f84c1b | ||
|
|
14ce5e159b | ||
|
|
c51fd21847 | ||
|
|
72e382c46a | ||
|
|
8825a458dc | ||
|
|
cab51f2665 | ||
|
|
c6f83dea8d | ||
|
|
6e2497461a | ||
|
|
bdd55b3db0 | ||
|
|
700ca90c8e | ||
|
|
360881cf66 | ||
|
|
a4c2e944b3 | ||
|
|
93abb09419 | ||
|
|
e58e9d3a26 | ||
|
|
527c5ec7dd | ||
|
|
286d6e5082 | ||
|
|
fab8bb516a | ||
|
|
6d526eaf42 | ||
|
|
8b715f331c | ||
|
|
d6950a0976 | ||
|
|
68f3436792 | ||
|
|
4414161faf | ||
|
|
7477536478 | ||
|
|
2dd7307fce | ||
|
|
6b2f2b758d | ||
|
|
c13b07e648 | ||
|
|
2ecff75da5 | ||
|
|
ff5b88b544 | ||
|
|
9b7a986475 | ||
|
|
c054914a9c | ||
|
|
69b6f8afa9 | ||
|
|
45164a2f68 | ||
|
|
b189a887e6 | ||
|
|
71abfbc336 | ||
|
|
ee690545fb | ||
|
|
fcf3c76aa1 | ||
|
|
5dbd77d10c | ||
|
|
43515ca84e | ||
|
|
54fe881e71 | ||
|
|
7c32700b69 | ||
|
|
e98d0cc7c5 | ||
|
|
2200503e48 | ||
|
|
8f0081acc8 | ||
|
|
003c3e9fbe | ||
|
|
02ef58ced1 | ||
|
|
e89881c266 | ||
|
|
fa66289d5c | ||
|
|
4f3a3befe0 | ||
|
|
a0864a8702 | ||
|
|
a34ad4e58c | ||
|
|
7e50010463 | ||
|
|
974be0ae2c | ||
|
|
3dc6dac12d | ||
|
|
aafe524454 | ||
|
|
e84ade1752 | ||
|
|
3b094e43e3 | ||
|
|
e6a7b4ed6c | ||
|
|
97230bb21f | ||
|
|
768d99d928 | ||
|
|
c760190a29 |
44
.eslintrc.js
44
.eslintrc.js
@@ -5,9 +5,16 @@ module.exports = {
|
|||||||
"jasmine": true,
|
"jasmine": true,
|
||||||
"amd": true
|
"amd": true
|
||||||
},
|
},
|
||||||
"extends": "eslint:recommended",
|
"globals": {
|
||||||
"parser": "babel-eslint",
|
"_": "readonly"
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended",
|
||||||
|
"plugin:vue/recommended"
|
||||||
|
],
|
||||||
|
"parser": "vue-eslint-parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
|
"parser": "babel-eslint",
|
||||||
"allowImportExportEverywhere": true,
|
"allowImportExportEverywhere": true,
|
||||||
"ecmaVersion": 2015,
|
"ecmaVersion": 2015,
|
||||||
"ecmaFeatures": {
|
"ecmaFeatures": {
|
||||||
@@ -58,7 +65,38 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dot-notation": "error",
|
"dot-notation": "error",
|
||||||
"indent": ["error", 4]
|
"indent": ["error", 4],
|
||||||
|
"vue/html-indent": [
|
||||||
|
"error",
|
||||||
|
4,
|
||||||
|
{
|
||||||
|
"attribute": 1,
|
||||||
|
"baseIndent": 0,
|
||||||
|
"closeBracket": 0,
|
||||||
|
"alignAttributesVertically": true,
|
||||||
|
"ignores": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vue/html-self-closing": ["error",
|
||||||
|
{
|
||||||
|
"html": {
|
||||||
|
"void": "never",
|
||||||
|
"normal": "never",
|
||||||
|
"component": "always"
|
||||||
|
},
|
||||||
|
"svg": "always",
|
||||||
|
"math": "always"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vue/max-attributes-per-line": ["error", {
|
||||||
|
"singleline": 1,
|
||||||
|
"multiline": {
|
||||||
|
"max": 1,
|
||||||
|
"allowFirstLine": true
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
"vue/multiline-html-element-content-newline": "off",
|
||||||
|
"vue/singleline-html-element-content-newline": "off"
|
||||||
},
|
},
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/EventTelemetryProvider",
|
"./src/EventTelemetryProvider"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
EventTelemetryProvider,
|
EventTelemetryProvider
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/eventGenerator", {
|
return {
|
||||||
|
name:"example/eventGenerator",
|
||||||
|
definition: {
|
||||||
"name": "Event Message Generator",
|
"name": "Event Message Generator",
|
||||||
"description": "For development use. Creates sample event message data that mimics a live data stream.",
|
"description": "For development use. Creates sample event message data that mimics a live data stream.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -76,5 +76,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -34,11 +34,9 @@ define(
|
|||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function EventTelemetryProvider($q, $timeout) {
|
function EventTelemetryProvider($q, $timeout) {
|
||||||
var
|
var subscriptions = [],
|
||||||
subscriptions = [],
|
|
||||||
genInterval = 1000,
|
genInterval = 1000,
|
||||||
generating = false,
|
generating = false;
|
||||||
id = Math.random() * 100000;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
function matchesSource(request) {
|
function matchesSource(request) {
|
||||||
@@ -47,7 +45,6 @@ define(
|
|||||||
|
|
||||||
// Used internally; this will be repacked by doPackage
|
// Used internally; this will be repacked by doPackage
|
||||||
function generateData(request) {
|
function generateData(request) {
|
||||||
//console.log("generateData " + (Date.now() - startTime).toString());
|
|
||||||
return {
|
return {
|
||||||
key: request.key,
|
key: request.key,
|
||||||
telemetry: new EventTelemetry(request, genInterval)
|
telemetry: new EventTelemetry(request, genInterval)
|
||||||
|
|||||||
@@ -58,15 +58,15 @@ define([], function () {
|
|||||||
row,
|
row,
|
||||||
i;
|
i;
|
||||||
|
|
||||||
function copyDomainsToRow(row, index) {
|
function copyDomainsToRow(telemetryRow, index) {
|
||||||
domains.forEach(function (domain) {
|
domains.forEach(function (domain) {
|
||||||
row[domain.name] = series.getDomainValue(index, domain.key);
|
telemetryRow[domain.name] = series.getDomainValue(index, domain.key);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyRangesToRow(row, index) {
|
function copyRangesToRow(telemetryRow, index) {
|
||||||
ranges.forEach(function (range) {
|
ranges.forEach(function (range) {
|
||||||
row[range.name] = series.getRangeValue(index, range.key);
|
telemetryRow[range.name] = series.getRangeValue(index, range.key);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,12 +22,13 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
'legacyRegistry',
|
|
||||||
'./ExportTelemetryAsCSVAction'
|
'./ExportTelemetryAsCSVAction'
|
||||||
], function (legacyRegistry, ExportTelemetryAsCSVAction) {
|
], function (ExportTelemetryAsCSVAction) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/export", {
|
return {
|
||||||
|
name:"example/export",
|
||||||
|
definition: {
|
||||||
"name": "Example of using CSV Export",
|
"name": "Example of using CSV Export",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"actions": [
|
"actions": [
|
||||||
@@ -41,5 +42,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ExampleFormController",
|
"./src/ExampleFormController"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ExampleFormController,
|
ExampleFormController
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/forms", {
|
return {
|
||||||
|
name:"example/forms",
|
||||||
|
definition: {
|
||||||
"name": "Declarative Forms example",
|
"name": "Declarative Forms example",
|
||||||
"sources": "src",
|
"sources": "src",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -49,5 +49,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ define([
|
|||||||
'period',
|
'period',
|
||||||
'offset',
|
'offset',
|
||||||
'dataRateInHz',
|
'dataRateInHz',
|
||||||
'phase',
|
'phase'
|
||||||
];
|
];
|
||||||
|
|
||||||
request = request || {};
|
request = request || {};
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ define([
|
|||||||
WorkerInterface.prototype.subscribe = function (request, cb) {
|
WorkerInterface.prototype.subscribe = function (request, cb) {
|
||||||
function callback(message) {
|
function callback(message) {
|
||||||
cb(message.data);
|
cb(message.data);
|
||||||
};
|
}
|
||||||
|
|
||||||
var messageId = this.dispatch('subscribe', request, callback);
|
var messageId = this.dispatch('subscribe', request, callback);
|
||||||
|
|
||||||
|
|||||||
@@ -84,10 +84,10 @@
|
|||||||
|
|
||||||
function onRequest(message) {
|
function onRequest(message) {
|
||||||
var request = message.data;
|
var request = message.data;
|
||||||
if (request.end == undefined) {
|
if (request.end === undefined) {
|
||||||
request.end = Date.now();
|
request.end = Date.now();
|
||||||
}
|
}
|
||||||
if (request.start == undefined){
|
if (request.start === undefined) {
|
||||||
request.start = request.end - FIFTEEN_MINUTES;
|
request.start = request.end - FIFTEEN_MINUTES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ExampleIdentityService",
|
"./src/ExampleIdentityService"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ExampleIdentityService,
|
ExampleIdentityService
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/identity", {
|
return {
|
||||||
|
name:"example/identity",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
@@ -44,5 +44,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ define([
|
|||||||
callback(pointForTimestamp(Date.now(), domainObject.name));
|
callback(pointForTimestamp(Date.now(), domainObject.name));
|
||||||
}, 5000);
|
}, 5000);
|
||||||
|
|
||||||
return function (interval) {
|
return function () {
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,16 +21,12 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([], function () {
|
||||||
|
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
|
||||||
|
|
||||||
legacyRegistry
|
|
||||||
) {
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/mobile", {
|
return {
|
||||||
|
name:"example/mobile",
|
||||||
|
definition: {
|
||||||
"name": "Mobile",
|
"name": "Mobile",
|
||||||
"description": "Allows elements with pertinence to mobile usage and development",
|
"description": "Allows elements with pertinence to mobile usage and development",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -41,5 +37,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,17 +24,16 @@
|
|||||||
define([
|
define([
|
||||||
"./src/RemsTelemetryServerAdapter",
|
"./src/RemsTelemetryServerAdapter",
|
||||||
"./src/RemsTelemetryModelProvider",
|
"./src/RemsTelemetryModelProvider",
|
||||||
"./src/RemsTelemetryProvider",
|
"./src/RemsTelemetryProvider"
|
||||||
'legacyRegistry',
|
|
||||||
"module"
|
|
||||||
], function (
|
], function (
|
||||||
RemsTelemetryServerAdapter,
|
RemsTelemetryServerAdapter,
|
||||||
RemsTelemetryModelProvider,
|
RemsTelemetryModelProvider,
|
||||||
RemsTelemetryProvider,
|
RemsTelemetryProvider
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
legacyRegistry.register("example/msl", {
|
return {
|
||||||
|
name:"example/msl",
|
||||||
|
definition: {
|
||||||
"name" : "Mars Science Laboratory Data Adapter",
|
"name" : "Mars Science Laboratory Data Adapter",
|
||||||
"extensions" : {
|
"extensions" : {
|
||||||
"types": [
|
"types": [
|
||||||
@@ -110,6 +109,7 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -27,20 +27,20 @@ define([
|
|||||||
"./src/DialogLaunchIndicator",
|
"./src/DialogLaunchIndicator",
|
||||||
"./src/NotificationLaunchIndicator",
|
"./src/NotificationLaunchIndicator",
|
||||||
"./res/dialog-launch.html",
|
"./res/dialog-launch.html",
|
||||||
"./res/notification-launch.html",
|
"./res/notification-launch.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
DialogLaunchController,
|
DialogLaunchController,
|
||||||
NotificationLaunchController,
|
NotificationLaunchController,
|
||||||
DialogLaunchIndicator,
|
DialogLaunchIndicator,
|
||||||
NotificationLaunchIndicator,
|
NotificationLaunchIndicator,
|
||||||
DialogLaunch,
|
DialogLaunch,
|
||||||
NotificationLaunch,
|
NotificationLaunch
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/notifications", {
|
return {
|
||||||
|
name:"example/notifications",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"templates": [
|
"templates": [
|
||||||
{
|
{
|
||||||
@@ -86,5 +86,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/BrowserPersistenceProvider",
|
"./src/BrowserPersistenceProvider"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
BrowserPersistenceProvider,
|
BrowserPersistenceProvider
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/persistence", {
|
return {
|
||||||
|
name:"example/persistence",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
@@ -50,5 +50,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ExamplePolicy",
|
"./src/ExamplePolicy"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ExamplePolicy,
|
ExamplePolicy
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/policy", {
|
return {
|
||||||
|
name:"example/policy",
|
||||||
|
definition: {
|
||||||
"name": "Example Policy",
|
"name": "Example Policy",
|
||||||
"description": "Provides an example of using policies to prohibit actions.",
|
"description": "Provides an example of using policies to prohibit actions.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -41,5 +41,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -23,16 +23,16 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/WatchIndicator",
|
"./src/WatchIndicator",
|
||||||
"./src/DigestIndicator",
|
"./src/DigestIndicator"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
WatchIndicator,
|
WatchIndicator,
|
||||||
DigestIndicator,
|
DigestIndicator
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/profiling", {
|
return {
|
||||||
|
name:"example/profiling",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"indicators": [
|
"indicators": [
|
||||||
{
|
{
|
||||||
@@ -51,5 +51,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ScratchPersistenceProvider",
|
"./src/ScratchPersistenceProvider"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ScratchPersistenceProvider,
|
ScratchPersistenceProvider
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
legacyRegistry.register("example/scratchpad", {
|
return {
|
||||||
|
name:"example/scratchpad",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"roots": [
|
"roots": [
|
||||||
{
|
{
|
||||||
@@ -59,5 +59,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ import HelloWorld from './HelloWorld.vue';
|
|||||||
|
|
||||||
function SimpleVuePlugin() {
|
function SimpleVuePlugin() {
|
||||||
return function install(openmct) {
|
return function install(openmct) {
|
||||||
var views = (openmct.mainViews || openmct.objectViews);
|
|
||||||
|
|
||||||
openmct.types.addType('hello-world', {
|
openmct.types.addType('hello-world', {
|
||||||
name: 'Hello World',
|
name: 'Hello World',
|
||||||
description: 'An introduction object',
|
description: 'An introduction object',
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ define([
|
|||||||
"./res/templates/glyphs.html",
|
"./res/templates/glyphs.html",
|
||||||
"./res/templates/controls.html",
|
"./res/templates/controls.html",
|
||||||
"./res/templates/input.html",
|
"./res/templates/input.html",
|
||||||
"./res/templates/menus.html",
|
"./res/templates/menus.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ExampleStyleGuideModelProvider,
|
ExampleStyleGuideModelProvider,
|
||||||
MCTExample,
|
MCTExample,
|
||||||
@@ -20,10 +19,11 @@ define([
|
|||||||
glyphsTemplate,
|
glyphsTemplate,
|
||||||
controlsTemplate,
|
controlsTemplate,
|
||||||
inputTemplate,
|
inputTemplate,
|
||||||
menusTemplate,
|
menusTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
legacyRegistry.register("example/styleguide", {
|
return {
|
||||||
|
name:"example/styleguide",
|
||||||
|
definition: {
|
||||||
"name": "Open MCT Style Guide",
|
"name": "Open MCT Style Guide",
|
||||||
"description": "Examples and documentation illustrating UI styles in use in Open MCT.",
|
"description": "Examples and documentation illustrating UI styles in use in Open MCT.",
|
||||||
"extensions":
|
"extensions":
|
||||||
@@ -103,5 +103,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,14 +30,14 @@ define(
|
|||||||
var pages = {};
|
var pages = {};
|
||||||
|
|
||||||
// Add pages
|
// Add pages
|
||||||
pages['intro'] = { name: "Introduction", type: "styleguide.intro", location: "styleguide:home" };
|
pages.intro = { name: "Introduction", type: "styleguide.intro", location: "styleguide:home" };
|
||||||
pages['standards'] = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
|
pages.standards = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
|
||||||
pages['colors'] = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
|
pages.colors = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
|
||||||
pages['glyphs'] = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
|
pages.glyphs = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
|
||||||
pages['status'] = { name: "Status Indication", type: "styleguide.status", location: "styleguide:home" };
|
pages.status = { name: "Status Indication", type: "styleguide.status", location: "styleguide:home" };
|
||||||
pages['controls'] = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
|
pages.controls = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
|
||||||
pages['input'] = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
|
pages.input = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
|
||||||
pages['menus'] = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
|
pages.menus = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getModels: function () {
|
getModels: function () {
|
||||||
|
|||||||
84
index.html
84
index.html
@@ -27,11 +27,10 @@
|
|||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<title></title>
|
<title></title>
|
||||||
<script src="dist/openmct.js"></script>
|
<script src="dist/openmct.js"></script>
|
||||||
<link rel="stylesheet" href="dist/styles/openmct.css">
|
<link rel="stylesheet" href="espresso.css">
|
||||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-32x32.png" sizes="32x32">
|
<link rel="icon" type="image/png" href="dist/favicons/favicon-96x96.png" sizes="96x96" type="image/x-icon">
|
||||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-96x96.png" sizes="96x96">
|
<link rel="icon" type="image/png" href="dist/favicons/favicon-32x32.png" sizes="32x32" type="image/x-icon">
|
||||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-16x16.png" sizes="16x16">
|
<link rel="icon" type="image/png" href="dist/favicons/favicon-16x16.png" sizes="16x16" type="image/x-icon">
|
||||||
<link rel="shortcut icon" href="dist/favicons/favicon.ico">
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
</body>
|
||||||
@@ -39,49 +38,50 @@
|
|||||||
const FIVE_MINUTES = 5 * 60 * 1000;
|
const FIVE_MINUTES = 5 * 60 * 1000;
|
||||||
const THIRTY_MINUTES = 30 * 60 * 1000;
|
const THIRTY_MINUTES = 30 * 60 * 1000;
|
||||||
|
|
||||||
[
|
// [
|
||||||
'example/eventGenerator',
|
// 'example/eventGenerator',
|
||||||
'example/styleguide'
|
// 'example/styleguide'
|
||||||
].forEach(
|
// ].forEach(
|
||||||
openmct.legacyRegistry.enable.bind(openmct.legacyRegistry)
|
// openmct.legacyRegistry.enable.bind(openmct.legacyRegistry)
|
||||||
);
|
// );
|
||||||
openmct.install(openmct.plugins.MyItems());
|
openmct.install(openmct.plugins.MyItems());
|
||||||
openmct.install(openmct.plugins.LocalStorage());
|
openmct.install(openmct.plugins.LocalStorage());
|
||||||
openmct.install(openmct.plugins.Generator());
|
// openmct.install(openmct.plugins.Generator());
|
||||||
openmct.install(openmct.plugins.ExampleImagery());
|
// openmct.install(openmct.plugins.ExampleImagery());
|
||||||
openmct.install(openmct.plugins.UTCTimeSystem());
|
openmct.install(openmct.plugins.UTCTimeSystem());
|
||||||
openmct.install(openmct.plugins.AutoflowView({
|
// openmct.install(openmct.plugins.AutoflowView({
|
||||||
type: "telemetry.panel"
|
// type: "telemetry.panel"
|
||||||
}));
|
// }));
|
||||||
openmct.install(openmct.plugins.DisplayLayout({
|
openmct.install(openmct.plugins.DisplayLayout({
|
||||||
showAsView: ['summary-widget', 'example.imagery']
|
showAsView: ['summary-widget', 'example.imagery']
|
||||||
}));
|
}));
|
||||||
openmct.install(openmct.plugins.Conductor({
|
// openmct.install(openmct.plugins.Conductor({
|
||||||
menuOptions: [
|
// menuOptions: [
|
||||||
{
|
// {
|
||||||
name: "Fixed",
|
// name: "Fixed",
|
||||||
timeSystem: 'utc',
|
// timeSystem: 'utc',
|
||||||
bounds: {
|
// bounds: {
|
||||||
start: Date.now() - THIRTY_MINUTES,
|
// start: Date.now() - THIRTY_MINUTES,
|
||||||
end: Date.now()
|
// end: Date.now()
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
name: "Realtime",
|
// name: "Realtime",
|
||||||
timeSystem: 'utc',
|
// timeSystem: 'utc',
|
||||||
clock: 'local',
|
// clock: 'local',
|
||||||
clockOffsets: {
|
// clockOffsets: {
|
||||||
start: - THIRTY_MINUTES,
|
// start: - THIRTY_MINUTES,
|
||||||
end: FIVE_MINUTES
|
// end: FIVE_MINUTES
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
]
|
// ]
|
||||||
}));
|
// }));
|
||||||
openmct.install(openmct.plugins.SummaryWidget());
|
// openmct.install(openmct.plugins.SummaryWidget());
|
||||||
openmct.install(openmct.plugins.Notebook());
|
// openmct.install(openmct.plugins.Notebook());
|
||||||
openmct.install(openmct.plugins.Filters(['table', 'telemetry.plot.overlay']));
|
// openmct.install(openmct.plugins.LADTable());
|
||||||
openmct.install(openmct.plugins.ObjectMigration());
|
// openmct.install(openmct.plugins.Filters(['table', 'telemetry.plot.overlay']));
|
||||||
openmct.install(openmct.plugins.ClearData(['table', 'telemetry.plot.overlay', 'telemetry.plot.stacked']));
|
// openmct.install(openmct.plugins.ObjectMigration());
|
||||||
|
// openmct.install(openmct.plugins.ClearData(['table', 'telemetry.plot.overlay', 'telemetry.plot.stacked']));
|
||||||
openmct.start();
|
openmct.start();
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -23,9 +23,9 @@
|
|||||||
/*global module,process*/
|
/*global module,process*/
|
||||||
|
|
||||||
const devMode = process.env.NODE_ENV !== 'production';
|
const devMode = process.env.NODE_ENV !== 'production';
|
||||||
|
const browsers = [process.env.NODE_ENV === 'debug' ? 'ChromeDebugging' : 'ChromeHeadless'];
|
||||||
|
|
||||||
module.exports = (config) => {
|
module.exports = (config) => {
|
||||||
|
|
||||||
const webpackConfig = require('./webpack.config.js');
|
const webpackConfig = require('./webpack.config.js');
|
||||||
delete webpackConfig.output;
|
delete webpackConfig.output;
|
||||||
|
|
||||||
@@ -50,11 +50,17 @@ module.exports = (config) => {
|
|||||||
'coverage',
|
'coverage',
|
||||||
'html'
|
'html'
|
||||||
],
|
],
|
||||||
browsers: ['ChromeHeadless'],
|
browsers: browsers,
|
||||||
|
customLaunchers: {
|
||||||
|
ChromeDebugging: {
|
||||||
|
base: 'Chrome',
|
||||||
|
flags: ['--remote-debugging-port=9222'],
|
||||||
|
debug: true
|
||||||
|
}
|
||||||
|
},
|
||||||
colors: true,
|
colors: true,
|
||||||
logLevel: config.LOG_INFO,
|
logLevel: config.LOG_INFO,
|
||||||
autoWatch: true,
|
autoWatch: true,
|
||||||
|
|
||||||
coverageReporter: {
|
coverageReporter: {
|
||||||
dir: process.env.CIRCLE_ARTIFACTS ?
|
dir: process.env.CIRCLE_ARTIFACTS ?
|
||||||
process.env.CIRCLE_ARTIFACTS + '/coverage' :
|
process.env.CIRCLE_ARTIFACTS + '/coverage' :
|
||||||
@@ -66,22 +72,18 @@ module.exports = (config) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// HTML test reporting.
|
// HTML test reporting.
|
||||||
htmlReporter: {
|
htmlReporter: {
|
||||||
outputDir: "dist/reports/tests",
|
outputDir: "dist/reports/tests",
|
||||||
preserveDescribeNesting: true,
|
preserveDescribeNesting: true,
|
||||||
foldAll: false
|
foldAll: false
|
||||||
},
|
},
|
||||||
|
|
||||||
preprocessors: {
|
preprocessors: {
|
||||||
// add webpack as preprocessor
|
// add webpack as preprocessor
|
||||||
'platform/**/*Spec.js': [ 'webpack' ],
|
'platform/**/*Spec.js': [ 'webpack', 'sourcemap' ],
|
||||||
'src/**/*Spec.js': [ 'webpack' ]
|
'src/**/*Spec.js': [ 'webpack', 'sourcemap' ]
|
||||||
},
|
},
|
||||||
|
|
||||||
webpack: webpackConfig,
|
webpack: webpackConfig,
|
||||||
|
|
||||||
webpackMiddleware: {
|
webpackMiddleware: {
|
||||||
stats: 'errors-only',
|
stats: 'errors-only',
|
||||||
logLevel: 'warn'
|
logLevel: 'warn'
|
||||||
@@ -89,4 +91,3 @@ module.exports = (config) => {
|
|||||||
singleRun: true
|
singleRun: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
* this source code distribution or the Licensing information page available
|
* this source code distribution or the Licensing information page available
|
||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
/*global module,BUILD_CONSTANTS*/
|
/*global module*/
|
||||||
|
|
||||||
const matcher = /\/openmct.js$/;
|
const matcher = /\/openmct.js$/;
|
||||||
if (document.currentScript) {
|
if (document.currentScript) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "openmct",
|
"name": "openmct",
|
||||||
"version": "0.14.0-SNAPSHOT",
|
"version": "1.0.0-beta",
|
||||||
"description": "The Open MCT core platform",
|
"description": "The Open MCT core platform",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -23,6 +23,7 @@
|
|||||||
"d3-time": "1.0.x",
|
"d3-time": "1.0.x",
|
||||||
"d3-time-format": "2.1.x",
|
"d3-time-format": "2.1.x",
|
||||||
"eslint": "5.2.0",
|
"eslint": "5.2.0",
|
||||||
|
"eslint-plugin-vue": "^6.0.0",
|
||||||
"eventemitter3": "^1.2.0",
|
"eventemitter3": "^1.2.0",
|
||||||
"exports-loader": "^0.7.0",
|
"exports-loader": "^0.7.0",
|
||||||
"express": "^4.13.1",
|
"express": "^4.13.1",
|
||||||
@@ -43,6 +44,7 @@
|
|||||||
"karma-coverage": "^1.1.2",
|
"karma-coverage": "^1.1.2",
|
||||||
"karma-html-reporter": "^0.2.7",
|
"karma-html-reporter": "^0.2.7",
|
||||||
"karma-jasmine": "^1.1.2",
|
"karma-jasmine": "^1.1.2",
|
||||||
|
"karma-sourcemap-loader": "^0.3.7",
|
||||||
"karma-webpack": "^3.0.0",
|
"karma-webpack": "^3.0.0",
|
||||||
"location-bar": "^3.0.1",
|
"location-bar": "^3.0.1",
|
||||||
"lodash": "^3.10.1",
|
"lodash": "^3.10.1",
|
||||||
@@ -73,12 +75,13 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node app.js",
|
"start": "node app.js",
|
||||||
"lint": "eslint platform src openmct.js",
|
"lint": "eslint platform example src/**/*.{js,vue} openmct.js",
|
||||||
"lint:fix": "eslint platform src openmct.js --fix",
|
"lint:fix": "eslint platform example src/**/*.{js,vue} openmct.js --fix",
|
||||||
"build:prod": "NODE_ENV=production webpack",
|
"build:prod": "NODE_ENV=production webpack",
|
||||||
"build:dev": "webpack",
|
"build:dev": "webpack",
|
||||||
"build:watch": "webpack --watch",
|
"build:watch": "webpack --watch",
|
||||||
"test": "karma start --single-run",
|
"test": "karma start --single-run",
|
||||||
|
"test-debug": "NODE_ENV=debug karma start --no-single-run",
|
||||||
"test:watch": "karma start --no-single-run",
|
"test:watch": "karma start --no-single-run",
|
||||||
"verify": "concurrently 'npm:test' 'npm:lint'",
|
"verify": "concurrently 'npm:test' 'npm:lint'",
|
||||||
"jsdoc": "jsdoc -c jsdoc.json -R API.md -r -d dist/docs/api",
|
"jsdoc": "jsdoc -c jsdoc.json -R API.md -r -d dist/docs/api",
|
||||||
|
|||||||
@@ -31,8 +31,7 @@ define([
|
|||||||
"./res/templates/license-apache.html",
|
"./res/templates/license-apache.html",
|
||||||
"./res/templates/license-mit.html",
|
"./res/templates/license-mit.html",
|
||||||
"./res/templates/licenses.html",
|
"./res/templates/licenses.html",
|
||||||
"./res/templates/licenses-export-md.html",
|
"./res/templates/licenses-export-md.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
aboutDialogTemplate,
|
aboutDialogTemplate,
|
||||||
LogoController,
|
LogoController,
|
||||||
@@ -44,11 +43,12 @@ define([
|
|||||||
licenseApacheTemplate,
|
licenseApacheTemplate,
|
||||||
licenseMitTemplate,
|
licenseMitTemplate,
|
||||||
licensesTemplate,
|
licensesTemplate,
|
||||||
licensesExportMdTemplate,
|
licensesExportMdTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/about", {
|
return {
|
||||||
|
name:"platform/commonUI/about",
|
||||||
|
definition: {
|
||||||
"name": "About Open MCT",
|
"name": "About Open MCT",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"templates": [
|
"templates": [
|
||||||
@@ -176,5 +176,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -21,12 +21,6 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/BrowseController",
|
|
||||||
"./src/PaneController",
|
|
||||||
"./src/InspectorPaneController",
|
|
||||||
"./src/BrowseObjectController",
|
|
||||||
"./src/MenuArrowController",
|
|
||||||
"./src/ObjectHeaderController",
|
|
||||||
"./src/navigation/NavigationService",
|
"./src/navigation/NavigationService",
|
||||||
"./src/navigation/NavigateAction",
|
"./src/navigation/NavigateAction",
|
||||||
"./src/navigation/OrphanNavigationHandler",
|
"./src/navigation/OrphanNavigationHandler",
|
||||||
@@ -38,15 +32,8 @@ define([
|
|||||||
"./res/templates/menu-arrow.html",
|
"./res/templates/menu-arrow.html",
|
||||||
"./res/templates/back-arrow.html",
|
"./res/templates/back-arrow.html",
|
||||||
"./res/templates/browse/object-properties.html",
|
"./res/templates/browse/object-properties.html",
|
||||||
"./res/templates/browse/inspector-region.html",
|
"./res/templates/browse/inspector-region.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
BrowseController,
|
|
||||||
PaneController,
|
|
||||||
InspectorPaneController,
|
|
||||||
BrowseObjectController,
|
|
||||||
MenuArrowController,
|
|
||||||
ObjectHeaderController,
|
|
||||||
NavigationService,
|
NavigationService,
|
||||||
NavigateAction,
|
NavigateAction,
|
||||||
OrphanNavigationHandler,
|
OrphanNavigationHandler,
|
||||||
@@ -58,11 +45,12 @@ define([
|
|||||||
menuArrowTemplate,
|
menuArrowTemplate,
|
||||||
backArrowTemplate,
|
backArrowTemplate,
|
||||||
objectPropertiesTemplate,
|
objectPropertiesTemplate,
|
||||||
inspectorRegionTemplate,
|
inspectorRegionTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/browse", {
|
return {
|
||||||
|
name:"platform/commonUI/browse",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"routes": [
|
"routes": [
|
||||||
],
|
],
|
||||||
@@ -73,70 +61,6 @@ define([
|
|||||||
"priority": "fallback"
|
"priority": "fallback"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"controllers": [
|
|
||||||
{
|
|
||||||
"key": "BrowseController",
|
|
||||||
"implementation": BrowseController,
|
|
||||||
"depends": [
|
|
||||||
"$scope",
|
|
||||||
"$route",
|
|
||||||
"$location",
|
|
||||||
"objectService",
|
|
||||||
"navigationService",
|
|
||||||
"urlService",
|
|
||||||
"DEFAULT_PATH"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "PaneController",
|
|
||||||
"implementation": PaneController,
|
|
||||||
"priority": "preferred",
|
|
||||||
"depends": [
|
|
||||||
"$scope",
|
|
||||||
"agentService",
|
|
||||||
"$window",
|
|
||||||
"$location",
|
|
||||||
"$attrs",
|
|
||||||
"navigationService"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "BrowseObjectController",
|
|
||||||
"implementation": BrowseObjectController,
|
|
||||||
"depends": [
|
|
||||||
"$scope",
|
|
||||||
"$location",
|
|
||||||
"$route"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "MenuArrowController",
|
|
||||||
"implementation": MenuArrowController,
|
|
||||||
"depends": [
|
|
||||||
"$scope"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "InspectorPaneController",
|
|
||||||
"implementation": InspectorPaneController,
|
|
||||||
"priority": "preferred",
|
|
||||||
"depends": [
|
|
||||||
"$scope",
|
|
||||||
"agentService",
|
|
||||||
"$window",
|
|
||||||
"navigationService",
|
|
||||||
"$location",
|
|
||||||
"$attrs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "ObjectHeaderController",
|
|
||||||
"implementation": ObjectHeaderController,
|
|
||||||
"depends": [
|
|
||||||
"$scope"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"representations": [
|
"representations": [
|
||||||
{
|
{
|
||||||
"key": "browse-object",
|
"key": "browse-object",
|
||||||
@@ -248,5 +172,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,215 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This bundle implements Browse mode.
|
|
||||||
* @namespace platform/commonUI/browse
|
|
||||||
*/
|
|
||||||
define(
|
|
||||||
['lodash'],
|
|
||||||
function (_) {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The BrowseController is used to populate the initial scope in Browse
|
|
||||||
* mode. It loads the root object from the objectService and makes it
|
|
||||||
* available in the scope for Angular template's; this is the point at
|
|
||||||
* which Angular templates first have access to the domain object
|
|
||||||
* hierarchy.
|
|
||||||
*
|
|
||||||
* @memberof platform/commonUI/browse
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
function BrowseController(
|
|
||||||
$scope,
|
|
||||||
$route,
|
|
||||||
$location,
|
|
||||||
objectService,
|
|
||||||
navigationService,
|
|
||||||
urlService,
|
|
||||||
defaultPath
|
|
||||||
) {
|
|
||||||
window.browseScope = $scope;
|
|
||||||
var initialPath = ($route.current.params.ids || defaultPath).split("/"),
|
|
||||||
currentIds;
|
|
||||||
|
|
||||||
$scope.treeModel = {
|
|
||||||
selectedObject: undefined,
|
|
||||||
onSelection: function (object) {
|
|
||||||
navigationService.setNavigation(object, true);
|
|
||||||
},
|
|
||||||
allowSelection: function (object) {
|
|
||||||
var domainObjectInView = navigationService.getNavigation(),
|
|
||||||
isInEditMode = domainObjectInView.getCapability('status').get('editing');
|
|
||||||
|
|
||||||
if (isInEditMode) {
|
|
||||||
|
|
||||||
var actions = object.getCapability('action'),
|
|
||||||
previewAction = actions.getActions({key: 'mct-preview-action'})[0];
|
|
||||||
|
|
||||||
if (previewAction && previewAction.perform) {
|
|
||||||
previewAction.perform();
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
return navigationService.shouldNavigate();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function idsForObject(domainObject) {
|
|
||||||
return urlService
|
|
||||||
.urlForLocation("", domainObject)
|
|
||||||
.replace('/', '');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find an object in an array of objects.
|
|
||||||
function findObject(domainObjects, id) {
|
|
||||||
var i;
|
|
||||||
for (i = 0; i < domainObjects.length; i += 1) {
|
|
||||||
if (domainObjects[i].getId() === id) {
|
|
||||||
return domainObjects[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// helper, fetch a single object from the object service.
|
|
||||||
function getObject(id) {
|
|
||||||
return objectService.getObjects([id])
|
|
||||||
.then(function (results) {
|
|
||||||
return results[id];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// recursively locate and return an object inside of a container
|
|
||||||
// via a path. If at any point in the recursion it fails to find
|
|
||||||
// the next object, it will return the parent.
|
|
||||||
function findViaComposition(containerObject, path) {
|
|
||||||
var nextId = path.shift();
|
|
||||||
if (!nextId) {
|
|
||||||
return containerObject;
|
|
||||||
}
|
|
||||||
return containerObject.useCapability('composition')
|
|
||||||
.then(function (composees) {
|
|
||||||
var nextObject = findObject(composees, nextId);
|
|
||||||
if (!nextObject) {
|
|
||||||
return containerObject;
|
|
||||||
}
|
|
||||||
if (!nextObject.hasCapability('composition')) {
|
|
||||||
return nextObject;
|
|
||||||
}
|
|
||||||
return findViaComposition(nextObject, path);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function navigateToObject(desiredObject) {
|
|
||||||
$scope.navigatedObject = desiredObject;
|
|
||||||
$scope.treeModel.selectedObject = desiredObject;
|
|
||||||
currentIds = idsForObject(desiredObject);
|
|
||||||
$route.current.pathParams.ids = currentIds;
|
|
||||||
$location.path('/browse/' + currentIds);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLastChildIfRoot(object) {
|
|
||||||
if (object.getId() !== 'ROOT') {
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
return object.useCapability('composition')
|
|
||||||
.then(function (composees) {
|
|
||||||
return composees[composees.length - 1];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function navigateToPath(path) {
|
|
||||||
return getObject('ROOT')
|
|
||||||
.then(function (root) {
|
|
||||||
return findViaComposition(root, path);
|
|
||||||
})
|
|
||||||
.then(getLastChildIfRoot)
|
|
||||||
.then(function (object) {
|
|
||||||
navigationService.setNavigation(object);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
getObject('ROOT')
|
|
||||||
.then(function (root) {
|
|
||||||
$scope.domainObject = root;
|
|
||||||
navigateToPath(initialPath);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Handle navigation events from view service. Only navigates
|
|
||||||
// if path has changed.
|
|
||||||
function navigateDirectlyToModel(domainObject) {
|
|
||||||
var newIds = idsForObject(domainObject);
|
|
||||||
if (currentIds !== newIds) {
|
|
||||||
currentIds = newIds;
|
|
||||||
navigateToObject(domainObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Listen for changes in navigation state.
|
|
||||||
navigationService.addListener(navigateDirectlyToModel);
|
|
||||||
|
|
||||||
// Listen for route changes which are caused by browser events
|
|
||||||
// (e.g. bookmarks to pages in OpenMCT) and prevent them. Instead,
|
|
||||||
// navigate to the path ourselves, which results in it being
|
|
||||||
// properly set.
|
|
||||||
$scope.$on('$routeChangeStart', function (event, route, oldRoute) {
|
|
||||||
if (route.$$route === $route.current.$$route) {
|
|
||||||
if (route.pathParams.ids &&
|
|
||||||
route.pathParams.ids !== $route.current.pathParams.ids) {
|
|
||||||
|
|
||||||
var otherParams = _.omit(route.params, 'ids');
|
|
||||||
var oldOtherParams = _.omit(oldRoute.params, 'ids');
|
|
||||||
var deletedParams = _.omit(oldOtherParams, _.keys(otherParams));
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
navigateToPath(route.pathParams.ids.split('/'))
|
|
||||||
.then(function () {
|
|
||||||
if (!_.isEqual(otherParams, oldOtherParams)) {
|
|
||||||
_.forEach(otherParams, function (v, k) {
|
|
||||||
$location.search(k, v);
|
|
||||||
});
|
|
||||||
_.forEach(deletedParams, function (k) {
|
|
||||||
$location.search(k, null);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
navigateToPath([]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Clean up when the scope is destroyed
|
|
||||||
$scope.$on("$destroy", function () {
|
|
||||||
navigationService.removeListener(navigateDirectlyToModel);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return BrowseController;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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 () {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Controller for the `browse-object` representation of a domain
|
|
||||||
* object (the right-hand side of Browse mode.)
|
|
||||||
* @memberof platform/commonUI/browse
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
function BrowseObjectController($scope, $location, $route) {
|
|
||||||
function setViewForDomainObject(domainObject) {
|
|
||||||
|
|
||||||
var locationViewKey = $location.search().view;
|
|
||||||
|
|
||||||
function selectViewIfMatching(view) {
|
|
||||||
if (view.key === locationViewKey) {
|
|
||||||
$scope.representation = $scope.representation || {};
|
|
||||||
$scope.representation.selected = view;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (locationViewKey) {
|
|
||||||
((domainObject && domainObject.useCapability('view')) || [])
|
|
||||||
.forEach(selectViewIfMatching);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateQueryParam(viewKey) {
|
|
||||||
if (viewKey && $location.search().view !== viewKey) {
|
|
||||||
$location.search('view', viewKey);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.$watch('domainObject', setViewForDomainObject);
|
|
||||||
$scope.$watch('representation.selected.key', updateQueryParam);
|
|
||||||
$scope.$on('$locationChangeSuccess', function () {
|
|
||||||
setViewForDomainObject($scope.domainObject);
|
|
||||||
});
|
|
||||||
|
|
||||||
$scope.doAction = function (action) {
|
|
||||||
return $scope[action] && $scope[action]();
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return BrowseObjectController;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
define(
|
|
||||||
["./PaneController"],
|
|
||||||
function (PaneController) {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pane controller that reveals inspector, if hidden, when object
|
|
||||||
* switches to edit mode.
|
|
||||||
*
|
|
||||||
* @param $scope
|
|
||||||
* @param agentService
|
|
||||||
* @param $window
|
|
||||||
* @param navigationService
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
function InspectorPaneController($scope, agentService, $window, navigationService, $location, $attrs) {
|
|
||||||
PaneController.call(this, $scope, agentService, $window, $location, $attrs);
|
|
||||||
var statusListener,
|
|
||||||
self = this;
|
|
||||||
|
|
||||||
function showInspector(statuses) {
|
|
||||||
if (statuses.indexOf('editing') !== -1 && !self.visible()) {
|
|
||||||
self.toggle();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function attachStatusListener(domainObject) {
|
|
||||||
// Remove existing status listener if existing
|
|
||||||
if (statusListener) {
|
|
||||||
statusListener();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (domainObject.hasCapability("status")) {
|
|
||||||
statusListener = domainObject.getCapability("status").listen(showInspector);
|
|
||||||
}
|
|
||||||
return statusListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
var domainObject = navigationService.getNavigation();
|
|
||||||
if (domainObject) {
|
|
||||||
attachStatusListener(domainObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
navigationService.addListener(attachStatusListener);
|
|
||||||
|
|
||||||
$scope.$on("$destroy", function () {
|
|
||||||
statusListener();
|
|
||||||
navigationService.removeListener(attachStatusListener);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
InspectorPaneController.prototype = Object.create(PaneController.prototype);
|
|
||||||
|
|
||||||
return InspectorPaneController;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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 () {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Controller to provide the ability to inline edit an object name.
|
|
||||||
*
|
|
||||||
* @constructor
|
|
||||||
* @memberof platform/commonUI/browse
|
|
||||||
*/
|
|
||||||
function ObjectHeaderController($scope) {
|
|
||||||
this.$scope = $scope;
|
|
||||||
this.domainObject = $scope.domainObject;
|
|
||||||
this.editable = this.allowEdit();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the object name on blur and enter keypress events.
|
|
||||||
*
|
|
||||||
* @param event the mouse event
|
|
||||||
*/
|
|
||||||
ObjectHeaderController.prototype.updateName = function (event) {
|
|
||||||
if (!event || !event.currentTarget) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event.type === 'blur') {
|
|
||||||
this.updateModel(event);
|
|
||||||
} else if (event.which === 13) {
|
|
||||||
this.updateModel(event);
|
|
||||||
event.currentTarget.blur();
|
|
||||||
window.getSelection().removeAllRanges();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the model.
|
|
||||||
*
|
|
||||||
* @param event the mouse event
|
|
||||||
* @param private
|
|
||||||
*/
|
|
||||||
ObjectHeaderController.prototype.updateModel = function (event) {
|
|
||||||
var name = event.currentTarget.textContent.replace(/\n/g, ' ');
|
|
||||||
|
|
||||||
if (name.length === 0) {
|
|
||||||
name = "Unnamed " + this.domainObject.getCapability("type").typeDef.name;
|
|
||||||
event.currentTarget.textContent = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name !== this.domainObject.getModel().name) {
|
|
||||||
this.domainObject.getCapability('mutation').mutate(function (model) {
|
|
||||||
model.name = name;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the domain object is editable.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @return true if object is editable
|
|
||||||
*/
|
|
||||||
ObjectHeaderController.prototype.allowEdit = function () {
|
|
||||||
var type = this.domainObject && this.domainObject.getCapability('type');
|
|
||||||
return !!(type && type.hasFeature('creation'));
|
|
||||||
};
|
|
||||||
|
|
||||||
return ObjectHeaderController;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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 () {
|
|
||||||
var navigationListenerAdded = false;
|
|
||||||
/**
|
|
||||||
* Controller to provide the ability to show/hide the tree in
|
|
||||||
* Browse mode.
|
|
||||||
* @constructor
|
|
||||||
* @memberof platform/commonUI/browse
|
|
||||||
*/
|
|
||||||
function PaneController($scope, agentService, $window, $location, $attrs, navigationService) {
|
|
||||||
var self = this;
|
|
||||||
this.agentService = agentService;
|
|
||||||
var hideParameterPresent = $location.search().hasOwnProperty($attrs.hideParameter);
|
|
||||||
|
|
||||||
if ($attrs.hideParameter && hideParameterPresent) {
|
|
||||||
this.state = false;
|
|
||||||
$location.search($attrs.hideParameter, undefined);
|
|
||||||
} else {
|
|
||||||
this.state = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Callback to invoke when any selection occurs in the tree.
|
|
||||||
* This controller can be passed in as the `parameters` object
|
|
||||||
* to the tree representation.
|
|
||||||
*
|
|
||||||
* @property {Function} callback
|
|
||||||
* @memberof platform/commonUI/browse.PaneController#
|
|
||||||
*/
|
|
||||||
this.callback = function () {
|
|
||||||
// Note that, since this is a callback to pass, this is not
|
|
||||||
// declared as a method but as a property which happens to
|
|
||||||
// be a function.
|
|
||||||
if (agentService.isPhone() && agentService.isPortrait()) {
|
|
||||||
// On phones, trees should collapse in portrait mode
|
|
||||||
// when something is navigated-to.
|
|
||||||
self.state = false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (navigationService && navigationService.addListener && !navigationListenerAdded) {
|
|
||||||
navigationService.addListener(this.callback);
|
|
||||||
navigationListenerAdded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Toggle the visibility of the pane.
|
|
||||||
*/
|
|
||||||
PaneController.prototype.toggle = function () {
|
|
||||||
this.state = !this.state;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the desired visibility state of the pane.
|
|
||||||
* @returns {boolean} true when visible
|
|
||||||
*/
|
|
||||||
PaneController.prototype.visible = function () {
|
|
||||||
return !!this.state;
|
|
||||||
};
|
|
||||||
|
|
||||||
return PaneController;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,266 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
/*global console*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MCTRepresentationSpec. Created by vwoeltje on 11/6/14.
|
|
||||||
*/
|
|
||||||
define(
|
|
||||||
[
|
|
||||||
"../src/BrowseController",
|
|
||||||
"../src/navigation/NavigationService"
|
|
||||||
],
|
|
||||||
function (
|
|
||||||
BrowseController,
|
|
||||||
NavigationService
|
|
||||||
) {
|
|
||||||
|
|
||||||
describe("The browse controller", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockRoute,
|
|
||||||
mockLocation,
|
|
||||||
mockObjectService,
|
|
||||||
mockNavigationService,
|
|
||||||
mockRootObject,
|
|
||||||
mockUrlService,
|
|
||||||
mockDefaultRootObject,
|
|
||||||
mockOtherDomainObject,
|
|
||||||
mockNextObject,
|
|
||||||
testDefaultRoot,
|
|
||||||
controller;
|
|
||||||
|
|
||||||
function waitsForNavigation() {
|
|
||||||
return new Promise(function (resolve) {
|
|
||||||
mockNavigationService.setNavigation.and.callFake(function (obj) {
|
|
||||||
var returnValue;
|
|
||||||
try {
|
|
||||||
returnValue = NavigationService.prototype.setNavigation.call(mockNavigationService, obj);
|
|
||||||
} catch (err) {
|
|
||||||
console.error(err);
|
|
||||||
//Not rejecting because 'setNavigation' has been called, which is what's being tested here.
|
|
||||||
//Rejecting will fail tests.
|
|
||||||
}
|
|
||||||
resolve();
|
|
||||||
return returnValue;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function instantiateController() {
|
|
||||||
controller = new BrowseController(
|
|
||||||
mockScope,
|
|
||||||
mockRoute,
|
|
||||||
mockLocation,
|
|
||||||
mockObjectService,
|
|
||||||
mockNavigationService,
|
|
||||||
mockUrlService,
|
|
||||||
testDefaultRoot
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
testDefaultRoot = "some-root-level-domain-object";
|
|
||||||
|
|
||||||
mockScope = jasmine.createSpyObj(
|
|
||||||
"$scope",
|
|
||||||
["$on", "$watch"]
|
|
||||||
);
|
|
||||||
mockRoute = { current: { params: {}, pathParams: {} } };
|
|
||||||
mockUrlService = jasmine.createSpyObj(
|
|
||||||
"urlService",
|
|
||||||
["urlForLocation"]
|
|
||||||
);
|
|
||||||
mockUrlService.urlForLocation.and.callFake(function (mode, object) {
|
|
||||||
if (object === mockDefaultRootObject) {
|
|
||||||
return [mode, testDefaultRoot].join('/');
|
|
||||||
}
|
|
||||||
if (object === mockOtherDomainObject) {
|
|
||||||
return [mode, 'other'].join('/');
|
|
||||||
}
|
|
||||||
if (object === mockNextObject) {
|
|
||||||
return [mode, testDefaultRoot, 'next'].join('/');
|
|
||||||
}
|
|
||||||
throw new Error('Tried to get url for unexpected object');
|
|
||||||
});
|
|
||||||
mockLocation = jasmine.createSpyObj(
|
|
||||||
"$location",
|
|
||||||
["path"]
|
|
||||||
);
|
|
||||||
mockObjectService = jasmine.createSpyObj(
|
|
||||||
"objectService",
|
|
||||||
["getObjects"]
|
|
||||||
);
|
|
||||||
mockNavigationService = new NavigationService({});
|
|
||||||
[
|
|
||||||
"getNavigation",
|
|
||||||
"setNavigation",
|
|
||||||
"addListener",
|
|
||||||
"removeListener"
|
|
||||||
].forEach(function (method) {
|
|
||||||
spyOn(mockNavigationService, method)
|
|
||||||
.and.callThrough();
|
|
||||||
});
|
|
||||||
mockRootObject = jasmine.createSpyObj(
|
|
||||||
"rootObjectContainer",
|
|
||||||
["getId", "getCapability", "getModel", "useCapability", "hasCapability"]
|
|
||||||
);
|
|
||||||
mockDefaultRootObject = jasmine.createSpyObj(
|
|
||||||
"defaultRootObject",
|
|
||||||
["getId", "getCapability", "getModel", "useCapability", "hasCapability"]
|
|
||||||
);
|
|
||||||
mockOtherDomainObject = jasmine.createSpyObj(
|
|
||||||
"otherDomainObject",
|
|
||||||
["getId", "getCapability", "getModel", "useCapability", "hasCapability"]
|
|
||||||
);
|
|
||||||
mockNextObject = jasmine.createSpyObj(
|
|
||||||
"nestedDomainObject",
|
|
||||||
["getId", "getCapability", "getModel", "useCapability", "hasCapability"]
|
|
||||||
);
|
|
||||||
mockObjectService.getObjects.and.returnValue(Promise.resolve({
|
|
||||||
ROOT: mockRootObject
|
|
||||||
}));
|
|
||||||
mockRootObject.useCapability.and.returnValue(Promise.resolve([
|
|
||||||
mockOtherDomainObject,
|
|
||||||
mockDefaultRootObject
|
|
||||||
]));
|
|
||||||
mockRootObject.hasCapability.and.returnValue(true);
|
|
||||||
mockDefaultRootObject.useCapability.and.returnValue(Promise.resolve([
|
|
||||||
mockNextObject
|
|
||||||
]));
|
|
||||||
mockDefaultRootObject.hasCapability.and.returnValue(true);
|
|
||||||
mockOtherDomainObject.hasCapability.and.returnValue(false);
|
|
||||||
mockNextObject.useCapability.and.returnValue(undefined);
|
|
||||||
mockNextObject.hasCapability.and.returnValue(false);
|
|
||||||
mockNextObject.getId.and.returnValue("next");
|
|
||||||
mockDefaultRootObject.getId.and.returnValue(testDefaultRoot);
|
|
||||||
|
|
||||||
instantiateController();
|
|
||||||
return waitsForNavigation();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("uses composition to set the navigated object, if there is none", function () {
|
|
||||||
instantiateController();
|
|
||||||
return waitsForNavigation().then(function () {
|
|
||||||
expect(mockNavigationService.setNavigation)
|
|
||||||
.toHaveBeenCalledWith(mockDefaultRootObject);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("navigates to a root-level object, even when default path is not found", function () {
|
|
||||||
mockDefaultRootObject.getId
|
|
||||||
.and.returnValue("something-other-than-the-" + testDefaultRoot);
|
|
||||||
instantiateController();
|
|
||||||
|
|
||||||
return waitsForNavigation().then(function () {
|
|
||||||
expect(mockNavigationService.setNavigation)
|
|
||||||
.toHaveBeenCalledWith(mockDefaultRootObject);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not try to override navigation", function () {
|
|
||||||
mockNavigationService.getNavigation.and.returnValue(mockDefaultRootObject);
|
|
||||||
instantiateController();
|
|
||||||
return waitsForNavigation().then(function () {
|
|
||||||
expect(mockScope.navigatedObject).toBe(mockDefaultRootObject);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("updates scope when navigated object changes", function () {
|
|
||||||
// Should have registered a listener - call it
|
|
||||||
mockNavigationService.addListener.calls.mostRecent().args[0](
|
|
||||||
mockOtherDomainObject
|
|
||||||
);
|
|
||||||
expect(mockScope.navigatedObject).toEqual(mockOtherDomainObject);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it("releases its navigation listener when its scope is destroyed", function () {
|
|
||||||
expect(mockScope.$on).toHaveBeenCalledWith(
|
|
||||||
"$destroy",
|
|
||||||
jasmine.any(Function)
|
|
||||||
);
|
|
||||||
mockScope.$on.calls.mostRecent().args[1]();
|
|
||||||
|
|
||||||
// Should remove the listener it added earlier
|
|
||||||
expect(mockNavigationService.removeListener).toHaveBeenCalledWith(
|
|
||||||
mockNavigationService.addListener.calls.mostRecent().args[0]
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("uses route parameters to choose initially-navigated object", function () {
|
|
||||||
mockRoute.current.params.ids = testDefaultRoot + "/next";
|
|
||||||
instantiateController();
|
|
||||||
return waitsForNavigation().then(function () {
|
|
||||||
expect(mockScope.navigatedObject).toBe(mockNextObject);
|
|
||||||
expect(mockNavigationService.setNavigation)
|
|
||||||
.toHaveBeenCalledWith(mockNextObject);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("handles invalid IDs by going as far as possible", function () {
|
|
||||||
// Idea here is that if we get a bad path of IDs,
|
|
||||||
// browse controller should traverse down it until
|
|
||||||
// it hits an invalid ID.
|
|
||||||
mockRoute.current.params.ids = testDefaultRoot + "/junk";
|
|
||||||
instantiateController();
|
|
||||||
return waitsForNavigation().then(function () {
|
|
||||||
expect(mockScope.navigatedObject).toBe(mockDefaultRootObject);
|
|
||||||
expect(mockNavigationService.setNavigation)
|
|
||||||
.toHaveBeenCalledWith(mockDefaultRootObject);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("handles compositionless objects by going as far as possible", function () {
|
|
||||||
// Idea here is that if we get a path which passes
|
|
||||||
// through an object without a composition, browse controller
|
|
||||||
// should stop at it since remaining IDs cannot be loaded.
|
|
||||||
mockRoute.current.params.ids = testDefaultRoot + "/next/junk";
|
|
||||||
instantiateController();
|
|
||||||
return waitsForNavigation().then(function () {
|
|
||||||
expect(mockScope.navigatedObject).toBe(mockNextObject);
|
|
||||||
expect(mockNavigationService.setNavigation)
|
|
||||||
.toHaveBeenCalledWith(mockNextObject);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("updates the displayed route to reflect current navigation", function () {
|
|
||||||
// In order to trigger a route update and not a route change,
|
|
||||||
// the current route must be updated before location.path is
|
|
||||||
// called.
|
|
||||||
expect(mockRoute.current.pathParams.ids)
|
|
||||||
.not
|
|
||||||
.toBe(testDefaultRoot + '/next');
|
|
||||||
mockLocation.path.and.callFake(function () {
|
|
||||||
expect(mockRoute.current.pathParams.ids)
|
|
||||||
.toBe(testDefaultRoot + '/next');
|
|
||||||
});
|
|
||||||
mockNavigationService.addListener.calls.mostRecent().args[0](
|
|
||||||
mockNextObject
|
|
||||||
);
|
|
||||||
expect(mockLocation.path).toHaveBeenCalledWith(
|
|
||||||
'/browse/' + testDefaultRoot + '/next'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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/BrowseObjectController"],
|
|
||||||
function (BrowseObjectController) {
|
|
||||||
|
|
||||||
describe("The browse object controller", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockLocation,
|
|
||||||
mockRoute,
|
|
||||||
controller;
|
|
||||||
|
|
||||||
// Utility function; look for a $watch on scope and fire it
|
|
||||||
function fireWatch(expr, value) {
|
|
||||||
mockScope.$watch.calls.all().forEach(function (call) {
|
|
||||||
if (call.args[0] === expr) {
|
|
||||||
call.args[1](value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockScope = jasmine.createSpyObj(
|
|
||||||
"$scope",
|
|
||||||
["$on", "$watch"]
|
|
||||||
);
|
|
||||||
mockRoute = { current: { params: {} } };
|
|
||||||
mockLocation = jasmine.createSpyObj(
|
|
||||||
"$location",
|
|
||||||
["path", "search"]
|
|
||||||
);
|
|
||||||
mockLocation.search.and.returnValue({});
|
|
||||||
|
|
||||||
controller = new BrowseObjectController(
|
|
||||||
mockScope,
|
|
||||||
mockLocation,
|
|
||||||
mockRoute
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("updates query parameters when selected view changes", function () {
|
|
||||||
fireWatch("representation.selected.key", "xyz");
|
|
||||||
expect(mockLocation.search).toHaveBeenCalledWith('view', "xyz");
|
|
||||||
|
|
||||||
// Allows the path index to be checked
|
|
||||||
// prior to setting $route.current
|
|
||||||
mockLocation.path.and.returnValue("/browse/");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("sets the active view from query parameters", function () {
|
|
||||||
var mockDomainObject = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
['getId', 'getModel', 'getCapability', 'useCapability']
|
|
||||||
),
|
|
||||||
testViews = [
|
|
||||||
{ key: 'abc' },
|
|
||||||
{ key: 'def', someKey: 'some value' },
|
|
||||||
{ key: 'xyz' }
|
|
||||||
];
|
|
||||||
|
|
||||||
mockDomainObject.useCapability.and.callFake(function (c) {
|
|
||||||
return (c === 'view') && testViews;
|
|
||||||
});
|
|
||||||
mockLocation.search.and.returnValue({ view: 'def' });
|
|
||||||
|
|
||||||
fireWatch('domainObject', mockDomainObject);
|
|
||||||
expect(mockScope.representation.selected)
|
|
||||||
.toEqual(testViews[1]);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
define(
|
|
||||||
["../src/InspectorPaneController"],
|
|
||||||
function (InspectorPaneController) {
|
|
||||||
|
|
||||||
describe("The InspectorPaneController", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockAgentService,
|
|
||||||
mockDomainObject,
|
|
||||||
mockWindow,
|
|
||||||
mockStatusCapability,
|
|
||||||
mockNavigationService,
|
|
||||||
mockNavigationUnlistener,
|
|
||||||
mockStatusUnlistener,
|
|
||||||
controller,
|
|
||||||
mockLocation,
|
|
||||||
mockAttrs;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockScope = jasmine.createSpyObj("$scope", ["$on"]);
|
|
||||||
mockWindow = jasmine.createSpyObj("$window", ["open"]);
|
|
||||||
mockAgentService = jasmine.createSpyObj(
|
|
||||||
"agentService",
|
|
||||||
["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockNavigationUnlistener = jasmine.createSpy("navigationUnlistener");
|
|
||||||
mockNavigationService = jasmine.createSpyObj(
|
|
||||||
"navigationService",
|
|
||||||
["getNavigation", "addListener"]
|
|
||||||
);
|
|
||||||
mockNavigationService.addListener.and.returnValue(mockNavigationUnlistener);
|
|
||||||
|
|
||||||
mockStatusUnlistener = jasmine.createSpy("statusUnlistener");
|
|
||||||
mockStatusCapability = jasmine.createSpyObj(
|
|
||||||
"statusCapability",
|
|
||||||
["listen"]
|
|
||||||
);
|
|
||||||
mockStatusCapability.listen.and.returnValue(mockStatusUnlistener);
|
|
||||||
|
|
||||||
mockDomainObject = jasmine.createSpyObj(
|
|
||||||
'domainObject',
|
|
||||||
[
|
|
||||||
'getId',
|
|
||||||
'getModel',
|
|
||||||
'getCapability',
|
|
||||||
'hasCapability'
|
|
||||||
]
|
|
||||||
);
|
|
||||||
mockDomainObject.getId.and.returnValue("domainObject");
|
|
||||||
mockDomainObject.getModel.and.returnValue({});
|
|
||||||
mockDomainObject.hasCapability.and.returnValue(true);
|
|
||||||
mockDomainObject.getCapability.and.returnValue(mockStatusCapability);
|
|
||||||
|
|
||||||
mockLocation = jasmine.createSpyObj('location', ['search']);
|
|
||||||
mockLocation.search.and.returnValue({});
|
|
||||||
|
|
||||||
mockAttrs = {};
|
|
||||||
|
|
||||||
controller = new InspectorPaneController(mockScope, mockAgentService, mockWindow, mockNavigationService, mockLocation, mockAttrs);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("listens for changes to navigation and attaches a status" +
|
|
||||||
" listener", function () {
|
|
||||||
expect(mockNavigationService.addListener).toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
mockNavigationService.addListener.calls.mostRecent().args[0](mockDomainObject);
|
|
||||||
expect(mockStatusCapability.listen).toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
});
|
|
||||||
|
|
||||||
it("if hidden, shows the inspector when domain object switches to" +
|
|
||||||
" edit mode", function () {
|
|
||||||
controller.toggle();
|
|
||||||
// test pre-condition that inspector is hidden
|
|
||||||
expect(controller.visible()).toBe(false);
|
|
||||||
mockNavigationService.addListener.calls.mostRecent().args[0](mockDomainObject);
|
|
||||||
mockStatusCapability.listen.calls.mostRecent().args[0](["editing"]);
|
|
||||||
expect(controller.visible()).toBe(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MenuArrowControllerSpec. Created by shale on 07/02/2015.
|
|
||||||
*/
|
|
||||||
define(
|
|
||||||
["../src/MenuArrowController"],
|
|
||||||
function (MenuArrowController) {
|
|
||||||
|
|
||||||
describe("The menu arrow controller ", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockDomainObject,
|
|
||||||
mockEvent,
|
|
||||||
mockContextMenuAction,
|
|
||||||
mockActionContext,
|
|
||||||
controller;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockScope = jasmine.createSpyObj(
|
|
||||||
"$scope",
|
|
||||||
[""]
|
|
||||||
);
|
|
||||||
mockDomainObject = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
["getCapability"]
|
|
||||||
);
|
|
||||||
mockEvent = jasmine.createSpyObj(
|
|
||||||
"event",
|
|
||||||
["preventDefault"]
|
|
||||||
);
|
|
||||||
mockContextMenuAction = jasmine.createSpyObj(
|
|
||||||
"action",
|
|
||||||
["perform", "getActions"]
|
|
||||||
);
|
|
||||||
mockActionContext = jasmine.createSpyObj(
|
|
||||||
"actionContext",
|
|
||||||
[""]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockActionContext.domainObject = mockDomainObject;
|
|
||||||
mockActionContext.event = mockEvent;
|
|
||||||
mockScope.domainObject = mockDomainObject;
|
|
||||||
mockDomainObject.getCapability.and.returnValue(mockContextMenuAction);
|
|
||||||
mockContextMenuAction.perform.and.returnValue(jasmine.any(Function));
|
|
||||||
|
|
||||||
controller = new MenuArrowController(mockScope);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("calls the context menu action when clicked", function () {
|
|
||||||
// Simulate a click on the menu arrow
|
|
||||||
controller.showMenu(mockEvent);
|
|
||||||
|
|
||||||
// Expect the menu action to be performed
|
|
||||||
expect(mockDomainObject.getCapability).toHaveBeenCalledWith('action');
|
|
||||||
expect(mockContextMenuAction.perform).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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/ObjectHeaderController"],
|
|
||||||
function (ObjectHeaderController) {
|
|
||||||
|
|
||||||
describe("The object header controller", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockDomainObject,
|
|
||||||
mockCapabilities,
|
|
||||||
mockMutationCapability,
|
|
||||||
mockTypeCapability,
|
|
||||||
mockEvent,
|
|
||||||
mockCurrentTarget,
|
|
||||||
model,
|
|
||||||
controller;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockMutationCapability = jasmine.createSpyObj("mutation", ["mutate"]);
|
|
||||||
mockTypeCapability = jasmine.createSpyObj("type", ["typeDef", "hasFeature"]);
|
|
||||||
mockTypeCapability.typeDef = { name: ""};
|
|
||||||
mockTypeCapability.hasFeature.and.callFake(function (feature) {
|
|
||||||
return feature === 'creation';
|
|
||||||
});
|
|
||||||
|
|
||||||
mockCapabilities = {
|
|
||||||
mutation: mockMutationCapability,
|
|
||||||
type: mockTypeCapability
|
|
||||||
};
|
|
||||||
|
|
||||||
model = {
|
|
||||||
name: "Test name"
|
|
||||||
};
|
|
||||||
mockDomainObject = jasmine.createSpyObj("domainObject", ["getCapability", "getModel"]);
|
|
||||||
mockDomainObject.getModel.and.returnValue(model);
|
|
||||||
mockDomainObject.getCapability.and.callFake(function (key) {
|
|
||||||
return mockCapabilities[key];
|
|
||||||
});
|
|
||||||
|
|
||||||
mockScope = {
|
|
||||||
domainObject: mockDomainObject
|
|
||||||
};
|
|
||||||
|
|
||||||
mockCurrentTarget = jasmine.createSpyObj("currentTarget", ["blur", "textContent"]);
|
|
||||||
mockCurrentTarget.blur.and.returnValue(mockCurrentTarget);
|
|
||||||
|
|
||||||
mockEvent = {
|
|
||||||
which: {},
|
|
||||||
type: {},
|
|
||||||
currentTarget: mockCurrentTarget
|
|
||||||
};
|
|
||||||
|
|
||||||
controller = new ObjectHeaderController(mockScope);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("updates the model with new name on blur", function () {
|
|
||||||
mockEvent.type = "blur";
|
|
||||||
mockCurrentTarget.textContent = "New name";
|
|
||||||
controller.updateName(mockEvent);
|
|
||||||
|
|
||||||
expect(mockMutationCapability.mutate).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("updates the model with a default for blank names", function () {
|
|
||||||
mockEvent.type = "blur";
|
|
||||||
mockCurrentTarget.textContent = "";
|
|
||||||
controller.updateName(mockEvent);
|
|
||||||
|
|
||||||
expect(mockCurrentTarget.textContent.length).not.toEqual(0);
|
|
||||||
expect(mockMutationCapability.mutate).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("does not update the model if the same name", function () {
|
|
||||||
mockEvent.type = "blur";
|
|
||||||
mockCurrentTarget.textContent = mockDomainObject.getModel().name;
|
|
||||||
controller.updateName(mockEvent);
|
|
||||||
|
|
||||||
expect(mockMutationCapability.mutate).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("updates the model on enter keypress event only", function () {
|
|
||||||
mockCurrentTarget.textContent = "New name";
|
|
||||||
controller.updateName(mockEvent);
|
|
||||||
|
|
||||||
expect(mockMutationCapability.mutate).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
mockEvent.which = 13;
|
|
||||||
controller.updateName(mockEvent);
|
|
||||||
|
|
||||||
expect(mockMutationCapability.mutate).toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
|
|
||||||
mockMutationCapability.mutate.calls.mostRecent().args[0](model);
|
|
||||||
|
|
||||||
expect(mockDomainObject.getModel().name).toBe("New name");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("blurs the field on enter key press", function () {
|
|
||||||
mockCurrentTarget.textContent = "New name";
|
|
||||||
mockEvent.which = 13;
|
|
||||||
controller.updateName(mockEvent);
|
|
||||||
|
|
||||||
expect(mockEvent.currentTarget.blur).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("allows editting name when object is creatable", function () {
|
|
||||||
expect(controller.allowEdit()).toBe(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("disallows editting name when object is non-creatable", function () {
|
|
||||||
mockTypeCapability.hasFeature.and.returnValue(false);
|
|
||||||
|
|
||||||
expect(controller.allowEdit()).toBe(false);
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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/PaneController"],
|
|
||||||
function (PaneController) {
|
|
||||||
|
|
||||||
describe("The PaneController", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockAgentService,
|
|
||||||
mockWindow,
|
|
||||||
controller,
|
|
||||||
mockLocation,
|
|
||||||
mockAttrs;
|
|
||||||
|
|
||||||
// We want to reinstantiate for each test case
|
|
||||||
// because device state can influence constructor-time behavior
|
|
||||||
function instantiateController() {
|
|
||||||
return new PaneController(
|
|
||||||
mockScope,
|
|
||||||
mockAgentService,
|
|
||||||
mockWindow,
|
|
||||||
mockLocation,
|
|
||||||
mockAttrs
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockScope = jasmine.createSpyObj("$scope", ["$on"]);
|
|
||||||
mockAgentService = jasmine.createSpyObj(
|
|
||||||
"agentService",
|
|
||||||
["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"]
|
|
||||||
);
|
|
||||||
mockWindow = jasmine.createSpyObj("$window", ["open"]);
|
|
||||||
|
|
||||||
mockLocation = jasmine.createSpyObj('location', ['search']);
|
|
||||||
mockLocation.search.and.returnValue({});
|
|
||||||
|
|
||||||
mockAttrs = {};
|
|
||||||
});
|
|
||||||
|
|
||||||
it("is initially visible", function () {
|
|
||||||
expect(instantiateController().visible()).toBeTruthy();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("allows visibility to be toggled", function () {
|
|
||||||
controller = instantiateController();
|
|
||||||
controller.toggle();
|
|
||||||
expect(controller.visible()).toBeFalsy();
|
|
||||||
controller.toggle();
|
|
||||||
expect(controller.visible()).toBeTruthy();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("collapses on navigation changes on portrait-oriented phones", function () {
|
|
||||||
mockAgentService.isMobile.and.returnValue(true);
|
|
||||||
mockAgentService.isPhone.and.returnValue(true);
|
|
||||||
mockAgentService.isPortrait.and.returnValue(true);
|
|
||||||
controller = instantiateController();
|
|
||||||
expect(controller.visible()).toBeTruthy();
|
|
||||||
|
|
||||||
// Simulate a change from the tree by invoking controller's
|
|
||||||
controller.callback();
|
|
||||||
|
|
||||||
// Tree should have collapsed
|
|
||||||
expect(controller.visible()).toBeFalsy();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("specifying hideParameter", function () {
|
|
||||||
beforeEach(function () {
|
|
||||||
mockAttrs = {hideParameter: 'hideTree'};
|
|
||||||
});
|
|
||||||
|
|
||||||
it("sets pane state to false when in location.search", function () {
|
|
||||||
mockLocation.search.and.returnValue({'hideTree': true});
|
|
||||||
expect(instantiateController().visible()).toBe(false);
|
|
||||||
expect(mockLocation.search).toHaveBeenCalledWith('hideTree', undefined);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("sets state to true when not found in location.search", function () {
|
|
||||||
mockLocation.search.and.returnValue({});
|
|
||||||
expect(instantiateController().visible()).toBe(true);
|
|
||||||
expect(mockLocation.search).not.toHaveBeenCalledWith('hideTree', undefined);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -30,8 +30,7 @@ define([
|
|||||||
"./res/templates/message.html",
|
"./res/templates/message.html",
|
||||||
"./res/templates/notification-message.html",
|
"./res/templates/notification-message.html",
|
||||||
"./res/templates/overlay-message-list.html",
|
"./res/templates/overlay-message-list.html",
|
||||||
"./res/templates/overlay.html",
|
"./res/templates/overlay.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
DialogService,
|
DialogService,
|
||||||
OverlayService,
|
OverlayService,
|
||||||
@@ -42,11 +41,12 @@ define([
|
|||||||
messageTemplate,
|
messageTemplate,
|
||||||
notificationMessageTemplate,
|
notificationMessageTemplate,
|
||||||
overlayMessageListTemplate,
|
overlayMessageListTemplate,
|
||||||
overlayTemplate,
|
overlayTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/dialog", {
|
return {
|
||||||
|
name:"platform/commonUI/dialog",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{
|
||||||
@@ -107,5 +107,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ define([
|
|||||||
"./src/actions/EditAndComposeAction",
|
"./src/actions/EditAndComposeAction",
|
||||||
"./src/actions/EditAction",
|
"./src/actions/EditAction",
|
||||||
"./src/actions/PropertiesAction",
|
"./src/actions/PropertiesAction",
|
||||||
"./src/actions/RemoveAction",
|
|
||||||
"./src/actions/SaveAction",
|
"./src/actions/SaveAction",
|
||||||
"./src/actions/SaveAndStopEditingAction",
|
"./src/actions/SaveAndStopEditingAction",
|
||||||
"./src/actions/SaveAsAction",
|
"./src/actions/SaveAsAction",
|
||||||
@@ -49,8 +48,7 @@ define([
|
|||||||
"./res/templates/library.html",
|
"./res/templates/library.html",
|
||||||
"./res/templates/edit-object.html",
|
"./res/templates/edit-object.html",
|
||||||
"./res/templates/edit-action-buttons.html",
|
"./res/templates/edit-action-buttons.html",
|
||||||
"./res/templates/topbar-edit.html",
|
"./res/templates/topbar-edit.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
EditActionController,
|
EditActionController,
|
||||||
EditPanesController,
|
EditPanesController,
|
||||||
@@ -58,7 +56,6 @@ define([
|
|||||||
EditAndComposeAction,
|
EditAndComposeAction,
|
||||||
EditAction,
|
EditAction,
|
||||||
PropertiesAction,
|
PropertiesAction,
|
||||||
RemoveAction,
|
|
||||||
SaveAction,
|
SaveAction,
|
||||||
SaveAndStopEditingAction,
|
SaveAndStopEditingAction,
|
||||||
SaveAsAction,
|
SaveAsAction,
|
||||||
@@ -80,11 +77,11 @@ define([
|
|||||||
libraryTemplate,
|
libraryTemplate,
|
||||||
editObjectTemplate,
|
editObjectTemplate,
|
||||||
editActionButtonsTemplate,
|
editActionButtonsTemplate,
|
||||||
topbarEditTemplate,
|
topbarEditTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
return {
|
||||||
legacyRegistry.register("platform/commonUI/edit", {
|
name: "platform/commonUI/edit",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"controllers": [
|
"controllers": [
|
||||||
{
|
{
|
||||||
@@ -158,18 +155,6 @@ define([
|
|||||||
"dialogService"
|
"dialogService"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"key": "remove",
|
|
||||||
"category": "legacy",
|
|
||||||
"implementation": RemoveAction,
|
|
||||||
"cssClass": "icon-trash",
|
|
||||||
"name": "Remove",
|
|
||||||
"description": "Remove this object from its containing object.",
|
|
||||||
"depends": [
|
|
||||||
"openmct",
|
|
||||||
"navigationService"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"key": "save-and-stop-editing",
|
"key": "save-and-stop-editing",
|
||||||
"category": "save",
|
"category": "save",
|
||||||
@@ -363,5 +348,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,131 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Module defining RemoveAction. Created by vwoeltje on 11/17/14.
|
|
||||||
*/
|
|
||||||
define([], function () {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct an action which will remove the provided object manifestation.
|
|
||||||
* The object will be removed from its parent's composition; the parent
|
|
||||||
* is looked up via the "context" capability (so this will be the
|
|
||||||
* immediate ancestor by which this specific object was reached.)
|
|
||||||
*
|
|
||||||
* @param {DialogService} dialogService a service which will show the dialog
|
|
||||||
* @param {NavigationService} navigationService a service that maintains the current navigation state
|
|
||||||
* @param {ActionContext} context the context in which this action is performed
|
|
||||||
* @memberof platform/commonUI/edit
|
|
||||||
* @constructor
|
|
||||||
* @implements {Action}
|
|
||||||
*/
|
|
||||||
function RemoveAction(openmct, navigationService, context) {
|
|
||||||
this.domainObject = (context || {}).domainObject;
|
|
||||||
this.openmct = openmct;
|
|
||||||
this.navigationService = navigationService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Perform this action.
|
|
||||||
*/
|
|
||||||
RemoveAction.prototype.perform = function () {
|
|
||||||
var dialog,
|
|
||||||
domainObject = this.domainObject,
|
|
||||||
navigationService = this.navigationService;
|
|
||||||
/*
|
|
||||||
* Check whether an object ID matches the ID of the object being
|
|
||||||
* removed (used to filter a parent's composition to handle the
|
|
||||||
* removal.)
|
|
||||||
*/
|
|
||||||
function isNotObject(otherObjectId) {
|
|
||||||
return otherObjectId !== domainObject.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Mutate a parent object such that it no longer contains the object
|
|
||||||
* which is being removed.
|
|
||||||
*/
|
|
||||||
function doMutate(model) {
|
|
||||||
model.composition = model.composition.filter(isNotObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Checks current object and ascendants of current
|
|
||||||
* object with object being removed, if the current
|
|
||||||
* object or any in the current object's path is being removed,
|
|
||||||
* navigate back to parent of removed object.
|
|
||||||
*/
|
|
||||||
function checkObjectNavigation(object, parentObject) {
|
|
||||||
// Traverse object starts at current location
|
|
||||||
var traverseObject = (navigationService).getNavigation(),
|
|
||||||
context;
|
|
||||||
|
|
||||||
// Stop when object is not defined (above ROOT)
|
|
||||||
while (traverseObject) {
|
|
||||||
// If object currently traversed to is object being removed
|
|
||||||
// navigate to parent of current object and then exit loop
|
|
||||||
if (traverseObject.getId() === object.getId()) {
|
|
||||||
navigationService.setNavigation(parentObject);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Traverses to parent of current object, moving
|
|
||||||
// up the ascendant path
|
|
||||||
context = traverseObject.getCapability('context');
|
|
||||||
traverseObject = context && context.getParent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove the object from its parent, as identified by its context
|
|
||||||
* capability. Based on object's location and selected object's location
|
|
||||||
* user may be navigated to existing parent object
|
|
||||||
*/
|
|
||||||
function removeFromContext() {
|
|
||||||
var contextCapability = domainObject.getCapability('context'),
|
|
||||||
parent = contextCapability.getParent();
|
|
||||||
|
|
||||||
// If currently within path of removed object(s),
|
|
||||||
// navigates to existing object up tree
|
|
||||||
checkObjectNavigation(domainObject, parent);
|
|
||||||
|
|
||||||
return parent.useCapability('mutation', doMutate);
|
|
||||||
}
|
|
||||||
|
|
||||||
removeFromContext();
|
|
||||||
};
|
|
||||||
|
|
||||||
// Object needs to have a parent for Remove to be applicable
|
|
||||||
RemoveAction.appliesTo = function (context) {
|
|
||||||
var object = (context || {}).domainObject,
|
|
||||||
contextCapability = object && object.getCapability("context"),
|
|
||||||
parent = contextCapability && contextCapability.getParent(),
|
|
||||||
parentType = parent && parent.getCapability('type'),
|
|
||||||
parentCreatable = parentType && parentType.hasFeature('creation');
|
|
||||||
|
|
||||||
// Only creatable types should be modifiable
|
|
||||||
return parent !== undefined &&
|
|
||||||
Array.isArray(parent.getModel().composition) &&
|
|
||||||
parentCreatable;
|
|
||||||
};
|
|
||||||
|
|
||||||
return RemoveAction;
|
|
||||||
});
|
|
||||||
@@ -6,7 +6,7 @@ define([], function () {
|
|||||||
|
|
||||||
SaveInProgressDialog.prototype.show = function () {
|
SaveInProgressDialog.prototype.show = function () {
|
||||||
this.dialog = this.dialogService.showBlockingMessage({
|
this.dialog = this.dialogService.showBlockingMessage({
|
||||||
title: "Saving...",
|
title: "Saving",
|
||||||
hint: "Do not navigate away from this page or close this browser tab while this message is displayed.",
|
hint: "Do not navigate away from this page or close this browser tab while this message is displayed.",
|
||||||
unknownProgress: true,
|
unknownProgress: true,
|
||||||
severity: "info",
|
severity: "info",
|
||||||
|
|||||||
@@ -1,255 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, 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/actions/RemoveAction"],
|
|
||||||
function (RemoveAction) {
|
|
||||||
|
|
||||||
describe("The Remove action", function () {
|
|
||||||
var action,
|
|
||||||
actionContext,
|
|
||||||
capabilities,
|
|
||||||
mockContext,
|
|
||||||
mockOverlayAPI,
|
|
||||||
mockDomainObject,
|
|
||||||
mockMutation,
|
|
||||||
mockNavigationService,
|
|
||||||
mockParent,
|
|
||||||
mockType,
|
|
||||||
model;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockDomainObject = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
["getId", "getCapability", "getModel"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockMutation = jasmine.createSpyObj("mutation", ["invoke"]);
|
|
||||||
mockType = jasmine.createSpyObj("type", ["hasFeature"]);
|
|
||||||
mockType.hasFeature.and.returnValue(true);
|
|
||||||
|
|
||||||
capabilities = {
|
|
||||||
mutation: mockMutation,
|
|
||||||
type: mockType
|
|
||||||
};
|
|
||||||
|
|
||||||
model = {
|
|
||||||
composition: ["a", "test", "b"]
|
|
||||||
};
|
|
||||||
|
|
||||||
mockParent = {
|
|
||||||
getModel: function () {
|
|
||||||
return model;
|
|
||||||
},
|
|
||||||
getCapability: function (k) {
|
|
||||||
return capabilities[k];
|
|
||||||
},
|
|
||||||
useCapability: function (k, v) {
|
|
||||||
return capabilities[k].invoke(v);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
mockOverlayAPI = jasmine.createSpyObj(
|
|
||||||
"overlayAPI",
|
|
||||||
["dialog"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockNavigationService = jasmine.createSpyObj(
|
|
||||||
"navigationService",
|
|
||||||
[
|
|
||||||
"getNavigation",
|
|
||||||
"setNavigation",
|
|
||||||
"addListener",
|
|
||||||
"removeListener"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
mockNavigationService.getNavigation.and.returnValue(mockDomainObject);
|
|
||||||
|
|
||||||
mockContext = jasmine.createSpyObj("context", ["getParent"]);
|
|
||||||
mockContext.getParent.and.returnValue(mockParent);
|
|
||||||
|
|
||||||
mockDomainObject.getId.and.returnValue("test");
|
|
||||||
mockDomainObject.getCapability.and.returnValue(mockContext);
|
|
||||||
mockDomainObject.getModel.and.returnValue({name: 'test object'});
|
|
||||||
|
|
||||||
mockContext.getParent.and.returnValue(mockParent);
|
|
||||||
mockType.hasFeature.and.returnValue(true);
|
|
||||||
|
|
||||||
actionContext = { domainObject: mockDomainObject };
|
|
||||||
|
|
||||||
action = new RemoveAction({overlays: mockOverlayAPI}, mockNavigationService, actionContext);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("only applies to objects with parents", function () {
|
|
||||||
expect(RemoveAction.appliesTo(actionContext)).toBeTruthy();
|
|
||||||
|
|
||||||
mockContext.getParent.and.returnValue(undefined);
|
|
||||||
|
|
||||||
expect(RemoveAction.appliesTo(actionContext)).toBeFalsy();
|
|
||||||
|
|
||||||
// Also verify that creatability was checked
|
|
||||||
expect(mockType.hasFeature).toHaveBeenCalledWith('creation');
|
|
||||||
});
|
|
||||||
|
|
||||||
it("shows a blocking message dialog", function () {
|
|
||||||
mockParent = jasmine.createSpyObj(
|
|
||||||
"parent",
|
|
||||||
["getModel", "getCapability", "useCapability"]
|
|
||||||
);
|
|
||||||
|
|
||||||
action.perform();
|
|
||||||
|
|
||||||
expect(mockOverlayAPI.dialog).toHaveBeenCalled();
|
|
||||||
|
|
||||||
// Also check that no mutation happens at this point
|
|
||||||
expect(mockParent.useCapability).not.toHaveBeenCalledWith("mutation", jasmine.any(Function));
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("after the remove callback is triggered", function () {
|
|
||||||
var mockChildContext,
|
|
||||||
mockChildObject,
|
|
||||||
mockDialogHandle,
|
|
||||||
mockGrandchildContext,
|
|
||||||
mockGrandchildObject,
|
|
||||||
mockRootContext,
|
|
||||||
mockRootObject;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockChildObject = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
["getId", "getCapability"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockDialogHandle = jasmine.createSpyObj(
|
|
||||||
"dialogHandle",
|
|
||||||
["dismiss"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockGrandchildObject = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
["getId", "getCapability"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockRootObject = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
["getId", "getCapability"]
|
|
||||||
);
|
|
||||||
|
|
||||||
mockChildContext = jasmine.createSpyObj("context", ["getParent"]);
|
|
||||||
mockGrandchildContext = jasmine.createSpyObj("context", ["getParent"]);
|
|
||||||
mockRootContext = jasmine.createSpyObj("context", ["getParent"]);
|
|
||||||
|
|
||||||
mockOverlayAPI.dialog.and.returnValue(mockDialogHandle);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("mutates the parent when performed", function () {
|
|
||||||
action.perform();
|
|
||||||
mockOverlayAPI.dialog.calls.mostRecent().args[0]
|
|
||||||
.buttons[0].callback();
|
|
||||||
|
|
||||||
expect(mockMutation.invoke)
|
|
||||||
.toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
});
|
|
||||||
|
|
||||||
it("changes composition from its mutation function", function () {
|
|
||||||
var mutator, result;
|
|
||||||
|
|
||||||
action.perform();
|
|
||||||
mockOverlayAPI.dialog.calls.mostRecent().args[0]
|
|
||||||
.buttons[0].callback();
|
|
||||||
|
|
||||||
mutator = mockMutation.invoke.calls.mostRecent().args[0];
|
|
||||||
result = mutator(model);
|
|
||||||
|
|
||||||
// Should not have cancelled the mutation
|
|
||||||
expect(result).not.toBe(false);
|
|
||||||
|
|
||||||
// Simulate mutate's behavior (remove can either return a
|
|
||||||
// new model or modify this one in-place)
|
|
||||||
result = result || model;
|
|
||||||
|
|
||||||
// Should have removed "test" - that was our
|
|
||||||
// mock domain object's id.
|
|
||||||
expect(result.composition).toEqual(["a", "b"]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("removes parent of object currently navigated to", function () {
|
|
||||||
// Navigates to child object
|
|
||||||
mockNavigationService.getNavigation.and.returnValue(mockChildObject);
|
|
||||||
|
|
||||||
// Test is id of object being removed
|
|
||||||
// Child object has different id
|
|
||||||
mockDomainObject.getId.and.returnValue("test");
|
|
||||||
mockChildObject.getId.and.returnValue("not test");
|
|
||||||
|
|
||||||
// Sets context for the child and domainObject
|
|
||||||
mockDomainObject.getCapability.and.returnValue(mockContext);
|
|
||||||
mockChildObject.getCapability.and.returnValue(mockChildContext);
|
|
||||||
|
|
||||||
// Parents of child and domainObject are set
|
|
||||||
mockContext.getParent.and.returnValue(mockParent);
|
|
||||||
mockChildContext.getParent.and.returnValue(mockDomainObject);
|
|
||||||
|
|
||||||
mockType.hasFeature.and.returnValue(true);
|
|
||||||
|
|
||||||
action.perform();
|
|
||||||
mockOverlayAPI.dialog.calls.mostRecent().args[0]
|
|
||||||
.buttons[0].callback();
|
|
||||||
|
|
||||||
// Expects navigation to parent of domainObject (removed object)
|
|
||||||
expect(mockNavigationService.setNavigation).toHaveBeenCalledWith(mockParent);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("checks if removing object not in ascendent path (reaches ROOT)", function () {
|
|
||||||
// Navigates to grandchild of ROOT
|
|
||||||
mockNavigationService.getNavigation.and.returnValue(mockGrandchildObject);
|
|
||||||
|
|
||||||
// domainObject (grandparent) is set as ROOT, child and grandchild
|
|
||||||
// are set objects not being removed
|
|
||||||
mockDomainObject.getId.and.returnValue("test 1");
|
|
||||||
mockRootObject.getId.and.returnValue("ROOT");
|
|
||||||
mockChildObject.getId.and.returnValue("not test 2");
|
|
||||||
mockGrandchildObject.getId.and.returnValue("not test 3");
|
|
||||||
|
|
||||||
// Sets context for the grandchild, child, and domainObject
|
|
||||||
mockRootObject.getCapability.and.returnValue(mockRootContext);
|
|
||||||
mockChildObject.getCapability.and.returnValue(mockChildContext);
|
|
||||||
mockGrandchildObject.getCapability.and.returnValue(mockGrandchildContext);
|
|
||||||
|
|
||||||
// Parents of grandchild and child are set
|
|
||||||
mockChildContext.getParent.and.returnValue(mockRootObject);
|
|
||||||
mockGrandchildContext.getParent.and.returnValue(mockChildObject);
|
|
||||||
|
|
||||||
mockType.hasFeature.and.returnValue(true);
|
|
||||||
|
|
||||||
action.perform();
|
|
||||||
mockOverlayAPI.dialog.calls.mostRecent().args[0]
|
|
||||||
.buttons[0].callback();
|
|
||||||
|
|
||||||
// Expects no navigation to occur
|
|
||||||
expect(mockNavigationService.setNavigation).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
@@ -25,7 +25,7 @@ define(
|
|||||||
["../../src/actions/SaveAsAction"],
|
["../../src/actions/SaveAsAction"],
|
||||||
function (SaveAsAction) {
|
function (SaveAsAction) {
|
||||||
|
|
||||||
describe("The Save As action", function () {
|
xdescribe("The Save As action", function () {
|
||||||
var mockDomainObject,
|
var mockDomainObject,
|
||||||
mockClonedObject,
|
mockClonedObject,
|
||||||
mockEditorCapability,
|
mockEditorCapability,
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ define(
|
|||||||
["../../src/capabilities/EditorCapability"],
|
["../../src/capabilities/EditorCapability"],
|
||||||
function (EditorCapability) {
|
function (EditorCapability) {
|
||||||
|
|
||||||
describe("The editor capability", function () {
|
xdescribe("The editor capability", function () {
|
||||||
var mockDomainObject,
|
var mockDomainObject,
|
||||||
capabilities,
|
capabilities,
|
||||||
mockParentObject,
|
mockParentObject,
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ define(
|
|||||||
["../../src/creation/CreateAction"],
|
["../../src/creation/CreateAction"],
|
||||||
function (CreateAction) {
|
function (CreateAction) {
|
||||||
|
|
||||||
describe("The create action", function () {
|
xdescribe("The create action", function () {
|
||||||
var mockType,
|
var mockType,
|
||||||
mockParent,
|
mockParent,
|
||||||
mockContext,
|
mockContext,
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ define(
|
|||||||
["../../src/creation/CreateWizard"],
|
["../../src/creation/CreateWizard"],
|
||||||
function (CreateWizard) {
|
function (CreateWizard) {
|
||||||
|
|
||||||
describe("The create wizard", function () {
|
xdescribe("The create wizard", function () {
|
||||||
var mockType,
|
var mockType,
|
||||||
mockParent,
|
mockParent,
|
||||||
mockProperties,
|
mockProperties,
|
||||||
|
|||||||
@@ -23,16 +23,16 @@
|
|||||||
define([
|
define([
|
||||||
"./src/FormatProvider",
|
"./src/FormatProvider",
|
||||||
"./src/UTCTimeFormat",
|
"./src/UTCTimeFormat",
|
||||||
"./src/DurationFormat",
|
"./src/DurationFormat"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
FormatProvider,
|
FormatProvider,
|
||||||
UTCTimeFormat,
|
UTCTimeFormat,
|
||||||
DurationFormat,
|
DurationFormat
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/formats", {
|
return {
|
||||||
|
name:"platform/commonUI/formats",
|
||||||
|
definition: {
|
||||||
"name": "Format Registry",
|
"name": "Format Registry",
|
||||||
"description": "Provides a registry for formats, which allow parsing and formatting of values.",
|
"description": "Provides a registry for formats, which allow parsing and formatting of values.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -74,5 +74,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -66,8 +66,7 @@ define([
|
|||||||
"./res/templates/object-inspector.html",
|
"./res/templates/object-inspector.html",
|
||||||
"./res/templates/controls/selector.html",
|
"./res/templates/controls/selector.html",
|
||||||
"./res/templates/controls/datetime-picker.html",
|
"./res/templates/controls/datetime-picker.html",
|
||||||
"./res/templates/controls/datetime-field.html",
|
"./res/templates/controls/datetime-field.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
UrlService,
|
UrlService,
|
||||||
PopupService,
|
PopupService,
|
||||||
@@ -114,11 +113,12 @@ define([
|
|||||||
objectInspectorTemplate,
|
objectInspectorTemplate,
|
||||||
selectorTemplate,
|
selectorTemplate,
|
||||||
datetimePickerTemplate,
|
datetimePickerTemplate,
|
||||||
datetimeFieldTemplate,
|
datetimeFieldTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/general", {
|
return {
|
||||||
|
name:"platform/commonUI/general",
|
||||||
|
definition: {
|
||||||
"name": "General UI elements",
|
"name": "General UI elements",
|
||||||
"description": "General UI elements, meant to be reused across modes",
|
"description": "General UI elements, meant to be reused across modes",
|
||||||
"resources": "res",
|
"resources": "res",
|
||||||
@@ -524,5 +524,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
-->
|
-->
|
||||||
<!-- DO NOT ADD SPACES BETWEEN THE SPANS - IT ADDS WHITE SPACE!! -->
|
<!-- DO NOT ADD SPACES BETWEEN THE SPANS - IT ADDS WHITE SPACE!! -->
|
||||||
<div class="c-indicator {{ngModel.getCssClass()}}"
|
<div class="c-indicator {{ngModel.getCssClass()}}"
|
||||||
title="{{ngModel.getDescription()}}"
|
|
||||||
ng-show="ngModel.getText().length > 0">
|
ng-show="ngModel.getText().length > 0">
|
||||||
<span class="label c-indicator__label">{{ngModel.getText()}}</span>
|
<span class="label c-indicator__label">{{ngModel.getText()}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ define([
|
|||||||
'zepto'
|
'zepto'
|
||||||
], function (TreeView, $) {
|
], function (TreeView, $) {
|
||||||
|
|
||||||
describe("TreeView", function () {
|
xdescribe("TreeView", function () {
|
||||||
var mockGestureService,
|
var mockGestureService,
|
||||||
mockGestureHandle,
|
mockGestureHandle,
|
||||||
mockDomainObject,
|
mockDomainObject,
|
||||||
|
|||||||
@@ -27,8 +27,7 @@ define([
|
|||||||
"./res/info-table.html",
|
"./res/info-table.html",
|
||||||
"./res/info-bubble.html",
|
"./res/info-bubble.html",
|
||||||
"./res/bubble.html",
|
"./res/bubble.html",
|
||||||
"./res/templates/info-button.html",
|
"./res/templates/info-button.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
InfoGesture,
|
InfoGesture,
|
||||||
InfoButtonGesture,
|
InfoButtonGesture,
|
||||||
@@ -36,11 +35,12 @@ define([
|
|||||||
infoTableTemplate,
|
infoTableTemplate,
|
||||||
infoBubbleTemplate,
|
infoBubbleTemplate,
|
||||||
bubbleTemplate,
|
bubbleTemplate,
|
||||||
infoButtonTemplate,
|
infoButtonTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/inspect", {
|
return {
|
||||||
|
name:"platform/commonUI/inspect",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"templates": [
|
"templates": [
|
||||||
{
|
{
|
||||||
@@ -112,5 +112,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -23,16 +23,16 @@
|
|||||||
define([
|
define([
|
||||||
"./src/MCTDevice",
|
"./src/MCTDevice",
|
||||||
"./src/AgentService",
|
"./src/AgentService",
|
||||||
"./src/DeviceClassifier",
|
"./src/DeviceClassifier"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
MCTDevice,
|
MCTDevice,
|
||||||
AgentService,
|
AgentService,
|
||||||
DeviceClassifier,
|
DeviceClassifier
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/mobile", {
|
return {
|
||||||
|
name:"platform/commonUI/mobile",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"directives": [
|
"directives": [
|
||||||
{
|
{
|
||||||
@@ -62,5 +62,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,17 +24,17 @@ define([
|
|||||||
"./src/NotificationIndicatorController",
|
"./src/NotificationIndicatorController",
|
||||||
"./src/NotificationIndicator",
|
"./src/NotificationIndicator",
|
||||||
"./src/NotificationService",
|
"./src/NotificationService",
|
||||||
"./res/notification-indicator.html",
|
"./res/notification-indicator.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
NotificationIndicatorController,
|
NotificationIndicatorController,
|
||||||
NotificationIndicator,
|
NotificationIndicator,
|
||||||
NotificationService,
|
NotificationService,
|
||||||
notificationIndicatorTemplate,
|
notificationIndicatorTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/notification", {
|
return {
|
||||||
|
name:"platform/commonUI/notification",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"templates": [
|
"templates": [
|
||||||
{
|
{
|
||||||
@@ -71,5 +71,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ define(
|
|||||||
['../src/NotificationIndicatorController'],
|
['../src/NotificationIndicatorController'],
|
||||||
function (NotificationIndicatorController) {
|
function (NotificationIndicatorController) {
|
||||||
|
|
||||||
describe("The notification indicator controller ", function () {
|
xdescribe("The notification indicator controller ", function () {
|
||||||
var mockNotificationService,
|
var mockNotificationService,
|
||||||
mockScope,
|
mockScope,
|
||||||
mockDialogService,
|
mockDialogService,
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
'./src/InspectorController',
|
'./src/InspectorController',
|
||||||
'./src/EditableRegionPolicy',
|
'./src/EditableRegionPolicy'
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
InspectorController,
|
InspectorController,
|
||||||
EditableRegionPolicy,
|
EditableRegionPolicy
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/commonUI/regions", {
|
return {
|
||||||
|
name:"platform/commonUI/regions",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"controllers": [
|
"controllers": [
|
||||||
{
|
{
|
||||||
@@ -50,5 +50,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -25,18 +25,18 @@ define([
|
|||||||
"./src/CompositionMutabilityPolicy",
|
"./src/CompositionMutabilityPolicy",
|
||||||
"./src/CompositionModelPolicy",
|
"./src/CompositionModelPolicy",
|
||||||
"./src/ComposeActionPolicy",
|
"./src/ComposeActionPolicy",
|
||||||
"./src/PersistableCompositionPolicy",
|
"./src/PersistableCompositionPolicy"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
CompositionPolicy,
|
CompositionPolicy,
|
||||||
CompositionMutabilityPolicy,
|
CompositionMutabilityPolicy,
|
||||||
CompositionModelPolicy,
|
CompositionModelPolicy,
|
||||||
ComposeActionPolicy,
|
ComposeActionPolicy,
|
||||||
PersistableCompositionPolicy,
|
PersistableCompositionPolicy
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/containment", {
|
return {
|
||||||
|
name:"platform/containment",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"policies": [
|
"policies": [
|
||||||
{
|
{
|
||||||
@@ -71,5 +71,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
define(
|
define(
|
||||||
["../src/ComposeActionPolicy"],
|
["../src/ComposeActionPolicy"],
|
||||||
function (ComposeActionPolicy) {
|
function (ComposeActionPolicy) {
|
||||||
describe("The compose action policy", function () {
|
xdescribe("The compose action policy", function () {
|
||||||
var mockInjector,
|
var mockInjector,
|
||||||
mockPolicyService,
|
mockPolicyService,
|
||||||
mockTypes,
|
mockTypes,
|
||||||
|
|||||||
@@ -49,8 +49,7 @@ define([
|
|||||||
"./src/services/Now",
|
"./src/services/Now",
|
||||||
"./src/services/Throttle",
|
"./src/services/Throttle",
|
||||||
"./src/services/Topic",
|
"./src/services/Topic",
|
||||||
"./src/services/Instantiate",
|
"./src/services/Instantiate"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
DomainObjectProvider,
|
DomainObjectProvider,
|
||||||
CoreCapabilityProvider,
|
CoreCapabilityProvider,
|
||||||
@@ -80,11 +79,12 @@ define([
|
|||||||
Now,
|
Now,
|
||||||
Throttle,
|
Throttle,
|
||||||
Topic,
|
Topic,
|
||||||
Instantiate,
|
Instantiate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/core", {
|
return {
|
||||||
|
name:"platform/core",
|
||||||
|
definition: {
|
||||||
"name": "Open MCT Core",
|
"name": "Open MCT Core",
|
||||||
"description": "Defines core concepts of Open MCT.",
|
"description": "Defines core concepts of Open MCT.",
|
||||||
"sources": "src",
|
"sources": "src",
|
||||||
@@ -387,5 +387,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ define([
|
|||||||
"./src/services/MoveService",
|
"./src/services/MoveService",
|
||||||
"./src/services/LinkService",
|
"./src/services/LinkService",
|
||||||
"./src/services/CopyService",
|
"./src/services/CopyService",
|
||||||
"./src/services/LocationService",
|
"./src/services/LocationService"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
MoveAction,
|
MoveAction,
|
||||||
CopyAction,
|
CopyAction,
|
||||||
@@ -50,11 +49,12 @@ define([
|
|||||||
MoveService,
|
MoveService,
|
||||||
LinkService,
|
LinkService,
|
||||||
CopyService,
|
CopyService,
|
||||||
LocationService,
|
LocationService
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/entanglement", {
|
return {
|
||||||
|
name:"platform/entanglement",
|
||||||
|
definition: {
|
||||||
"name": "Entanglement",
|
"name": "Entanglement",
|
||||||
"description": "Tools to assist you in entangling the world of WARP.",
|
"description": "Tools to assist you in entangling the world of WARP.",
|
||||||
"configuration": {},
|
"configuration": {},
|
||||||
@@ -197,5 +197,6 @@ define([
|
|||||||
],
|
],
|
||||||
"licenses": []
|
"licenses": []
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ define(
|
|||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe("CopyService", function () {
|
xdescribe("CopyService", function () {
|
||||||
var policyService;
|
var policyService;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ define(
|
|||||||
],
|
],
|
||||||
function (LinkService, domainObjectFactory, ControlledPromise) {
|
function (LinkService, domainObjectFactory, ControlledPromise) {
|
||||||
|
|
||||||
describe("LinkService", function () {
|
xdescribe("LinkService", function () {
|
||||||
|
|
||||||
var linkService,
|
var linkService,
|
||||||
mockPolicyService;
|
mockPolicyService;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ define(
|
|||||||
ControlledPromise
|
ControlledPromise
|
||||||
) {
|
) {
|
||||||
|
|
||||||
describe("MoveService", function () {
|
xdescribe("MoveService", function () {
|
||||||
|
|
||||||
var moveService,
|
var moveService,
|
||||||
policyService,
|
policyService,
|
||||||
|
|||||||
@@ -21,14 +21,14 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/WorkerService",
|
"./src/WorkerService"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
WorkerService,
|
WorkerService
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/execution", {
|
return {
|
||||||
|
name:"platform/execution",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{
|
||||||
@@ -41,5 +41,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,11 +22,12 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
"./ExportService",
|
"./ExportService",
|
||||||
"saveAs",
|
"saveAs"
|
||||||
"legacyRegistry"
|
], function (ExportService, saveAs) {
|
||||||
], function (ExportService, saveAs, legacyRegistry) {
|
|
||||||
|
|
||||||
legacyRegistry.register("platform/exporters", {
|
return {
|
||||||
|
name:"platform/exporters",
|
||||||
|
definition: {
|
||||||
extensions: {
|
extensions: {
|
||||||
services: [
|
services: [
|
||||||
{
|
{
|
||||||
@@ -59,5 +60,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -35,8 +35,7 @@ define([
|
|||||||
"./src/actions/StopTimerAction",
|
"./src/actions/StopTimerAction",
|
||||||
"./src/actions/PauseTimerAction",
|
"./src/actions/PauseTimerAction",
|
||||||
"./res/templates/clock.html",
|
"./res/templates/clock.html",
|
||||||
"./res/templates/timer.html",
|
"./res/templates/timer.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
MomentTimezone,
|
MomentTimezone,
|
||||||
ClockIndicator,
|
ClockIndicator,
|
||||||
@@ -52,10 +51,11 @@ define([
|
|||||||
StopTimerAction,
|
StopTimerAction,
|
||||||
PauseTimerAction,
|
PauseTimerAction,
|
||||||
clockTemplate,
|
clockTemplate,
|
||||||
timerTemplate,
|
timerTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
legacyRegistry.register("platform/features/clock", {
|
return {
|
||||||
|
name:"platform/features/clock",
|
||||||
|
definition: {
|
||||||
"name": "Clocks/Timers",
|
"name": "Clocks/Timers",
|
||||||
"descriptions": "Domain objects for displaying current & relative times.",
|
"descriptions": "Domain objects for displaying current & relative times.",
|
||||||
"configuration": {
|
"configuration": {
|
||||||
@@ -316,5 +316,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ define([
|
|||||||
MCT,
|
MCT,
|
||||||
$
|
$
|
||||||
) {
|
) {
|
||||||
describe("The timer-following indicator", function () {
|
xdescribe("The timer-following indicator", function () {
|
||||||
var timerService;
|
var timerService;
|
||||||
var openmct;
|
var openmct;
|
||||||
|
|
||||||
|
|||||||
@@ -22,14 +22,14 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
'./src/HyperlinkController',
|
'./src/HyperlinkController',
|
||||||
'legacyRegistry',
|
|
||||||
'./res/templates/hyperlink.html'
|
'./res/templates/hyperlink.html'
|
||||||
], function (
|
], function (
|
||||||
HyperlinkController,
|
HyperlinkController,
|
||||||
legacyRegistry,
|
|
||||||
hyperlinkTemplate
|
hyperlinkTemplate
|
||||||
) {
|
) {
|
||||||
legacyRegistry.register("platform/features/hyperlink", {
|
return {
|
||||||
|
name:"platform/features/hyperlink",
|
||||||
|
definition: {
|
||||||
"name": "Hyperlink",
|
"name": "Hyperlink",
|
||||||
"description": "Insert a hyperlink to reference a link",
|
"description": "Insert a hyperlink to reference a link",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -115,5 +115,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,17 +24,17 @@ define([
|
|||||||
"./src/policies/ImageryViewPolicy",
|
"./src/policies/ImageryViewPolicy",
|
||||||
"./src/controllers/ImageryController",
|
"./src/controllers/ImageryController",
|
||||||
"./src/directives/MCTBackgroundImage",
|
"./src/directives/MCTBackgroundImage",
|
||||||
"./res/templates/imagery.html",
|
"./res/templates/imagery.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ImageryViewPolicy,
|
ImageryViewPolicy,
|
||||||
ImageryController,
|
ImageryController,
|
||||||
MCTBackgroundImage,
|
MCTBackgroundImage,
|
||||||
imageryTemplate,
|
imageryTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/features/imagery", {
|
return {
|
||||||
|
name:"platform/features/imagery",
|
||||||
|
definition: {
|
||||||
"name": "Plot view for telemetry",
|
"name": "Plot view for telemetry",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"views": [
|
"views": [
|
||||||
@@ -81,5 +81,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ define(
|
|||||||
var MOCK_ELEMENT_TEMPLATE =
|
var MOCK_ELEMENT_TEMPLATE =
|
||||||
'<div class="l-image-thumbs-wrapper"></div>';
|
'<div class="l-image-thumbs-wrapper"></div>';
|
||||||
|
|
||||||
describe("The Imagery controller", function () {
|
xdescribe("The Imagery controller", function () {
|
||||||
var $scope,
|
var $scope,
|
||||||
openmct,
|
openmct,
|
||||||
oldDomainObject,
|
oldDomainObject,
|
||||||
|
|||||||
@@ -20,13 +20,10 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
define([], function () {
|
||||||
'legacyRegistry'
|
return {
|
||||||
], function (
|
name:"platform/features/my-items",
|
||||||
legacyRegistry
|
definition: {
|
||||||
) {
|
|
||||||
|
|
||||||
legacyRegistry.register("platform/features/my-items", {
|
|
||||||
"name": "My Items",
|
"name": "My Items",
|
||||||
"description": "Defines a root named My Items",
|
"description": "Defines a root named My Items",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -47,5 +44,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/EmbeddedPageController",
|
"./src/EmbeddedPageController",
|
||||||
"./res/iframe.html",
|
"./res/iframe.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
EmbeddedPageController,
|
EmbeddedPageController,
|
||||||
iframeTemplate,
|
iframeTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/features/pages", {
|
return {
|
||||||
|
name:"platform/features/pages",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"types": [
|
"types": [
|
||||||
{
|
{
|
||||||
@@ -72,5 +72,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
<!--
|
|
||||||
Open MCT, Copyright (c) 2014-2018, 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.
|
|
||||||
-->
|
|
||||||
<div class="l-iframe abs">
|
|
||||||
<iframe ng-controller="EmbeddedPageController as ctl"
|
|
||||||
ng-src="{{ctl.trust(model.url)}}">
|
|
||||||
</iframe>
|
|
||||||
</div>
|
|
||||||
@@ -22,15 +22,14 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
|
|
||||||
"./res/markup.html",
|
"./res/markup.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
|
markupTemplate
|
||||||
markupTemplate,
|
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/features/static-markup", {
|
return {
|
||||||
|
name:"platform/features/static-markup",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"types": [
|
"types": [
|
||||||
{
|
{
|
||||||
@@ -52,5 +51,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -21,13 +21,13 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./res/templates/deprecated-timeline-message.html",
|
"./res/templates/deprecated-timeline-message.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
deprecatedTimelineMessage,
|
deprecatedTimelineMessage
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
legacyRegistry.register('platform/features/timeline', {
|
return {
|
||||||
|
name: 'platform/features/timeline',
|
||||||
|
definition: {
|
||||||
extensions: {
|
extensions: {
|
||||||
types: [
|
types: [
|
||||||
{
|
{
|
||||||
@@ -47,5 +47,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ define([
|
|||||||
"./res/templates/controls/dialog.html",
|
"./res/templates/controls/dialog.html",
|
||||||
"./res/templates/controls/radio.html",
|
"./res/templates/controls/radio.html",
|
||||||
"./res/templates/controls/file-input.html",
|
"./res/templates/controls/file-input.html",
|
||||||
"./res/templates/controls/snap-view.html",
|
"./res/templates/controls/snap-view.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
MCTForm,
|
MCTForm,
|
||||||
MCTControl,
|
MCTControl,
|
||||||
@@ -72,11 +71,12 @@ define([
|
|||||||
dialogTemplate,
|
dialogTemplate,
|
||||||
radioTemplate,
|
radioTemplate,
|
||||||
fileInputTemplate,
|
fileInputTemplate,
|
||||||
snapViewTemplate,
|
snapViewTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/forms", {
|
return {
|
||||||
|
name:"platform/forms",
|
||||||
|
definition: {
|
||||||
"name": "MCT Forms",
|
"name": "MCT Forms",
|
||||||
"description": "Form generator; includes directive and some controls.",
|
"description": "Form generator; includes directive and some controls.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -213,5 +213,6 @@ define([
|
|||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ define(
|
|||||||
["../src/MCTFileInput"],
|
["../src/MCTFileInput"],
|
||||||
function (MCTFileInput) {
|
function (MCTFileInput) {
|
||||||
|
|
||||||
describe("The mct-file-input directive", function () {
|
xdescribe("The mct-file-input directive", function () {
|
||||||
|
|
||||||
var mockScope,
|
var mockScope,
|
||||||
mockFileInputService,
|
mockFileInputService,
|
||||||
|
|||||||
@@ -20,15 +20,11 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
define([], function () {
|
||||||
|
|
||||||
'legacyRegistry'
|
return {
|
||||||
], function (
|
name:"platform/framework",
|
||||||
|
definition: {
|
||||||
legacyRegistry
|
|
||||||
) {
|
|
||||||
|
|
||||||
legacyRegistry.register("platform/framework", {
|
|
||||||
"name": "Open MCT Framework Component",
|
"name": "Open MCT Framework Component",
|
||||||
"description": "Framework layer for Open MCT; interprets bundle definitions and serves as an intermediary between Require and Angular",
|
"description": "Framework layer for Open MCT; interprets bundle definitions and serves as an intermediary between Require and Angular",
|
||||||
"libraries": "lib",
|
"libraries": "lib",
|
||||||
@@ -106,5 +102,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -55,13 +55,13 @@ define([
|
|||||||
|
|
||||||
FrameworkLayer.prototype.initializeApplication = function (
|
FrameworkLayer.prototype.initializeApplication = function (
|
||||||
angular,
|
angular,
|
||||||
legacyRegistry,
|
openmct,
|
||||||
logLevel
|
logLevel
|
||||||
) {
|
) {
|
||||||
var $http = this.$http,
|
var $http = this.$http,
|
||||||
$log = this.$log,
|
$log = this.$log,
|
||||||
app = angular.module(Constants.MODULE_NAME, ["ngRoute"]),
|
app = angular.module(Constants.MODULE_NAME, ["ngRoute"]),
|
||||||
loader = new BundleLoader($http, $log, legacyRegistry),
|
loader = new BundleLoader($http, $log, openmct.legacyRegistry),
|
||||||
resolver = new BundleResolver(
|
resolver = new BundleResolver(
|
||||||
new ExtensionResolver(
|
new ExtensionResolver(
|
||||||
new ImplementationLoader({}),
|
new ImplementationLoader({}),
|
||||||
@@ -77,7 +77,7 @@ define([
|
|||||||
),
|
),
|
||||||
bootstrapper = new ApplicationBootstrapper(
|
bootstrapper = new ApplicationBootstrapper(
|
||||||
angular,
|
angular,
|
||||||
window.document,
|
openmct.element,
|
||||||
$log
|
$log
|
||||||
),
|
),
|
||||||
initializer = new FrameworkInitializer(
|
initializer = new FrameworkInitializer(
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ define(
|
|||||||
function Main() {
|
function Main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Main.prototype.run = function (legacyRegistry) {
|
Main.prototype.run = function (openmct) {
|
||||||
// Get a reference to Angular's injector, so we can get $http and $log
|
// Get a reference to Angular's injector, so we can get $http and $log
|
||||||
// services, which are useful to the framework layer.
|
// services, which are useful to the framework layer.
|
||||||
var injector = angular.injector(['ng']);
|
var injector = angular.injector(['ng']);
|
||||||
@@ -53,7 +53,7 @@ define(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return injector.instantiate(['$http', '$log', FrameworkLayer])
|
return injector.instantiate(['$http', '$log', FrameworkLayer])
|
||||||
.initializeApplication(angular, legacyRegistry, logLevel());
|
.initializeApplication(angular, openmct, logLevel());
|
||||||
};
|
};
|
||||||
|
|
||||||
return Main;
|
return Main;
|
||||||
|
|||||||
@@ -24,17 +24,17 @@ define([
|
|||||||
"./src/IdentityAggregator",
|
"./src/IdentityAggregator",
|
||||||
"./src/IdentityProvider",
|
"./src/IdentityProvider",
|
||||||
"./src/IdentityCreationDecorator",
|
"./src/IdentityCreationDecorator",
|
||||||
"./src/IdentityIndicator",
|
"./src/IdentityIndicator"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
IdentityAggregator,
|
IdentityAggregator,
|
||||||
IdentityProvider,
|
IdentityProvider,
|
||||||
IdentityCreationDecorator,
|
IdentityCreationDecorator,
|
||||||
IdentityIndicator,
|
IdentityIndicator
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/identity", {
|
return {
|
||||||
|
name:"platform/identity",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
@@ -82,5 +82,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ define([
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
openmct.legacyRegistry.enable('platform/import-export');
|
openmct.legacyRegistry.enable('platform/import-export');
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,8 +19,7 @@
|
|||||||
* this source code distribution or the Licensing information page available
|
* this source code distribution or the Licensing information page available
|
||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
define(['zepto', '../../../../src/api/objects/object-utils.js'], function ($, objectUtils) {
|
||||||
define(['zepto'], function ($) {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The ImportAsJSONAction is available from context menus and allows a user
|
* The ImportAsJSONAction is available from context menus and allows a user
|
||||||
@@ -61,9 +60,15 @@ define(['zepto'], function ($) {
|
|||||||
|
|
||||||
ImportAsJSONAction.prototype.importObjectTree = function (objTree) {
|
ImportAsJSONAction.prototype.importObjectTree = function (objTree) {
|
||||||
var parent = this.context.domainObject;
|
var parent = this.context.domainObject;
|
||||||
var tree = this.generateNewIdentifiers(objTree);
|
var namespace = parent.useCapability('adapter').identifier.namespace;
|
||||||
|
|
||||||
|
var tree = this.generateNewIdentifiers(objTree, namespace);
|
||||||
var rootId = tree.rootId;
|
var rootId = tree.rootId;
|
||||||
var rootObj = this.instantiate(tree.openmct[rootId], rootId);
|
|
||||||
|
var rootModel = tree.openmct[rootId];
|
||||||
|
delete rootModel.persisted;
|
||||||
|
|
||||||
|
var rootObj = this.instantiate(rootModel, rootId);
|
||||||
var newStyleParent = parent.useCapability('adapter');
|
var newStyleParent = parent.useCapability('adapter');
|
||||||
var newStyleRootObj = rootObj.useCapability('adapter');
|
var newStyleRootObj = rootObj.useCapability('adapter');
|
||||||
|
|
||||||
@@ -105,8 +110,10 @@ define(['zepto'], function ($) {
|
|||||||
if (!tree[keystring] || seen.includes(keystring)) {
|
if (!tree[keystring] || seen.includes(keystring)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let newModel = tree[keystring];
|
||||||
|
delete newModel.persisted;
|
||||||
|
|
||||||
newObj = this.instantiate(tree[keystring], keystring);
|
newObj = this.instantiate(newModel, keystring);
|
||||||
newObj.getCapability("location")
|
newObj.getCapability("location")
|
||||||
.setPrimaryLocation(tree[keystring].location);
|
.setPrimaryLocation(tree[keystring].location);
|
||||||
this.deepInstantiate(newObj, tree, seen);
|
this.deepInstantiate(newObj, tree, seen);
|
||||||
@@ -114,11 +121,17 @@ define(['zepto'], function ($) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ImportAsJSONAction.prototype.generateNewIdentifiers = function (tree) {
|
ImportAsJSONAction.prototype.generateNewIdentifiers = function (tree, namespace) {
|
||||||
// For each domain object in the file, generate new ID, replace in tree
|
// For each domain object in the file, generate new ID, replace in tree
|
||||||
Object.keys(tree.openmct).forEach(function (domainObjectId) {
|
Object.keys(tree.openmct).forEach(function (domainObjectId) {
|
||||||
var newId = this.identifierService.generate();
|
let newId = {
|
||||||
tree = this.rewriteId(domainObjectId, newId, tree);
|
namespace: namespace,
|
||||||
|
key: this.identifierService.generate()
|
||||||
|
};
|
||||||
|
|
||||||
|
let oldId = objectUtils.parseKeyString(domainObjectId);
|
||||||
|
|
||||||
|
tree = this.rewriteId(oldId, newId, tree);
|
||||||
}, this);
|
}, this);
|
||||||
return tree;
|
return tree;
|
||||||
};
|
};
|
||||||
@@ -129,9 +142,21 @@ define(['zepto'], function ($) {
|
|||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
ImportAsJSONAction.prototype.rewriteId = function (oldID, newID, tree) {
|
ImportAsJSONAction.prototype.rewriteId = function (oldId, newId, tree) {
|
||||||
tree = JSON.stringify(tree).replace(new RegExp(oldID, 'g'), newID);
|
let newIdKeyString = this.openmct.objects.makeKeyString(newId);
|
||||||
return JSON.parse(tree);
|
let oldIdKeyString = this.openmct.objects.makeKeyString(oldId);
|
||||||
|
tree = JSON.stringify(tree).replace(new RegExp(oldIdKeyString, 'g'), newIdKeyString);
|
||||||
|
|
||||||
|
return JSON.parse(tree, (key, value) => {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(value, 'key') &&
|
||||||
|
Object.prototype.hasOwnProperty.call(value, 'namespace') &&
|
||||||
|
value.key === oldId.key &&
|
||||||
|
value.namespace === oldId.namespace) {
|
||||||
|
return newId
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ImportAsJSONAction.prototype.getFormModel = function () {
|
ImportAsJSONAction.prototype.getFormModel = function () {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ define(
|
|||||||
],
|
],
|
||||||
function (ExportAsJSONAction, domainObjectFactory, MCT, AdapterCapability) {
|
function (ExportAsJSONAction, domainObjectFactory, MCT, AdapterCapability) {
|
||||||
|
|
||||||
describe("The export JSON action", function () {
|
xdescribe("The export JSON action", function () {
|
||||||
|
|
||||||
var context,
|
var context,
|
||||||
action,
|
action,
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ define(
|
|||||||
],
|
],
|
||||||
function (ImportAsJSONAction, domainObjectFactory) {
|
function (ImportAsJSONAction, domainObjectFactory) {
|
||||||
|
|
||||||
describe("The import JSON action", function () {
|
xdescribe("The import JSON action", function () {
|
||||||
|
|
||||||
var context = {};
|
var context = {};
|
||||||
var action,
|
var action,
|
||||||
|
|||||||
@@ -21,14 +21,14 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/PersistenceAggregator",
|
"./src/PersistenceAggregator"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
PersistenceAggregator,
|
PersistenceAggregator
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/persistence/aggregator", {
|
return {
|
||||||
|
name:"platform/persistence/aggregator",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
@@ -41,5 +41,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/CouchPersistenceProvider",
|
"./src/CouchPersistenceProvider",
|
||||||
"./src/CouchIndicator",
|
"./src/CouchIndicator"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
CouchPersistenceProvider,
|
CouchPersistenceProvider,
|
||||||
CouchIndicator,
|
CouchIndicator
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/persistence/couch", {
|
return {
|
||||||
|
name:"platform/persistence/couch",
|
||||||
|
definition: {
|
||||||
"name": "Couch Persistence",
|
"name": "Couch Persistence",
|
||||||
"description": "Adapter to read and write objects using a CouchDB instance.",
|
"description": "Adapter to read and write objects using a CouchDB instance.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -73,5 +73,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ define(
|
|||||||
}
|
}
|
||||||
|
|
||||||
CouchIndicator.prototype.getCssClass = function () {
|
CouchIndicator.prototype.getCssClass = function () {
|
||||||
return "c-indicator--clickable icon-database " + this.state.statusClass;
|
return "c-indicator--clickable icon-suitcase " + this.state.statusClass;
|
||||||
};
|
};
|
||||||
|
|
||||||
CouchIndicator.prototype.getGlyphClass = function () {
|
CouchIndicator.prototype.getGlyphClass = function () {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ define(
|
|||||||
["../src/CouchIndicator"],
|
["../src/CouchIndicator"],
|
||||||
function (CouchIndicator) {
|
function (CouchIndicator) {
|
||||||
|
|
||||||
describe("The CouchDB status indicator", function () {
|
xdescribe("The CouchDB status indicator", function () {
|
||||||
var mockHttp,
|
var mockHttp,
|
||||||
mockInterval,
|
mockInterval,
|
||||||
testPath,
|
testPath,
|
||||||
|
|||||||
@@ -23,16 +23,16 @@
|
|||||||
define([
|
define([
|
||||||
"./src/ElasticPersistenceProvider",
|
"./src/ElasticPersistenceProvider",
|
||||||
"./src/ElasticSearchProvider",
|
"./src/ElasticSearchProvider",
|
||||||
"./src/ElasticIndicator",
|
"./src/ElasticIndicator"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
ElasticPersistenceProvider,
|
ElasticPersistenceProvider,
|
||||||
ElasticSearchProvider,
|
ElasticSearchProvider,
|
||||||
ElasticIndicator,
|
ElasticIndicator
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/persistence/elastic", {
|
return {
|
||||||
|
name:"platform/persistence/elastic",
|
||||||
|
definition: {
|
||||||
"name": "ElasticSearch Persistence",
|
"name": "ElasticSearch Persistence",
|
||||||
"description": "Adapter to read and write objects using an ElasticSearch instance.",
|
"description": "Adapter to read and write objects using an ElasticSearch instance.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -92,5 +92,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ define(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ElasticIndicator.prototype.getCssClass = function () {
|
ElasticIndicator.prototype.getCssClass = function () {
|
||||||
return "c-indicator--clickable icon-database";
|
return "c-indicator--clickable icon-suitcase";
|
||||||
};
|
};
|
||||||
ElasticIndicator.prototype.getGlyphClass = function () {
|
ElasticIndicator.prototype.getGlyphClass = function () {
|
||||||
return this.state.glyphClass;
|
return this.state.glyphClass;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ define(
|
|||||||
["../src/ElasticIndicator"],
|
["../src/ElasticIndicator"],
|
||||||
function (ElasticIndicator) {
|
function (ElasticIndicator) {
|
||||||
|
|
||||||
describe("The ElasticSearch status indicator", function () {
|
xdescribe("The ElasticSearch status indicator", function () {
|
||||||
var mockHttp,
|
var mockHttp,
|
||||||
mockInterval,
|
mockInterval,
|
||||||
testPath,
|
testPath,
|
||||||
@@ -59,7 +59,7 @@ define(
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("has a database icon", function () {
|
it("has a database icon", function () {
|
||||||
expect(indicator.getCssClass()).toEqual("icon-database");
|
expect(indicator.getCssClass()).toEqual("icon-suitcase");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("consults the database at the configured path", function () {
|
it("consults the database at the configured path", function () {
|
||||||
|
|||||||
@@ -22,15 +22,15 @@
|
|||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/LocalStoragePersistenceProvider",
|
"./src/LocalStoragePersistenceProvider",
|
||||||
"./src/LocalStorageIndicator",
|
"./src/LocalStorageIndicator"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
LocalStoragePersistenceProvider,
|
LocalStoragePersistenceProvider,
|
||||||
LocalStorageIndicator,
|
LocalStorageIndicator
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/persistence/local", {
|
return {
|
||||||
|
name:"platform/persistence/local",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
@@ -56,5 +56,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ define(
|
|||||||
}
|
}
|
||||||
|
|
||||||
LocalStorageIndicator.prototype.getCssClass = function () {
|
LocalStorageIndicator.prototype.getCssClass = function () {
|
||||||
return "c-indicator--clickable icon-database s-status-caution";
|
return "c-indicator--clickable icon-suitcase s-status-caution";
|
||||||
};
|
};
|
||||||
LocalStorageIndicator.prototype.getGlyphClass = function () {
|
LocalStorageIndicator.prototype.getGlyphClass = function () {
|
||||||
return 'caution';
|
return 'caution';
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ define(
|
|||||||
["../src/LocalStorageIndicator"],
|
["../src/LocalStorageIndicator"],
|
||||||
function (LocalStorageIndicator) {
|
function (LocalStorageIndicator) {
|
||||||
|
|
||||||
describe("The local storage status indicator", function () {
|
xdescribe("The local storage status indicator", function () {
|
||||||
var indicator;
|
var indicator;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
@@ -38,7 +38,7 @@ define(
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("has a database icon", function () {
|
it("has a database icon", function () {
|
||||||
expect(indicator.getCssClass()).toEqual("icon-database s-status-caution");
|
expect(indicator.getCssClass()).toEqual("icon-suitcase s-status-caution");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("has a 'caution' class to draw attention", function () {
|
it("has a 'caution' class to draw attention", function () {
|
||||||
|
|||||||
@@ -24,17 +24,17 @@ define([
|
|||||||
"./src/QueuingPersistenceCapabilityDecorator",
|
"./src/QueuingPersistenceCapabilityDecorator",
|
||||||
"./src/PersistenceQueue",
|
"./src/PersistenceQueue",
|
||||||
"./src/PersistenceFailureController",
|
"./src/PersistenceFailureController",
|
||||||
"./res/templates/persistence-failure-dialog.html",
|
"./res/templates/persistence-failure-dialog.html"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
QueuingPersistenceCapabilityDecorator,
|
QueuingPersistenceCapabilityDecorator,
|
||||||
PersistenceQueue,
|
PersistenceQueue,
|
||||||
PersistenceFailureController,
|
PersistenceFailureController,
|
||||||
persistenceFailureDialogTemplate,
|
persistenceFailureDialogTemplate
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/persistence/queue", {
|
return {
|
||||||
|
name:"platform/persistence/queue",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
@@ -77,5 +77,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -32,14 +32,6 @@ define(
|
|||||||
mockPromise,
|
mockPromise,
|
||||||
handler;
|
handler;
|
||||||
|
|
||||||
function asPromise(value) {
|
|
||||||
return (value || {}).then ? value : {
|
|
||||||
then: function (callback) {
|
|
||||||
return asPromise(callback(value));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeMockFailure(id, index) {
|
function makeMockFailure(id, index) {
|
||||||
var mockFailure = jasmine.createSpyObj(
|
var mockFailure = jasmine.createSpyObj(
|
||||||
'failure-' + id,
|
'failure-' + id,
|
||||||
|
|||||||
@@ -23,16 +23,16 @@
|
|||||||
define([
|
define([
|
||||||
"./src/PolicyActionDecorator",
|
"./src/PolicyActionDecorator",
|
||||||
"./src/PolicyViewDecorator",
|
"./src/PolicyViewDecorator",
|
||||||
"./src/PolicyProvider",
|
"./src/PolicyProvider"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
PolicyActionDecorator,
|
PolicyActionDecorator,
|
||||||
PolicyViewDecorator,
|
PolicyViewDecorator,
|
||||||
PolicyProvider,
|
PolicyProvider
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/policy", {
|
return {
|
||||||
|
name:"platform/policy",
|
||||||
|
definition: {
|
||||||
"name": "Policy Service",
|
"name": "Policy Service",
|
||||||
"description": "Provides support for extension-driven decisions.",
|
"description": "Provides support for extension-driven decisions.",
|
||||||
"sources": "src",
|
"sources": "src",
|
||||||
@@ -64,5 +64,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ define([
|
|||||||
"./src/gestures/GestureRepresenter",
|
"./src/gestures/GestureRepresenter",
|
||||||
"./src/services/DndService",
|
"./src/services/DndService",
|
||||||
"./src/TemplateLinker",
|
"./src/TemplateLinker",
|
||||||
"./src/TemplatePrefetcher",
|
"./src/TemplatePrefetcher"
|
||||||
'legacyRegistry'
|
|
||||||
], function (
|
], function (
|
||||||
MCTInclude,
|
MCTInclude,
|
||||||
MCTRepresentation,
|
MCTRepresentation,
|
||||||
@@ -40,11 +39,12 @@ define([
|
|||||||
GestureRepresenter,
|
GestureRepresenter,
|
||||||
DndService,
|
DndService,
|
||||||
TemplateLinker,
|
TemplateLinker,
|
||||||
TemplatePrefetcher,
|
TemplatePrefetcher
|
||||||
legacyRegistry
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/representation", {
|
return {
|
||||||
|
name:"platform/representation",
|
||||||
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"directives": [
|
"directives": [
|
||||||
{
|
{
|
||||||
@@ -139,5 +139,6 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ define([
|
|||||||
"./res/templates/search.html",
|
"./res/templates/search.html",
|
||||||
"./res/templates/search-menu.html",
|
"./res/templates/search-menu.html",
|
||||||
"raw-loader!./src/services/GenericSearchWorker.js",
|
"raw-loader!./src/services/GenericSearchWorker.js",
|
||||||
'legacyRegistry'
|
"raw-loader!./src/services/BareBonesSearchWorker.js"
|
||||||
], function (
|
], function (
|
||||||
SearchController,
|
SearchController,
|
||||||
SearchMenuController,
|
SearchMenuController,
|
||||||
@@ -39,10 +39,12 @@ define([
|
|||||||
searchTemplate,
|
searchTemplate,
|
||||||
searchMenuTemplate,
|
searchMenuTemplate,
|
||||||
searchWorkerText,
|
searchWorkerText,
|
||||||
legacyRegistry
|
BareBonesSearchWorkerText
|
||||||
) {
|
) {
|
||||||
|
|
||||||
legacyRegistry.register("platform/search", {
|
return {
|
||||||
|
name:"platform/search",
|
||||||
|
definition: {
|
||||||
"name": "Search",
|
"name": "Search",
|
||||||
"description": "Allows the user to search through the file tree.",
|
"description": "Allows the user to search through the file tree.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
@@ -53,6 +55,11 @@ define([
|
|||||||
"ROOT"
|
"ROOT"
|
||||||
],
|
],
|
||||||
"priority": "fallback"
|
"priority": "fallback"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "USE_LEGACY_INDEXER",
|
||||||
|
"value": false,
|
||||||
|
"priority": 2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"controllers": [
|
"controllers": [
|
||||||
@@ -101,6 +108,7 @@ define([
|
|||||||
"workerService",
|
"workerService",
|
||||||
"topic",
|
"topic",
|
||||||
"GENERIC_SEARCH_ROOTS",
|
"GENERIC_SEARCH_ROOTS",
|
||||||
|
"USE_LEGACY_INDEXER",
|
||||||
"openmct"
|
"openmct"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -115,11 +123,16 @@ define([
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"workers": [
|
"workers": [
|
||||||
|
{
|
||||||
|
"key": "bareBonesSearchWorker",
|
||||||
|
"scriptText": BareBonesSearchWorkerText
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "genericSearchWorker",
|
"key": "genericSearchWorker",
|
||||||
"scriptText": searchWorkerText
|
"scriptText": searchWorkerText
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user