Build refactor to webpack (#2139)

* Move to webpack build
* Use webpack for building openmct.  Move SCSS to one folder and load
all core css up front.  Remove bower, begin removing gulp in favor
of npm run.
* Uses eslint instead of jshint and jscs.  Merge style checking rules
into .eshintrc.js, carrying over core parts of crockford style and
our adaptations.  Current code base fails to pass the linter, want
to separate linter changes from fixes to linting rules.
* Support for Vue SFC with example
* Remove outdated examples
* Use HTML loader for html (supports relative imports of resources e.g.
images) and raw-loader for when javascript must be loaded as text.
This commit is contained in:
Pete Richards
2018-08-07 14:47:50 -07:00
committed by Andrew Henry
parent 9582fb2b06
commit 0d53898af9
355 changed files with 1910 additions and 3693 deletions

View File

@ -11,24 +11,20 @@ jobs:
name: Update npm name: Update npm
command: 'sudo npm install -g npm@latest' command: 'sudo npm install -g npm@latest'
- restore_cache: - restore_cache:
key: dependency-cache-{{ checksum "package.json" }}-{{ checksum "bower.json" }} key: dependency-cache-{{ checksum "package.json" }}
- run: - run:
name: Installing dependencies (npm install) name: Installing dependencies (npm install)
command: npm install command: npm install
- save_cache: - save_cache:
key: dependency-cache-{{ checksum "package.json" }}-{{ checksum "bower.json" }} key: dependency-cache-{{ checksum "package.json" }}
paths: paths:
- node_modules - node_modules
- bower_components
- run: - run:
name: npm run test name: npm run test
command: npm run test command: npm run test
- run: - run:
name: npm run lint name: npm run lint
command: npm run lint command: npm run lint
- run:
name: npm run checkstyle
command: npm run checkstyle
- store_artifacts: - store_artifacts:
path: dist path: dist
prefix: dist prefix: dist

79
.eslintrc.js Normal file
View File

@ -0,0 +1,79 @@
module.exports = {
"env": {
"browser": true,
"es6": true,
"jasmine": true,
"amd": true
},
"extends": "eslint:recommended",
"parser": "babel-eslint",
"parserOptions": {
"allowImportExportEverywhere": true,
"ecmaVersion": 2015,
"ecmaFeatures": {
"impliedStrict": true
}
},
"rules": {
"no-bitwise": "error",
"curly": "error",
"eqeqeq": "error",
"guard-for-in": "error",
"no-extend-native": "error",
"no-inner-declarations": "off",
"no-use-before-define": ["error", "nofunc"],
"no-caller": "error",
"no-sequences": "error",
"no-irregular-whitespace": "error",
"no-new": "error",
"no-shadow": "error",
"no-undef": "error",
"no-unused-vars": [
"error",
{
"vars": "all",
"args": "none"
}
],
"no-console": "off",
"no-trailing-spaces": "error",
"space-before-function-paren": [
"error",
{
"anonymous": "always",
"asyncArrow": "always",
"named": "never",
}
],
"array-bracket-spacing": "error",
"space-in-parens": "error",
"space-before-blocks": "error",
"comma-dangle": "error",
"eol-last": "error",
"new-cap": [
"error",
{
"capIsNew": false,
"properties": false
}
],
"dot-notation": "error",
"indent": ["error", 4]
},
"overrides": [
{
"files": ["*Spec.js"],
"rules": {
"no-unused-vars": [
"warn",
{
"vars": "all",
"args": "none",
"varsIgnorePattern": "controller",
}
]
}
}
]
};

View File

@ -1,5 +0,0 @@
{
"preset": "crockford",
"requireMultipleVarDecl": false,
"requireVarDeclFirst": false
}

View File

@ -1,26 +0,0 @@
{
"bitwise": true,
"browser": true,
"curly": true,
"eqeqeq": true,
"forin": true,
"freeze": true,
"funcscope": false,
"futurehostile": true,
"latedef": true,
"noarg": true,
"nocomma": true,
"nonbsp": true,
"nonew": true,
"predef": [
"define",
"Promise",
"WeakMap",
"Map"
],
"shadow": "outer",
"strict": "implied",
"undef": true,
"unused": "vars",
"latedef": "nofunc"
}

View File

@ -84,7 +84,6 @@ Documentation will be generated in `target/docs`.
## Deploying Open MCT ## Deploying Open MCT
Open MCT is built using [`npm`](http://npmjs.com/) Open MCT is built using [`npm`](http://npmjs.com/)
and [`gulp`](http://gulpjs.com/).
To build Open MCT for deployment: To build Open MCT for deployment:
@ -94,32 +93,13 @@ This will compile and minify JavaScript sources, as well as copy over assets.
The contents of the `dist` folder will contain a runnable Open MCT The contents of the `dist` folder will contain a runnable Open MCT
instance (e.g. by starting an HTTP server in that directory), including: instance (e.g. by starting an HTTP server in that directory), including:
* A `main.js` file containing Open MCT source code. * `openmct.js` - Open MCT source code.
* Various assets in the `example` and `platform` directories. * `openmct.css` - Basic styles to load to prevent a FOUC.
* An `index.html` that runs Open MCT in its default configuration. * `index.html`, an example to run Open MCT in the basic configuration.
Additional `gulp` tasks are defined in [the gulpfile](gulpfile.js).
## Bundles
A bundle is a group of software components (including source code, declared
as AMD modules, as well as resources such as images and HTML templates)
that is intended to be added or removed as a single unit. A plug-in for
Open MCT will be expressed as a bundle; platform components are also
expressed as bundles.
A bundle is also just a directory which contains a file `bundle.json`,
which declares its contents.
The file `bundles.json` (note the plural), at the top level of the
repository, is a JSON file containing an array of all bundles (expressed as
directory names) to include in a running instance of Open MCT. Adding or
removing paths from this list will add or remove bundles from the running
application.
## Tests ## Tests
Tests are written for [Jasmine 1.3](http://jasmine.github.io/1.3/introduction.html) Tests are written for [Jasmine 3](http://jasmine.github.io/)
and run by [Karma](http://karma-runner.github.io). To run: and run by [Karma](http://karma-runner.github.io). To run:
`npm test` `npm test`

90
app.js
View File

@ -7,79 +7,57 @@
* node app.js [options] * node app.js [options]
*/ */
(function () {
"use strict";
var BUNDLE_FILE = 'bundles.json', const options = require('minimist')(process.argv.slice(2));
options = require('minimist')(process.argv.slice(2)), const express = require('express');
express = require('express'), const app = express();
app = express(), const fs = require('fs');
fs = require('fs'), const request = require('request');
request = require('request');
// Defaults // Defaults
options.port = options.port || options.p || 8080; options.port = options.port || options.p || 8080;
options.host = options.host || options.h || 'localhost' options.host = options.host || options.h || 'localhost'
options.directory = options.directory || options.D || '.'; options.directory = options.directory || options.D || '.';
['include', 'exclude', 'i', 'x'].forEach(function (opt) {
options[opt] = options[opt] || [];
// Make sure includes/excludes always end up as arrays
options[opt] = Array.isArray(options[opt]) ?
options[opt] : [options[opt]];
});
options.include = options.include.concat(options.i);
options.exclude = options.exclude.concat(options.x);
// Show command line options // Show command line options
if (options.help || options.h) { if (options.help || options.h) {
console.log("\nUsage: node app.js [options]\n"); console.log("\nUsage: node app.js [options]\n");
console.log("Options:"); console.log("Options:");
console.log(" --help, -h Show this message."); console.log(" --help, -h Show this message.");
console.log(" --port, -p <number> Specify port."); console.log(" --port, -p <number> Specify port.");
console.log(" --include, -i <bundle> Include the specified bundle.");
console.log(" --exclude, -x <bundle> Exclude the specified bundle.");
console.log(" --directory, -D <bundle> Serve files from specified directory."); console.log(" --directory, -D <bundle> Serve files from specified directory.");
console.log(""); console.log("");
process.exit(0); process.exit(0);
} }
app.disable('x-powered-by'); app.disable('x-powered-by');
// Override bundles.json for HTTP requests app.use('/proxyUrl', function proxyRequest(req, res, next) {
app.use('/' + BUNDLE_FILE, function (req, res) {
var bundles;
try {
bundles = JSON.parse(fs.readFileSync(BUNDLE_FILE, 'utf8'));
} catch (e) {
bundles = [];
}
// Handle command line inclusions/exclusions
bundles = bundles.concat(options.include);
bundles = bundles.filter(function (bundle) {
return options.exclude.indexOf(bundle) === -1;
});
bundles = bundles.filter(function (bundle, index) { // Uniquify
return bundles.indexOf(bundle) === index;
});
res.send(JSON.stringify(bundles));
});
app.use('/proxyUrl', function proxyRequest(req, res, next) {
console.log('Proxying request to: ', req.query.url); console.log('Proxying request to: ', req.query.url);
req.pipe(request({ req.pipe(request({
url: req.query.url, url: req.query.url,
strictSSL: false strictSSL: false
}).on('error', next)).pipe(res); }).on('error', next)).pipe(res);
}); });
// Expose everything else as static files const webpack = require('webpack');
app.use(express['static'](options.directory)); const webpackConfig = require('./webpack.config.js');
const compiler = webpack(webpackConfig);
const webpackDevRoute = require('webpack-dev-middleware')(
compiler, {
publicPath: '/dist',
logLevel: 'warn'
}
);
// Finally, open the HTTP server and log the instance to the console app.use(webpackDevRoute);
app.listen(options.port, options.host, function() {
// Expose index.html for development users.
app.get('/', function (req, res) {
fs.createReadStream('index.html').pipe(res);
});
// Finally, open the HTTP server and log the instance to the console
app.listen(options.port, options.host, function() {
console.log('Open MCT application running at %s:%s', options.host, options.port) console.log('Open MCT application running at %s:%s', options.host, options.port)
}); });
}());

View File

@ -1,27 +0,0 @@
{
"name": "openmct",
"description": "The Open MCT core platform",
"main": "",
"license": "Apache-2.0",
"moduleType": [],
"homepage": "http://nasa.github.io/openmct/",
"private": true,
"dependencies": {
"angular": "1.4.4",
"angular-route": "1.4.4",
"moment": "^2.11.1",
"moment-duration-format": "^1.3.0",
"requirejs": "~2.1.22",
"text": "requirejs-text#^2.0.14",
"es6-promise": "^3.3.0",
"screenfull": "^3.0.0",
"node-uuid": "^1.4.7",
"comma-separated-values": "^3.6.4",
"file-saver": "1.3.3",
"zepto": "^1.1.6",
"eventemitter3": "^1.2.0",
"lodash": "3.10.1",
"almond": "~0.3.2",
"moment-timezone": "^0.5.13"
}
}

View File

@ -1,8 +0,0 @@
This bundle is intended to serve as an example of registering
extensions which are mapped directly to built-in Angular features.
These are:
* Controllers
* Directives
* Routes
* Services

View File

@ -1,74 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
"./src/ExampleController",
"./src/ExampleDirective",
"./src/ExampleService",
'legacyRegistry'
], function (
ExampleController,
ExampleDirective,
ExampleService,
legacyRegistry
) {
"use strict";
legacyRegistry.register("example/builtins", {
"name": "Angular Built-ins Example",
"description": "Example showing how to declare extensions with built-in support from Angular.",
"sources": "src",
"extensions": {
"controllers": [
{
"key": "ExampleController",
"implementation": ExampleController,
"depends": [
"$scope",
"exampleService"
]
}
],
"directives": [
{
"key": "exampleDirective",
"implementation": ExampleDirective,
"depends": [
"examples[]"
]
}
],
"routes": [
{
"templateUrl": "templates/example.html"
}
],
"services": [
{
"key": "exampleService",
"implementation": ExampleService
}
]
}
});
});

View File

@ -1,24 +0,0 @@
<!--
Open MCT, Copyright (c) 2014-2017, United States Government
as represented by the Administrator of the National Aeronautics and Space
Administration. All rights reserved.
Open MCT is licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
Open MCT includes source code licensed under additional open source
licenses. See the Open Source Licenses file (LICENSES.md) included with
this source code distribution or the Licensing information page available
at runtime from the About dialog for additional information.
-->
<p>Hello, world! I am the default route.</p>
<p ng-controller="ExampleController">My controller has told me: "{{phrase}}"</p>
<span example-directive></span>

View File

@ -1,42 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining ExampleController. Created by vwoeltje on 11/4/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function ExampleController($scope, exampleService) {
$scope.phrase = exampleService.getMessage();
}
return ExampleController;
}
);

View File

@ -1,66 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining ExampleDirective. Created by vwoeltje on 11/4/14.
*/
define(
[],
function () {
"use strict";
var HAS_EXTENSIONS = "A directive loaded these message from " +
"example extensions.",
NO_EXTENSIONS = "A directive tried to load example extensions," +
" but found none.",
MESSAGE = "I heard this from my partial constructor.";
/**
*
* @constructor
*/
function ExampleDirective(examples) {
// Build up a template from example extensions
var template = examples.length > 0 ?
HAS_EXTENSIONS : NO_EXTENSIONS;
template += "<ul>";
examples.forEach(function (E) {
template += "<li>";
if (typeof E === 'function') {
template += (new E(MESSAGE)).getText();
} else {
template += E.text;
}
template += "</li>";
});
template += "</ul>";
return {
template: template
};
}
return ExampleDirective;
}
);

View File

@ -1,46 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining ExampleService. Created by vwoeltje on 11/4/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function ExampleService() {
return {
getMessage: function () {
return "I heard this from a service";
}
};
}
return ExampleService;
}
);

View File

@ -1,82 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
"./src/SomeProvider",
"./src/SomeOtherProvider",
"./src/SomeDecorator",
"./src/SomeOtherDecorator",
"./src/SomeAggregator",
"./src/SomeOtherExample",
'legacyRegistry'
], function (
SomeProvider,
SomeOtherProvider,
SomeDecorator,
SomeOtherDecorator,
SomeAggregator,
SomeOtherExample,
legacyRegistry
) {
"use strict";
legacyRegistry.register("example/composite", {
"extensions": {
"components": [
{
"implementation": SomeProvider,
"provides": "someService",
"type": "provider"
},
{
"implementation": SomeOtherProvider,
"provides": "someService",
"type": "provider"
},
{
"implementation": SomeDecorator,
"provides": "someService",
"type": "decorator"
},
{
"implementation": SomeOtherDecorator,
"provides": "someService",
"type": "decorator"
},
{
"implementation": SomeAggregator,
"provides": "someService",
"type": "aggregator"
}
],
"examples": [
{
"implementation": SomeOtherExample,
"depends": [
"someService"
]
}
]
}
});
});

View File

@ -1,50 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeAggregator. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeAggregator(someProviders) {
return {
getMessages: function () {
return someProviders.map(function (provider) {
return provider.getMessages();
}).reduce(function (a, b) {
return a.concat(b);
}, []);
}
};
}
return SomeAggregator;
}
);

View File

@ -1,48 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeDecorator. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeDecorator(someProvider) {
return {
getMessages: function () {
return someProvider.getMessages().map(function (msg) {
return msg.toLocaleUpperCase();
});
}
};
}
return SomeDecorator;
}
);

View File

@ -1,48 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeOtherDecorator. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeOtherDecorator(someProvider) {
return {
getMessages: function () {
return someProvider.getMessages().map(function (msg) {
return msg + "...";
});
}
};
}
return SomeOtherDecorator;
}
);

View File

@ -1,46 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeOtherExample. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeOtherExample(someService) {
return {
getText: function () {
return someService.getMessages().join(" | ");
}
};
}
return SomeOtherExample;
}
);

View File

@ -1,48 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeOtherProvider. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeOtherProvider() {
return {
getMessages: function () {
return [
"I am a message from some other provider."
];
}
};
}
return SomeOtherProvider;
}
);

View File

@ -1,48 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeProvider. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeProvider() {
return {
getMessages: function () {
return [
"I am a message from some provider."
];
}
};
}
return SomeProvider;
}
);

View File

@ -27,12 +27,11 @@
* Modified by shale on 06/23/2015. * Modified by shale on 06/23/2015.
*/ */
define( define(
['text!../data/transcript.json'], ['../data/transcript.json'],
function (transcript) { function (messages) {
"use strict"; "use strict";
var firstObservedTime = Date.now(), var firstObservedTime = Date.now();
messages = JSON.parse(transcript);
function EventTelemetry(request, interval) { function EventTelemetry(request, interval) {

View File

@ -1,51 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
"./src/SomeExample",
'legacyRegistry'
], function (
SomeExample,
legacyRegistry
) {
"use strict";
legacyRegistry.register("example/extensions", {
"name": "Custom Extensions Examples",
"description": "Example showing how to declare custom extensions.",
"sources": "src",
"extensions": {
"examples": [
{
"text": "I came from example/extensions"
},
{
"implementation": SomeExample,
"depends": [
"exampleService"
]
}
]
}
});
});

View File

@ -1,52 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SomeExample. Created by vwoeltje on 11/5/14.
*/
define(
[],
function () {
"use strict";
/**
*
* @constructor
*/
function SomeExample(exampleService, message) {
return {
getText: function () {
return [
'"',
exampleService.getMessage(),
'" and "',
message,
'"'
].join("");
}
};
}
return SomeExample;
}
);

View File

@ -21,7 +21,7 @@
*****************************************************************************/ *****************************************************************************/
define([ define([
'text!./generatorWorker.js', 'raw-loader!./generatorWorker.js',
'uuid' 'uuid'
], function ( ], function (
workerText, workerText,

View File

@ -0,0 +1,19 @@
<template>
<div class="example">{{ msg }}</div>
</template>
<script>
export default {
data () {
return {
msg: 'Hello world!'
}
}
}
</script>
<style>
.example {
color: red;
}
</style>

View File

@ -0,0 +1,37 @@
import Vue from 'Vue';
import HelloWorld from './HelloWorld.vue';
function SimpleVuePlugin () {
return function install(openmct) {
var views = (openmct.mainViews || openmct.objectViews);
openmct.types.addType('hello-world', {
name: 'Hello World',
description: 'An introduction object',
creatable: true
});
openmct.objectViews.addProvider({
name: "demo-provider",
key: "hello-world",
cssClass: "icon-packet",
canView: function (d) {
return d.type === 'hello-world';
},
view: function (domainObject) {
var vm;
return {
show: function (container) {
vm = new Vue(HelloWorld);
container.appendChild(vm.$mount().$el);
},
destroy: function (container) {
vm.$destroy();
}
};
}
});
}
}
export default SimpleVuePlugin

View File

@ -1,10 +1,26 @@
define([ define([
"./src/ExampleStyleGuideModelProvider", "./src/ExampleStyleGuideModelProvider",
"./src/MCTExample", "./src/MCTExample",
"./res/templates/intro.html",
"./res/templates/standards.html",
"./res/templates/colors.html",
"./res/templates/status.html",
"./res/templates/glyphs.html",
"./res/templates/controls.html",
"./res/templates/input.html",
"./res/templates/menus.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
ExampleStyleGuideModelProvider, ExampleStyleGuideModelProvider,
MCTExample, MCTExample,
introTemplate,
standardsTemplate,
colorsTemplate,
statusTemplate,
glyphsTemplate,
controlsTemplate,
inputTemplate,
menusTemplate,
legacyRegistry legacyRegistry
) { ) {
legacyRegistry.register("example/styleguide", { legacyRegistry.register("example/styleguide", {
@ -23,14 +39,14 @@ define([
{ "key": "styleguide.menus", "name": "Menus", "cssClass": "icon-page", "description": "Context menus, dropdowns" } { "key": "styleguide.menus", "name": "Menus", "cssClass": "icon-page", "description": "Context menus, dropdowns" }
], ],
"views": [ "views": [
{ "key": "styleguide.intro", "type": "styleguide.intro", "templateUrl": "templates/intro.html", "editable": false }, { "key": "styleguide.intro", "type": "styleguide.intro", "template": introTemplate, "editable": false },
{ "key": "styleguide.standards", "type": "styleguide.standards", "templateUrl": "templates/standards.html", "editable": false }, { "key": "styleguide.standards", "type": "styleguide.standards", "template": standardsTemplate, "editable": false },
{ "key": "styleguide.colors", "type": "styleguide.colors", "templateUrl": "templates/colors.html", "editable": false }, { "key": "styleguide.colors", "type": "styleguide.colors", "template": colorsTemplate, "editable": false },
{ "key": "styleguide.status", "type": "styleguide.status", "templateUrl": "templates/status.html", "editable": false }, { "key": "styleguide.status", "type": "styleguide.status", "template": statusTemplate, "editable": false },
{ "key": "styleguide.glyphs", "type": "styleguide.glyphs", "templateUrl": "templates/glyphs.html", "editable": false }, { "key": "styleguide.glyphs", "type": "styleguide.glyphs", "template": glyphsTemplate, "editable": false },
{ "key": "styleguide.controls", "type": "styleguide.controls", "templateUrl": "templates/controls.html", "editable": false }, { "key": "styleguide.controls", "type": "styleguide.controls", "template": controlsTemplate, "editable": false },
{ "key": "styleguide.input", "type": "styleguide.input", "templateUrl": "templates/input.html", "editable": false }, { "key": "styleguide.input", "type": "styleguide.input", "template": inputTemplate, "editable": false },
{ "key": "styleguide.menus", "type": "styleguide.menus", "templateUrl": "templates/menus.html", "editable": false } { "key": "styleguide.menus", "type": "styleguide.menus", "template": menusTemplate, "editable": false }
], ],
"roots": [ "roots": [
{ {
@ -85,16 +101,6 @@ define([
"$q" "$q"
] ]
} }
],
"stylesheets": [
{
"stylesheetUrl": "css/style-guide-espresso.css",
"theme": "espresso"
},
{
"stylesheetUrl": "css/style-guide-snow.css",
"theme": "snow"
}
] ]
} }
}); });

View File

@ -34,7 +34,7 @@
<p>As you develop plugins for Open MCT, consider how a generalized component might be combined with others when designing to create a rich and powerful larger object, rather than adding a single monolithic, non-modular plugin. To solve a particular problem or allow a new feature in Open MCT, you may need to introduce more than just one new object type.</p> <p>As you develop plugins for Open MCT, consider how a generalized component might be combined with others when designing to create a rich and powerful larger object, rather than adding a single monolithic, non-modular plugin. To solve a particular problem or allow a new feature in Open MCT, you may need to introduce more than just one new object type.</p>
</div> </div>
<div class="col"> <div class="col">
<img src="/example/styleguide/res/images/diagram-objects.svg" /> <img src="../images/diagram-objects.svg" />
</div> </div>
</div> </div>
</div> </div>
@ -48,7 +48,7 @@
<p>The types of objects that a container can hold should be based on the purpose of the container and the views that it affords. For example, a Folders purpose is to allow a user to conceptually organize objects of all other types; a Folder must therefore be able to contain an object of any type.</p> <p>The types of objects that a container can hold should be based on the purpose of the container and the views that it affords. For example, a Folders purpose is to allow a user to conceptually organize objects of all other types; a Folder must therefore be able to contain an object of any type.</p>
</div> </div>
<div class="col"> <div class="col">
<img src="/example/styleguide/res/images/diagram-containment.svg" /> <img src="../images/diagram-containment.svg" />
</div> </div>
</div> </div>
</div> </div>
@ -60,7 +60,7 @@
<p>Views are simply different ways to view the content of a given object. For example, telemetry data could be viewed as a plot or a table. A clock can display its time in analog fashion or with digital numbers. In each view, all of the content is present; its just represented differently. When providing views for an object, all the content of the object should be present in each view.</p> <p>Views are simply different ways to view the content of a given object. For example, telemetry data could be viewed as a plot or a table. A clock can display its time in analog fashion or with digital numbers. In each view, all of the content is present; its just represented differently. When providing views for an object, all the content of the object should be present in each view.</p>
</div> </div>
<div class="col"> <div class="col">
<img src="/example/styleguide/res/images/diagram-views.svg" /> <img src="../images/diagram-views.svg" />
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
define([ define([
'text!../res/templates/mct-example.html' '../res/templates/mct-example.html'
], function ( ], function (
MCTExampleTemplate MCTExampleTemplate
) { ) {

View File

@ -1,68 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
"./src/ExampleTaxonomyModelProvider",
'legacyRegistry'
], function (
ExampleTaxonomyModelProvider,
legacyRegistry
) {
"use strict";
legacyRegistry.register("example/taxonomy", {
"name": "Example taxonomy",
"description": "Example illustrating the addition of a static top-level hierarchy",
"extensions": {
"roots": [
{
"id": "exampleTaxonomy"
}
],
"models": [
{
"id": "exampleTaxonomy",
"model": {
"type": "folder",
"name": "Stub Subsystems",
"composition": [
"examplePacket0",
"examplePacket1",
"examplePacket2"
]
}
}
],
"components": [
{
"provides": "modelService",
"type": "provider",
"implementation": ExampleTaxonomyModelProvider,
"depends": [
"$q"
]
}
]
}
});
});

View File

@ -1,69 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define(
[],
function () {
"use strict";
function ExampleTaxonomyModelProvider($q) {
var models = {},
packetId,
telemetryId,
i,
j;
// Add some "subsystems"
for (i = 0; i < 3; i += 1) {
packetId = "examplePacket" + i;
models[packetId] = {
name: "Stub Subsystem " + (i + 1),
type: "telemetry.panel",
composition: []
};
// Add some "telemetry points"
for (j = 0; j < 100 * (i + 1); j += 1) {
telemetryId = "exampleTelemetry" + j;
models[telemetryId] = {
name: "SWG" + i + "." + j,
type: "generator",
telemetry: {
period: 10 + i + j
}
};
models[packetId].composition.push(telemetryId);
}
}
return {
getModels: function () {
return $q.when(models);
}
};
}
return ExampleTaxonomyModelProvider;
}
);

View File

@ -1 +0,0 @@
Example of running a Web Worker using the `workerService`.

View File

@ -1,52 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
"./src/FibonacciIndicator",
'legacyRegistry'
], function (
FibonacciIndicator,
legacyRegistry
) {
"use strict";
legacyRegistry.register("example/worker", {
"extensions": {
"indicators": [
{
"implementation": FibonacciIndicator,
"depends": [
"workerService",
"$rootScope"
]
}
],
"workers": [
{
"key": "example.fibonacci",
"scriptUrl": "FibonacciWorker.js"
}
]
}
});
});

View File

@ -1,67 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define(
[],
function () {
"use strict";
/**
* Displays Fibonacci numbers in the status area.
* @constructor
*/
function FibonacciIndicator(workerService, $rootScope) {
var latest,
counter = 0,
worker = workerService.run('example.fibonacci');
function requestNext() {
worker.postMessage([counter]);
counter += 1;
}
function handleResponse(event) {
latest = event.data;
$rootScope.$apply();
requestNext();
}
worker.onmessage = handleResponse;
requestNext();
return {
getCssClass: function () {
return "icon-object-unknown";
},
getText: function () {
return "" + latest;
},
getDescription: function () {
return "";
}
};
}
return FibonacciIndicator;
}
);

View File

@ -1,15 +0,0 @@
/*global self*/
(function () {
"use strict";
// Calculate fibonacci numbers inefficiently.
// We can do this because we're on a background thread, and
// won't halt the UI.
function fib(n) {
return n < 2 ? n : (fib(n - 1) + fib(n - 2));
}
self.onmessage = function (event) {
self.postMessage(fib(event.data));
};
}());

View File

@ -1,182 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2017, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global require,__dirname*/
require("v8-compile-cache");
var gulp = require('gulp'),
sourcemaps = require('gulp-sourcemaps'),
path = require('path'),
fs = require('fs'),
git = require('git-rev-sync'),
moment = require('moment'),
project = require('./package.json'),
_ = require('lodash'),
paths = {
main: 'openmct.js',
dist: 'dist',
reports: 'dist/reports',
scss: ['./platform/**/*.scss', './example/**/*.scss'],
assets: [
'./{example,platform}/**/*.{css,css.map,png,svg,ico,woff,eot,ttf}'
],
scripts: [ 'openmct.js', 'platform/**/*.js', 'src/**/*.js' ],
specs: [ 'platform/**/*Spec.js', 'src/**/*Spec.js' ],
},
options = {
requirejsOptimize: {
name: 'bower_components/almond/almond.js',
include: paths.main.replace('.js', ''),
wrap: {
start: (function () {
var buildVariables = {
version: project.version,
timestamp: moment.utc(Date.now()).format(),
revision: fs.existsSync('.git') ? git.long() : 'Unknown',
branch: fs.existsSync('.git') ? git.branch() : 'Unknown'
};
return fs.readFileSync("src/start.frag", 'utf-8')
.replace(/@@(\w+)/g, function (match, key) {
return buildVariables[key];
});;
}()),
endFile: "src/end.frag"
},
optimize: 'uglify2',
uglify2: { output: { comments: /@preserve/ } },
mainConfigFile: paths.main,
wrapShim: true
},
karma: {
configFile: path.resolve(__dirname, 'karma.conf.js'),
singleRun: true
},
sass: {
sourceComments: true
}
};
if (process.env.NODE_ENV === 'development') {
options.requirejsOptimize.optimize = 'none';
}
gulp.task('scripts', function () {
var requirejsOptimize = require('gulp-requirejs-optimize');
return gulp.src(paths.main)
.pipe(sourcemaps.init())
.pipe(requirejsOptimize(options.requirejsOptimize))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(paths.dist));
});
gulp.task('test', function (done) {
var karma = require('karma');
new karma.Server(options.karma, done).start();
});
gulp.task('stylesheets', function () {
var sass = require('gulp-sass');
var rename = require('gulp-rename');
var bourbon = require('node-bourbon');
options.sass.includePaths = bourbon.includePaths;
return gulp.src(paths.scss, {base: '.'})
.pipe(sourcemaps.init())
.pipe(sass(options.sass).on('error', sass.logError))
.pipe(rename(function (file) {
file.dirname =
file.dirname.replace(path.sep + 'sass', path.sep + 'css');
return file;
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(__dirname));
});
gulp.task('lint', function () {
var jshint = require('gulp-jshint');
var merge = require('merge-stream');
var nonspecs = paths.specs.map(function (glob) {
return "!" + glob;
}),
scriptLint = gulp.src(paths.scripts.concat(nonspecs))
.pipe(jshint()),
specLint = gulp.src(paths.specs)
.pipe(jshint({ jasmine: true }));
return merge(scriptLint, specLint)
.pipe(jshint.reporter('gulp-jshint-html-reporter', {
filename: paths.reports + '/lint/jshint-report.html',
createMissingFolders : true
}))
.pipe(jshint.reporter('default'))
.pipe(jshint.reporter('fail'));
});
gulp.task('checkstyle', function () {
var jscs = require('gulp-jscs');
var mkdirp = require('mkdirp');
var reportName = 'jscs-html-report.html';
var reportPath = path.resolve(paths.reports, 'checkstyle', reportName);
var moveReport = fs.rename.bind(fs, reportName, reportPath, _.noop);
mkdirp.sync(path.resolve(paths.reports, 'checkstyle'));
return gulp.src(paths.scripts)
.pipe(jscs())
.pipe(jscs.reporter())
.pipe(jscs.reporter('jscs-html-reporter')).on('finish', moveReport)
.pipe(jscs.reporter('fail'));
});
gulp.task('fixstyle', function () {
var jscs = require('gulp-jscs');
return gulp.src(paths.scripts, { base: '.' })
.pipe(jscs({ fix: true }))
.pipe(gulp.dest('.'));
});
gulp.task('assets', ['stylesheets'], function () {
return gulp.src(paths.assets)
.pipe(gulp.dest(paths.dist));
});
gulp.task('watch', function () {
return gulp.watch(paths.scss, ['stylesheets', 'assets']);
});
gulp.task('serve', function () {
console.log('Running development server with all defaults');
var app = require('./app.js');
});
gulp.task('develop', ['serve', 'stylesheets', 'watch']);
gulp.task('install', [ 'assets', 'scripts' ]);
gulp.task('verify', [ 'lint', 'test', 'checkstyle' ]);
gulp.task('build', [ 'verify', 'install' ]);

View File

@ -26,11 +26,20 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<title></title> <title></title>
<script src="bower_components/requirejs/require.js"> </script> <script src="dist/openmct.js"></script>
<link rel="stylesheet" href="dist/openmct.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">
<link rel="icon" type="image/png" href="dist/favicons/favicon-16x16.png" sizes="16x16">
<link rel="shortcut icon" href="dist/favicons/favicon.ico">
</head>
<body>
<div class="l-splash-holder s-splash-holder">
<div class="l-splash s-splash"></div>
</div>
</body>
<script> <script>
var THIRTY_MINUTES = 30 * 60 * 1000; var THIRTY_MINUTES = 30 * 60 * 1000;
require(['openmct'], function (openmct) {
[ [
'example/eventGenerator', 'example/eventGenerator',
'example/styleguide' 'example/styleguide'
@ -73,19 +82,5 @@
openmct.time.clock('local', {start: -THIRTY_MINUTES, end: 0}); openmct.time.clock('local', {start: -THIRTY_MINUTES, end: 0});
openmct.time.timeSystem('utc'); openmct.time.timeSystem('utc');
openmct.start(); openmct.start();
window.openmct = openmct;
});
</script> </script>
<link rel="stylesheet" href="platform/commonUI/general/res/css/startup-base.css">
<link rel="stylesheet" href="platform/commonUI/general/res/css/openmct.css">
<link rel="icon" type="image/png" href="platform/commonUI/general/res/images/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="platform/commonUI/general/res/images/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="platform/commonUI/general/res/images/favicons/favicon-16x16.png" sizes="16x16">
<link rel="shortcut icon" href="platform/commonUI/general/res/images/favicons/favicon.ico">
</head>
<body>
<div class="l-splash-holder s-splash-holder">
<div class="l-splash s-splash"></div>
</div>
</body>
</html> </html>

View File

@ -21,70 +21,40 @@
*****************************************************************************/ *****************************************************************************/
/*global module,process*/ /*global module,process*/
module.exports = function(config) {
const devMode = process.env.NODE_ENV !== 'production';
module.exports = (config) => {
const webpackConfig = require('./webpack.config.js');
delete webpackConfig.output;
if (!devMode) {
webpackConfig.module.rules.push({
test: /\.js$/,
exclude: /node_modules|example/,
use: 'istanbul-instrumenter-loader'
});
}
config.set({ config.set({
// Base path that will be used to resolve all file patterns.
basePath: '', basePath: '',
frameworks: ['jasmine'],
// Frameworks to use
// Available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine', 'requirejs'],
// List of files / patterns to load in the browser.
// By default, files are also included in a script tag.
files: [ files: [
{pattern: 'bower_components/**/*.js', included: false}, 'platform/**/*Spec.js',
{pattern: 'node_modules/d3-*/**/*.js', included: false}, 'src/**/*Spec.js'
{pattern: 'node_modules/vue/**/*.js', included: false},
{pattern: 'node_modules/printj/dist/*.js', included: false},
{pattern: 'src/**/*', included: false},
{pattern: 'node_modules/painterro/build/*.js', included: false},
{pattern: 'node_modules/html2canvas/dist/*', included: false},
{pattern: 'example/**/*.html', included: false},
{pattern: 'example/**/*.js', included: false},
{pattern: 'example/**/*.json', included: false},
{pattern: 'platform/**/*.js', included: false},
{pattern: 'warp/**/*.js', included: false},
{pattern: 'platform/**/*.html', included: false},
'test-main.js'
], ],
// List of files to exclude.
exclude: [
'platform/framework/src/Main.js'
],
// Preprocess matching files before serving them to the browser.
// https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'src/**/!(*Spec).js': [ 'coverage' ],
'platform/**/src/**/!(*Spec).js': [ 'coverage' ]
},
// Test results reporter to use
// Possible values: 'dots', 'progress'
// Available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['progress', 'coverage', 'html'],
// Web server port.
port: 9876, port: 9876,
reporters: [
// Wnable / disable colors in the output (reporters and logs). 'progress',
'coverage',
'html'
],
browsers: ['ChromeHeadless'],
colors: true, colors: true,
logLevel: config.LOG_INFO, logLevel: config.LOG_INFO,
// Rerun tests when any file changes.
autoWatch: true, autoWatch: true,
// Specify browsers to run tests in.
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: [
'ChromeHeadless'
],
// Code coverage reporting.
coverageReporter: { coverageReporter: {
dir: process.env.CIRCLE_ARTIFACTS ? dir: process.env.CIRCLE_ARTIFACTS ?
process.env.CIRCLE_ARTIFACTS + '/coverage' : process.env.CIRCLE_ARTIFACTS + '/coverage' :
@ -104,8 +74,19 @@ module.exports = function(config) {
foldAll: false foldAll: false
}, },
// Continuous Integration mode. preprocessors: {
// If true, Karma captures browsers, runs the tests and exits. // add webpack as preprocessor
'platform/**/*Spec.js': [ 'webpack' ],
'src/**/*Spec.js': [ 'webpack' ]
},
webpack: webpackConfig,
webpackMiddleware: {
stats: 'errors-only',
logLevel: 'warn'
},
singleRun: true singleRun: true
}); });
}; }

View File

@ -19,102 +19,32 @@
* 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 requirejs,BUILD_CONSTANTS*/ /*global module,BUILD_CONSTANTS*/
requirejs.config({ const matcher = /\/openmct.js$/;
"paths": { if (document.currentScript) {
"legacyRegistry": "src/legacyRegistry", let src = document.currentScript.src;
"angular": "bower_components/angular/angular.min", if (src && matcher.test(src)) {
"angular-route": "bower_components/angular-route/angular-route.min", // eslint-disable-next-line no-undef
"csv": "bower_components/comma-separated-values/csv.min", __webpack_public_path__ = src.replace(matcher, '') + '/';
"EventEmitter": "bower_components/eventemitter3/index",
"es6-promise": "bower_components/es6-promise/es6-promise.min",
"moment": "bower_components/moment/moment",
"moment-duration-format": "bower_components/moment-duration-format/lib/moment-duration-format",
"moment-timezone": "bower_components/moment-timezone/builds/moment-timezone-with-data",
"saveAs": "bower_components/file-saver/FileSaver.min",
"screenfull": "bower_components/screenfull/dist/screenfull.min",
"text": "bower_components/text/text",
"uuid": "bower_components/node-uuid/uuid",
"vue": "node_modules/vue/dist/vue.min",
"zepto": "bower_components/zepto/zepto.min",
"lodash": "bower_components/lodash/lodash",
"d3-selection": "node_modules/d3-selection/dist/d3-selection.min",
"d3-scale": "node_modules/d3-scale/build/d3-scale.min",
"d3-axis": "node_modules/d3-axis/build/d3-axis.min",
"d3-array": "node_modules/d3-array/build/d3-array.min",
"d3-collection": "node_modules/d3-collection/build/d3-collection.min",
"d3-color": "node_modules/d3-color/build/d3-color.min",
"d3-format": "node_modules/d3-format/build/d3-format.min",
"d3-interpolate": "node_modules/d3-interpolate/build/d3-interpolate.min",
"d3-time": "node_modules/d3-time/build/d3-time.min",
"d3-time-format": "node_modules/d3-time-format/build/d3-time-format.min",
"html2canvas": "node_modules/html2canvas/dist/html2canvas.min",
"painterro": "node_modules/painterro/build/painterro.min",
"printj": "node_modules/printj/dist/printj.min"
},
"shim": {
"angular": {
"exports": "angular"
},
"angular-route": {
"deps": ["angular"]
},
"EventEmitter": {
"exports": "EventEmitter"
},
"moment-duration-format": {
"deps": ["moment"]
},
"painterro": {
"exports": "Painterro"
},
"saveAs": {
"exports": "saveAs"
},
"screenfull": {
"exports": "screenfull"
},
"zepto": {
"exports": "Zepto"
},
"lodash": {
"exports": "lodash"
},
"d3-selection": {
"exports": "d3-selection"
},
"d3-scale": {
"deps": ["d3-array", "d3-collection", "d3-color", "d3-format", "d3-interpolate", "d3-time", "d3-time-format"],
"exports": "d3-scale"
},
"d3-axis": {
"exports": "d3-axis"
},
"dom-to-image": {
"exports": "domtoimage"
} }
} }
}); const Main = require('./platform/framework/src/Main');
const defaultRegistry = require('./src/defaultRegistry');
const MCT = require('./src/MCT');
const buildInfo = require('./src/plugins/buildInfo/plugin');
define([ var openmct = new MCT();
'./platform/framework/src/Main',
'./src/defaultRegistry',
'./src/MCT',
'./src/plugins/buildInfo/plugin'
], function (Main, defaultRegistry, MCT, buildInfo) {
var openmct = new MCT();
openmct.legacyRegistry = defaultRegistry; openmct.legacyRegistry = defaultRegistry;
openmct.install(openmct.plugins.Plot()); openmct.install(openmct.plugins.Plot());
if (typeof BUILD_CONSTANTS !== 'undefined') { if (typeof BUILD_CONSTANTS !== 'undefined') {
openmct.install(buildInfo(BUILD_CONSTANTS)); openmct.install(buildInfo(BUILD_CONSTANTS));
} }
openmct.on('start', function () { openmct.on('start', function () {
return new Main().run(defaultRegistry); return new Main().run(defaultRegistry);
});
return openmct;
}); });
module.exports = openmct;

View File

@ -2,7 +2,15 @@
"name": "openmct", "name": "openmct",
"version": "0.14.0-SNAPSHOT", "version": "0.14.0-SNAPSHOT",
"description": "The Open MCT core platform", "description": "The Open MCT core platform",
"dependencies": { "dependencies": {},
"devDependencies": {
"angular": "1.4.14",
"angular-route": "1.4.14",
"babel-eslint": "8.2.6",
"comma-separated-values": "^3.6.4",
"concurrently": "^3.6.1",
"copy-webpack-plugin": "^4.5.2",
"css-loader": "^1.0.0",
"d3-array": "1.2.x", "d3-array": "1.2.x",
"d3-axis": "1.0.x", "d3-axis": "1.0.x",
"d3-collection": "1.0.x", "d3-collection": "1.0.x",
@ -13,59 +21,68 @@
"d3-selection": "1.3.x", "d3-selection": "1.3.x",
"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",
"eventemitter3": "^1.2.0",
"exports-loader": "^0.7.0",
"express": "^4.13.1", "express": "^4.13.1",
"minimist": "^1.1.1", "fast-sass-loader": "^1.4.5",
"painterro": "^0.2.65", "file-loader": "^1.1.11",
"request": "^2.69.0", "file-saver": "^1.3.8",
"vue": "^2.5.6"
},
"devDependencies": {
"bower": "^1.7.7",
"git-rev-sync": "^1.4.0", "git-rev-sync": "^1.4.0",
"glob": ">= 3.0.0", "glob": ">= 3.0.0",
"gulp": "^3.9.1", "html-loader": "^0.5.5",
"gulp-jscs": "^3.0.2",
"gulp-jshint": "^2.0.0",
"gulp-jshint-html-reporter": "^0.1.3",
"gulp-rename": "^1.2.2",
"gulp-requirejs-optimize": "^0.3.1",
"gulp-sass": "^3.1.0",
"gulp-sourcemaps": "^1.6.0",
"html2canvas": "^1.0.0-alpha.12", "html2canvas": "^1.0.0-alpha.12",
"imports-loader": "^0.8.0",
"istanbul-instrumenter-loader": "^3.0.1",
"jasmine-core": "^3.1.0", "jasmine-core": "^3.1.0",
"jscs-html-reporter": "^0.1.0",
"jsdoc": "^3.3.2", "jsdoc": "^3.3.2",
"jshint": "^2.7.0",
"karma": "^2.0.3", "karma": "^2.0.3",
"karma-chrome-launcher": "^2.2.0", "karma-chrome-launcher": "^2.2.0",
"karma-cli": "^1.0.1", "karma-cli": "^1.0.1",
"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-requirejs": "^1.1.0", "karma-webpack": "^3.0.0",
"lodash": "^3.10.1", "lodash": "^3.10.1",
"markdown-toc": "^0.11.7", "markdown-toc": "^0.11.7",
"marked": "^0.3.5", "marked": "^0.3.5",
"merge-stream": "^1.0.0", "mini-css-extract-plugin": "^0.4.1",
"mkdirp": "^0.5.1", "minimist": "^1.1.1",
"moment": "^2.11.1", "moment": "^2.11.1",
"moment-duration-format": "^2.2.2",
"moment-timezone": "^0.5.21",
"node-bourbon": "^4.2.3", "node-bourbon": "^4.2.3",
"node-sass": "^4.9.2",
"painterro": "^0.2.65",
"printj": "^1.1.0", "printj": "^1.1.0",
"requirejs": "2.1.x", "raw-loader": "^0.5.1",
"request": "^2.69.0",
"screenfull": "^3.3.2",
"split": "^1.0.0", "split": "^1.0.0",
"v8-compile-cache": "^1.1.0" "style-loader": "^0.21.0",
"v8-compile-cache": "^1.1.0",
"vue": "2.5.6",
"vue-loader": "^15.2.6",
"vue-template-compiler": "2.5.6",
"webpack": "^4.16.2",
"webpack-cli": "^3.1.0",
"webpack-dev-middleware": "^3.1.3",
"zepto": "^1.2.0"
}, },
"scripts": { "scripts": {
"start": "node app.js", "start": "node app.js",
"lint": "eslint platform src openmct.js",
"lint:fix": "eslint platform src openmct.js --fix",
"build:prod": "NODE_ENV=production webpack",
"build:dev": "webpack",
"build:watch": "webpack --watch",
"test": "karma start --single-run", "test": "karma start --single-run",
"jshint": "jshint platform example", "test:watch": "karma start --no-single-run",
"lint": "./node_modules/gulp/bin/gulp.js lint", "verify": "concurrently 'npm:test' 'npm:lint'",
"checkstyle": "./node_modules/gulp/bin/gulp.js checkstyle",
"watch": "karma start",
"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",
"otherdoc": "node docs/gendocs.js --in docs/src --out dist/docs --suppress-toc 'docs/src/index.md|docs/src/process/index.md'", "otherdoc": "node docs/gendocs.js --in docs/src --out dist/docs --suppress-toc 'docs/src/index.md|docs/src/process/index.md'",
"docs": "npm run jsdoc ; npm run otherdoc", "docs": "npm run jsdoc ; npm run otherdoc",
"prepare": "node ./node_modules/bower/bin/bower install && node ./node_modules/gulp/bin/gulp.js install" "prepare": "npm run build:prod"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -21,17 +21,17 @@
*****************************************************************************/ *****************************************************************************/
define([ define([
"text!./res/templates/about-dialog.html", "./res/templates/about-dialog.html",
"./src/LogoController", "./src/LogoController",
"./src/AboutController", "./src/AboutController",
"./src/LicenseController", "./src/LicenseController",
"text!./res/templates/app-logo.html", "./res/templates/app-logo.html",
"text!./res/templates/about-logo.html", "./res/templates/about-logo.html",
"text!./res/templates/overlay-about.html", "./res/templates/overlay-about.html",
"text!./res/templates/license-apache.html", "./res/templates/license-apache.html",
"text!./res/templates/license-mit.html", "./res/templates/license-mit.html",
"text!./res/templates/licenses.html", "./res/templates/licenses.html",
"text!./res/templates/licenses-export-md.html", "./res/templates/licenses-export-md.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
aboutDialogTemplate, aboutDialogTemplate,

View File

@ -33,16 +33,16 @@ define([
"./src/windowing/NewTabAction", "./src/windowing/NewTabAction",
"./src/windowing/FullscreenAction", "./src/windowing/FullscreenAction",
"./src/windowing/WindowTitler", "./src/windowing/WindowTitler",
"text!./res/templates/browse.html", "./res/templates/browse.html",
"text!./res/templates/browse-object.html", "./res/templates/browse-object.html",
"text!./res/templates/items/grid-item.html", "./res/templates/items/grid-item.html",
"text!./res/templates/browse/object-header.html", "./res/templates/browse/object-header.html",
"text!./res/templates/browse/object-header-frame.html", "./res/templates/browse/object-header-frame.html",
"text!./res/templates/menu-arrow.html", "./res/templates/menu-arrow.html",
"text!./res/templates/back-arrow.html", "./res/templates/back-arrow.html",
"text!./res/templates/items/items.html", "./res/templates/items/items.html",
"text!./res/templates/browse/object-properties.html", "./res/templates/browse/object-properties.html",
"text!./res/templates/browse/inspector-region.html", "./res/templates/browse/inspector-region.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
BrowseController, BrowseController,

View File

@ -31,7 +31,6 @@ define(
* @constructor * @constructor
*/ */
function BrowseObjectController($scope, $location, $route) { function BrowseObjectController($scope, $location, $route) {
var navigatedObject;
function setViewForDomainObject(domainObject) { function setViewForDomainObject(domainObject) {
var locationViewKey = $location.search().view; var locationViewKey = $location.search().view;
@ -47,7 +46,6 @@ define(
((domainObject && domainObject.useCapability('view')) || []) ((domainObject && domainObject.useCapability('view')) || [])
.forEach(selectViewIfMatching); .forEach(selectViewIfMatching);
} }
navigatedObject = domainObject;
} }
function updateQueryParam(viewKey) { function updateQueryParam(viewKey) {

View File

@ -27,7 +27,6 @@ define(
describe("The PaneController", function () { describe("The PaneController", function () {
var mockScope, var mockScope,
mockAgentService, mockAgentService,
mockDomainObjects,
mockWindow, mockWindow,
controller, controller,
mockLocation, mockLocation,
@ -47,17 +46,6 @@ define(
beforeEach(function () { beforeEach(function () {
mockScope = jasmine.createSpyObj("$scope", ["$on"]); mockScope = jasmine.createSpyObj("$scope", ["$on"]);
mockDomainObjects = ['a', 'b'].map(function (id) {
var mockDomainObject = jasmine.createSpyObj(
'domainObject-' + id,
['getId', 'getModel', 'getCapability']
);
mockDomainObject.getId.and.returnValue(id);
mockDomainObject.getModel.and.returnValue({});
return mockDomainObject;
});
mockAgentService = jasmine.createSpyObj( mockAgentService = jasmine.createSpyObj(
"agentService", "agentService",
["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"] ["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"]

View File

@ -47,7 +47,7 @@ define(
it("toggles fullscreen mode when performed", function () { it("toggles fullscreen mode when performed", function () {
action.perform(); action.perform();
expect(window.screenfull.toggle).toHaveBeenCalled(); expect(screenfull.toggle).toHaveBeenCalled();
}); });
it("provides displayable metadata", function () { it("provides displayable metadata", function () {

View File

@ -32,7 +32,7 @@ define(
mockRootScope, mockRootScope,
mockDocument, mockDocument,
mockDomainObject, mockDomainObject,
titler; titler; // eslint-disable-line
beforeEach(function () { beforeEach(function () {
mockNavigationService = jasmine.createSpyObj( mockNavigationService = jasmine.createSpyObj(

View File

@ -23,13 +23,13 @@
define([ define([
"./src/DialogService", "./src/DialogService",
"./src/OverlayService", "./src/OverlayService",
"text!./res/templates/overlay-dialog.html", "./res/templates/overlay-dialog.html",
"text!./res/templates/overlay-options.html", "./res/templates/overlay-options.html",
"text!./res/templates/dialog.html", "./res/templates/dialog.html",
"text!./res/templates/overlay-blocking-message.html", "./res/templates/overlay-blocking-message.html",
"text!./res/templates/message.html", "./res/templates/message.html",
"text!./res/templates/overlay-message-list.html", "./res/templates/overlay-message-list.html",
"text!./res/templates/overlay.html", "./res/templates/overlay.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
DialogService, DialogService,

View File

@ -49,14 +49,14 @@ define([
"./src/creation/CreateActionProvider", "./src/creation/CreateActionProvider",
"./src/creation/AddActionProvider", "./src/creation/AddActionProvider",
"./src/creation/CreationService", "./src/creation/CreationService",
"text!./res/templates/create/locator.html", "./res/templates/create/locator.html",
"text!./res/templates/create/create-button.html", "./res/templates/create/create-button.html",
"text!./res/templates/create/create-menu.html", "./res/templates/create/create-menu.html",
"text!./res/templates/library.html", "./res/templates/library.html",
"text!./res/templates/edit-object.html", "./res/templates/edit-object.html",
"text!./res/templates/edit-action-buttons.html", "./res/templates/edit-action-buttons.html",
"text!./res/templates/elements.html", "./res/templates/elements.html",
"text!./res/templates/topbar-edit.html", "./res/templates/topbar-edit.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
EditActionController, EditActionController,

View File

@ -25,10 +25,10 @@ define([
'../creation/CreateWizard', '../creation/CreateWizard',
'./SaveInProgressDialog' './SaveInProgressDialog'
], ],
function ( function (
CreateWizard, CreateWizard,
SaveInProgressDialog SaveInProgressDialog
) { ) {
/** /**
* The "Save" action; the action triggered by clicking Save from * The "Save" action; the action triggered by clicking Save from
@ -222,5 +222,5 @@ define([
}; };
return SaveAsAction; return SaveAsAction;
} }
); );

View File

@ -25,8 +25,7 @@ define(
function (EditAndComposeAction) { function (EditAndComposeAction) {
describe("The Link action", function () { describe("The Link action", function () {
var mockQ, var mockDomainObject,
mockDomainObject,
mockParent, mockParent,
mockContext, mockContext,
mockComposition, mockComposition,
@ -47,13 +46,10 @@ define(
} }
beforeEach(function () { beforeEach(function () {
mockDomainObject = jasmine.createSpyObj( mockDomainObject = jasmine.createSpyObj(
"domainObject", "domainObject",
["getId", "getCapability"] ["getId", "getCapability"]
); );
mockQ = { when: mockPromise };
mockParent = { mockParent = {
getModel: function () { getModel: function () {
return model; return model;

View File

@ -34,7 +34,6 @@ define(
mockDomainObject, mockDomainObject,
capabilities = {}, capabilities = {},
mockEditAction, mockEditAction,
mockSaveAction,
action; action;
function mockPromise(value) { function mockPromise(value) {
@ -83,12 +82,6 @@ define(
mockDomainObject.getCapability.and.callFake(function (name) { mockDomainObject.getCapability.and.callFake(function (name) {
return capabilities[name]; return capabilities[name];
}); });
mockSaveAction = jasmine.createSpyObj(
"saveAction",
[
"perform"
]
);
capabilities.action = jasmine.createSpyObj( capabilities.action = jasmine.createSpyObj(
"actionCapability", "actionCapability",

View File

@ -27,7 +27,6 @@ define(
describe("The Edit action policy", function () { describe("The Edit action policy", function () {
var editableView, var editableView,
nonEditableView, nonEditableView,
undefinedView,
testViews, testViews,
testContext, testContext,
mockDomainObject, mockDomainObject,
@ -67,7 +66,6 @@ define(
editableView = { editable: true }; editableView = { editable: true };
nonEditableView = { editable: false }; nonEditableView = { editable: false };
undefinedView = { someKey: "some value" };
plotView = { key: "plot", editable: false }; plotView = { key: "plot", editable: false };
testViews = []; testViews = [];

View File

@ -30,12 +30,6 @@ define(
mockObjects, mockObjects,
mockDomainObject, mockDomainObject,
testStructure, testStructure,
testAB,
testABC,
testABC2,
testABCXYZ,
testABCYZ,
testM,
toolbar; toolbar;
beforeEach(function () { beforeEach(function () {
@ -62,13 +56,6 @@ define(
{ name: "M", method: "m", domainObject: mockDomainObject } { name: "M", method: "m", domainObject: mockDomainObject }
]; ];
testAB = { a: 0, b: 1 };
testABC = { a: 0, b: 1, c: 2 };
testABC2 = { a: 4, b: 1, c: 2 }; // For inconsistent-state checking
testABCXYZ = { a: 0, b: 1, c: 2, x: 'X!', y: 'Y!', z: 'Z!' };
testABCYZ = { a: 0, b: 1, c: 2, y: 'Y!', z: 'Z!' };
testM = { m: jasmine.createSpy("method") };
toolbar = new EditToolbar(mockScope, mockOpenMCT, testStructure); toolbar = new EditToolbar(mockScope, mockOpenMCT, testStructure);
}); });

View File

@ -43,13 +43,12 @@ define(["../../src/services/NestedTransaction"], function (NestedTransaction) {
describe("when callbacks are added", function () { describe("when callbacks are added", function () {
var mockCommit, var mockCommit,
mockCancel, mockCancel;
remove;
beforeEach(function () { beforeEach(function () {
mockCommit = jasmine.createSpy('commit'); mockCommit = jasmine.createSpy('commit');
mockCancel = jasmine.createSpy('cancel'); mockCancel = jasmine.createSpy('cancel');
remove = nestedTransaction.add(mockCommit, mockCancel); nestedTransaction.add(mockCommit, mockCancel);
}); });
it("does not interact with its parent transaction", function () { it("does not interact with its parent transaction", function () {

View File

@ -52,26 +52,26 @@ define([
"./src/directives/MCTPreview", "./src/directives/MCTPreview",
"./src/actions/MCTPreviewAction", "./src/actions/MCTPreviewAction",
"./src/filters/ReverseFilter", "./src/filters/ReverseFilter",
"text!./res/templates/bottombar.html", "./res/templates/bottombar.html",
"text!./res/templates/controls/action-button.html", "./res/templates/controls/action-button.html",
"text!./res/templates/controls/input-filter.html", "./res/templates/controls/input-filter.html",
"text!./res/templates/angular-indicator.html", "./res/templates/angular-indicator.html",
"text!./res/templates/message-banner.html", "./res/templates/message-banner.html",
"text!./res/templates/progress-bar.html", "./res/templates/progress-bar.html",
"text!./res/templates/controls/time-controller.html", "./res/templates/controls/time-controller.html",
"text!./res/templates/containers/accordion.html", "./res/templates/containers/accordion.html",
"text!./res/templates/subtree.html", "./res/templates/subtree.html",
"text!./res/templates/tree.html", "./res/templates/tree.html",
"text!./res/templates/tree-node.html", "./res/templates/tree-node.html",
"text!./res/templates/label.html", "./res/templates/label.html",
"text!./res/templates/controls/action-group.html", "./res/templates/controls/action-group.html",
"text!./res/templates/menu/context-menu.html", "./res/templates/menu/context-menu.html",
"text!./res/templates/controls/switcher.html", "./res/templates/controls/switcher.html",
"text!./res/templates/object-inspector.html", "./res/templates/object-inspector.html",
"text!./res/templates/controls/selector.html", "./res/templates/controls/selector.html",
"text!./res/templates/controls/datetime-picker.html", "./res/templates/controls/datetime-picker.html",
"text!./res/templates/controls/datetime-field.html", "./res/templates/controls/datetime-field.html",
"text!./res/templates/preview.html", "./res/templates/preview.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
UrlService, UrlService,
@ -173,12 +173,6 @@ define([
"key": "reverse" "key": "reverse"
} }
], ],
"stylesheets": [
{
"stylesheetUrl": "css/normalize.min.css",
"priority": "mandatory"
}
],
"templates": [ "templates": [
{ {
"key": "bottombar", "key": "bottombar",

View File

@ -1,48 +0,0 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

View File

@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
/** /**
* Module defining OverlayService. Created by deeptailor on 03/29/2018 * Module defining OverlayService. Created by deeptailor on 03/29/2018
*/ */

View File

@ -22,7 +22,7 @@
define([ define([
'zepto', 'zepto',
'text!../../res/templates/tree/toggle.html' '../../res/templates/tree/toggle.html'
], function ($, toggleTemplate) { ], function ($, toggleTemplate) {
function ToggleView(state) { function ToggleView(state) {
this.expanded = !!state; this.expanded = !!state;

View File

@ -22,7 +22,7 @@
define([ define([
'zepto', 'zepto',
'text!../../res/templates/tree/tree-label.html' '../../res/templates/tree/tree-label.html'
], function ($, labelTemplate) { ], function ($, labelTemplate) {
function TreeLabelView(gestureService) { function TreeLabelView(gestureService) {

View File

@ -22,7 +22,7 @@
define([ define([
'zepto', 'zepto',
'text!../../res/templates/tree/node.html', '../../res/templates/tree/node.html',
'./ToggleView', './ToggleView',
'./TreeLabelView' './TreeLabelView'
], function ($, nodeTemplate, ToggleView, TreeLabelView) { ], function ($, nodeTemplate, ToggleView, TreeLabelView) {

View File

@ -23,7 +23,7 @@
define([ define([
'zepto', 'zepto',
'./TreeNodeView', './TreeNodeView',
'text!../../res/templates/tree/wait-node.html' '../../res/templates/tree/wait-node.html'
], function ($, TreeNodeView, spinnerTemplate) { ], function ($, TreeNodeView, spinnerTemplate) {
function TreeView(gestureService, openmct, selectFn) { function TreeView(gestureService, openmct, selectFn) {

View File

@ -31,7 +31,7 @@ define(
mockHead, mockHead,
mockElement, mockElement,
testBundle, testBundle,
loader; loader; // eslint-disable-line
beforeEach(function () { beforeEach(function () {
testBundle = { testBundle = {

View File

@ -41,7 +41,6 @@ define(
mockScope, mockScope,
mockElement, mockElement,
testAttrs, testAttrs,
mockBody,
mockTransclude, mockTransclude,
mockParentEl, mockParentEl,
mockNewElement, mockNewElement,
@ -59,8 +58,6 @@ define(
jasmine.createSpyObj("$scope", ["$eval", "$apply", "$on"]); jasmine.createSpyObj("$scope", ["$eval", "$apply", "$on"]);
mockElement = mockElement =
jasmine.createSpyObj("element", JQLITE_METHODS); jasmine.createSpyObj("element", JQLITE_METHODS);
mockBody =
jasmine.createSpyObj("body", JQLITE_METHODS);
mockTransclude = mockTransclude =
jasmine.createSpy("transclude"); jasmine.createSpy("transclude");
mockParentEl = mockParentEl =

View File

@ -24,10 +24,10 @@ define([
"./src/gestures/InfoGesture", "./src/gestures/InfoGesture",
"./src/gestures/InfoButtonGesture", "./src/gestures/InfoButtonGesture",
"./src/services/InfoService", "./src/services/InfoService",
"text!./res/info-table.html", "./res/info-table.html",
"text!./res/info-bubble.html", "./res/info-bubble.html",
"text!./res/bubble.html", "./res/bubble.html",
"text!./res/templates/info-button.html", "./res/templates/info-button.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
InfoGesture, InfoGesture,

View File

@ -25,8 +25,7 @@ define(
function (InfoButtonGesture) { function (InfoButtonGesture) {
describe("The info button gesture", function () { describe("The info button gesture", function () {
var mockTimeout, var mockDocument,
mockDocument,
mockBody, mockBody,
mockAgentService, mockAgentService,
mockInfoService, mockInfoService,
@ -42,7 +41,6 @@ define(
fireDismissGesture; fireDismissGesture;
beforeEach(function () { beforeEach(function () {
mockTimeout = jasmine.createSpy('$timeout');
mockDocument = jasmine.createSpyObj('$document', ['find']); mockDocument = jasmine.createSpyObj('$document', ['find']);
mockBody = jasmine.createSpyObj('body', ['on', 'off', 'scope', 'css', 'unbind']); mockBody = jasmine.createSpyObj('body', ['on', 'off', 'scope', 'css', 'unbind']);
mockDocument.find.and.returnValue(mockBody); mockDocument.find.and.returnValue(mockBody);

View File

@ -74,7 +74,7 @@ define(
"device " + (trueMethods.join(", ")); "device " + (trueMethods.join(", "));
describe("when " + summary, function () { describe("when " + summary, function () {
var classifier; var classifier; // eslint-disable-line
beforeEach(function () { beforeEach(function () {
trueMethods.forEach(function (m) { trueMethods.forEach(function (m) {

View File

@ -24,7 +24,7 @@ define([
"./src/NotificationIndicatorController", "./src/NotificationIndicatorController",
"./src/NotificationIndicator", "./src/NotificationIndicator",
"./src/NotificationService", "./src/NotificationService",
"text!./res/notification-indicator.html", "./res/notification-indicator.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
NotificationIndicatorController, NotificationIndicatorController,

View File

@ -1,49 +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([
'legacyRegistry'
], function (
legacyRegistry
) {
legacyRegistry.register("platform/commonUI/themes/espresso", {
"name": "Espresso",
"description": "Espresso theme: dark and rich",
"extensions": {
"stylesheets": [
{
"stylesheetUrl": "css/theme-espresso.css",
"priority": 1000
}
],
"constants": [
{
"key": "THEME",
"value": "espresso"
}
]
}
});
});

View File

@ -1,49 +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([
'legacyRegistry'
], function (
legacyRegistry
) {
legacyRegistry.register("platform/commonUI/themes/snow", {
"name": "Snow",
"description": "Snow theme: light and cool",
"extensions": {
"stylesheets": [
{
"stylesheetUrl": "css/theme-snow.css",
"priority": 1000
}
],
"constants": [
{
"key": "THEME",
"value": "snow"
}
]
}
});
});

View File

@ -48,10 +48,11 @@ define(
}); });
it("throws exceptions on unrecognized conversions", function () { it("throws exceptions on unrecognized conversions", function () {
var caught = false, tmp; var caught = false;
try { try {
tmp = new TypePropertyConversion("some-unknown-conversion"); // eslint-disable-next-line
new TypePropertyConversion("some-unknown-conversion");
} catch (e) { } catch (e) {
caught = true; caught = true;
} }

View File

@ -124,7 +124,6 @@ define(
var mockQ, var mockQ,
mockDeferred, mockDeferred,
createObjectPromise,
copyService, copyService,
object, object,
newParent, newParent,
@ -138,7 +137,6 @@ define(
resolvedValue; resolvedValue;
beforeEach(function () { beforeEach(function () {
createObjectPromise = synchronousPromise(undefined);
policyService.allow.and.returnValue(true); policyService.allow.and.returnValue(true);
persistObjectPromise = synchronousPromise(undefined); persistObjectPromise = synchronousPromise(undefined);
@ -275,8 +273,7 @@ define(
describe("on domainObject with composition", function () { describe("on domainObject with composition", function () {
var childObject, var childObject,
objectClone, objectClone,
childObjectClone, childObjectClone;
compositionPromise;
beforeEach(function () { beforeEach(function () {
var invocationCount = 0, var invocationCount = 0,
@ -325,11 +322,6 @@ define(
} }
}); });
compositionPromise = jasmine.createSpyObj(
'compositionPromise',
['then']
);
compositionCapability compositionCapability
.invoke .invoke
.and.returnValue(synchronousPromise([childObject])); .and.returnValue(synchronousPromise([childObject]));

View File

@ -178,7 +178,6 @@ define(
type: { type: 'object' } type: { type: 'object' }
} }
}); });
moveResult = moveService.perform(object, newParent); moveResult = moveService.perform(object, newParent);
}); });
@ -189,6 +188,10 @@ define(
); );
}); });
it("returns a promise", function () {
expect(moveResult.then).toEqual(jasmine.any(Function));
});
it("waits for result of link", function () { it("waits for result of link", function () {
expect(linkService.perform.calls.mostRecent().promise.then) expect(linkService.perform.calls.mostRecent().promise.then)
.toHaveBeenCalledWith(jasmine.any(Function)); .toHaveBeenCalledWith(jasmine.any(Function));

View File

@ -34,8 +34,8 @@ define([
"./src/actions/RestartTimerAction", "./src/actions/RestartTimerAction",
"./src/actions/StopTimerAction", "./src/actions/StopTimerAction",
"./src/actions/PauseTimerAction", "./src/actions/PauseTimerAction",
"text!./res/templates/clock.html", "./res/templates/clock.html",
"text!./res/templates/timer.html", "./res/templates/timer.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
MomentTimezone, MomentTimezone,

View File

@ -23,11 +23,11 @@
define([ define([
'moment', 'moment',
'moment-timezone' 'moment-timezone'
], ],
function ( function (
moment, moment,
momentTimezone momentTimezone
) { ) {
/** /**
* Controller for views of a Clock domain object. * Controller for views of a Clock domain object.
@ -106,5 +106,5 @@ define([
}; };
return ClockController; return ClockController;
} }
); );

View File

@ -29,10 +29,10 @@ define([
"./src/ui/ConductorAxisDirective", "./src/ui/ConductorAxisDirective",
"./src/ui/NumberFormat", "./src/ui/NumberFormat",
"./src/ui/StringFormat", "./src/ui/StringFormat",
"text!./res/templates/time-conductor.html", "./res/templates/time-conductor.html",
"text!./res/templates/mode-selector/mode-selector.html", "./res/templates/mode-selector/mode-selector.html",
"text!./res/templates/mode-selector/mode-menu.html", "./res/templates/mode-selector/mode-menu.html",
"text!./res/templates/time-of-interest.html", "./res/templates/time-of-interest.html",
"legacyRegistry" "legacyRegistry"
], function ( ], function (
TimeConductorController, TimeConductorController,
@ -97,16 +97,6 @@ define([
"implementation": ConductorTOIDirective "implementation": ConductorTOIDirective
} }
], ],
"stylesheets": [
{
"stylesheetUrl": "css/time-conductor-espresso.css",
"theme": "espresso"
},
{
"stylesheetUrl": "css/time-conductor-snow.css",
"theme": "snow"
}
],
"templates": [ "templates": [
{ {
"key": "conductor", "key": "conductor",

View File

@ -37,8 +37,6 @@ define([
mockConductorViewService, mockConductorViewService,
mockFormatService, mockFormatService,
mockScope, mockScope,
mockElement,
mockTarget,
mockBounds, mockBounds,
element, element,
mockTimeSystem, mockTimeSystem,
@ -56,13 +54,6 @@ define([
]); ]);
//Add some HTML elements //Add some HTML elements
mockTarget = {
offsetWidth: 0,
offsetHeight: 0
};
mockElement = {
firstChild: mockTarget
};
mockBounds = { mockBounds = {
start: 100, start: 100,
end: 200 end: 200

View File

@ -376,7 +376,6 @@ define(['./TimeConductorController'], function (TimeConductorController) {
describe("when the URL defines conductor state", function () { describe("when the URL defines conductor state", function () {
var urlBounds; var urlBounds;
var urlTimeSystem; var urlTimeSystem;
var urlMode;
var urlDeltas; var urlDeltas;
var mockDeltaFormat; var mockDeltaFormat;
@ -439,7 +438,6 @@ define(['./TimeConductorController'], function (TimeConductorController) {
end: 200 end: 200
}; };
urlTimeSystem = "otherTimeSystem"; urlTimeSystem = "otherTimeSystem";
urlMode = "realtime";
urlDeltas = { urlDeltas = {
start: 300, start: 300,
end: 400 end: 400

View File

@ -21,7 +21,7 @@
*****************************************************************************/ *****************************************************************************/
define([ define([
"text!../layout/res/templates/fixed.html", "../layout/res/templates/fixed.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
fixedTemplate, fixedTemplate,

View File

@ -23,7 +23,7 @@
define([ define([
'./src/HyperlinkController', './src/HyperlinkController',
'legacyRegistry', 'legacyRegistry',
'text!./res/templates/hyperlink.html' './res/templates/hyperlink.html'
], function ( ], function (
HyperlinkController, HyperlinkController,
legacyRegistry, legacyRegistry,

View File

@ -55,4 +55,4 @@ define(
return HyperlinkController; return HyperlinkController;
} }
); );

View File

@ -24,7 +24,7 @@ define([
"./src/policies/ImageryViewPolicy", "./src/policies/ImageryViewPolicy",
"./src/controllers/ImageryController", "./src/controllers/ImageryController",
"./src/directives/MCTBackgroundImage", "./src/directives/MCTBackgroundImage",
"text!./res/templates/imagery.html", "./res/templates/imagery.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
ImageryViewPolicy, ImageryViewPolicy,

View File

@ -25,14 +25,14 @@ define([
"./src/FixedController", "./src/FixedController",
"./src/LayoutCompositionPolicy", "./src/LayoutCompositionPolicy",
'./src/MCTTriggerModal', './src/MCTTriggerModal',
"text!./res/templates/layout.html", "./res/templates/layout.html",
"text!./res/templates/fixed.html", "./res/templates/fixed.html",
"text!./res/templates/frame.html", "./res/templates/frame.html",
"text!./res/templates/elements/telemetry.html", "./res/templates/elements/telemetry.html",
"text!./res/templates/elements/box.html", "./res/templates/elements/box.html",
"text!./res/templates/elements/line.html", "./res/templates/elements/line.html",
"text!./res/templates/elements/text.html", "./res/templates/elements/text.html",
"text!./res/templates/elements/image.html", "./res/templates/elements/image.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
LayoutController, LayoutController,

View File

@ -20,10 +20,10 @@
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
define([ define([
'./src/controllers/ListViewController', './src/controllers/ListViewController',
'./src/directives/MCTGesture', './src/directives/MCTGesture',
'text!./res/templates/listview.html', './res/templates/listview.html',
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
ListViewController, ListViewController,

View File

@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
define(function () { define(function () {
function MCTGesture(gestureService) { function MCTGesture(gestureService) {
return { return {
restrict : 'A', restrict : 'A',

View File

@ -13,13 +13,13 @@ define([
"./src/actions/NewEntryContextual", "./src/actions/NewEntryContextual",
"./src/capabilities/NotebookCapability", "./src/capabilities/NotebookCapability",
"./src/policies/CompositionPolicy", "./src/policies/CompositionPolicy",
"text!./res/templates/notebook.html", "./res/templates/notebook.html",
"text!./res/templates/entry.html", "./res/templates/entry.html",
"text!./res/templates/annotation.html", "./res/templates/annotation.html",
"text!./res/templates/notifications.html", "./res/templates/notifications.html",
"text!../layout/res/templates/frame.html", "../layout/res/templates/frame.html",
"text!./res/templates/controls/embedControl.html", "./res/templates/controls/embedControl.html",
"text!./res/templates/controls/snapSelect.html" "./res/templates/controls/snapSelect.html"
], function ( ], function (
legacyRegistry, legacyRegistry,
NotebookController, NotebookController,
@ -288,19 +288,6 @@ define([
"key": "snapshot-select", "key": "snapshot-select",
"template": snapSelectTemplate "template": snapSelectTemplate
} }
],
"stylesheets": [
{
"stylesheetUrl": "css/notebook.css"
},
{
"stylesheetUrl": "css/notebook-espresso.css",
"theme": "espresso"
},
{
"stylesheetUrl": "css/notebook-snow.css",
"theme": "snow"
}
] ]
} }
}); });

View File

@ -38,9 +38,9 @@ var OVERLAY_TEMPLATE = '' +
define([ define([
'zepto', 'zepto',
"text!../../res/templates/snapshotHeader.html" "../../res/templates/snapshotHeader.html"
], ],
function ($, headerTemplate) { function ($, headerTemplate) {
var toggleOverlay, var toggleOverlay,
overlay, overlay,
@ -128,5 +128,5 @@ define([
}; };
return ViewSnapshot; return ViewSnapshot;
} }
); );

View File

@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
/*-- main controller file, here is the core functionality of the notebook plugin --*/ /*-- main controller file, here is the core functionality of the notebook plugin --*/
define( define(
['zepto'], ['zepto'],
@ -310,8 +310,7 @@ define(
initiatingEvent = agentService.isMobile() ? initiatingEvent = agentService.isMobile() ?
'touchstart' : 'mousedown', 'touchstart' : 'mousedown',
dismissExistingMenu, dismissExistingMenu,
menu, menu;
popup;
var container = $($event.currentTarget).parent().parent(); var container = $($event.currentTarget).parent().parent();
@ -333,7 +332,7 @@ define(
// ...and record the presence of this menu. // ...and record the presence of this menu.
dismissExistingMenu = dismiss; dismissExistingMenu = dismiss;
popup = popupService.display(menu, [$event.pageX,$event.pageY], { popupService.display(menu, [$event.pageX,$event.pageY], {
marginX: 0, marginX: 0,
marginY: -50 marginY: -50
}); });

View File

@ -31,11 +31,9 @@ define(['zepto'], function ($) {
var selectedModel = selectedObject.getModel(); var selectedModel = selectedObject.getModel();
var cssClass = selectedObject.getCapability('type').typeDef.cssClass; var cssClass = selectedObject.getCapability('type').typeDef.cssClass;
var entryId = -1; var entryId = -1;
var embedId = -1;
$scope.clearSearch(); $scope.clearSearch();
if ($element[0].id === 'newEntry') { if ($element[0].id === 'newEntry') {
entryId = $scope.domainObject.model.entries.length; entryId = $scope.domainObject.model.entries.length;
embedId = 0;
var lastEntry = $scope.domainObject.model.entries[entryId - 1]; var lastEntry = $scope.domainObject.model.entries[entryId - 1];
if (lastEntry === undefined || lastEntry.text || lastEntry.embeds) { if (lastEntry === undefined || lastEntry.text || lastEntry.embeds) {
$scope.domainObject.useCapability('mutation', function (model) { $scope.domainObject.useCapability('mutation', function (model) {
@ -84,8 +82,6 @@ define(['zepto'], function ($) {
}); });
}); });
embedId = $scope.domainObject.model.entries[entryId].embeds.length - 1;
if (selectedObject) { if (selectedObject) {
e.preventDefault(); e.preventDefault();

View File

@ -22,7 +22,7 @@
define([ define([
"./src/EmbeddedPageController", "./src/EmbeddedPageController",
"text!./res/iframe.html", "./res/iframe.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
EmbeddedPageController, EmbeddedPageController,

View File

@ -22,7 +22,7 @@
define([ define([
"text!./res/markup.html", "./res/markup.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (

View File

@ -26,8 +26,8 @@ define([
"./src/controllers/TableOptionsController", "./src/controllers/TableOptionsController",
'../../commonUI/regions/src/Region', '../../commonUI/regions/src/Region',
'../../commonUI/browse/src/InspectorRegion', '../../commonUI/browse/src/InspectorRegion',
"text!./res/templates/table-options-edit.html", "./res/templates/table-options-edit.html",
"text!./res/templates/telemetry-table.html", "./res/templates/telemetry-table.html",
"legacyRegistry" "legacyRegistry"
], function ( ], function (
MCTTable, MCTTable,
@ -121,12 +121,6 @@ define([
"key": "table-options-edit", "key": "table-options-edit",
"template": tableOptionsEditTemplate "template": tableOptionsEditTemplate
} }
],
"stylesheets": [
{
"stylesheetUrl": "css/table.css",
"priority": "mandatory"
}
] ]
} }
}); });

View File

@ -23,7 +23,7 @@
define( define(
[ [
"../controllers/MCTTableController", "../controllers/MCTTableController",
"text!../../res/templates/mct-table.html" "../../res/templates/mct-table.html"
], ],
function (MCTTableController, TableTemplate) { function (MCTTableController, TableTemplate) {
/** /**

View File

@ -21,7 +21,7 @@
*****************************************************************************/ *****************************************************************************/
define([ define([
"text!./res/templates/deprecated-timeline-message.html", "./res/templates/deprecated-timeline-message.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
deprecatedTimelineMessage, deprecatedTimelineMessage,

View File

@ -31,20 +31,20 @@ define([
"./src/controllers/CompositeController", "./src/controllers/CompositeController",
"./src/controllers/ColorController", "./src/controllers/ColorController",
"./src/controllers/DialogButtonController", "./src/controllers/DialogButtonController",
"text!./res/templates/controls/autocomplete.html", "./res/templates/controls/autocomplete.html",
"text!./res/templates/controls/checkbox.html", "./res/templates/controls/checkbox.html",
"text!./res/templates/controls/datetime.html", "./res/templates/controls/datetime.html",
"text!./res/templates/controls/select.html", "./res/templates/controls/select.html",
"text!./res/templates/controls/textfield.html", "./res/templates/controls/textfield.html",
"text!./res/templates/controls/numberfield.html", "./res/templates/controls/numberfield.html",
"text!./res/templates/controls/textarea.html", "./res/templates/controls/textarea.html",
"text!./res/templates/controls/button.html", "./res/templates/controls/button.html",
"text!./res/templates/controls/color.html", "./res/templates/controls/color.html",
"text!./res/templates/controls/composite.html", "./res/templates/controls/composite.html",
"text!./res/templates/controls/menu-button.html", "./res/templates/controls/menu-button.html",
"text!./res/templates/controls/dialog.html", "./res/templates/controls/dialog.html",
"text!./res/templates/controls/radio.html", "./res/templates/controls/radio.html",
"text!./res/templates/controls/file-input.html", "./res/templates/controls/file-input.html",
'legacyRegistry' 'legacyRegistry'
], function ( ], function (
MCTForm, MCTForm,

View File

@ -26,7 +26,7 @@
* @namespace platform/forms * @namespace platform/forms
*/ */
define( define(
["./controllers/FormController", "text!../res/templates/form.html"], ["./controllers/FormController", "../res/templates/form.html"],
function (FormController, formTemplate) { function (FormController, formTemplate) {
/** /**

View File

@ -26,7 +26,7 @@
define( define(
[ [
"./MCTForm", "./MCTForm",
"text!../res/templates/toolbar.html", "../res/templates/toolbar.html",
"./controllers/ToolbarController" "./controllers/ToolbarController"
], ],
function ( function (

View File

@ -20,10 +20,9 @@
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
/*global window,requirejs*/ /*global window*/
define([ define([
'require',
'./Constants', './Constants',
'./FrameworkInitializer', './FrameworkInitializer',
'./LogLevel', './LogLevel',
@ -31,13 +30,11 @@ define([
'./resolve/ImplementationLoader', './resolve/ImplementationLoader',
'./resolve/ExtensionResolver', './resolve/ExtensionResolver',
'./resolve/BundleResolver', './resolve/BundleResolver',
'./resolve/RequireConfigurator',
'./register/CustomRegistrars', './register/CustomRegistrars',
'./register/ExtensionRegistrar', './register/ExtensionRegistrar',
'./register/ExtensionSorter', './register/ExtensionSorter',
'./bootstrap/ApplicationBootstrapper' './bootstrap/ApplicationBootstrapper'
], function ( ], function (
require,
Constants, Constants,
FrameworkInitializer, FrameworkInitializer,
LogLevel, LogLevel,
@ -45,7 +42,6 @@ define([
ImplementationLoader, ImplementationLoader,
ExtensionResolver, ExtensionResolver,
BundleResolver, BundleResolver,
RequireConfigurator,
CustomRegistrars, CustomRegistrars,
ExtensionRegistrar, ExtensionRegistrar,
ExtensionSorter, ExtensionSorter,
@ -68,10 +64,9 @@ define([
loader = new BundleLoader($http, $log, legacyRegistry), loader = new BundleLoader($http, $log, legacyRegistry),
resolver = new BundleResolver( resolver = new BundleResolver(
new ExtensionResolver( new ExtensionResolver(
new ImplementationLoader(require), new ImplementationLoader({}),
$log $log
), ),
new RequireConfigurator(requirejs),
$log $log
), ),
registrar = new ExtensionRegistrar( registrar = new ExtensionRegistrar(

View File

@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
/*global window,requirejs*/ /*global window*/
/** /**
* Implements the framework layer, which handles the loading of bundles * Implements the framework layer, which handles the loading of bundles
@ -29,15 +29,11 @@
*/ */
define( define(
[ [
'require',
'es6-promise',
'./FrameworkLayer', './FrameworkLayer',
'angular', 'angular',
'angular-route' 'angular-route'
], ],
function ( function (
require,
es6promise,
FrameworkLayer, FrameworkLayer,
angular angular
) { ) {
@ -56,12 +52,9 @@ define(
return match ? match[1] : ""; return match ? match[1] : "";
} }
// Polyfill Promise, in case browser does not natively provide Promise
window.Promise = window.Promise || es6promise.Promise;
// Reconfigure base url, since bundle paths will all be relative // Reconfigure base url, since bundle paths will all be relative
// to the root now. // to the root now.
requirejs.config({"baseUrl": ""});
injector.instantiate(['$http', '$log', FrameworkLayer]) injector.instantiate(['$http', '$log', FrameworkLayer])
.initializeApplication(angular, legacyRegistry, logLevel()); .initializeApplication(angular, legacyRegistry, logLevel());
}; };

View File

@ -35,9 +35,8 @@ define(
* @memberof platform/framework * @memberof platform/framework
* @constructor * @constructor
*/ */
function BundleResolver(extensionResolver, requireConfigurator, $log) { function BundleResolver(extensionResolver, $log) {
this.extensionResolver = extensionResolver; this.extensionResolver = extensionResolver;
this.requireConfigurator = requireConfigurator;
this.$log = $log; this.$log = $log;
} }
@ -53,7 +52,6 @@ define(
*/ */
BundleResolver.prototype.resolveBundles = function (bundles) { BundleResolver.prototype.resolveBundles = function (bundles) {
var extensionResolver = this.extensionResolver, var extensionResolver = this.extensionResolver,
requireConfigurator = this.requireConfigurator,
$log = this.$log; $log = this.$log;
/* /*
@ -116,9 +114,6 @@ define(
.then(giveResult); .then(giveResult);
} }
// First, make sure Require is suitably configured
requireConfigurator.configure(bundles);
// Then, resolve all extension implementations. // Then, resolve all extension implementations.
return Promise.all(bundles.map(resolveBundle)) return Promise.all(bundles.map(resolveBundle))
.then(mergeResolvedBundles); .then(mergeResolvedBundles);

View File

@ -1,112 +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 () {
/**
* Handles configuration of RequireJS to expose libraries
* from bundles with module names that can be used from other
* bundles.
* @memberof platform/framework
* @constructor
* @param requirejs an instance of RequireJS
*/
function RequireConfigurator(requirejs) {
this.requirejs = requirejs;
}
// Utility function to clone part of a bundle definition
function clone(obj) {
return JSON.parse(JSON.stringify(obj));
}
// Look up module configuration from the bundle definition.
// This will adjust paths to libraries as-needed.
function getConfiguration(bundle) {
var configuration = bundle.getConfiguration();
// Adjust paths to point to libraries
if (configuration.paths) {
// Don't modify the actual bundle definition...
configuration = clone(configuration);
// ...replace values in a clone instead.
Object.keys(configuration.paths).forEach(function (path) {
configuration.paths[path] =
bundle.getLibraryPath(configuration.paths[path]);
});
}
return configuration;
}
// Build up paths and shim values from multiple bundles;
// this is sensitive to the value from baseConfiguration
// passed via reduce in buildConfiguration below, insofar
// as it assumes paths and shim will have initial empty values.
function mergeConfigurations(base, next) {
["paths", "shim"].forEach(function (k) {
Object.keys(next[k] || {}).forEach(function (p) {
base[k][p] = next[k][p];
});
});
return base;
}
// Build a configuration object, to pass to requirejs.config,
// based on the defined configurations for all bundles.
// The paths and shim properties from all bundles will be
// merged to allow one requirejs.config call.
function buildConfiguration(bundles) {
// Provide an initial requirejs configuration...
var baseConfiguration = {
baseUrl: "",
paths: {},
shim: {}
},
// ...and pull out all bundle-specific parts
bundleConfigurations = bundles.map(getConfiguration);
// Reduce this into one configuration object.
return bundleConfigurations.reduce(
mergeConfigurations,
baseConfiguration
);
}
/**
* Configure RequireJS to utilize any path/shim definitions
* provided by these bundles.
*
* @param {Bundle[]} the bundles to include in this
* configuration
* @memberof platform/framework.RequireConfigurator#
*/
RequireConfigurator.prototype.configure = function (bundles) {
return this.requirejs.config(buildConfiguration(bundles));
};
return RequireConfigurator;
}
);

Some files were not shown because too many files have changed in this diff Show More