mirror of
https://github.com/nasa/openmct.git
synced 2025-06-26 11:09:22 +00:00
Compare commits
537 Commits
plotly-tes
...
troublesho
Author | SHA1 | Date | |
---|---|---|---|
98264f35c6 | |||
f42f291790 | |||
176e8167f0 | |||
87d58904b4 | |||
ae629a6c8b | |||
3f575f0ec0 | |||
b3ab56cb57 | |||
f6934a43c9 | |||
22a7537974 | |||
3620760991 | |||
88a94c80be | |||
2fc0d34b8f | |||
d53ca3ec9a | |||
86e5d10fc1 | |||
936b88363c | |||
38fec73a33 | |||
43c2c8543e | |||
e8e719e7f7 | |||
26e70d82b7 | |||
3a65f75d21 | |||
51e4c0c836 | |||
bb9c225f23 | |||
19ec98af79 | |||
23ead2ceaa | |||
6a8f4b5d9c | |||
464bb3b885 | |||
4775c88909 | |||
722e2e2bb1 | |||
333aa1d6db | |||
5e92c69fe2 | |||
8ddba2b06f | |||
6f9241c0b1 | |||
d84808aa68 | |||
0df672e470 | |||
c9bc390355 | |||
5b1664f073 | |||
e634e09e32 | |||
8e3947e48d | |||
b1ea6efd45 | |||
70f2fad243 | |||
2d64813a4f | |||
fd0e89ca05 | |||
01d02642e8 | |||
1f588a2a6e | |||
e18c7562ae | |||
08b1c4ae74 | |||
2488072d6b | |||
82ea23e20c | |||
a0b02c9684 | |||
bba29b083f | |||
7c4258d720 | |||
95d30f75ac | |||
db3cfd33af | |||
85fe838c04 | |||
6bdea20f9a | |||
159563ce5c | |||
0d88bc8531 | |||
8acbcadd5d | |||
e20c7a17d6 | |||
035a1be57d | |||
09b49f31ab | |||
e1e2cf9be8 | |||
84e82d3bda | |||
7b53cad2c5 | |||
420edb75f8 | |||
749e84611e | |||
8eba3a81f3 | |||
63fabe576c | |||
11c96796c0 | |||
5caa5e1a50 | |||
b9b0cfe0ef | |||
bee0527acb | |||
ed3c2f6a56 | |||
b1c97e51e5 | |||
16786a64c1 | |||
e3ad2c98ca | |||
0a0d3b20c2 | |||
02c2fb5655 | |||
0b02b083c3 | |||
25b3431131 | |||
c8723da098 | |||
933ce7aa3c | |||
8ef3869325 | |||
53f5fdabe5 | |||
d10561fc7f | |||
566469e691 | |||
6d4a324fca | |||
b8fabb7e73 | |||
1680c3cc1b | |||
61dd85c704 | |||
980777691a | |||
a50c1704e5 | |||
98080784a3 | |||
bf7b672957 | |||
5dadf6f6fc | |||
555db60bf7 | |||
1972ca9ea7 | |||
1e11bbc2ad | |||
c4a87ae5d7 | |||
4e325fb165 | |||
e59e4efdf0 | |||
f17fda53a0 | |||
f2dbe6d816 | |||
510d3bd333 | |||
a908eb1d65 | |||
c0bda64927 | |||
d0c5731287 | |||
5eaf222f88 | |||
0249ab4df5 | |||
4f8cba160d | |||
c269e089da | |||
4873f40614 | |||
10bb9173ec | |||
ea8c9c7cc8 | |||
4c9c084eec | |||
b64ee10812 | |||
ee1ecf43db | |||
4d8db8eb7c | |||
1b13965200 | |||
38db8f7fe5 | |||
4ba8f893a6 | |||
c4b9be18f1 | |||
eabdf6cd04 | |||
e56c673005 | |||
dad9f12a5c | |||
aa5edb0b83 | |||
b315803180 | |||
b27317631b | |||
953a9daafb | |||
63f9cd449f | |||
54220f547b | |||
93d967c2b3 | |||
1226459c6f | |||
d7c9c9cb98 | |||
2131ef2397 | |||
48c22369a1 | |||
6506077f4d | |||
b1b4266ff3 | |||
42b0148f93 | |||
9461ad8edd | |||
40055ba955 | |||
9cb85ad176 | |||
f2b2953a5d | |||
62de310686 | |||
4b9ff67e49 | |||
d5e32ec494 | |||
38880ba3d1 | |||
a99ce7733c | |||
9f48764210 | |||
a1aaa0dd41 | |||
bee15e98c8 | |||
092bbe547d | |||
6cbe05317c | |||
3b92fcdf6c | |||
6dde54bd25 | |||
359e7377ac | |||
9f4190f781 | |||
f3fc991a74 | |||
2564e75fc9 | |||
f42fe78acf | |||
fe928a1386 | |||
b329ed6ed5 | |||
9b7a0d7e4c | |||
5c15e53abb | |||
f58b3881f2 | |||
071a13b219 | |||
ca66898e51 | |||
94c7b2343a | |||
c397c336ab | |||
eea23f2caf | |||
6665641c02 | |||
c3ebf52dd2 | |||
f8f2e7da9b | |||
240f58b2d0 | |||
7d3baee7b5 | |||
1f5cb7ca42 | |||
4a7ebe326c | |||
10da314a4a | |||
b3ceccd7fb | |||
1bde4c9a0c | |||
4b85360446 | |||
41b860a547 | |||
254b3db966 | |||
cbb3f32d1e | |||
e3bf72e77f | |||
0b63b782cf | |||
da39fd0c70 | |||
96dd581a67 | |||
2a1e322230 | |||
300b98bd54 | |||
c946609d13 | |||
7ca559fbe4 | |||
71392915c1 | |||
2889e88a97 | |||
d56d176aac | |||
925518c83f | |||
fa5aceb7b3 | |||
6755ef4641 | |||
333e8b5583 | |||
9d8a8b36d2 | |||
b484a4a959 | |||
64e7c62d98 | |||
6483fe2402 | |||
a123889d6a | |||
a40867d544 | |||
dbed9262c0 | |||
43ac66233e | |||
04e85c176a | |||
8274c23129 | |||
5fafde5f23 | |||
80a6e7f719 | |||
2c13aeecce | |||
ac015c3e45 | |||
ae1a4bcc6a | |||
e1e0eeac56 | |||
c90dfb2a1f | |||
1dfa5e5b8c | |||
99896b72ea | |||
979ba77c8e | |||
aebb5df611 | |||
605eeff9d7 | |||
a83ee1f90f | |||
fe899cbcc8 | |||
633bac2ed5 | |||
dacec48aec | |||
3ca133c782 | |||
12416b8079 | |||
9920e67c83 | |||
0e80a5b8a0 | |||
05f9202fe4 | |||
0da35a44b0 | |||
2305cd2e49 | |||
b30b6bc94e | |||
564f254652 | |||
9fa71244ea | |||
8157cdc7e9 | |||
721bdd737a | |||
1b57999059 | |||
b7460cef41 | |||
46f7f6dd04 | |||
cf2b8b3c8a | |||
ac0e1d3161 | |||
f9bd31deee | |||
cf3566742b | |||
b4a87dd07f | |||
e83cfa24c2 | |||
86ebd14ae7 | |||
b042d9098d | |||
325f2c4860 | |||
74a516aa9e | |||
28e26461cc | |||
cfaaf6b1fe | |||
bffe79ecbd | |||
94d9852339 | |||
905e397d3f | |||
e70a636073 | |||
03abb5e5de | |||
ac20c01233 | |||
b8ded0a16e | |||
b68f79f427 | |||
221d10d3e6 | |||
22d32eed1d | |||
5d656f0963 | |||
201d622b85 | |||
3571004f5c | |||
16249c3790 | |||
5377f0d0b3 | |||
15778b00a0 | |||
169eec0a51 | |||
f789775b1c | |||
fc59a4dce4 | |||
29128a891d | |||
dd3d4c8c3a | |||
4047c888be | |||
1499286bee | |||
6226763c37 | |||
7623a0648f | |||
b7085f7f62 | |||
55c851873c | |||
2b143dfc0f | |||
9405272f3b | |||
a9be9f1827 | |||
abb1a5c75b | |||
5e2fe7dc42 | |||
e4d6e90c35 | |||
84d9a525a9 | |||
0aca0ce6a6 | |||
c0742d521c | |||
92737b43af | |||
8b0f6885ee | |||
9af2d15cef | |||
e60d8d08a4 | |||
3e9b567fce | |||
6f51de85db | |||
f202ae19cb | |||
668bd75025 | |||
e6e07cf959 | |||
2f8431905f | |||
23aba14dfe | |||
b0fa955914 | |||
98207a3e0d | |||
26b81345f2 | |||
ac2034b243 | |||
351848ad56 | |||
cbac495f93 | |||
15ef5b7623 | |||
46c7ac944f | |||
aa4bfab462 | |||
f5cbb37e5a | |||
8d9079984a | |||
41783d8939 | |||
441ad58fe7 | |||
06a6a3f773 | |||
52fab78625 | |||
5eb6c15959 | |||
ce8c31cfa4 | |||
d80c0eef8e | |||
55829dcf05 | |||
d78956327c | |||
4a0728a55b | |||
2e1d57aa8c | |||
1c2b0678be | |||
6f810add43 | |||
12727adb16 | |||
9da750c3bb | |||
176226ddef | |||
acea18fa70 | |||
d1656f8561 | |||
87751e882c | |||
dff393a714 | |||
fd9c9aee03 | |||
59bf981fb0 | |||
4bbdac759f | |||
13fe7509de | |||
6fd8f6cd43 | |||
6375ecda34 | |||
d232dacc65 | |||
59946e89ef | |||
d75c4b4049 | |||
30ca4b707d | |||
27704c9a48 | |||
b0203f2272 | |||
77b720d00d | |||
ba982671b2 | |||
5df7d92d64 | |||
a8228406de | |||
2401473012 | |||
e502fb88fa | |||
37a52cb011 | |||
04fb4e8a82 | |||
5646a252f7 | |||
0e6ce7f58b | |||
8cd6a4c6a3 | |||
02fc162197 | |||
84d21a3695 | |||
1a6369c2b9 | |||
463c44679d | |||
c1f3ea4e61 | |||
142b767470 | |||
184b716b53 | |||
e53399495b | |||
d27f73579b | |||
1ae8199e89 | |||
2deb4e8474 | |||
7f10681424 | |||
c756adad6f | |||
f3d593bc1e | |||
b637307de6 | |||
b6e0208e71 | |||
631876cab3 | |||
a192d46c2b | |||
6923f17645 | |||
87a45de05b | |||
ab76451360 | |||
a91179091f | |||
5f7e34ce6c | |||
db33f0538a | |||
257a8e2e2d | |||
baa8078d23 | |||
ee60013f45 | |||
505796d9f0 | |||
56120ba1bb | |||
225b235059 | |||
de614ff606 | |||
7879752f47 | |||
08b2940eb6 | |||
67749dd2bb | |||
56c203d9ca | |||
54ce86eff3 | |||
9713ca74c7 | |||
81ed9169f1 | |||
e60462c221 | |||
09c4e610af | |||
4a576321e3 | |||
24c5dc03de | |||
d8291ddc17 | |||
1b75d828d8 | |||
966e583978 | |||
e52f60fdf0 | |||
b4c44c6d49 | |||
0f6215da9d | |||
7d0b323dab | |||
14114781fc | |||
97694fa29c | |||
9f6bfa2351 | |||
b842cbc83d | |||
0da5409092 | |||
888afd88b8 | |||
35692ae4b9 | |||
18b2a270c9 | |||
6f2d8e6ce3 | |||
91d1681698 | |||
efd97de743 | |||
c4cd725c9a | |||
23e5efbb19 | |||
4e995c10da | |||
b5cf157c40 | |||
ac082e9f58 | |||
9f7799b44f | |||
cdf9c50b8a | |||
7c4e9cef87 | |||
ffb3b302c7 | |||
278f48f65c | |||
4801dc4f32 | |||
9e8f845fbe | |||
b4d1cdaae8 | |||
f9d3af2724 | |||
ac6ed5dd01 | |||
6e0c1cc674 | |||
33c37ebf19 | |||
c33c29b6f3 | |||
37debefadc | |||
891fe0a36b | |||
4b6de59b03 | |||
6a5b902365 | |||
270f07ebd5 | |||
52500f6097 | |||
2fa8a8d61d | |||
69a6cd20af | |||
28eb268af1 | |||
045bb443cb | |||
c6ca912f2b | |||
78c7484d54 | |||
4d560086dd | |||
ef965ebdfd | |||
0b4a843617 | |||
7e7141a5a0 | |||
b3fd6c9b85 | |||
deb0511b43 | |||
e32f465f7a | |||
abc458cef4 | |||
2198a4780b | |||
b76d4b76cb | |||
9ebb013f22 | |||
5a4cba0226 | |||
f03bfdebb4 | |||
7c1550ced7 | |||
a09da30768 | |||
66bb938fc4 | |||
0d478d5dfc | |||
2a9b431c50 | |||
756e7e5372 | |||
573a63d359 | |||
3f2ad2be0c | |||
fd3be63805 | |||
ad8ed419de | |||
8b4f07c2e0 | |||
e667b22b3c | |||
9198effafe | |||
7d51d9c1eb | |||
de6eceb98b | |||
72f7ec1481 | |||
13ff0c368d | |||
9124f4f566 | |||
5e21f98309 | |||
26069dac79 | |||
b7d2402434 | |||
d9baa94970 | |||
afeb89a51a | |||
07992f0b2a | |||
a5c4508578 | |||
a4fab3ce8a | |||
97d80f57cc | |||
41138a1731 | |||
a54a2f8f84 | |||
5bbe710552 | |||
f2d34d7c33 | |||
8fa1770885 | |||
7221dc1ac6 | |||
25bb9939d6 | |||
e7e12504f2 | |||
68eb5e6286 | |||
63bf856d89 | |||
e3dcd51f8d | |||
cb63f4eca1 | |||
3f60c3c0f1 | |||
16bb22e834 | |||
d2b9a7754f | |||
70125afa9d | |||
551364ad8c | |||
7f7518bb9d | |||
b1467548da | |||
baa7c0bc58 | |||
73b81e38e7 | |||
8b088b7a2c | |||
894da25461 | |||
8c8a14af7b | |||
3735a85c69 | |||
79c4dc9272 | |||
d7c266d70f | |||
87d63806b9 | |||
f0e7f8cfc0 | |||
db597e1e93 | |||
98db273f5d | |||
8a6f944655 | |||
bacad24811 | |||
8cc58946cf | |||
3338bc1000 | |||
80c20b3d05 | |||
0d9558b891 | |||
c29c3c386f | |||
e1d0c22071 | |||
7dee6344b0 | |||
731ab89561 | |||
9ceb3c5b1e | |||
6bd0246db6 | |||
bee3a9eedf | |||
e515d19acd | |||
dd13efe065 | |||
99aa5c7b7b | |||
b5dfbe268c | |||
a9b9107cc3 | |||
cfda4e4214 | |||
0a657de4b2 | |||
8153edb9cb | |||
dadb6120c2 | |||
d9a94db59d |
@ -1,36 +1,190 @@
|
|||||||
version: 2
|
version: 2.1
|
||||||
jobs:
|
executors:
|
||||||
build:
|
pw-focal-development:
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:13-browsers
|
- image: mcr.microsoft.com/playwright:v1.17.2-focal
|
||||||
environment:
|
environment:
|
||||||
CHROME_BIN: "/usr/bin/google-chrome"
|
NODE_ENV: development # Needed to ensure 'dist' folder created and devDependencies installed
|
||||||
|
parameters:
|
||||||
|
BUST_CACHE:
|
||||||
|
description: "Set this with the CircleCI UI Trigger Workflow button (boolean = true) to bust the cache!"
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
commands:
|
||||||
|
build_and_install:
|
||||||
|
description: "All steps used to build and install. Will not work on node10"
|
||||||
|
parameters:
|
||||||
|
node-version:
|
||||||
|
type: string
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run:
|
- restore_cache_cmd:
|
||||||
name: Update npm
|
node-version: << parameters.node-version >>
|
||||||
command: 'sudo npm install -g npm@latest'
|
- node/install:
|
||||||
- restore_cache:
|
install-npm: true
|
||||||
key: dependency-cache-13-{{ checksum "package.json" }}
|
node-version: << parameters.node-version >>
|
||||||
- run:
|
- run: npm install
|
||||||
name: Installing dependencies (npm install)
|
restore_cache_cmd:
|
||||||
command: npm install
|
description: "Custom command for restoring cache with the ability to bust cache. When BUST_CACHE is set to true, jobs will not restore cache"
|
||||||
- save_cache:
|
parameters:
|
||||||
key: dependency-cache-13-{{ checksum "package.json" }}
|
node-version:
|
||||||
paths:
|
type: string
|
||||||
- node_modules
|
steps:
|
||||||
- run:
|
- when:
|
||||||
name: npm run test:coverage
|
condition:
|
||||||
command: npm run test:coverage
|
equal: [false, << pipeline.parameters.BUST_CACHE >> ]
|
||||||
- run:
|
steps:
|
||||||
name: npm run lint
|
- restore_cache:
|
||||||
command: npm run lint
|
key: deps-{{ .Branch }}--<< parameters.node-version >>--{{ checksum "package.json" }}-{{ checksum ".circleci/config.yml" }}
|
||||||
- store_artifacts:
|
save_cache_cmd:
|
||||||
path: dist
|
description: "Custom command for saving cache."
|
||||||
prefix: dist
|
parameters:
|
||||||
|
node-version:
|
||||||
|
type: string
|
||||||
|
steps:
|
||||||
|
- save_cache:
|
||||||
|
key: deps-{{ .Branch }}--<< parameters.node-version >>--{{ checksum "package.json" }}-{{ checksum ".circleci/config.yml" }}
|
||||||
|
paths:
|
||||||
|
- ~/.npm
|
||||||
|
- node_modules
|
||||||
|
generate_and_store_version_and_filesystem_artifacts:
|
||||||
|
description: "Track important packages and files"
|
||||||
|
steps:
|
||||||
|
- run: |
|
||||||
|
mkdir /tmp/artifacts
|
||||||
|
printenv NODE_ENV >> /tmp/artifacts/NODE_ENV.txt
|
||||||
|
npm -v >> /tmp/artifacts/npm-version.txt
|
||||||
|
node -v >> /tmp/artifacts/node-version.txt
|
||||||
|
ls -latR >> /tmp/artifacts/dir.txt
|
||||||
|
- store_artifacts:
|
||||||
|
path: /tmp/artifacts/
|
||||||
|
upload_code_covio:
|
||||||
|
description: "Command to upload code coverage reports to codecov.io"
|
||||||
|
steps:
|
||||||
|
- run: curl -Os https://uploader.codecov.io/latest/linux/codecov;chmod +x codecov;./codecov
|
||||||
|
orbs:
|
||||||
|
node: circleci/node@4.9.0
|
||||||
|
browser-tools: circleci/browser-tools@1.2.3
|
||||||
|
jobs:
|
||||||
|
npm-audit:
|
||||||
|
parameters:
|
||||||
|
node-version:
|
||||||
|
type: string
|
||||||
|
executor: pw-focal-development
|
||||||
|
steps:
|
||||||
|
- build_and_install:
|
||||||
|
node-version: <<parameters.node-version>>
|
||||||
|
- run: npm audit --audit-level=low
|
||||||
|
- generate_and_store_version_and_filesystem_artifacts
|
||||||
|
node14-lint:
|
||||||
|
parameters:
|
||||||
|
node-version:
|
||||||
|
type: string
|
||||||
|
executor: pw-focal-development
|
||||||
|
steps:
|
||||||
|
- build_and_install:
|
||||||
|
node-version: <<parameters.node-version>>
|
||||||
|
- run: npm run lint
|
||||||
|
- generate_and_store_version_and_filesystem_artifacts
|
||||||
|
unit-test:
|
||||||
|
parameters:
|
||||||
|
node-version:
|
||||||
|
type: string
|
||||||
|
browser:
|
||||||
|
type: string
|
||||||
|
executor: pw-focal-development
|
||||||
|
steps:
|
||||||
|
- build_and_install:
|
||||||
|
node-version: <<parameters.node-version>>
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [ "FirefoxESR", <<parameters.browser>> ]
|
||||||
|
steps:
|
||||||
|
- browser-tools/install-firefox:
|
||||||
|
version: "91.4.0esr" #https://archive.mozilla.org/pub/firefox/releases/
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [ "FirefoxHeadless", <<parameters.browser>> ]
|
||||||
|
steps:
|
||||||
|
- browser-tools/install-firefox
|
||||||
|
- when:
|
||||||
|
condition:
|
||||||
|
equal: [ "ChromeHeadless", <<parameters.browser>> ]
|
||||||
|
steps:
|
||||||
|
- browser-tools/install-chrome:
|
||||||
|
replace-existing: false
|
||||||
|
- run: npm run test:coverage -- --browsers=<<parameters.browser>>
|
||||||
|
- save_cache_cmd:
|
||||||
|
node-version: <<parameters.node-version>>
|
||||||
|
- store_test_results:
|
||||||
|
path: dist/reports/tests/
|
||||||
|
- store_artifacts:
|
||||||
|
path: dist/reports/
|
||||||
|
- generate_and_store_version_and_filesystem_artifacts
|
||||||
|
e2e-test:
|
||||||
|
parameters:
|
||||||
|
node-version:
|
||||||
|
type: string
|
||||||
|
suite:
|
||||||
|
type: string
|
||||||
|
executor: pw-focal-development
|
||||||
|
steps:
|
||||||
|
- build_and_install:
|
||||||
|
node-version: <<parameters.node-version>>
|
||||||
|
- run: npx playwright install
|
||||||
|
- run: npm run test:e2e:<<parameters.suite>>
|
||||||
|
- store_test_results:
|
||||||
|
path: test-results/results.xml
|
||||||
|
- store_artifacts:
|
||||||
|
path: test-results
|
||||||
|
- generate_and_store_version_and_filesystem_artifacts
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
overall-circleci-commit-status: #These jobs run on every commit
|
||||||
test:
|
|
||||||
jobs:
|
jobs:
|
||||||
- build
|
- node14-lint:
|
||||||
|
node-version: lts/fermium
|
||||||
|
- unit-test:
|
||||||
|
name: node12-chrome
|
||||||
|
node-version: lts/erbium
|
||||||
|
browser: ChromeHeadless
|
||||||
|
- unit-test:
|
||||||
|
name: node14-chrome
|
||||||
|
node-version: lts/fermium
|
||||||
|
browser: ChromeHeadless
|
||||||
|
post-steps:
|
||||||
|
- upload_code_covio
|
||||||
|
- e2e-test:
|
||||||
|
name: e2e-ci
|
||||||
|
node-version: lts/fermium
|
||||||
|
suite: ci
|
||||||
|
the-nightly: #These jobs do not run on PRs, but against master at night
|
||||||
|
jobs:
|
||||||
|
- unit-test:
|
||||||
|
name: node12-firefoxESR-nightly
|
||||||
|
node-version: lts/erbium
|
||||||
|
browser: FirefoxESR
|
||||||
|
- unit-test:
|
||||||
|
name: node12-chrome-nightly
|
||||||
|
node-version: lts/erbium
|
||||||
|
browser: ChromeHeadless
|
||||||
|
- unit-test:
|
||||||
|
name: node14-firefox-nightly
|
||||||
|
node-version: lts/fermium
|
||||||
|
browser: FirefoxHeadless
|
||||||
|
- unit-test:
|
||||||
|
name: node14-chrome-nightly
|
||||||
|
node-version: lts/fermium
|
||||||
|
browser: ChromeHeadless
|
||||||
|
- npm-audit:
|
||||||
|
node-version: lts/fermium
|
||||||
|
- e2e-test:
|
||||||
|
name: e2e-full-nightly
|
||||||
|
node-version: lts/fermium
|
||||||
|
suite: full
|
||||||
|
triggers:
|
||||||
|
- schedule:
|
||||||
|
cron: "0 0 * * *"
|
||||||
|
filters:
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
115
.eslintrc.js
115
.eslintrc.js
@ -54,7 +54,7 @@ module.exports = {
|
|||||||
{
|
{
|
||||||
"anonymous": "always",
|
"anonymous": "always",
|
||||||
"asyncArrow": "always",
|
"asyncArrow": "always",
|
||||||
"named": "never",
|
"named": "never"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"array-bracket-spacing": "error",
|
"array-bracket-spacing": "error",
|
||||||
@ -120,6 +120,100 @@ module.exports = {
|
|||||||
"no-useless-computed-key": "error",
|
"no-useless-computed-key": "error",
|
||||||
// https://eslint.org/docs/rules/rest-spread-spacing
|
// https://eslint.org/docs/rules/rest-spread-spacing
|
||||||
"rest-spread-spacing": ["error"],
|
"rest-spread-spacing": ["error"],
|
||||||
|
// https://eslint.org/docs/rules/no-var
|
||||||
|
"no-var": "error",
|
||||||
|
// https://eslint.org/docs/rules/one-var
|
||||||
|
"one-var": ["error", "never"],
|
||||||
|
// https://eslint.org/docs/rules/default-case-last
|
||||||
|
"default-case-last": "error",
|
||||||
|
// https://eslint.org/docs/rules/default-param-last
|
||||||
|
"default-param-last": "error",
|
||||||
|
// https://eslint.org/docs/rules/grouped-accessor-pairs
|
||||||
|
"grouped-accessor-pairs": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-constructor-return
|
||||||
|
"no-constructor-return": "error",
|
||||||
|
// https://eslint.org/docs/rules/array-callback-return
|
||||||
|
"array-callback-return": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-invalid-this
|
||||||
|
"no-invalid-this": "error", // Believe this one actually surfaces some bugs
|
||||||
|
// https://eslint.org/docs/rules/func-style
|
||||||
|
"func-style": ["error", "declaration"],
|
||||||
|
// https://eslint.org/docs/rules/no-unused-expressions
|
||||||
|
"no-unused-expressions": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-useless-concat
|
||||||
|
"no-useless-concat": "error",
|
||||||
|
// https://eslint.org/docs/rules/radix
|
||||||
|
"radix": "error",
|
||||||
|
// https://eslint.org/docs/rules/require-await
|
||||||
|
"require-await": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-alert
|
||||||
|
"no-alert": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-useless-constructor
|
||||||
|
"no-useless-constructor": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-duplicate-imports
|
||||||
|
"no-duplicate-imports": "error",
|
||||||
|
|
||||||
|
// https://eslint.org/docs/rules/no-implicit-coercion
|
||||||
|
"no-implicit-coercion": "error",
|
||||||
|
//https://eslint.org/docs/rules/no-unneeded-ternary
|
||||||
|
"no-unneeded-ternary": "error",
|
||||||
|
// https://eslint.org/docs/rules/semi
|
||||||
|
"semi": ["error", "always"],
|
||||||
|
// https://eslint.org/docs/rules/no-multi-spaces
|
||||||
|
"no-multi-spaces": "error",
|
||||||
|
// https://eslint.org/docs/rules/key-spacing
|
||||||
|
"key-spacing": ["error", {
|
||||||
|
"afterColon": true
|
||||||
|
}],
|
||||||
|
// https://eslint.org/docs/rules/keyword-spacing
|
||||||
|
"keyword-spacing": ["error", {
|
||||||
|
"before": true,
|
||||||
|
"after": true
|
||||||
|
}],
|
||||||
|
// https://eslint.org/docs/rules/comma-spacing
|
||||||
|
// Also requires one line code fix
|
||||||
|
"comma-spacing": ["error", {
|
||||||
|
"after": true
|
||||||
|
}],
|
||||||
|
//https://eslint.org/docs/rules/no-whitespace-before-property
|
||||||
|
"no-whitespace-before-property": "error",
|
||||||
|
// https://eslint.org/docs/rules/object-curly-newline
|
||||||
|
"object-curly-newline": ["error", {
|
||||||
|
"consistent": true,
|
||||||
|
"multiline": true
|
||||||
|
}],
|
||||||
|
// https://eslint.org/docs/rules/object-property-newline
|
||||||
|
"object-property-newline": "error",
|
||||||
|
// https://eslint.org/docs/rules/brace-style
|
||||||
|
"brace-style": "error",
|
||||||
|
// https://eslint.org/docs/rules/no-multiple-empty-lines
|
||||||
|
"no-multiple-empty-lines": ["error", {"max": 1}],
|
||||||
|
// https://eslint.org/docs/rules/operator-linebreak
|
||||||
|
"operator-linebreak": ["error", "before", {"overrides": {"=": "after"}}],
|
||||||
|
// https://eslint.org/docs/rules/padding-line-between-statements
|
||||||
|
"padding-line-between-statements": ["error", {
|
||||||
|
"blankLine": "always",
|
||||||
|
"prev": "multiline-block-like",
|
||||||
|
"next": "*"
|
||||||
|
}, {
|
||||||
|
"blankLine": "always",
|
||||||
|
"prev": "*",
|
||||||
|
"next": "return"
|
||||||
|
}],
|
||||||
|
// https://eslint.org/docs/rules/space-infix-ops
|
||||||
|
"space-infix-ops": "error",
|
||||||
|
// https://eslint.org/docs/rules/space-unary-ops
|
||||||
|
"space-unary-ops": ["error", {
|
||||||
|
"words": true,
|
||||||
|
"nonwords": false
|
||||||
|
}],
|
||||||
|
// https://eslint.org/docs/rules/arrow-spacing
|
||||||
|
"arrow-spacing": "error",
|
||||||
|
// https://eslint.org/docs/rules/semi-spacing
|
||||||
|
"semi-spacing": ["error", {
|
||||||
|
"before": false,
|
||||||
|
"after": true
|
||||||
|
}],
|
||||||
|
|
||||||
"vue/html-indent": [
|
"vue/html-indent": [
|
||||||
"error",
|
"error",
|
||||||
@ -151,28 +245,25 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
"vue/multiline-html-element-content-newline": "off",
|
"vue/multiline-html-element-content-newline": "off",
|
||||||
"vue/singleline-html-element-content-newline": "off"
|
"vue/singleline-html-element-content-newline": "off",
|
||||||
|
"vue/no-mutating-props": "off"
|
||||||
|
|
||||||
},
|
},
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
"files": ["*Spec.js"],
|
"files": LEGACY_FILES,
|
||||||
"rules": {
|
"rules": {
|
||||||
"no-unused-vars": [
|
"no-unused-vars": [
|
||||||
"warn",
|
"warn",
|
||||||
{
|
{
|
||||||
"vars": "all",
|
"vars": "all",
|
||||||
"args": "none",
|
"args": "none",
|
||||||
"varsIgnorePattern": "controller",
|
"varsIgnorePattern": "controller"
|
||||||
|
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
}
|
|
||||||
}, {
|
|
||||||
"files": LEGACY_FILES,
|
|
||||||
"rules": {
|
|
||||||
// https://eslint.org/docs/rules/no-nested-ternary
|
|
||||||
"no-nested-ternary": "off",
|
"no-nested-ternary": "off",
|
||||||
"no-var": "off"
|
"no-var": "off",
|
||||||
|
"one-var": "off"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
44
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
44
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: File a Bug !
|
||||||
|
title: ''
|
||||||
|
labels: type:bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--- Focus on user impact in the title. Use the Summary Field to -->
|
||||||
|
<!--- describe the problem technically. -->
|
||||||
|
|
||||||
|
#### Summary
|
||||||
|
<!--- A description of the issue encountered. When possible, a description -->
|
||||||
|
<!--- of the impact of the issue. What use case does it impede?-->
|
||||||
|
|
||||||
|
#### Expected vs Current Behavior
|
||||||
|
<!--- Tell us what should have happened -->
|
||||||
|
|
||||||
|
#### Impact Check List
|
||||||
|
<!--- Please select from the following options -->
|
||||||
|
|
||||||
|
- [ ] Data loss or misrepresented data?
|
||||||
|
- [ ] Regression? Did this used to work or has it always been broken?
|
||||||
|
- [ ] Is there a workaround available?
|
||||||
|
- [ ] Does this impact a critical component?
|
||||||
|
- [ ] Is this just a visual bug with no functional impact?
|
||||||
|
|
||||||
|
#### Steps to Reproduce
|
||||||
|
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
|
||||||
|
<!--- reproduce this bug. Include code to reproduce, if relevant -->
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
4.
|
||||||
|
|
||||||
|
#### Environment
|
||||||
|
* Open MCT Version: <!--- date of build, version, or SHA -->
|
||||||
|
* Deployment Type: <!--- npm dev? VIPER Dev? openmct-yamcs? -->
|
||||||
|
* OS:
|
||||||
|
* Browser:
|
||||||
|
|
||||||
|
#### Additional Information
|
||||||
|
<!--- Include any screenshots, gifs, or logs which will expedite triage -->
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
blank_issues_enabled: true
|
||||||
|
contact_links:
|
||||||
|
- name: Discussions
|
||||||
|
url: https://github.com/nasa/openmct/discussions
|
||||||
|
about: Have a question about the project?
|
20
.github/ISSUE_TEMPLATE/enhancement-request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/enhancement-request.md
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Enhancement request
|
||||||
|
about: Suggest an enhancement or new improvement for this project
|
||||||
|
title: ''
|
||||||
|
labels: type:enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
11
.github/ISSUE_TEMPLATE/maintenance-type.md
vendored
Normal file
11
.github/ISSUE_TEMPLATE/maintenance-type.md
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
name: Maintenance
|
||||||
|
about: Add, update or remove documentation, tests, or dependencies.
|
||||||
|
title: ''
|
||||||
|
labels: type:maintenance
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Summary
|
||||||
|
<!--- Generally describe the purpose of the change. -->
|
13
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
13
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
### All Submissions:
|
||||||
|
|
||||||
|
* [ ] Have you followed the guidelines in our [Contributing document](https://github.com/nasa/openmct/blob/master/CONTRIBUTING.md)?
|
||||||
|
* [ ] Have you checked to ensure there aren't other open [Pull Requests](https://github.com/nasa/openmct/pulls) for the same update/change?
|
||||||
|
* [ ] Is this change backwards compatible? For example, developers won't need to change how they are calling the API or how they've extended core plugins such as Tables or Plots.
|
||||||
|
|
||||||
|
### Author Checklist
|
||||||
|
|
||||||
|
* [ ] Changes address original issue?
|
||||||
|
* [ ] Unit tests included and/or updated with changes?
|
||||||
|
* [ ] Command line build passes?
|
||||||
|
* [ ] Has this been smoke tested?
|
||||||
|
* [ ] Testing instructions included in associated issue?
|
27
.github/dependabot.yml
vendored
Normal file
27
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
open-pull-requests-limit: 4
|
||||||
|
labels:
|
||||||
|
- "type:maintenance"
|
||||||
|
- "dependencies"
|
||||||
|
- "pr:e2e"
|
||||||
|
allow:
|
||||||
|
- dependency-name: "*eslint*"
|
||||||
|
- dependency-name: "*karma*"
|
||||||
|
- dependency-name: "*jasmine*"
|
||||||
|
- dependency-name: "*playwright*"
|
||||||
|
- dependency-name: "*percy*"
|
||||||
|
- dependency-name: "*vue-loader*"
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
labels:
|
||||||
|
- "type:maintenance"
|
||||||
|
- "dependencies"
|
43
.github/workflows/codeql-analysis.yml
vendored
Normal file
43
.github/workflows/codeql-analysis.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
paths-ignore:
|
||||||
|
- '**/*Spec.js'
|
||||||
|
- '**/*.md'
|
||||||
|
- '**/*.txt'
|
||||||
|
- '**/*.yml'
|
||||||
|
- '**/*.yaml'
|
||||||
|
- '**/*.spec.js'
|
||||||
|
- '**/*.config.js'
|
||||||
|
schedule:
|
||||||
|
- cron: '28 21 * * 3'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v1
|
||||||
|
with:
|
||||||
|
languages: javascript
|
||||||
|
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v1
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v1
|
53
.github/workflows/e2e-pr.yml
vendored
Normal file
53
.github/workflows/e2e-pr.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
name: "e2e-pr"
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
types: [ labeled ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e-full:
|
||||||
|
if: ${{ github.event.label.name == 'pr:e2e' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Trigger Success
|
||||||
|
uses: actions/github-script@v5
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
github.rest.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: 'Started e2e Run. Follow along: https://github.com/nasa/openmct/actions/runs/' + context.runId
|
||||||
|
})
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- run: npm install
|
||||||
|
- run: npm run test:e2e:full
|
||||||
|
- name: Archive test results
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
path: test-results
|
||||||
|
- name: Test success
|
||||||
|
if: ${{ success() }}
|
||||||
|
uses: actions/github-script@v5
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
github.rest.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: 'Success ✅ ! Build artifacts are here: https://github.com/nasa/openmct/actions/runs/' + context.runId
|
||||||
|
})
|
||||||
|
- name: Test failure
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: actions/github-script@v5
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
github.rest.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: 'Failure ❌ ! Build artifacts are here: https://github.com/nasa/openmct/actions/runs/' + context.runId
|
||||||
|
})
|
23
.github/workflows/e2e-visual.yml
vendored
Normal file
23
.github/workflows/e2e-visual.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
name: "e2e-visual"
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- labeled
|
||||||
|
schedule:
|
||||||
|
- cron: '28 21 * * 1-5'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e-visual:
|
||||||
|
if: ${{ github.event.label.name == 'pr:visual' }} || ${{ github.event.workflow_dispatch }} || ${{ github.event.schedule }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- run: npm install
|
||||||
|
- name: Run the e2e visual tests
|
||||||
|
run: npm run test:e2e:visual
|
||||||
|
env:
|
||||||
|
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
|
21
.github/workflows/e2e.yml
vendored
Normal file
21
.github/workflows/e2e.yml
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
name: "e2e"
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Which branch do you want to test?' # Limited to branch for now
|
||||||
|
required: false
|
||||||
|
default: 'master'
|
||||||
|
jobs:
|
||||||
|
e2e:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.inputs.version }}
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- run: npm install
|
||||||
|
- name: Run the e2e tests
|
||||||
|
run: npm run test:e2e:ci
|
20
.github/workflows/lighthouse.yml
vendored
Normal file
20
.github/workflows/lighthouse.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
name: lighthouse
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Which branch do you want to test?' # Limited to branch for now
|
||||||
|
required: false
|
||||||
|
default: 'master'
|
||||||
|
jobs:
|
||||||
|
lighthouse:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.inputs.version }}
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14'
|
||||||
|
- run: npm install && npm install -g @lhci/cli #Don't want to include this in our deps
|
||||||
|
- run: lhci autorun
|
33
.github/workflows/npm-prerelease.yml
vendored
Normal file
33
.github/workflows/npm-prerelease.yml
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# This workflow will run tests using node and then publish a package to npmjs when a prerelease is created
|
||||||
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
|
||||||
|
|
||||||
|
name: npm_prerelease
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [prereleased]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 14
|
||||||
|
- run: npm install
|
||||||
|
- run: npm test
|
||||||
|
|
||||||
|
publish-npm-prerelease:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 14
|
||||||
|
registry-url: https://registry.npmjs.org/
|
||||||
|
- run: npm install
|
||||||
|
- run: npm publish --access public --tag unstable
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
13
.gitignore
vendored
13
.gitignore
vendored
@ -37,4 +37,17 @@ protractor/logs
|
|||||||
# npm-debug log
|
# npm-debug log
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|
||||||
|
# karma reports
|
||||||
|
report.*.json
|
||||||
|
|
||||||
|
# Lighthouse reports
|
||||||
|
.lighthouseci
|
||||||
|
|
||||||
|
# e2e test artifacts
|
||||||
|
test-results
|
||||||
|
allure-results
|
||||||
|
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
|
#codecov artifacts
|
||||||
|
codecov
|
||||||
|
@ -33,3 +33,12 @@ protractor/logs
|
|||||||
|
|
||||||
# npm-debug log
|
# npm-debug log
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|
||||||
|
# Infra and tests
|
||||||
|
.circleci
|
||||||
|
.github
|
||||||
|
e2e
|
||||||
|
codecov.yml
|
||||||
|
lighthouserc.yml
|
||||||
|
*.Spec.js
|
||||||
|
karma.conf.js
|
||||||
|
6
.npmrc
Normal file
6
.npmrc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
loglevel=warn
|
||||||
|
|
||||||
|
# Temporary: istanbul-instrumenter-loader is working with webpack 5, but states
|
||||||
|
# webpack 4 being the latest version it supports, so this legacy-peer-deps
|
||||||
|
# allows us to install it anyway.
|
||||||
|
legacy-peer-deps=true
|
@ -1,6 +1,6 @@
|
|||||||
# Open MCT License
|
# Open MCT License
|
||||||
|
|
||||||
Open MCT, Copyright (c) 2014-2020, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.
|
Open MCT, Copyright (c) 2014-2021, 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.
|
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.
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
# Open MCT [](http://www.apache.org/licenses/LICENSE-2.0)
|
# Open MCT [](http://www.apache.org/licenses/LICENSE-2.0) [](https://lgtm.com/projects/g/nasa/openmct/context:javascript) [](https://codecov.io/gh/nasa/openmct) [](https://percy.io/b2e34b17/openmct) [](https://www.npmjs.com/package/openmct)
|
||||||
|
|
||||||
Open MCT (Open Mission Control Technologies) is a next-generation mission control framework for visualization of data on desktop and mobile devices. It is developed at NASA's Ames Research Center, and is being used by NASA for data analysis of spacecraft missions, as well as planning and operation of experimental rover systems. As a generalizable and open source framework, Open MCT could be used as the basis for building applications for planning, operation, and analysis of any systems producing telemetry data.
|
Open MCT (Open Mission Control Technologies) is a next-generation mission control framework for visualization of data on desktop and mobile devices. It is developed at NASA's Ames Research Center, and is being used by NASA for data analysis of spacecraft missions, as well as planning and operation of experimental rover systems. As a generalizable and open source framework, Open MCT could be used as the basis for building applications for planning, operation, and analysis of any systems producing telemetry data.
|
||||||
|
|
||||||
Please visit our [Official Site](https://nasa.github.io/openmct/) and [Getting Started Guide](https://nasa.github.io/openmct/getting-started/)
|
Please visit our [Official Site](https://nasa.github.io/openmct/) and [Getting Started Guide](https://nasa.github.io/openmct/getting-started/)
|
||||||
|
|
||||||
|
Once you've created something amazing with Open MCT, showcase your work in our GitHub Discussions [Show and Tell](https://github.com/nasa/openmct/discussions/categories/show-and-tell) section. We love seeing unique and wonderful implementations of Open MCT!
|
||||||
|
|
||||||
## See Open MCT in Action
|
## See Open MCT in Action
|
||||||
|
|
||||||
Try Open MCT now with our [live demo](https://openmct-demo.herokuapp.com/).
|
Try Open MCT now with our [live demo](https://openmct-demo.herokuapp.com/).
|
||||||
@ -44,7 +46,7 @@ The clearest examples for developing Open MCT plugins are in the
|
|||||||
our documentation.
|
our documentation.
|
||||||
|
|
||||||
We want Open MCT to be as easy to use, install, run, and develop for as
|
We want Open MCT to be as easy to use, install, run, and develop for as
|
||||||
possible, and your feedback will help us get there! Feedback can be provided via [GitHub issues](https://github.com/nasa/openmct/issues), or by emailing us at [arc-dl-openmct@mail.nasa.gov](mailto:arc-dl-openmct@mail.nasa.gov).
|
possible, and your feedback will help us get there! Feedback can be provided via [GitHub issues](https://github.com/nasa/openmct/issues/new/choose), [Starting a GitHub Discussion](https://github.com/nasa/openmct/discussions), or by emailing us at [arc-dl-openmct@mail.nasa.gov](mailto:arc-dl-openmct@mail.nasa.gov).
|
||||||
|
|
||||||
## Building Applications With Open MCT
|
## Building Applications With Open MCT
|
||||||
|
|
||||||
@ -83,6 +85,8 @@ naming convention is otherwise the same.)
|
|||||||
When `npm test` is run, test results will be written as HTML to
|
When `npm test` is run, test results will be written as HTML to
|
||||||
`dist/reports/tests/`. Code coverage information is written to `dist/reports/coverage`.
|
`dist/reports/tests/`. Code coverage information is written to `dist/reports/coverage`.
|
||||||
|
|
||||||
|
Code Coverage Reports are available from [codecov.io](https://app.codecov.io/gh/nasa/openmct/)
|
||||||
|
|
||||||
# Glossary
|
# Glossary
|
||||||
|
|
||||||
Certain terms are used throughout Open MCT with consistent meanings
|
Certain terms are used throughout Open MCT with consistent meanings
|
||||||
|
20
app.js
20
app.js
@ -7,7 +7,6 @@
|
|||||||
* node app.js [options]
|
* node app.js [options]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
const options = require('minimist')(process.argv.slice(2));
|
const options = require('minimist')(process.argv.slice(2));
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const app = express();
|
const app = express();
|
||||||
@ -40,10 +39,19 @@ app.use('/proxyUrl', function proxyRequest(req, res, next) {
|
|||||||
}).on('error', next)).pipe(res);
|
}).on('error', next)).pipe(res);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
class WatchRunPlugin {
|
||||||
|
apply(compiler) {
|
||||||
|
compiler.hooks.emit.tapAsync('WatchRunPlugin', (compilation, callback) => {
|
||||||
|
console.log('Begin compile at ' + new Date());
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const webpackConfig = require('./webpack.config.js');
|
const webpackConfig = require('./webpack.dev.js');
|
||||||
webpackConfig.plugins.push(new webpack.HotModuleReplacementPlugin());
|
webpackConfig.plugins.push(new webpack.HotModuleReplacementPlugin());
|
||||||
webpackConfig.plugins.push(function() { this.plugin('watch-run', function(watching, callback) { console.log('Begin compile at ' + new Date()); callback(); }) });
|
webpackConfig.plugins.push(new WatchRunPlugin());
|
||||||
|
|
||||||
webpackConfig.entry.openmct = [
|
webpackConfig.entry.openmct = [
|
||||||
'webpack-hot-middleware/client?reload=true',
|
'webpack-hot-middleware/client?reload=true',
|
||||||
@ -62,9 +70,7 @@ app.use(require('webpack-dev-middleware')(
|
|||||||
|
|
||||||
app.use(require('webpack-hot-middleware')(
|
app.use(require('webpack-hot-middleware')(
|
||||||
compiler,
|
compiler,
|
||||||
{
|
{}
|
||||||
|
|
||||||
}
|
|
||||||
));
|
));
|
||||||
|
|
||||||
// Expose index.html for development users.
|
// Expose index.html for development users.
|
||||||
@ -74,5 +80,5 @@ app.get('/', function (req, res) {
|
|||||||
|
|
||||||
// Finally, open the HTTP server and log the instance to the console
|
// Finally, open the HTTP server and log the instance to the console
|
||||||
app.listen(options.port, options.host, function() {
|
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);
|
||||||
});
|
});
|
||||||
|
31
codecov.yml
Normal file
31
codecov.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
codecov:
|
||||||
|
require_ci_to_pass: false #This setting will update the bot regardless of whether or not tests pass
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
status:
|
||||||
|
project:
|
||||||
|
default:
|
||||||
|
informational: true
|
||||||
|
patch:
|
||||||
|
default:
|
||||||
|
informational: true
|
||||||
|
precision: 2
|
||||||
|
round: down
|
||||||
|
range: "66...100"
|
||||||
|
|
||||||
|
ignore:
|
||||||
|
- "**/*Spec.js"
|
||||||
|
- "e2e"
|
||||||
|
|
||||||
|
parsers:
|
||||||
|
gcov:
|
||||||
|
branch_detection:
|
||||||
|
conditional: true
|
||||||
|
loop: true
|
||||||
|
method: false
|
||||||
|
macro: false
|
||||||
|
|
||||||
|
comment:
|
||||||
|
layout: "reach,diff,flags,files,footer"
|
||||||
|
behavior: default
|
||||||
|
require_changes: false
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Open MCT, Copyright (c) 2014-2020, United States Government
|
Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
as represented by the Administrator of the National Aeronautics and Space
|
||||||
Administration. All rights reserved.
|
Administration. All rights reserved.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2020, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
- [Request Strategies **draft**](#request-strategies-draft)
|
- [Request Strategies **draft**](#request-strategies-draft)
|
||||||
- [`latest` request strategy](#latest-request-strategy)
|
- [`latest` request strategy](#latest-request-strategy)
|
||||||
- [`minmax` request strategy](#minmax-request-strategy)
|
- [`minmax` request strategy](#minmax-request-strategy)
|
||||||
- [Telemetry Formats **draft**](#telemetry-formats-draft)
|
- [Telemetry Formats](#telemetry-formats)
|
||||||
- [Registering Formats](#registering-formats)
|
- [Registering Formats](#registering-formats)
|
||||||
- [Telemetry Data](#telemetry-data)
|
- [Telemetry Data](#telemetry-data)
|
||||||
- [Telemetry Datums](#telemetry-datums)
|
- [Telemetry Datums](#telemetry-datums)
|
||||||
@ -52,6 +52,8 @@
|
|||||||
- [The URL Status Indicator](#the-url-status-indicator)
|
- [The URL Status Indicator](#the-url-status-indicator)
|
||||||
- [Creating a Simple Indicator](#creating-a-simple-indicator)
|
- [Creating a Simple Indicator](#creating-a-simple-indicator)
|
||||||
- [Custom Indicators](#custom-indicators)
|
- [Custom Indicators](#custom-indicators)
|
||||||
|
- [Priority API](#priority-api)
|
||||||
|
- [Priority Types](#priority-types)
|
||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
|
|
||||||
@ -247,16 +249,24 @@ To do so, use the `addRoot` method of the object API.
|
|||||||
eg.
|
eg.
|
||||||
```javascript
|
```javascript
|
||||||
openmct.objects.addRoot({
|
openmct.objects.addRoot({
|
||||||
namespace: "example.namespace",
|
namespace: "example.namespace",
|
||||||
key: "my-key"
|
key: "my-key"
|
||||||
});
|
},
|
||||||
|
openmct.priority.HIGH);
|
||||||
```
|
```
|
||||||
|
|
||||||
The `addRoot` function takes a single [object identifier](#domain-objects-and-identifiers)
|
The `addRoot` function takes a two arguments, the first can be an [object identifier](#domain-objects-and-identifiers) for a root level object, or an array of identifiers for root
|
||||||
as an argument.
|
level objects, or a function that returns a promise for an identifier or an array of root level objects, the second is a [priority](#priority-api) or numeric value.
|
||||||
|
|
||||||
Root objects are loaded just like any other objects, i.e. via an object
|
When using the `getAll` method of the object API, they will be returned in order of priority.
|
||||||
provider.
|
|
||||||
|
eg.
|
||||||
|
```javascript
|
||||||
|
openmct.objects.addRoot(identifier, openmct.priority.LOW); // low = -1000, will appear last in composition or tree
|
||||||
|
openmct.objects.addRoot(otherIdentifier, openmct.priority.HIGH); // high = 1000, will appear first in composition or tree
|
||||||
|
```
|
||||||
|
|
||||||
|
Root objects are loaded just like any other objects, i.e. via an object provider.
|
||||||
|
|
||||||
## Object Providers
|
## Object Providers
|
||||||
|
|
||||||
@ -423,13 +433,14 @@ attribute | type | flags | notes
|
|||||||
|
|
||||||
###### Value Hints
|
###### Value Hints
|
||||||
|
|
||||||
Each telemetry value description has an object defining hints. Keys in this this object represent the hint itself, and the value represents the weight of that hint. A lower weight means the hint has a higher priority. For example, multiple values could be hinted for use as the y-axis of a plot (raw, engineering), but the highest priority would be the default choice. Likewise, a table will use hints to determine the default order of columns.
|
Each telemetry value description has an object defining hints. Keys in this object represent the hint itself, and the value represents the weight of that hint. A lower weight means the hint has a higher priority. For example, multiple values could be hinted for use as the y-axis of a plot (raw, engineering), but the highest priority would be the default choice. Likewise, a table will use hints to determine the default order of columns.
|
||||||
|
|
||||||
Known hints:
|
Known hints:
|
||||||
|
|
||||||
* `domain`: Values with a `domain` hint will be used for the x-axis of a plot, and tables will render columns for these values first.
|
* `domain`: Values with a `domain` hint will be used for the x-axis of a plot, and tables will render columns for these values first.
|
||||||
* `range`: Values with a `range` hint will be used as the y-axis on a plot, and tables will render columns for these values after the `domain` values.
|
* `range`: Values with a `range` hint will be used as the y-axis on a plot, and tables will render columns for these values after the `domain` values.
|
||||||
* `image`: Indicates that the value may be interpreted as the URL to an image file, in which case appropriate views will be made available.
|
* `image`: Indicates that the value may be interpreted as the URL to an image file, in which case appropriate views will be made available.
|
||||||
|
* `imageDownloadName`: Indicates that the value may be interpreted as the name of the image file.
|
||||||
|
|
||||||
##### The Time Conductor and Telemetry
|
##### The Time Conductor and Telemetry
|
||||||
|
|
||||||
@ -480,6 +491,8 @@ In this case, the `domain` is the currently selected time-system, and the start
|
|||||||
|
|
||||||
A telemetry provider's `request` method should return a promise for an array of telemetry datums. These datums must be sorted by `domain` in ascending order.
|
A telemetry provider's `request` method should return a promise for an array of telemetry datums. These datums must be sorted by `domain` in ascending order.
|
||||||
|
|
||||||
|
The telemetry provider's `request` method will also return an object `signal` with an `aborted` property with a value `true` if the request has been aborted by user navigation. This can be used to trigger actions when a request has been aborted.
|
||||||
|
|
||||||
#### Request Strategies **draft**
|
#### Request Strategies **draft**
|
||||||
|
|
||||||
To improve performance views may request a certain strategy for data reduction. These are intended to improve visualization performance by reducing the amount of data needed to be sent to the client. These strategies will be indicated by additional parameters in the request options. You may choose to handle them or ignore them.
|
To improve performance views may request a certain strategy for data reduction. These are intended to improve visualization performance by reducing the amount of data needed to be sent to the client. These strategies will be indicated by additional parameters in the request options. You may choose to handle them or ignore them.
|
||||||
@ -522,7 +535,7 @@ example:
|
|||||||
|
|
||||||
MinMax queries are issued by plots, and may be issued by other types as well. The aim is to reduce the amount of data returned but still faithfully represent the full extent of the data. In order to do this, the view calculates the maximum data resolution it can display (i.e. the number of horizontal pixels in a plot) and sends that as the `size`. The response should include at least one minimum and one maximum value per point of resolution.
|
MinMax queries are issued by plots, and may be issued by other types as well. The aim is to reduce the amount of data returned but still faithfully represent the full extent of the data. In order to do this, the view calculates the maximum data resolution it can display (i.e. the number of horizontal pixels in a plot) and sends that as the `size`. The response should include at least one minimum and one maximum value per point of resolution.
|
||||||
|
|
||||||
#### Telemetry Formats **draft**
|
#### Telemetry Formats
|
||||||
|
|
||||||
Telemetry format objects define how to interpret and display telemetry data.
|
Telemetry format objects define how to interpret and display telemetry data.
|
||||||
They have a simple structure:
|
They have a simple structure:
|
||||||
@ -594,9 +607,17 @@ section.
|
|||||||
|
|
||||||
#### Limit Evaluators **draft**
|
#### Limit Evaluators **draft**
|
||||||
|
|
||||||
Limit evaluators allow a telemetry integrator to define how limits should be
|
Limit evaluators allow a telemetry integrator to define which limits exist for a
|
||||||
applied to telemetry from a given domain object. For an example of a limit
|
telemetry endpoint and how limits should be applied to telemetry from a given domain object.
|
||||||
evaluator, take a look at `examples/generator/SinewaveLimitProvider.js`.
|
|
||||||
|
A limit evaluator can implement the `evalute` method which is used to define how limits
|
||||||
|
should be applied to telemetry and the `getLimits` method which is used to specify
|
||||||
|
what the limit values are for different limit levels.
|
||||||
|
|
||||||
|
Limit levels can be mapped to one of 5 colors for visualization:
|
||||||
|
`purple`, `red`, `orange`, `yellow` and `cyan`.
|
||||||
|
|
||||||
|
For an example of a limit evaluator, take a look at `examples/generator/SinewaveLimitProvider.js`.
|
||||||
|
|
||||||
### Telemetry Consumer APIs **draft**
|
### Telemetry Consumer APIs **draft**
|
||||||
|
|
||||||
@ -987,7 +1008,7 @@ reveal additional information when the mouse cursor is hovered over it.
|
|||||||
A common use case for indicators is to convey the state of some external system such as a
|
A common use case for indicators is to convey the state of some external system such as a
|
||||||
persistence backend or HTTP server. So long as this system is accessible via HTTP request,
|
persistence backend or HTTP server. So long as this system is accessible via HTTP request,
|
||||||
Open MCT provides a general purpose indicator to show whether the server is available and
|
Open MCT provides a general purpose indicator to show whether the server is available and
|
||||||
returing a 2xx status code. The URL Status Indicator is made available as a default plugin. See
|
returning a 2xx status code. The URL Status Indicator is made available as a default plugin. See
|
||||||
the [documentation](./src/plugins/URLIndicatorPlugin) for details on how to install and configure the
|
the [documentation](./src/plugins/URLIndicatorPlugin) for details on how to install and configure the
|
||||||
URL Status Indicator.
|
URL Status Indicator.
|
||||||
|
|
||||||
@ -1040,3 +1061,25 @@ A completely custom indicator can be added by simply providing a DOM element to
|
|||||||
element: domNode
|
element: domNode
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Priority API
|
||||||
|
|
||||||
|
Open MCT provides some built-in priority values that can be used in the application for view providers, indicators, root object order, and more.
|
||||||
|
|
||||||
|
### Priority Types
|
||||||
|
|
||||||
|
Currently, the Open MCT Priority API provides (type: numeric value):
|
||||||
|
- HIGH: 1000
|
||||||
|
- Default: 0
|
||||||
|
- LOW: -1000
|
||||||
|
|
||||||
|
View provider Example:
|
||||||
|
|
||||||
|
``` javascript
|
||||||
|
class ViewProvider {
|
||||||
|
...
|
||||||
|
priority() {
|
||||||
|
return openmct.priority.HIGH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
@ -10,7 +10,7 @@ accept changes from external contributors.
|
|||||||
|
|
||||||
The short version:
|
The short version:
|
||||||
|
|
||||||
1. Write your contribution.
|
1. Write your contribution or describe your idea in the form of an [GitHub issue](https://github.com/nasa/openmct/issues/new/choose) or [Starting a GitHub Discussion](https://github.com/nasa/openmct/discussions)
|
||||||
2. Make sure your contribution meets code, test, and commit message
|
2. Make sure your contribution meets code, test, and commit message
|
||||||
standards as described below.
|
standards as described below.
|
||||||
3. Submit a pull request from a topic branch back to `master`. Include a check
|
3. Submit a pull request from a topic branch back to `master`. Include a check
|
||||||
@ -18,6 +18,7 @@ The short version:
|
|||||||
for review.)
|
for review.)
|
||||||
4. Respond to any discussion. When the reviewer decides it's ready, they
|
4. Respond to any discussion. When the reviewer decides it's ready, they
|
||||||
will merge back `master` and fill out their own check list.
|
will merge back `master` and fill out their own check list.
|
||||||
|
5. If you are a first-time contributor, please see [this discussion](https://github.com/nasa/openmct/discussions/3821) for further information.
|
||||||
|
|
||||||
## Contribution Process
|
## Contribution Process
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ the pull request containing the reviewer checklist (from below) and complete
|
|||||||
the merge back to the master branch.
|
the merge back to the master branch.
|
||||||
|
|
||||||
Additionally:
|
Additionally:
|
||||||
* Every pull request must link to the issue that it addresses. Eg. “Addresses #1234” or “Closes #1234”. This is the responsibility of the pull request’s __author__. If no issue exists, create one.
|
* Every pull request must link to the issue that it addresses. Eg. “Addresses #1234” or “Closes #1234”. This is the responsibility of the pull request’s __author__. If no issue exists, [create one](https://github.com/nasa/openmct/issues/new/choose).
|
||||||
* Every __author__ must include testing instructions. These instructions should identify the areas of code affected, and some minimal test steps. If addressing a bug, reproduction steps should be included, if they were not included in the original issue. If reproduction steps were included on the original issue, and are sufficient, refer to them.
|
* Every __author__ must include testing instructions. These instructions should identify the areas of code affected, and some minimal test steps. If addressing a bug, reproduction steps should be included, if they were not included in the original issue. If reproduction steps were included on the original issue, and are sufficient, refer to them.
|
||||||
* A pull request that closes an issue should say so in the description. Including the text “Closes #1234” will cause the linked issue to be automatically closed when the pull request is merged. This is the responsibility of the pull request’s __author__.
|
* A pull request that closes an issue should say so in the description. Including the text “Closes #1234” will cause the linked issue to be automatically closed when the pull request is merged. This is the responsibility of the pull request’s __author__.
|
||||||
* When a pull request is merged, and the corresponding issue closed, the __reviewer__ must add the tag “unverified” to the original issue. This will indicate that although the issue is closed, it has not been tested yet.
|
* When a pull request is merged, and the corresponding issue closed, the __reviewer__ must add the tag “unverified” to the original issue. This will indicate that although the issue is closed, it has not been tested yet.
|
||||||
@ -182,7 +183,7 @@ The following guidelines are provided for anyone contributing source code to the
|
|||||||
1. Avoid the use of "magic" values.
|
1. Avoid the use of "magic" values.
|
||||||
eg.
|
eg.
|
||||||
```JavaScript
|
```JavaScript
|
||||||
Const UNAUTHORIZED = 401
|
const UNAUTHORIZED = 401;
|
||||||
if (responseCode === UNAUTHORIZED)
|
if (responseCode === UNAUTHORIZED)
|
||||||
```
|
```
|
||||||
is preferable to
|
is preferable to
|
||||||
@ -296,23 +297,12 @@ these standards.
|
|||||||
|
|
||||||
Issues are tracked at https://github.com/nasa/openmct/issues.
|
Issues are tracked at https://github.com/nasa/openmct/issues.
|
||||||
|
|
||||||
Issues should include:
|
|
||||||
|
|
||||||
* A short description of the issue encountered.
|
|
||||||
* A longer-form description of the issue encountered. When possible, steps to
|
|
||||||
reproduce the issue.
|
|
||||||
* When possible, a description of the impact of the issue. What use case does
|
|
||||||
it impede?
|
|
||||||
* An assessment of the severity of the issue.
|
|
||||||
|
|
||||||
Issue severity is categorized as follows (in ascending order):
|
Issue severity is categorized as follows (in ascending order):
|
||||||
|
|
||||||
* _Trivial_: Minimal impact on the usefulness and functionality of the
|
* _Trivial_: Minimal impact on the usefulness and functionality of the software; a "nice-to-have." Visual impact without functional impact,
|
||||||
software; a "nice-to-have."
|
* _Medium_: Some impairment of use, but simple workarounds exist
|
||||||
* _(Unspecified)_: Major loss of functionality or impairment of use.
|
* _Critical_: Significant loss of functionality or impairment of use. Display of telemetry data is not affected though.
|
||||||
* _Critical_: Large-scale loss of functionality or impairment of use,
|
* _Blocker_: Major functionality is impaired or lost, threatening mission success. Display of telemetry data is impaired or blocked by the bug, which could lead to loss of situational awareness.
|
||||||
such that remaining utility becomes marginal.
|
|
||||||
* _Blocker_: Harmful or otherwise unacceptable behavior. Must fix.
|
|
||||||
|
|
||||||
## Check Lists
|
## Check Lists
|
||||||
|
|
||||||
@ -322,16 +312,20 @@ checklist).
|
|||||||
|
|
||||||
### Author Checklist
|
### Author Checklist
|
||||||
|
|
||||||
1. Changes address original issue?
|
[Within PR Template](.github/PULL_REQUEST_TEMPLATE.md)
|
||||||
2. Unit tests included and/or updated with changes?
|
|
||||||
3. Command line build passes?
|
|
||||||
4. Changes have been smoke-tested?
|
|
||||||
5. Testing instructions included?
|
|
||||||
|
|
||||||
### Reviewer Checklist
|
### Reviewer Checklist
|
||||||
|
|
||||||
1. Changes appear to address issue?
|
* [ ] Changes appear to address issue?
|
||||||
2. Appropriate unit tests included?
|
* [ ] Changes appear not to be breaking changes?
|
||||||
3. Code style and in-line documentation are appropriate?
|
* [ ] Appropriate unit tests included?
|
||||||
4. Commit messages meet standards?
|
* [ ] Code style and in-line documentation are appropriate?
|
||||||
5. Has associated issue been labelled `unverified`? (only applicable if this PR closes the issue)
|
* [ ] Commit messages meet standards?
|
||||||
|
* [ ] Has associated issue been labelled `unverified`? (only applicable if this PR closes the issue)
|
||||||
|
* [ ] Has associated issue been labelled `bug`? (only applicable if this PR is for a bug fix)
|
||||||
|
* [ ] List of Acceptance Tests Performed.
|
||||||
|
|
||||||
|
Write out a small list of tests performed with just enough detail for another developer on the team
|
||||||
|
to execute.
|
||||||
|
|
||||||
|
i.e. ```When Clicking on Add button, new `object` appears in dropdown.```
|
31
docs/SECURITY.md
Normal file
31
docs/SECURITY.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
The Open MCT team secures our code base using a combination of code review, dependency review, and periodic security reviews. Static analysis performed during automated verification additionally safeguards against common coding errors which may result in vulnerabilities.
|
||||||
|
|
||||||
|
### Reporting a Vulnerability
|
||||||
|
|
||||||
|
For general defects, please for a [Bug Report](https://github.com/nasa/openmct/issues/new/choose)
|
||||||
|
|
||||||
|
To report a vulnerability for Open MCT please send a detailed report to [arc-dl-openmct](mailto:arc-dl-openmct@mail.nasa.gov).
|
||||||
|
|
||||||
|
See our [top-level security policy](https://github.com/nasa/openmct/security/policy) for additional information.
|
||||||
|
|
||||||
|
### CodeQL and LGTM
|
||||||
|
|
||||||
|
The [CodeQL GitHub Actions workflow](https://github.com/nasa/openmct/blob/master/.github/workflows/codeql-analysis.yml) is available to the public. To review the results, fork the repository and run the CodeQL workflow.
|
||||||
|
|
||||||
|
CodeQL is run for every pull-request in GitHub Actions.
|
||||||
|
|
||||||
|
The project is also monitored by [LGTM](https://lgtm.com/projects/g/nasa/openmct/) and is available to public.
|
||||||
|
|
||||||
|
### ESLint
|
||||||
|
|
||||||
|
Static analysis is run for every push on the master branch and every pull request on all branches in Github Actions.
|
||||||
|
|
||||||
|
For more information about ESLint, visit https://eslint.org/.
|
||||||
|
|
||||||
|
### General Support
|
||||||
|
|
||||||
|
For additional support, please open a [Github Discussion](https://github.com/nasa/openmct/discussions).
|
||||||
|
|
||||||
|
If you wish to report a cybersecurity incident or concern, please contact the NASA Security Operations Center either by phone at 1-877-627-2732 or via email address soc@nasa.gov.
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
#*****************************************************************************
|
#*****************************************************************************
|
||||||
#* Open MCT, Copyright (c) 2014-2017, United States Government
|
#* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
#* as represented by the Administrator of the National Aeronautics and Space
|
#* as represented by the Administrator of the National Aeronautics and Space
|
||||||
#* Administration. All rights reserved.
|
#* Administration. All rights reserved.
|
||||||
#*
|
#*
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -423,7 +423,7 @@ which can help with this, however.
|
|||||||
instead of separate approaches for static and substitutable
|
instead of separate approaches for static and substitutable
|
||||||
dependencies.
|
dependencies.
|
||||||
* Removes need to understand Angular's DI mechanism.
|
* Removes need to understand Angular's DI mechanism.
|
||||||
* Improves useability of documentation (`typeService` is an
|
* Improves usability of documentation (`typeService` is an
|
||||||
instance of `CompositeService` and implements `TypeService`
|
instance of `CompositeService` and implements `TypeService`
|
||||||
so you can easily traverse links in the JSDoc.)
|
so you can easily traverse links in the JSDoc.)
|
||||||
* Can be used more easily from Web Workers, allowing services
|
* Can be used more easily from Web Workers, allowing services
|
||||||
@ -1124,7 +1124,7 @@ app.config(['actionRegistryProvider', function (arp) {
|
|||||||
### Detriments
|
### Detriments
|
||||||
|
|
||||||
* Slightly increases dependency on Angular; other dependency injectors
|
* Slightly increases dependency on Angular; other dependency injectors
|
||||||
may not offer comparable ways to specificy dependencies non-globally.
|
may not offer comparable ways to specify dependencies non-globally.
|
||||||
* Not clear (or will take effort to make clear) which dependencies are
|
* Not clear (or will take effort to make clear) which dependencies are
|
||||||
available for which extensions. Could be mitigated by standardizing
|
available for which extensions. Could be mitigated by standardizing
|
||||||
descriptions of context across actions and views, but that may offer
|
descriptions of context across actions and views, but that may offer
|
||||||
@ -1250,7 +1250,7 @@ take. Should not be default behavior.
|
|||||||
|
|
||||||
Proposal | Consensus
|
Proposal | Consensus
|
||||||
------|------
|
------|------
|
||||||
Imperitive component registries | [:+1:](https://github.com/nasa/openmctweb/issues/462)
|
Imperative component registries | [:+1:](https://github.com/nasa/openmctweb/issues/462)
|
||||||
Get rid of "extension category" concept. | [:+1:](https://github.com/nasa/openmctweb/issues/462)
|
Get rid of "extension category" concept. | [:+1:](https://github.com/nasa/openmctweb/issues/462)
|
||||||
Reduce number and depth of extension points | :+1:
|
Reduce number and depth of extension points | :+1:
|
||||||
Composite services should not be the default | [:question:](https://github.com/nasa/openmctweb/issues/463)
|
Composite services should not be the default | [:question:](https://github.com/nasa/openmctweb/issues/463)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
|
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
|
||||||
|
|
||||||
- [Reducing interface depth (the bundle.json version)](#reducing-interface-depth-the-bundlejson-version)
|
- [Reducing interface depth (the bundle.json version)](#reducing-interface-depth-the-bundlejson-version)
|
||||||
- [Imperitive component registries](#imperative-component-registries)
|
- [Imperative component registries](#imperative-component-registries)
|
||||||
- [Get rid of "extension category" concept.](#get-rid-of-extension-category-concept)
|
- [Get rid of "extension category" concept.](#get-rid-of-extension-category-concept)
|
||||||
- [Reduce number and depth of extension points](#reduce-number-and-depth-of-extension-points)
|
- [Reduce number and depth of extension points](#reduce-number-and-depth-of-extension-points)
|
||||||
- [Composite services should not be the default](#composite-services-should-not-be-the-default)
|
- [Composite services should not be the default](#composite-services-should-not-be-the-default)
|
||||||
@ -145,7 +145,7 @@ Then, if we're using imperative methods for extending the application we can use
|
|||||||
<script>
|
<script>
|
||||||
// can configure from object
|
// can configure from object
|
||||||
var myApp = new OpenMCTWeb({
|
var myApp = new OpenMCTWeb({
|
||||||
persitence: {
|
persistence: {
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
type: 'elastic',
|
type: 'elastic',
|
||||||
|
@ -425,14 +425,14 @@ tests, as well as a file named `suite.json` describing which files to test.
|
|||||||
Should have the same folder structure as the `src` directory; see the section on
|
Should have the same folder structure as the `src` directory; see the section on
|
||||||
automated testing for more information.
|
automated testing for more information.
|
||||||
|
|
||||||
For example, the directory structure for bundle `platform/commonUI/about` looks
|
For example, the directory structure for bundle `platform/commonUI/dialog` looks
|
||||||
like:
|
like:
|
||||||
|
|
||||||
Platform
|
Platform
|
||||||
|
|
|
|
||||||
|-commonUI
|
|-commonUI
|
||||||
|
|
|
|
||||||
+-about
|
+-dialog
|
||||||
|
|
|
|
||||||
|-res
|
|-res
|
||||||
|
|
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
## Legacy Documentation
|
## Legacy Documentation
|
||||||
|
|
||||||
As we transition to a new API, the following documentation for the old API
|
As we transition to a new API, the following documentation for the old API
|
||||||
(which is supported during the transtion) may be useful as well:
|
(which is supported during the transition) may be useful as well:
|
||||||
|
|
||||||
* The [Architecture Overview](architecture/) describes the concepts used
|
* The [Architecture Overview](architecture/) describes the concepts used
|
||||||
throughout Open MCT, and gives a high level overview of the platform's design.
|
throughout Open MCT, and gives a high level overview of the platform's design.
|
||||||
|
@ -73,11 +73,11 @@ acceptance testing (e.g. by resolving any blockers found); any
|
|||||||
resources not needed for this effort should be used to begin work
|
resources not needed for this effort should be used to begin work
|
||||||
for the subsequent sprint.
|
for the subsequent sprint.
|
||||||
|
|
||||||
| Week | Mon | Tue | Wed | Thu | Fri |
|
| Week | Mon | Tue | Wed | Thu | Fri |
|
||||||
|:-----:|:-------------------------:|:------:|:---:|:----------------------------:|:-----------:|
|
|:-----:|:-------------------------:|:------:|:---:|:----------------------------:|:-------------------------------------:|
|
||||||
| __1__ | Sprint plan | Tag-up | | | |
|
| __1__ | Sprint plan | Tag-up | | | |
|
||||||
| __2__ | | Tag-up | | | Code freeze |
|
| __2__ | | Tag-up | | | Code freeze and sprint branch |
|
||||||
| __3__ | Per-sprint testing | Triage | | _Per-sprint testing*_ | Ship |
|
| __3__ | Per-sprint testing | Triage | | _Per-sprint testing*_ | Ship and merge sprint branch to master|
|
||||||
|
|
||||||
* If necessary.
|
* If necessary.
|
||||||
|
|
||||||
@ -105,14 +105,20 @@ emphasis on testing.
|
|||||||
that team may begin work for that sprint during the
|
that team may begin work for that sprint during the
|
||||||
third week, since testing and blocker resolution is unlikely
|
third week, since testing and blocker resolution is unlikely
|
||||||
to require all available resources.
|
to require all available resources.
|
||||||
|
* Testing success criteria identified per issue (where necessary). This could be in the form of acceptance tests on the issue or detailing performance tests, for example.
|
||||||
* __Tag-up.__ Check in and status update among development team.
|
* __Tag-up.__ Check in and status update among development team.
|
||||||
May amend plan for sprint as-needed.
|
May amend plan for sprint as-needed.
|
||||||
* __Code freeze.__ Any new work from this sprint
|
* __Code freeze.__ Any new work from this sprint
|
||||||
(features, bug fixes, enhancements) must be integrated by the
|
(features, bug fixes, enhancements) must be integrated by the
|
||||||
end of the second week of the sprint. After code freeze
|
end of the second week of the sprint. After code freeze, a sprint
|
||||||
(and until the end of the sprint) the only changes that should be
|
branch will be created (and until the end of the sprint) the only
|
||||||
merged into the master branch should directly address issues
|
changes that should be merged into the sprint branch should
|
||||||
needed to pass acceptance testing.
|
directly address issues needed to pass acceptance testing.
|
||||||
|
During this time, any other feature development will continue to
|
||||||
|
be merged into the master branch for the next sprint.
|
||||||
|
* __Sprint branch merge to master.__ After acceptance testing, the sprint branch
|
||||||
|
will be merged back to the master branch. Any code conflicts that
|
||||||
|
arise will be resolved by the team.
|
||||||
* [__Per-release Testing.__](testing/plan.md#per-release-testing)
|
* [__Per-release Testing.__](testing/plan.md#per-release-testing)
|
||||||
Structured testing with predefined
|
Structured testing with predefined
|
||||||
success criteria. No release should ship without passing
|
success criteria. No release should ship without passing
|
||||||
@ -126,8 +132,8 @@ emphasis on testing.
|
|||||||
* [__Testathon.__](testing/plan.md#user-testing)
|
* [__Testathon.__](testing/plan.md#user-testing)
|
||||||
Multi-user testing, involving as many users as
|
Multi-user testing, involving as many users as
|
||||||
is feasible, plus development team. Open-ended; should verify
|
is feasible, plus development team. Open-ended; should verify
|
||||||
completed work from this sprint, test exploratorily for
|
completed work from this sprint using the sprint branch, test
|
||||||
regressions, et cetera.
|
exploratorily for regressions, et cetera.
|
||||||
* [__Long-Duration Test.__](testing/plan.md#long-duration-testing) A
|
* [__Long-Duration Test.__](testing/plan.md#long-duration-testing) A
|
||||||
test to verify that the software remains
|
test to verify that the software remains
|
||||||
stable after running for longer durations. May include some
|
stable after running for longer durations. May include some
|
||||||
@ -143,7 +149,7 @@ emphasis on testing.
|
|||||||
Subset of Pre-release Testing
|
Subset of Pre-release Testing
|
||||||
which should be performed before shipping at the end of any
|
which should be performed before shipping at the end of any
|
||||||
sprint. Time is allocated for a second round of
|
sprint. Time is allocated for a second round of
|
||||||
Pre-release Testing if the first round is not passed.
|
Pre-release Testing if the first round is not passed. Smoke tests collected from issues/PRs
|
||||||
* __Triage.__ Team reviews issues from acceptance testing and uses
|
* __Triage.__ Team reviews issues from acceptance testing and uses
|
||||||
success criteria to determine whether or not they should block
|
success criteria to determine whether or not they should block
|
||||||
release, then formulates a plan to address these issues before
|
release, then formulates a plan to address these issues before
|
||||||
|
1
docs/src/process/testing/automation.md
Normal file
1
docs/src/process/testing/automation.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
## doc dump
|
@ -19,7 +19,7 @@ Testing for Open MCT includes:
|
|||||||
|
|
||||||
Manual, non-rigorous testing of the software and/or specific features
|
Manual, non-rigorous testing of the software and/or specific features
|
||||||
of interest. Verifies that the software runs and that basic functionality
|
of interest. Verifies that the software runs and that basic functionality
|
||||||
is present.
|
is present. The outcome of Smoke Testing should be a simplified list of Acceptance Tests which could be executed by another team member with sufficient context.
|
||||||
|
|
||||||
### Unit Testing
|
### Unit Testing
|
||||||
|
|
||||||
@ -28,9 +28,11 @@ components. Tests are subject to code review along with the actual
|
|||||||
implementation, to ensure that tests are applicable and useful.
|
implementation, to ensure that tests are applicable and useful.
|
||||||
|
|
||||||
Unit tests should meet
|
Unit tests should meet
|
||||||
[test standards](https://github.com/nasa/openmctweb/blob/master/CONTRIBUTING.md#test-standards)
|
[test standards](CONTRIBUTING.md#test-standards)
|
||||||
as described in the contributing guide.
|
as described in the contributing guide.
|
||||||
|
|
||||||
|
More about unit testing
|
||||||
|
|
||||||
### User Testing
|
### User Testing
|
||||||
|
|
||||||
User testing is performed at scheduled times involving target users
|
User testing is performed at scheduled times involving target users
|
||||||
@ -49,7 +51,7 @@ User testing will focus on the following activities:
|
|||||||
* General "trying to break things."
|
* General "trying to break things."
|
||||||
|
|
||||||
During user testing, users will
|
During user testing, users will
|
||||||
[report issues](https://github.com/nasa/openmctweb/blob/master/CONTRIBUTING.md#issue-reporting)
|
[report issues](https://github.com/nasa/openmct/issues/new/choose)
|
||||||
as they are encountered.
|
as they are encountered.
|
||||||
|
|
||||||
Desired outcomes of user testing are:
|
Desired outcomes of user testing are:
|
||||||
@ -71,7 +73,7 @@ usage. After twenty-four hours, the software is evaluated for:
|
|||||||
at the start of the test? Is it as responsive?
|
at the start of the test? Is it as responsive?
|
||||||
|
|
||||||
Any defects or unexpected behavior identified during testing should be
|
Any defects or unexpected behavior identified during testing should be
|
||||||
[reported as issues](https://github.com/nasa/openmctweb/blob/master/CONTRIBUTING.md#issue-reporting)
|
[reported as issues](https://github.com/nasa/openmct/issues/new/choose)
|
||||||
and reviewed for severity.
|
and reviewed for severity.
|
||||||
|
|
||||||
## Test Performance
|
## Test Performance
|
||||||
@ -93,7 +95,7 @@ Before changes are merged, the author of the changes must perform:
|
|||||||
|
|
||||||
Changes are not merged until the author has affirmed that both
|
Changes are not merged until the author has affirmed that both
|
||||||
forms of testing have been performed successfully; this is documented
|
forms of testing have been performed successfully; this is documented
|
||||||
by the [Author Checklist](https://github.com/nasa/openmctweb/blob/master/CONTRIBUTING.md#author-checklist).
|
by the [Author Checklist](CONTRIBUTING.md#author-checklist).
|
||||||
|
|
||||||
### Per-sprint Testing
|
### Per-sprint Testing
|
||||||
|
|
||||||
@ -135,7 +137,7 @@ For per-sprint testing, a testathon is typically performed at the beginning of t
|
|||||||
#### Process
|
#### Process
|
||||||
|
|
||||||
1. Prior to the scheduled testathon, a list will be compiled of all issues that are closed and unverified.
|
1. Prior to the scheduled testathon, a list will be compiled of all issues that are closed and unverified.
|
||||||
2. For each issue, testers should review the associated PR for testing instructions. See the contributing guide for instructions on [pull requests](https://github.com/nasa/openmct/blob/master/CONTRIBUTING.md#merging).
|
2. For each issue, testers should review the associated PR for testing instructions. See the contributing guide for instructions on [pull requests](CONTRIBUTING.md#merging).
|
||||||
3. As each issue is verified via testing, any team members testing it should leave a comment on that issue indicating that it has been verified fixed.
|
3. As each issue is verified via testing, any team members testing it should leave a comment on that issue indicating that it has been verified fixed.
|
||||||
4. If a bug is found that relates to an issue being tested, notes should be included on the associated issue, and the issue should be reopened. Bug notes should include reproduction steps.
|
4. If a bug is found that relates to an issue being tested, notes should be included on the associated issue, and the issue should be reopened. Bug notes should include reproduction steps.
|
||||||
5. For any bugs that are not obviously related to any of the issues under test, a new issue should be created with details about the bug, including reproduction steps. If unsure about whether a bug relates to an issue being tested, just create a new issue.
|
5. For any bugs that are not obviously related to any of the issues under test, a new issue should be created with details about the bug, including reproduction steps. If unsure about whether a bug relates to an issue being tested, just create a new issue.
|
||||||
|
@ -92,47 +92,60 @@ should update (or delegate the task of updating) Open MCT version
|
|||||||
numbers by the following process:
|
numbers by the following process:
|
||||||
|
|
||||||
1. Update version number in `package.json`
|
1. Update version number in `package.json`
|
||||||
1. Remove `-SNAPSHOT` suffix.
|
1. Checkout branch created for the last sprint that has been successfully tested.
|
||||||
2. Verify that resulting version number meets semantic versioning
|
2. Remove a `-SNAPSHOT` suffix from the version in `package.json`.
|
||||||
requirements relative to previous stable version. Increment if
|
3. Verify that resulting version number meets semantic versioning
|
||||||
necessary.
|
requirements relative to previous stable version. Increment the
|
||||||
3. If version is considered unstable (which may be the case during
|
version number if necessary.
|
||||||
|
4. If version is considered unstable (which may be the case during
|
||||||
the first three sprints of a release), apply a new suffix per
|
the first three sprints of a release), apply a new suffix per
|
||||||
[Version Numbering](#version-numbering) guidance above.
|
[Version Numbering](#version-numbering) guidance above.
|
||||||
2. Tag the release.
|
2. Tag the release.
|
||||||
1. Commit changes to `package.json` on the `master` branch.
|
1. Commit changes to `package.json` on the new branch created in
|
||||||
|
the previous step.
|
||||||
The commit message should reference the sprint being closed,
|
The commit message should reference the sprint being closed,
|
||||||
preferably by a URL reference to the associated Milestone in
|
preferably by a URL reference to the associated Milestone in
|
||||||
GitHub.
|
GitHub.
|
||||||
2. Verify that build still completes, that application passes
|
2. Verify that build still completes, that application passes
|
||||||
smoke-testing, and that only differences from tested versions
|
smoke-testing, and that only differences from tested versions
|
||||||
are the changes to version number above.
|
are the changes to version number above.
|
||||||
3. Push the `master` branch.
|
3. Push the new branch.
|
||||||
4. Tag this commit with the version number, prepending the letter "v".
|
4. Tag this commit with the version number, prepending the letter "v".
|
||||||
(e.g. `git tag v0.9.3-alpha`)
|
(e.g. `git tag v0.9.3-alpha`)
|
||||||
5. Push the tag to GitHub. (e.g. `git push origin v0.9.3-alpha`).
|
5. Push the tag to GitHub. (e.g. `git push origin v0.9.3-alpha`).
|
||||||
3. Upload a release archive.
|
3. Upload a release archive.
|
||||||
1. Run `npm pack` to generate the archive.
|
1. Use the [GitHub release interface](https://github.com/nasa/openmct/releases)
|
||||||
2. Use the [GitHub release interface](https://github.com/nasa/openmct/releases)
|
|
||||||
to draft a new release.
|
to draft a new release.
|
||||||
3. Choose the existing tag for the new version (created and pushed above.)
|
2. Choose the existing tag for the new version (created and pushed above.)
|
||||||
Enter the tag name as the release name as well; see existing releases
|
Enter the tag name as the release name as well; see existing releases
|
||||||
for examples.
|
for examples. (e.g. `Open MCT v0.9.3-alpha`)
|
||||||
4. Attach the release archive.
|
3. Designate the release as a "pre-release" as appropriate (for instance,
|
||||||
5. Designate the release as a "pre-release" as appropriate (for instance,
|
|
||||||
when the version number has been suffixed as unstable, or when
|
when the version number has been suffixed as unstable, or when
|
||||||
the version number is below 1.0.0.)
|
the version number is below 1.0.0.)
|
||||||
4. Restore snapshot status in `package.json`
|
4. Add release notes including any breaking changes, enhancements,
|
||||||
1. Remove any suffix from the version number, or increment the
|
bug fixes with solutions in brief.
|
||||||
_patch_ version if there is no suffix.
|
5. Publish the release.
|
||||||
2. Append a `-SNAPSHOT` suffix.
|
4. Publish the release to npm
|
||||||
3. Commit changes to `package.json` on the `master` branch.
|
1. Login to npm
|
||||||
|
2. Checkout the tag created in the previous step.
|
||||||
|
3. In `package.json` change package to be public (private: false)
|
||||||
|
4. Test the package before publishing by doing `npm publish --dry-run`
|
||||||
|
if necessary.
|
||||||
|
5. Publish the package to the npmjs registry (e.g. `npm publish --access public`)
|
||||||
|
NOTE: Use the `--tag unstable` flag to the npm publishj if this is a prerelease.
|
||||||
|
6. Confirm the package has been published (e.g. `https://www.npmjs.com/package/openmct`)
|
||||||
|
5. Update snapshot status in `package.json`
|
||||||
|
1. Create a new branch off the `master` branch.
|
||||||
|
2. Remove any suffix from the version number,
|
||||||
|
or increment the _patch_ version if there is no suffix.
|
||||||
|
3. Append a `-SNAPSHOT` suffix.
|
||||||
|
4. Commit changes to `package.json` on the `master` branch.
|
||||||
The commit message should reference the sprint being opened,
|
The commit message should reference the sprint being opened,
|
||||||
preferably by a URL reference to the associated Milestone in
|
preferably by a URL reference to the associated Milestone in
|
||||||
GitHub.
|
GitHub.
|
||||||
4. Verify that build still completes, that application passes
|
5. Verify that build still completes, that application passes
|
||||||
smoke-testing.
|
smoke-testing.
|
||||||
5. Push the `master` branch.
|
6. Create a PR to be merged into the `master` branch.
|
||||||
|
|
||||||
Projects dependent on Open MCT being co-developed by the Open MCT
|
Projects dependent on Open MCT being co-developed by the Open MCT
|
||||||
team should follow a similar process, except that they should
|
team should follow a similar process, except that they should
|
||||||
|
4
e2e/.eslintrc.js
Normal file
4
e2e/.eslintrc.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/* eslint-disable no-undef */
|
||||||
|
module.exports = {
|
||||||
|
"extends": ["plugin:playwright/playwright-test"]
|
||||||
|
};
|
0
e2e/e2e.md
Normal file
0
e2e/e2e.md
Normal file
33
e2e/playwright-ci.config.js
Normal file
33
e2e/playwright-ci.config.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* eslint-disable no-undef */
|
||||||
|
// playwright.config.js
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
||||||
|
const config = {
|
||||||
|
retries: 2,
|
||||||
|
testDir: 'tests',
|
||||||
|
timeout: 90 * 1000,
|
||||||
|
webServer: {
|
||||||
|
command: 'npm run start',
|
||||||
|
port: 8080,
|
||||||
|
timeout: 200 * 1000,
|
||||||
|
reuseExistingServer: !process.env.CI
|
||||||
|
},
|
||||||
|
workers: 2, //Limit to 2 for CircleCI Agent
|
||||||
|
use: {
|
||||||
|
browserName: "chromium",
|
||||||
|
baseURL: 'http://localhost:8080/',
|
||||||
|
headless: true,
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
screenshot: 'on',
|
||||||
|
trace: 'on',
|
||||||
|
video: 'on'
|
||||||
|
},
|
||||||
|
reporter: [
|
||||||
|
['list'],
|
||||||
|
['junit', { outputFile: 'test-results/results.xml' }],
|
||||||
|
['allure-playwright']
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = config;
|
31
e2e/playwright-local.config.js
Normal file
31
e2e/playwright-local.config.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* eslint-disable no-undef */
|
||||||
|
// playwright.config.js
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
||||||
|
const config = {
|
||||||
|
retries: 0,
|
||||||
|
testDir: 'tests',
|
||||||
|
timeout: 30 * 1000,
|
||||||
|
webServer: {
|
||||||
|
command: 'npm run start',
|
||||||
|
port: 8080,
|
||||||
|
timeout: 120 * 1000,
|
||||||
|
reuseExistingServer: !process.env.CI
|
||||||
|
},
|
||||||
|
use: {
|
||||||
|
browserName: "chromium",
|
||||||
|
baseURL: 'http://localhost:8080/',
|
||||||
|
headless: false,
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
screenshot: 'on',
|
||||||
|
trace: 'on',
|
||||||
|
video: 'on'
|
||||||
|
},
|
||||||
|
reporter: [
|
||||||
|
['list'],
|
||||||
|
['allure-playwright']
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = config;
|
33
e2e/playwright-visual.config.js
Normal file
33
e2e/playwright-visual.config.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* eslint-disable no-undef */
|
||||||
|
// playwright.config.js
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
||||||
|
const config = {
|
||||||
|
retries: 0,
|
||||||
|
testDir: 'tests',
|
||||||
|
timeout: 90 * 1000,
|
||||||
|
workers: 1,
|
||||||
|
webServer: {
|
||||||
|
command: 'npm run start',
|
||||||
|
port: 8080,
|
||||||
|
timeout: 200 * 1000,
|
||||||
|
reuseExistingServer: !process.env.CI
|
||||||
|
},
|
||||||
|
use: {
|
||||||
|
browserName: "chromium",
|
||||||
|
baseURL: 'http://localhost:8080/',
|
||||||
|
headless: true,
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
screenshot: 'on',
|
||||||
|
trace: 'off',
|
||||||
|
video: 'on'
|
||||||
|
},
|
||||||
|
reporter: [
|
||||||
|
['list'],
|
||||||
|
['junit', { outputFile: 'test-results/results.xml' }],
|
||||||
|
['allure-playwright']
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = config;
|
48
e2e/tests/plugins/condition/condition.e2e.spec.js
Normal file
48
e2e/tests/plugins/condition/condition.e2e.spec.js
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
* Open MCT includes source code licensed under additional open source
|
||||||
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||||
|
* this source code distribution or the Licensing information page available
|
||||||
|
* at runtime from the About dialog for additional information.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
This test suite is dedicated to tests which verify the basic operations surrounding conditionSets.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { test, expect } = require('@playwright/test');
|
||||||
|
|
||||||
|
test.describe('condition set', () => {
|
||||||
|
test('create new button `condition set` creates new condition object', async ({ page }) => {
|
||||||
|
//Go to baseURL
|
||||||
|
await page.goto('/', { waitUntil: 'networkidle' });
|
||||||
|
|
||||||
|
//Click the Create button
|
||||||
|
await page.click('button:has-text("Create")');
|
||||||
|
|
||||||
|
// Click text=Condition Set
|
||||||
|
await page.click('text=Condition Set');
|
||||||
|
|
||||||
|
// Click text=OK
|
||||||
|
await Promise.all([
|
||||||
|
page.waitForNavigation(/*{ url: 'http://localhost:8080/#/browse/mine/dab945d4-5a84-480e-8180-222b4aa730fa?tc.mode=fixed&tc.startBound=1639696164435&tc.endBound=1639697964435&tc.timeSystem=utc&view=conditionSet.view' }*/),
|
||||||
|
page.click('text=OK')
|
||||||
|
]);
|
||||||
|
|
||||||
|
await expect(page.locator('.l-browse-bar__object-name')).toContainText('Unnamed Condition Set');
|
||||||
|
});
|
||||||
|
});
|
49
e2e/tests/smoke.spec.js
Normal file
49
e2e/tests/smoke.spec.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
|
* Administration. All rights reserved.
|
||||||
|
*
|
||||||
|
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
* Open MCT includes source code licensed under additional open source
|
||||||
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||||
|
* this source code distribution or the Licensing information page available
|
||||||
|
* at runtime from the About dialog for additional information.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
This test suite is dedicated to tests which can quickly verify that any openmct installation is
|
||||||
|
operable and that any type of testing can proceed.
|
||||||
|
|
||||||
|
Ideally, smoke tests should make zero assumptions about how and where they are run. This makes them
|
||||||
|
more resilient to change and therefor a better indicator of failure. Smoke tests will also run quickly
|
||||||
|
as they cover a very "thin surface" of functionality.
|
||||||
|
|
||||||
|
When deciding between authoring new smoke tests or functional tests, ask yourself "would I feel
|
||||||
|
comfortable running this test during a live mission?" Avoid creating or deleting Domain Objects.
|
||||||
|
Make no assumptions about the order that elements appear in the DOM.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { test, expect } = require('@playwright/test');
|
||||||
|
|
||||||
|
test('Verify that the create button appears and that the Folder Domain Object is available for selection', async ({ page }) => {
|
||||||
|
|
||||||
|
//Go to baseURL
|
||||||
|
await page.goto('/', { waitUntil: 'networkidle' });
|
||||||
|
|
||||||
|
//Click the Create button
|
||||||
|
await page.click('button:has-text("Create")');
|
||||||
|
|
||||||
|
// Verify that Create Folder appears in the dropdown
|
||||||
|
const locator = page.locator(':nth-match(:text("Folder"), 2)');
|
||||||
|
await expect(locator).toBeEnabled();
|
||||||
|
});
|
113
e2e/tests/visual/default.spec.js
Normal file
113
e2e/tests/visual/default.spec.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* Open MCT, Copyright (c) 2014-2021, 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Collection of Visual Tests set to run in a default context. The tests within this suite
|
||||||
|
are only meant to run against openmct's app.js started by `npm run start` within the
|
||||||
|
`./e2e/playwright-visual.config.js` file.
|
||||||
|
|
||||||
|
These should only use functional expect statements to verify assumptions about the state
|
||||||
|
in a test and not for functional verification of correctness. Visual tests are not supposed
|
||||||
|
to "fail" on assertions. Instead, they should be used to detect changes between builds or branches.
|
||||||
|
|
||||||
|
Note: Larger testsuite sizes are OK due to the setup time associated with these tests.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { test, expect } = require('@playwright/test');
|
||||||
|
const percySnapshot = require('@percy/playwright');
|
||||||
|
const path = require('path');
|
||||||
|
const sinon = require('sinon');
|
||||||
|
|
||||||
|
const VISUAL_GRACE_PERIOD = 5 * 1000; //Lets the application "simmer" before the snapshot is taken
|
||||||
|
|
||||||
|
// Snippet from https://github.com/microsoft/playwright/issues/6347#issuecomment-965887758
|
||||||
|
// Will replace with cy.clock() equivalent
|
||||||
|
test.beforeEach(async ({ context }) => {
|
||||||
|
await context.addInitScript({
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
path: path.join(__dirname, '../../..', './node_modules/sinon/pkg/sinon.js')
|
||||||
|
});
|
||||||
|
await context.addInitScript(() => {
|
||||||
|
window.__clock = sinon.useFakeTimers(); //Set browser clock to UNIX Epoch
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Visual - Root and About', async ({ page }) => {
|
||||||
|
// Go to baseURL
|
||||||
|
await page.goto('/', { waitUntil: 'networkidle' });
|
||||||
|
|
||||||
|
// Verify that Create button is actionable
|
||||||
|
const createButtonLocator = page.locator('button:has-text("Create")');
|
||||||
|
await expect(createButtonLocator).toBeEnabled();
|
||||||
|
|
||||||
|
// Take a snapshot of the Dashboard
|
||||||
|
await page.waitForTimeout(VISUAL_GRACE_PERIOD);
|
||||||
|
await percySnapshot(page, 'Root');
|
||||||
|
|
||||||
|
// Click About button
|
||||||
|
await page.click('.l-shell__app-logo');
|
||||||
|
|
||||||
|
// Modify the Build information in 'about' to be consistent run-over-run
|
||||||
|
const versionInformationLocator = page.locator('ul.t-info.l-info.s-info');
|
||||||
|
await expect(versionInformationLocator).toBeEnabled();
|
||||||
|
await versionInformationLocator.evaluate(node => node.innerHTML = '<li>Version: visual-snapshot</li> <li>Build Date: Mon Nov 15 2021 08:07:51 GMT-0800 (Pacific Standard Time)</li> <li>Revision: 93049cdbc6c047697ca204893db9603b864b8c9f</li> <li>Branch: master</li>');
|
||||||
|
|
||||||
|
// Take a snapshot of the About modal
|
||||||
|
await page.waitForTimeout(VISUAL_GRACE_PERIOD);
|
||||||
|
await percySnapshot(page, 'About');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Visual - Default Condition Set', async ({ page }) => {
|
||||||
|
//Go to baseURL
|
||||||
|
await page.goto('/', { waitUntil: 'networkidle' });
|
||||||
|
|
||||||
|
//Click the Create button
|
||||||
|
await page.click('button:has-text("Create")');
|
||||||
|
|
||||||
|
// Click text=Condition Set
|
||||||
|
await page.click('text=Condition Set');
|
||||||
|
|
||||||
|
// Click text=OK
|
||||||
|
await page.click('text=OK');
|
||||||
|
|
||||||
|
// Take a snapshot of the newly created Condition Set object
|
||||||
|
await page.waitForTimeout(VISUAL_GRACE_PERIOD);
|
||||||
|
await percySnapshot(page, 'Default Condition Set');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Visual - Default Condition Widget', async ({ page }) => {
|
||||||
|
//Go to baseURL
|
||||||
|
await page.goto('/', { waitUntil: 'networkidle' });
|
||||||
|
|
||||||
|
//Click the Create button
|
||||||
|
await page.click('button:has-text("Create")');
|
||||||
|
|
||||||
|
// Click text=Condition Widget
|
||||||
|
await page.click('text=Condition Widget');
|
||||||
|
|
||||||
|
// Click text=OK
|
||||||
|
await page.click('text=OK');
|
||||||
|
|
||||||
|
// Take a snapshot of the newly created Condition Widget object
|
||||||
|
await page.waitForTimeout(VISUAL_GRACE_PERIOD);
|
||||||
|
await percySnapshot(page, 'Default Condition Widget');
|
||||||
|
});
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/EventTelemetryProvider"
|
"./src/EventTelemetryProvider"
|
||||||
@ -29,7 +28,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/eventGenerator",
|
name: "example/eventGenerator",
|
||||||
definition: {
|
definition: {
|
||||||
"name": "Event Message Generator",
|
"name": "Event Message Generator",
|
||||||
"description": "For development use. Creates sample event message data that mimics a live data stream.",
|
"description": "For development use. Creates sample event message data that mimics a live data stream.",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module defining EventTelemetry.
|
* Module defining EventTelemetry.
|
||||||
@ -44,13 +43,14 @@ define(
|
|||||||
};
|
};
|
||||||
|
|
||||||
generatorData.getDomainValue = function (i, domain) {
|
generatorData.getDomainValue = function (i, domain) {
|
||||||
return i * interval +
|
return i * interval
|
||||||
(domain !== 'delta' ? firstObservedTime : 0);
|
+ (domain !== 'delta' ? firstObservedTime : 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
generatorData.getRangeValue = function (i, range) {
|
generatorData.getRangeValue = function (i, range) {
|
||||||
var domainDelta = this.getDomainValue(i) - firstObservedTime,
|
var domainDelta = this.getDomainValue(i) - firstObservedTime,
|
||||||
ind = i % messages.length;
|
ind = i % messages.length;
|
||||||
|
|
||||||
return messages[ind] + " - [" + domainDelta.toString() + "]";
|
return messages[ind] + " - [" + domainDelta.toString() + "]";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define,Promise*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module defining EventTelemetryProvider. Created by chacskaylo on 06/18/2015.
|
* Module defining EventTelemetryProvider. Created by chacskaylo on 06/18/2015.
|
||||||
@ -57,6 +56,7 @@ define(
|
|||||||
results.forEach(function (result) {
|
results.forEach(function (result) {
|
||||||
packaged[result.key] = result.telemetry;
|
packaged[result.key] = result.telemetry;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Format as expected (sources -> keys -> telemetry)
|
// Format as expected (sources -> keys -> telemetry)
|
||||||
return { eventGenerator: packaged };
|
return { eventGenerator: packaged };
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([], function () {
|
define([], function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
@ -76,13 +75,14 @@ define([], function () {
|
|||||||
copyRangesToRow(row, i);
|
copyRangesToRow(row, i);
|
||||||
rows.push(row);
|
rows.push(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
exportService.exportCSV(rows, { headers: headers });
|
exportService.exportCSV(rows, { headers: headers });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
ExportTelemetryAsCSVAction.appliesTo = function (context) {
|
ExportTelemetryAsCSVAction.appliesTo = function (context) {
|
||||||
return context.domainObject &&
|
return context.domainObject
|
||||||
context.domainObject.hasCapability("telemetry");
|
&& context.domainObject.hasCapability("telemetry");
|
||||||
};
|
};
|
||||||
|
|
||||||
return ExportTelemetryAsCSVAction;
|
return ExportTelemetryAsCSVAction;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
'./ExportTelemetryAsCSVAction'
|
'./ExportTelemetryAsCSVAction'
|
||||||
@ -27,7 +26,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/export",
|
name: "example/export",
|
||||||
definition: {
|
definition: {
|
||||||
"name": "Example of using CSV Export",
|
"name": "Example of using CSV Export",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ExampleFormController"
|
"./src/ExampleFormController"
|
||||||
@ -29,7 +28,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/forms",
|
name: "example/forms",
|
||||||
definition: {
|
definition: {
|
||||||
"name": "Declarative Forms example",
|
"name": "Declarative Forms example",
|
||||||
"sources": "src",
|
"sources": "src",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Open MCT, Copyright (c) 2014-2017, United States Government
|
Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
as represented by the Administrator of the National Aeronautics and Space
|
||||||
Administration. All rights reserved.
|
Administration. All rights reserved.
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define,window*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -80,7 +79,7 @@ define(
|
|||||||
control: "button",
|
control: "button",
|
||||||
csslass: "icon-save",
|
csslass: "icon-save",
|
||||||
click: function () {
|
click: function () {
|
||||||
window.alert("Save");
|
console.log("Save");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -88,7 +87,7 @@ define(
|
|||||||
csslass: "icon-x",
|
csslass: "icon-x",
|
||||||
description: "Button B",
|
description: "Button B",
|
||||||
click: function () {
|
click: function () {
|
||||||
window.alert("Cancel");
|
console.log("Cancel");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -97,7 +96,7 @@ define(
|
|||||||
description: "Button C",
|
description: "Button C",
|
||||||
disabled: true,
|
disabled: true,
|
||||||
click: function () {
|
click: function () {
|
||||||
window.alert("Delete");
|
console.log("Delete");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -152,10 +151,22 @@ define(
|
|||||||
name: "Choose something",
|
name: "Choose something",
|
||||||
control: "select",
|
control: "select",
|
||||||
options: [
|
options: [
|
||||||
{ name: "Hats", value: "hats" },
|
{
|
||||||
{ name: "Bats", value: "bats" },
|
name: "Hats",
|
||||||
{ name: "Cats", value: "cats" },
|
value: "hats"
|
||||||
{ name: "Mats", value: "mats" }
|
},
|
||||||
|
{
|
||||||
|
name: "Bats",
|
||||||
|
value: "bats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cats",
|
||||||
|
value: "cats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Mats",
|
||||||
|
value: "mats"
|
||||||
|
}
|
||||||
],
|
],
|
||||||
key: "aChoice"
|
key: "aChoice"
|
||||||
},
|
},
|
||||||
@ -164,10 +175,22 @@ define(
|
|||||||
control: "select",
|
control: "select",
|
||||||
required: true,
|
required: true,
|
||||||
options: [
|
options: [
|
||||||
{ name: "Hats", value: "hats" },
|
{
|
||||||
{ name: "Bats", value: "bats" },
|
name: "Hats",
|
||||||
{ name: "Cats", value: "cats" },
|
value: "hats"
|
||||||
{ name: "Mats", value: "mats" }
|
},
|
||||||
|
{
|
||||||
|
name: "Bats",
|
||||||
|
value: "bats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cats",
|
||||||
|
value: "cats"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Mats",
|
||||||
|
value: "mats"
|
||||||
|
}
|
||||||
],
|
],
|
||||||
key: "aRequiredChoice"
|
key: "aRequiredChoice"
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,15 @@ define([
|
|||||||
domain: 2
|
domain: 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: "cos",
|
||||||
|
name: "Cosine",
|
||||||
|
unit: "deg",
|
||||||
|
formatString: '%0.2f',
|
||||||
|
hints: {
|
||||||
|
domain: 3
|
||||||
|
}
|
||||||
|
},
|
||||||
// Need to enable "LocalTimeSystem" plugin to make use of this
|
// Need to enable "LocalTimeSystem" plugin to make use of this
|
||||||
// {
|
// {
|
||||||
// key: "local",
|
// key: "local",
|
||||||
@ -41,6 +50,7 @@ define([
|
|||||||
{
|
{
|
||||||
key: "sin",
|
key: "sin",
|
||||||
name: "Sine",
|
name: "Sine",
|
||||||
|
unit: "Hz",
|
||||||
formatString: '%0.2f',
|
formatString: '%0.2f',
|
||||||
hints: {
|
hints: {
|
||||||
range: 1
|
range: 1
|
||||||
@ -49,6 +59,7 @@ define([
|
|||||||
{
|
{
|
||||||
key: "cos",
|
key: "cos",
|
||||||
name: "Cosine",
|
name: "Cosine",
|
||||||
|
unit: "deg",
|
||||||
formatString: '%0.2f',
|
formatString: '%0.2f',
|
||||||
hints: {
|
hints: {
|
||||||
range: 2
|
range: 2
|
||||||
@ -108,14 +119,14 @@ define([
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
function GeneratorMetadataProvider() {
|
function GeneratorMetadataProvider() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GeneratorMetadataProvider.prototype.supportsMetadata = function (domainObject) {
|
GeneratorMetadataProvider.prototype.supportsMetadata = function (domainObject) {
|
||||||
return METADATA_BY_TYPE.hasOwnProperty(domainObject.type);
|
return Object.prototype.hasOwnProperty.call(METADATA_BY_TYPE, domainObject.type);
|
||||||
};
|
};
|
||||||
|
|
||||||
GeneratorMetadataProvider.prototype.getMetadata = function (domainObject) {
|
GeneratorMetadataProvider.prototype.getMetadata = function (domainObject) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -62,18 +62,23 @@ define([
|
|||||||
var workerRequest = {};
|
var workerRequest = {};
|
||||||
|
|
||||||
props.forEach(function (prop) {
|
props.forEach(function (prop) {
|
||||||
if (domainObject.telemetry && domainObject.telemetry.hasOwnProperty(prop)) {
|
if (domainObject.telemetry && Object.prototype.hasOwnProperty.call(domainObject.telemetry, prop)) {
|
||||||
workerRequest[prop] = domainObject.telemetry[prop];
|
workerRequest[prop] = domainObject.telemetry[prop];
|
||||||
}
|
}
|
||||||
if (request && request.hasOwnProperty(prop)) {
|
|
||||||
|
if (request && Object.prototype.hasOwnProperty.call(request, prop)) {
|
||||||
workerRequest[prop] = request[prop];
|
workerRequest[prop] = request[prop];
|
||||||
}
|
}
|
||||||
if (!workerRequest.hasOwnProperty(prop)) {
|
|
||||||
|
if (!Object.prototype.hasOwnProperty.call(workerRequest, prop)) {
|
||||||
workerRequest[prop] = REQUEST_DEFAULTS[prop];
|
workerRequest[prop] = REQUEST_DEFAULTS[prop];
|
||||||
}
|
}
|
||||||
|
|
||||||
workerRequest[prop] = Number(workerRequest[prop]);
|
workerRequest[prop] = Number(workerRequest[prop]);
|
||||||
});
|
});
|
||||||
|
|
||||||
workerRequest.name = domainObject.name;
|
workerRequest.name = domainObject.name;
|
||||||
|
|
||||||
return workerRequest;
|
return workerRequest;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,11 +86,13 @@ define([
|
|||||||
var workerRequest = this.makeWorkerRequest(domainObject, request);
|
var workerRequest = this.makeWorkerRequest(domainObject, request);
|
||||||
workerRequest.start = request.start;
|
workerRequest.start = request.start;
|
||||||
workerRequest.end = request.end;
|
workerRequest.end = request.end;
|
||||||
|
|
||||||
return this.workerInterface.request(workerRequest);
|
return this.workerInterface.request(workerRequest);
|
||||||
};
|
};
|
||||||
|
|
||||||
GeneratorProvider.prototype.subscribe = function (domainObject, callback) {
|
GeneratorProvider.prototype.subscribe = function (domainObject, callback) {
|
||||||
var workerRequest = this.makeWorkerRequest(domainObject, {});
|
var workerRequest = this.makeWorkerRequest(domainObject, {});
|
||||||
|
|
||||||
return this.workerInterface.subscribe(workerRequest, callback);
|
return this.workerInterface.subscribe(workerRequest, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
|
|
||||||
@ -27,14 +26,26 @@ define([
|
|||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var RED = {
|
var PURPLE = {
|
||||||
|
sin: 2.2,
|
||||||
|
cos: 2.2
|
||||||
|
},
|
||||||
|
RED = {
|
||||||
sin: 0.9,
|
sin: 0.9,
|
||||||
cos: 0.9
|
cos: 0.9
|
||||||
},
|
},
|
||||||
|
ORANGE = {
|
||||||
|
sin: 0.7,
|
||||||
|
cos: 0.7
|
||||||
|
},
|
||||||
YELLOW = {
|
YELLOW = {
|
||||||
sin: 0.5,
|
sin: 0.5,
|
||||||
cos: 0.5
|
cos: 0.5
|
||||||
},
|
},
|
||||||
|
CYAN = {
|
||||||
|
sin: 0.45,
|
||||||
|
cos: 0.45
|
||||||
|
},
|
||||||
LIMITS = {
|
LIMITS = {
|
||||||
rh: {
|
rh: {
|
||||||
cssClass: "is-limit--upr is-limit--red",
|
cssClass: "is-limit--upr is-limit--red",
|
||||||
@ -78,12 +89,15 @@ define([
|
|||||||
if (datum[range] > RED[range]) {
|
if (datum[range] > RED[range]) {
|
||||||
return LIMITS.rh;
|
return LIMITS.rh;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (datum[range] < -RED[range]) {
|
if (datum[range] < -RED[range]) {
|
||||||
return LIMITS.rl;
|
return LIMITS.rl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (datum[range] > YELLOW[range]) {
|
if (datum[range] > YELLOW[range]) {
|
||||||
return LIMITS.yh;
|
return LIMITS.yh;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (datum[range] < -YELLOW[range]) {
|
if (datum[range] < -YELLOW[range]) {
|
||||||
return LIMITS.yl;
|
return LIMITS.yl;
|
||||||
}
|
}
|
||||||
@ -91,5 +105,70 @@ define([
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SinewaveLimitProvider.prototype.getLimits = function (domainObject) {
|
||||||
|
|
||||||
|
return {
|
||||||
|
limits: function () {
|
||||||
|
return Promise.resolve({
|
||||||
|
WATCH: {
|
||||||
|
low: {
|
||||||
|
color: "cyan",
|
||||||
|
sin: -CYAN.sin,
|
||||||
|
cos: -CYAN.cos
|
||||||
|
},
|
||||||
|
high: {
|
||||||
|
color: "cyan",
|
||||||
|
...CYAN
|
||||||
|
}
|
||||||
|
},
|
||||||
|
WARNING: {
|
||||||
|
low: {
|
||||||
|
color: "yellow",
|
||||||
|
sin: -YELLOW.sin,
|
||||||
|
cos: -YELLOW.cos
|
||||||
|
},
|
||||||
|
high: {
|
||||||
|
color: "yellow",
|
||||||
|
...YELLOW
|
||||||
|
}
|
||||||
|
},
|
||||||
|
DISTRESS: {
|
||||||
|
low: {
|
||||||
|
color: "orange",
|
||||||
|
sin: -ORANGE.sin,
|
||||||
|
cos: -ORANGE.cos
|
||||||
|
},
|
||||||
|
high: {
|
||||||
|
color: "orange",
|
||||||
|
...ORANGE
|
||||||
|
}
|
||||||
|
},
|
||||||
|
CRITICAL: {
|
||||||
|
low: {
|
||||||
|
color: "red",
|
||||||
|
sin: -RED.sin,
|
||||||
|
cos: -RED.cos
|
||||||
|
},
|
||||||
|
high: {
|
||||||
|
color: "red",
|
||||||
|
...RED
|
||||||
|
}
|
||||||
|
},
|
||||||
|
SEVERE: {
|
||||||
|
low: {
|
||||||
|
color: "purple",
|
||||||
|
sin: -PURPLE.sin,
|
||||||
|
cos: -PURPLE.cos
|
||||||
|
},
|
||||||
|
high: {
|
||||||
|
color: "purple",
|
||||||
|
...PURPLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
return SinewaveLimitProvider;
|
return SinewaveLimitProvider;
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -48,7 +48,7 @@ define([
|
|||||||
var interval = setInterval(function () {
|
var interval = setInterval(function () {
|
||||||
var now = Date.now();
|
var now = Date.now();
|
||||||
var datum = pointForTimestamp(now, duration, domainObject.name);
|
var datum = pointForTimestamp(now, duration, domainObject.name);
|
||||||
datum.value += "";
|
datum.value = String(datum.value);
|
||||||
callback(datum);
|
callback(datum);
|
||||||
}, duration);
|
}, duration);
|
||||||
|
|
||||||
@ -57,23 +57,24 @@ define([
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
StateGeneratorProvider.prototype.supportsRequest = function (domainObject, options) {
|
StateGeneratorProvider.prototype.supportsRequest = function (domainObject, options) {
|
||||||
return domainObject.type === 'example.state-generator';
|
return domainObject.type === 'example.state-generator';
|
||||||
};
|
};
|
||||||
|
|
||||||
StateGeneratorProvider.prototype.request = function (domainObject, options) {
|
StateGeneratorProvider.prototype.request = function (domainObject, options) {
|
||||||
var start = options.start;
|
var start = options.start;
|
||||||
var end = options.end;
|
var end = Math.min(Date.now(), options.end); // no future values
|
||||||
var duration = domainObject.telemetry.duration * 1000;
|
var duration = domainObject.telemetry.duration * 1000;
|
||||||
if (options.strategy === 'latest' || options.size === 1) {
|
if (options.strategy === 'latest' || options.size === 1) {
|
||||||
start = end;
|
start = end;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = [];
|
var data = [];
|
||||||
while (start <= end && data.length < 5000) {
|
while (start <= end && data.length < 5000) {
|
||||||
data.push(pointForTimestamp(start, duration, domainObject.name));
|
data.push(pointForTimestamp(start, duration, domainObject.name));
|
||||||
start += duration;
|
start += duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.resolve(data);
|
return Promise.resolve(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -72,13 +72,16 @@ define([
|
|||||||
});
|
});
|
||||||
var messageId;
|
var messageId;
|
||||||
|
|
||||||
|
let self = this;
|
||||||
function callback(message) {
|
function callback(message) {
|
||||||
if (message.error) {
|
if (message.error) {
|
||||||
deferred.reject(message.error);
|
deferred.reject(message.error);
|
||||||
} else {
|
} else {
|
||||||
deferred.resolve(message.data);
|
deferred.resolve(message.data);
|
||||||
}
|
}
|
||||||
delete this.callbacks[messageId];
|
|
||||||
|
delete self.callbacks[messageId];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
messageId = this.dispatch('request', request, callback.bind(this));
|
messageId = this.dispatch('request', request, callback.bind(this));
|
||||||
@ -101,8 +104,5 @@ define([
|
|||||||
}.bind(this);
|
}.bind(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return WorkerInterface;
|
return WorkerInterface;
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -20,8 +20,6 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/*global self*/
|
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
|
|
||||||
var FIFTEEN_MINUTES = 15 * 60 * 1000;
|
var FIFTEEN_MINUTES = 15 * 60 * 1000;
|
||||||
@ -56,22 +54,38 @@
|
|||||||
var start = Date.now();
|
var start = Date.now();
|
||||||
var step = 1000 / data.dataRateInHz;
|
var step = 1000 / data.dataRateInHz;
|
||||||
var nextStep = start - (start % step) + step;
|
var nextStep = start - (start % step) + step;
|
||||||
|
let work;
|
||||||
|
if (data.spectra) {
|
||||||
|
work = function (now) {
|
||||||
|
while (nextStep < now) {
|
||||||
|
const messageCopy = Object.create(message);
|
||||||
|
message.data.start = nextStep - (60 * 1000);
|
||||||
|
message.data.end = nextStep;
|
||||||
|
onRequest(messageCopy);
|
||||||
|
nextStep += step;
|
||||||
|
}
|
||||||
|
|
||||||
function work(now) {
|
return nextStep;
|
||||||
while (nextStep < now) {
|
};
|
||||||
self.postMessage({
|
} else {
|
||||||
id: message.id,
|
work = function (now) {
|
||||||
data: {
|
while (nextStep < now) {
|
||||||
name: data.name,
|
self.postMessage({
|
||||||
utc: nextStep,
|
id: message.id,
|
||||||
yesterday: nextStep - 60*60*24*1000,
|
data: {
|
||||||
sin: sin(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness),
|
name: data.name,
|
||||||
cos: cos(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness)
|
utc: nextStep,
|
||||||
}
|
yesterday: nextStep - 60 * 60 * 24 * 1000,
|
||||||
});
|
sin: sin(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness),
|
||||||
nextStep += step;
|
wavelength: wavelength(start, nextStep),
|
||||||
}
|
cos: cos(nextStep, data.period, data.amplitude, data.offset, data.phase, data.randomness)
|
||||||
return nextStep;
|
}
|
||||||
|
});
|
||||||
|
nextStep += step;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nextStep;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
subscriptions[message.id] = work;
|
subscriptions[message.id] = work;
|
||||||
@ -87,6 +101,7 @@
|
|||||||
if (request.end === undefined) {
|
if (request.end === undefined) {
|
||||||
request.end = Date.now();
|
request.end = Date.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.start === undefined) {
|
if (request.start === undefined) {
|
||||||
request.start = request.end - FIFTEEN_MINUTES;
|
request.start = request.end - FIFTEEN_MINUTES;
|
||||||
}
|
}
|
||||||
@ -108,27 +123,39 @@
|
|||||||
|
|
||||||
for (; nextStep < end && data.length < 5000; nextStep += step) {
|
for (; nextStep < end && data.length < 5000; nextStep += step) {
|
||||||
data.push({
|
data.push({
|
||||||
name: request.name,
|
|
||||||
utc: nextStep,
|
utc: nextStep,
|
||||||
yesterday: nextStep - 60*60*24*1000,
|
yesterday: nextStep - 60 * 60 * 24 * 1000,
|
||||||
sin: sin(nextStep, period, amplitude, offset, phase, randomness),
|
sin: sin(nextStep, period, amplitude, offset, phase, randomness),
|
||||||
|
wavelength: wavelength(start, nextStep),
|
||||||
cos: cos(nextStep, period, amplitude, offset, phase, randomness)
|
cos: cos(nextStep, period, amplitude, offset, phase, randomness)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
self.postMessage({
|
self.postMessage({
|
||||||
id: message.id,
|
id: message.id,
|
||||||
data: data
|
data: request.spectra ? {
|
||||||
|
wavelength: data.map((item) => {
|
||||||
|
return item.wavelength;
|
||||||
|
}),
|
||||||
|
cos: data.map((item) => {
|
||||||
|
return item.cos;
|
||||||
|
})
|
||||||
|
} : data
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function cos(timestamp, period, amplitude, offset, phase, randomness) {
|
function cos(timestamp, period, amplitude, offset, phase, randomness) {
|
||||||
return amplitude *
|
return amplitude
|
||||||
Math.cos(phase + (timestamp / period / 1000 * Math.PI * 2)) + (amplitude * Math.random() * randomness) + offset;
|
* Math.cos(phase + (timestamp / period / 1000 * Math.PI * 2)) + (amplitude * Math.random() * randomness) + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sin(timestamp, period, amplitude, offset, phase, randomness) {
|
function sin(timestamp, period, amplitude, offset, phase, randomness) {
|
||||||
return amplitude *
|
return amplitude
|
||||||
Math.sin(phase + (timestamp / period / 1000 * Math.PI * 2)) + (amplitude * Math.random() * randomness) + offset;
|
* Math.sin(phase + (timestamp / period / 1000 * Math.PI * 2)) + (amplitude * Math.random() * randomness) + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
function wavelength(start, nextStep) {
|
||||||
|
return (nextStep - start) / 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendError(error, message) {
|
function sendError(error, message) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./GeneratorProvider",
|
"./GeneratorProvider",
|
||||||
@ -56,7 +55,7 @@ define([
|
|||||||
initialize: function (object) {
|
initialize: function (object) {
|
||||||
object.telemetry = {
|
object.telemetry = {
|
||||||
duration: 5
|
duration: 5
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ExampleIdentityService"
|
"./src/ExampleIdentityService"
|
||||||
@ -29,7 +28,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/identity",
|
name: "example/identity",
|
||||||
definition: {
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,32 +19,35 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
function () {
|
function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var DEFAULT_IDENTITY = { key: "user", name: "Example User" },
|
var DEFAULT_IDENTITY = {
|
||||||
|
key: "user",
|
||||||
|
name: "Example User"
|
||||||
|
},
|
||||||
DIALOG_STRUCTURE = {
|
DIALOG_STRUCTURE = {
|
||||||
name: "Identify Yourself",
|
name: "Identify Yourself",
|
||||||
sections: [{ rows: [
|
sections: [{
|
||||||
{
|
rows: [
|
||||||
name: "User ID",
|
{
|
||||||
control: "textfield",
|
name: "User ID",
|
||||||
key: "key",
|
control: "textfield",
|
||||||
required: true
|
key: "key",
|
||||||
},
|
required: true
|
||||||
{
|
},
|
||||||
name: "Human name",
|
{
|
||||||
control: "textfield",
|
name: "Human name",
|
||||||
key: "name",
|
control: "textfield",
|
||||||
required: true
|
key: "name",
|
||||||
}
|
required: true
|
||||||
]}]
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Example implementation of an identity service. This prompts the
|
* Example implementation of an identity service. This prompts the
|
||||||
* user to enter a name and user ID; in a more realistic
|
* user to enter a name and user ID; in a more realistic
|
||||||
@ -77,14 +80,14 @@ define(
|
|||||||
*/
|
*/
|
||||||
ExampleIdentityProvider.prototype.returnUser = function (user) {
|
ExampleIdentityProvider.prototype.returnUser = function (user) {
|
||||||
return this.user = user;
|
return this.user = user;
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
ExampleIdentityProvider.prototype.returnUndefined = function () {
|
ExampleIdentityProvider.prototype.returnUndefined = function () {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
};
|
||||||
|
|
||||||
return ExampleIdentityProvider;
|
return ExampleIdentityProvider;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -20,135 +20,219 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
define([
|
const DEFAULT_IMAGE_SAMPLES = [
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18731.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18732.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18733.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18734.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18735.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18736.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18737.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18738.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18739.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18740.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18741.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18742.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18743.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18744.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18745.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18746.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18747.jpg",
|
||||||
|
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18748.jpg"
|
||||||
|
];
|
||||||
|
const DEFAULT_IMAGE_LOAD_DELAY_IN_MILISECONDS = 20000;
|
||||||
|
const MIN_IMAGE_LOAD_DELAY_IN_MILISECONDS = 5000;
|
||||||
|
|
||||||
], function (
|
let openmctInstance;
|
||||||
|
|
||||||
) {
|
export default function () {
|
||||||
function ImageryPlugin() {
|
return function install(openmct) {
|
||||||
|
openmctInstance = openmct;
|
||||||
var IMAGE_SAMPLES = [
|
openmct.types.addType('example.imagery', {
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18731.jpg",
|
key: 'example.imagery',
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18732.jpg",
|
name: 'Example Imagery',
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18733.jpg",
|
cssClass: 'icon-image',
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18734.jpg",
|
description: 'For development use. Creates example imagery '
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18735.jpg",
|
+ 'data that mimics a live imagery stream.',
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18736.jpg",
|
creatable: true,
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18737.jpg",
|
initialize: (object) => {
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18738.jpg",
|
object.configuration = {
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18739.jpg",
|
imageLocation: '',
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18740.jpg",
|
imageLoadDelayInMilliSeconds: DEFAULT_IMAGE_LOAD_DELAY_IN_MILISECONDS,
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18741.jpg",
|
imageSamples: []
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18742.jpg",
|
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18743.jpg",
|
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18744.jpg",
|
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18745.jpg",
|
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18746.jpg",
|
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18747.jpg",
|
|
||||||
"https://www.hq.nasa.gov/alsj/a16/AS16-117-18748.jpg"
|
|
||||||
];
|
|
||||||
|
|
||||||
function pointForTimestamp(timestamp, name) {
|
|
||||||
return {
|
|
||||||
name: name,
|
|
||||||
utc: Math.floor(timestamp / 5000) * 5000,
|
|
||||||
local: Math.floor(timestamp / 5000) * 5000,
|
|
||||||
url: IMAGE_SAMPLES[Math.floor(timestamp / 5000) % IMAGE_SAMPLES.length]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var realtimeProvider = {
|
|
||||||
supportsSubscribe: function (domainObject) {
|
|
||||||
return domainObject.type === 'example.imagery';
|
|
||||||
},
|
|
||||||
subscribe: function (domainObject, callback) {
|
|
||||||
var interval = setInterval(function () {
|
|
||||||
callback(pointForTimestamp(Date.now(), domainObject.name));
|
|
||||||
}, 5000);
|
|
||||||
|
|
||||||
return function () {
|
|
||||||
clearInterval(interval);
|
|
||||||
};
|
};
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var historicalProvider = {
|
object.telemetry = {
|
||||||
supportsRequest: function (domainObject, options) {
|
values: [
|
||||||
return domainObject.type === 'example.imagery'
|
{
|
||||||
&& options.strategy !== 'latest';
|
name: 'Name',
|
||||||
},
|
key: 'name'
|
||||||
request: function (domainObject, options) {
|
},
|
||||||
var start = options.start;
|
{
|
||||||
var end = Math.min(options.end, Date.now());
|
name: 'Time',
|
||||||
var data = [];
|
key: 'utc',
|
||||||
while (start <= end && data.length < 5000) {
|
format: 'utc',
|
||||||
data.push(pointForTimestamp(start, domainObject.name));
|
hints: {
|
||||||
start += 5000;
|
domain: 2
|
||||||
}
|
|
||||||
return Promise.resolve(data);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var ladProvider = {
|
|
||||||
supportsRequest: function (domainObject, options) {
|
|
||||||
return domainObject.type === 'example.imagery' &&
|
|
||||||
options.strategy === 'latest';
|
|
||||||
},
|
|
||||||
request: function (domainObject, options) {
|
|
||||||
return Promise.resolve([pointForTimestamp(Date.now(), domainObject.name)]);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
return function install(openmct) {
|
|
||||||
openmct.types.addType('example.imagery', {
|
|
||||||
key: 'example.imagery',
|
|
||||||
name: 'Example Imagery',
|
|
||||||
cssClass: 'icon-image',
|
|
||||||
description: 'For development use. Creates example imagery ' +
|
|
||||||
'data that mimics a live imagery stream.',
|
|
||||||
creatable: true,
|
|
||||||
initialize: function (object) {
|
|
||||||
object.telemetry = {
|
|
||||||
values: [
|
|
||||||
{
|
|
||||||
name: 'Name',
|
|
||||||
key: 'name'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Time',
|
|
||||||
key: 'utc',
|
|
||||||
format: 'utc',
|
|
||||||
hints: {
|
|
||||||
domain: 2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Local Time',
|
|
||||||
key: 'local',
|
|
||||||
format: 'local-format',
|
|
||||||
hints: {
|
|
||||||
domain: 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Image',
|
|
||||||
key: 'url',
|
|
||||||
format: 'image',
|
|
||||||
hints: {
|
|
||||||
image: 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
},
|
||||||
}
|
{
|
||||||
|
name: 'Local Time',
|
||||||
|
key: 'local',
|
||||||
|
format: 'local-format',
|
||||||
|
hints: {
|
||||||
|
domain: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Image',
|
||||||
|
key: 'url',
|
||||||
|
format: 'image',
|
||||||
|
hints: {
|
||||||
|
image: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Image Download Name',
|
||||||
|
key: 'imageDownloadName',
|
||||||
|
format: 'imageDownloadName',
|
||||||
|
hints: {
|
||||||
|
imageDownloadName: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
form: [
|
||||||
|
{
|
||||||
|
key: 'imageLocation',
|
||||||
|
name: 'Images url list (comma separated)',
|
||||||
|
control: 'textarea',
|
||||||
|
cssClass: 'l-inline',
|
||||||
|
property: [
|
||||||
|
"configuration",
|
||||||
|
"imageLocation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'imageLoadDelayInMilliSeconds',
|
||||||
|
name: 'Image load delay (milliseconds)',
|
||||||
|
control: 'numberfield',
|
||||||
|
required: true,
|
||||||
|
cssClass: 'l-inline',
|
||||||
|
property: [
|
||||||
|
"configuration",
|
||||||
|
"imageLoadDelayInMilliSeconds"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
});
|
]
|
||||||
|
});
|
||||||
|
|
||||||
openmct.telemetry.addProvider(realtimeProvider);
|
openmct.telemetry.addProvider(getRealtimeProvider());
|
||||||
openmct.telemetry.addProvider(historicalProvider);
|
openmct.telemetry.addProvider(getHistoricalProvider());
|
||||||
openmct.telemetry.addProvider(ladProvider);
|
openmct.telemetry.addProvider(getLadProvider());
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCompassValues(min, max) {
|
||||||
|
return min + Math.random() * (max - min);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getImageSamples(configuration) {
|
||||||
|
let imageSamples = DEFAULT_IMAGE_SAMPLES;
|
||||||
|
|
||||||
|
if (configuration.imageLocation && configuration.imageLocation.length) {
|
||||||
|
imageSamples = getImageUrlListFromConfig(configuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ImageryPlugin;
|
return imageSamples;
|
||||||
});
|
}
|
||||||
|
|
||||||
|
function getImageUrlListFromConfig(configuration) {
|
||||||
|
return configuration.imageLocation.split(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
function getImageLoadDelay(domainObject) {
|
||||||
|
const imageLoadDelay = domainObject.configuration.imageLoadDelayInMilliSeconds;
|
||||||
|
if (!imageLoadDelay) {
|
||||||
|
openmctInstance.objects.mutate(domainObject, 'configuration.imageLoadDelayInMilliSeconds', DEFAULT_IMAGE_LOAD_DELAY_IN_MILISECONDS);
|
||||||
|
|
||||||
|
return DEFAULT_IMAGE_LOAD_DELAY_IN_MILISECONDS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imageLoadDelay < MIN_IMAGE_LOAD_DELAY_IN_MILISECONDS) {
|
||||||
|
openmctInstance.objects.mutate(domainObject, 'configuration.imageLoadDelayInMilliSeconds', MIN_IMAGE_LOAD_DELAY_IN_MILISECONDS);
|
||||||
|
|
||||||
|
return MIN_IMAGE_LOAD_DELAY_IN_MILISECONDS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return imageLoadDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRealtimeProvider() {
|
||||||
|
return {
|
||||||
|
supportsSubscribe: domainObject => domainObject.type === 'example.imagery',
|
||||||
|
subscribe: (domainObject, callback) => {
|
||||||
|
const delay = getImageLoadDelay(domainObject);
|
||||||
|
const interval = setInterval(() => {
|
||||||
|
callback(pointForTimestamp(Date.now(), domainObject.name, getImageSamples(domainObject.configuration), delay));
|
||||||
|
}, delay);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
clearInterval(interval);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHistoricalProvider() {
|
||||||
|
return {
|
||||||
|
supportsRequest: (domainObject, options) => {
|
||||||
|
return domainObject.type === 'example.imagery'
|
||||||
|
&& options.strategy !== 'latest';
|
||||||
|
},
|
||||||
|
request: (domainObject, options) => {
|
||||||
|
const delay = getImageLoadDelay(domainObject);
|
||||||
|
let start = options.start;
|
||||||
|
const end = Math.min(options.end, Date.now());
|
||||||
|
const data = [];
|
||||||
|
while (start <= end && data.length < delay) {
|
||||||
|
data.push(pointForTimestamp(start, domainObject.name, getImageSamples(domainObject.configuration), delay));
|
||||||
|
start += delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.resolve(data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLadProvider() {
|
||||||
|
return {
|
||||||
|
supportsRequest: (domainObject, options) => {
|
||||||
|
return domainObject.type === 'example.imagery'
|
||||||
|
&& options.strategy === 'latest';
|
||||||
|
},
|
||||||
|
request: (domainObject, options) => {
|
||||||
|
const delay = getImageLoadDelay(domainObject);
|
||||||
|
|
||||||
|
return Promise.resolve([pointForTimestamp(Date.now(), domainObject.name, delay)]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function pointForTimestamp(timestamp, name, imageSamples, delay) {
|
||||||
|
const url = imageSamples[Math.floor(timestamp / delay) % imageSamples.length];
|
||||||
|
const urlItems = url.split('/');
|
||||||
|
const imageDownloadName = `example.imagery.${urlItems[urlItems.length - 1]}`;
|
||||||
|
|
||||||
|
return {
|
||||||
|
name,
|
||||||
|
utc: Math.floor(timestamp / delay) * delay,
|
||||||
|
local: Math.floor(timestamp / delay) * delay,
|
||||||
|
url,
|
||||||
|
sunOrientation: getCompassValues(0, 360),
|
||||||
|
cameraPan: getCompassValues(0, 360),
|
||||||
|
heading: getCompassValues(0, 360),
|
||||||
|
imageDownloadName
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,13 +19,12 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([], function () {
|
define([], function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/mobile",
|
name: "example/mobile",
|
||||||
definition: {
|
definition: {
|
||||||
"name": "Mobile",
|
"name": "Mobile",
|
||||||
"description": "Allows elements with pertinence to mobile usage and development",
|
"description": "Allows elements with pertinence to mobile usage and development",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/RemsTelemetryServerAdapter",
|
"./src/RemsTelemetryServerAdapter",
|
||||||
@ -31,14 +30,15 @@ define([
|
|||||||
RemsTelemetryProvider
|
RemsTelemetryProvider
|
||||||
) {
|
) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/msl",
|
name: "example/msl",
|
||||||
definition: {
|
definition: {
|
||||||
"name" : "Mars Science Laboratory Data Adapter",
|
"name": "Mars Science Laboratory Data Adapter",
|
||||||
"extensions" : {
|
"extensions": {
|
||||||
"types": [
|
"types": [
|
||||||
{
|
{
|
||||||
"name":"Mars Science Laboratory",
|
"name": "Mars Science Laboratory",
|
||||||
"key": "msl.curiosity",
|
"key": "msl.curiosity",
|
||||||
"cssClass": "icon-object"
|
"cssClass": "icon-object"
|
||||||
},
|
},
|
||||||
@ -89,7 +89,7 @@ define([
|
|||||||
],
|
],
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{
|
||||||
"key":"rems.adapter",
|
"key": "rems.adapter",
|
||||||
"implementation": RemsTelemetryServerAdapter,
|
"implementation": RemsTelemetryServerAdapter,
|
||||||
"depends": ["$http", "$log", "REMS_WS_URL"]
|
"depends": ["$http", "$log", "REMS_WS_URL"]
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -38,7 +37,7 @@ define(
|
|||||||
"identifier": "msl",
|
"identifier": "msl",
|
||||||
"instruments": [
|
"instruments": [
|
||||||
{
|
{
|
||||||
"name":"rems",
|
"name": "rems",
|
||||||
"identifier": "rems",
|
"identifier": "rems",
|
||||||
"measurements": [
|
"measurements": [
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
function () {
|
function () {
|
||||||
@ -81,6 +80,7 @@ define(
|
|||||||
(dictionary.instruments || []).forEach(function (instrument) {
|
(dictionary.instruments || []).forEach(function (instrument) {
|
||||||
addInstrument(instrument, "msl:curiosity");
|
addInstrument(instrument, "msl:curiosity");
|
||||||
});
|
});
|
||||||
|
|
||||||
return models;
|
return models;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,6 +90,7 @@ define(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return RemsTelemetryModelProvider;
|
return RemsTelemetryModelProvider;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define */
|
|
||||||
define (
|
define (
|
||||||
['./RemsTelemetrySeries'],
|
['./RemsTelemetrySeries'],
|
||||||
function (RemsTelemetrySeries) {
|
function (RemsTelemetrySeries) {
|
||||||
@ -74,6 +73,7 @@ define (
|
|||||||
RemsTelemetryProvider.prototype.subscribe = function (callback, requests) {
|
RemsTelemetryProvider.prototype.subscribe = function (callback, requests) {
|
||||||
return function () {};
|
return function () {};
|
||||||
};
|
};
|
||||||
|
|
||||||
RemsTelemetryProvider.prototype.unsubscribe = function (callback, requests) {
|
RemsTelemetryProvider.prototype.unsubscribe = function (callback, requests) {
|
||||||
return function () {};
|
return function () {};
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define */
|
|
||||||
define(
|
define(
|
||||||
function () {
|
function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
@ -57,6 +56,7 @@ define(
|
|||||||
RemsTelemetrySeries.prototype.getPointCount = function () {
|
RemsTelemetrySeries.prototype.getPointCount = function () {
|
||||||
return this.data.length;
|
return this.data.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The domain value at the given index. The Rems telemetry data is
|
* The domain value at the given index. The Rems telemetry data is
|
||||||
* time ordered, so the domain value is the time stamp of each data
|
* time ordered, so the domain value is the time stamp of each data
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
/*jslint es5: true */
|
/*jslint es5: true */
|
||||||
|
|
||||||
define(
|
define(
|
||||||
@ -95,28 +94,32 @@ define(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fallbackToLocal() {
|
function fallbackToLocal() {
|
||||||
self.$log.warn("Loading REMS data failed, probably due to" +
|
self.$log.warn("Loading REMS data failed, probably due to"
|
||||||
" cross origin policy. Falling back to local data");
|
+ " cross origin policy. Falling back to local data");
|
||||||
|
|
||||||
return self.$http.get(self.localDataURI);
|
return self.$http.get(self.localDataURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Filter results to match request parameters
|
//Filter results to match request parameters
|
||||||
function filterResults(results) {
|
function filterResults(results) {
|
||||||
return results.filter(function (result) {
|
return results.filter(function (result) {
|
||||||
return result.date >= (request.start || Number.MIN_VALUE) &&
|
return result.date >= (request.start || Number.MIN_VALUE)
|
||||||
result.date <= (request.end || Number.MAX_VALUE);
|
&& result.date <= (request.end || Number.MAX_VALUE);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function packageAndResolve(results) {
|
function packageAndResolve(results) {
|
||||||
return {id: id, values: results};
|
return {
|
||||||
|
id: id,
|
||||||
|
values: results
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return (this.promise = this.promise || this.$http.get(this.REMS_WS_URL))
|
return (this.promise = this.promise || this.$http.get(this.REMS_WS_URL))
|
||||||
.catch(fallbackToLocal)
|
.catch(fallbackToLocal)
|
||||||
.then(processResponse)
|
.then(processResponse)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/DialogLaunchController",
|
"./src/DialogLaunchController",
|
||||||
@ -39,7 +38,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/notifications",
|
name: "example/notifications",
|
||||||
definition: {
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"templates": [
|
"templates": [
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -91,7 +90,6 @@ define(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Demonstrates launching an error dialog
|
Demonstrates launching an error dialog
|
||||||
*/
|
*/
|
||||||
@ -132,9 +130,9 @@ define(
|
|||||||
var dialog,
|
var dialog,
|
||||||
model = {
|
model = {
|
||||||
title: "Info Dialog Example",
|
title: "Info Dialog Example",
|
||||||
actionText: "This is an example of a blocking info" +
|
actionText: "This is an example of a blocking info"
|
||||||
" dialog. This dialog can be used to draw the user's" +
|
+ " dialog. This dialog can be used to draw the user's"
|
||||||
" attention to an event.",
|
+ " attention to an event.",
|
||||||
severity: "info",
|
severity: "info",
|
||||||
primaryOption: {
|
primaryOption: {
|
||||||
label: "OK",
|
label: "OK",
|
||||||
@ -153,6 +151,7 @@ define(
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return DialogLaunchController;
|
return DialogLaunchController;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define,window*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -42,9 +41,11 @@ define(
|
|||||||
DialogLaunchIndicator.prototype.getGlyphClass = function () {
|
DialogLaunchIndicator.prototype.getGlyphClass = function () {
|
||||||
return 'ok';
|
return 'ok';
|
||||||
};
|
};
|
||||||
|
|
||||||
DialogLaunchIndicator.prototype.getText = function () {
|
DialogLaunchIndicator.prototype.getText = function () {
|
||||||
return "Launch test dialog";
|
return "Launch test dialog";
|
||||||
};
|
};
|
||||||
|
|
||||||
DialogLaunchIndicator.prototype.getDescription = function () {
|
DialogLaunchIndicator.prototype.getDescription = function () {
|
||||||
return "Launch test dialog";
|
return "Launch test dialog";
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -48,7 +47,8 @@ define(
|
|||||||
"Eros turpis, pulvinar turpis eros eu",
|
"Eros turpis, pulvinar turpis eros eu",
|
||||||
"Lundium nascetur a, lectus montes ac, parturient in natoque, duis risus risus pulvinar pid rhoncus, habitasse auctor natoque!"
|
"Lundium nascetur a, lectus montes ac, parturient in natoque, duis risus risus pulvinar pid rhoncus, habitasse auctor natoque!"
|
||||||
];
|
];
|
||||||
return actionTexts[Math.floor(Math.random()*3)];
|
|
||||||
|
return actionTexts[Math.floor(Math.random() * 3)];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,6 +61,7 @@ define(
|
|||||||
severity: "error"
|
severity: "error"
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Launch a new notification with a severity of 'Alert'.
|
* Launch a new notification with a severity of 'Alert'.
|
||||||
*/
|
*/
|
||||||
@ -73,7 +74,6 @@ define(
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Launch a new notification with a progress bar that is updated
|
* Launch a new notification with a progress bar that is updated
|
||||||
* periodically, tracking an ongoing process.
|
* periodically, tracking an ongoing process.
|
||||||
@ -93,10 +93,10 @@ define(
|
|||||||
* @param notification
|
* @param notification
|
||||||
*/
|
*/
|
||||||
function incrementProgress() {
|
function incrementProgress() {
|
||||||
progress = Math.min(100, Math.floor(progress + Math.random() * 30))
|
progress = Math.min(100, Math.floor(progress + Math.random() * 30));
|
||||||
let progressText = ["Estimated time" +
|
let progressText = ["Estimated time"
|
||||||
" remaining:" +
|
+ " remaining:"
|
||||||
" about ", 60 - Math.floor((progress / 100) * 60), " seconds"].join(" ");
|
+ " about ", 60 - Math.floor((progress / 100) * 60), " seconds"].join(" ");
|
||||||
notification.progress(progress, progressText);
|
notification.progress(progress, progressText);
|
||||||
|
|
||||||
if (progress < 100) {
|
if (progress < 100) {
|
||||||
@ -120,6 +120,7 @@ define(
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NotificationLaunchController;
|
return NotificationLaunchController;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define,window*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -42,9 +41,11 @@ define(
|
|||||||
NotificationLaunchIndicator.prototype.getGlyphClass = function () {
|
NotificationLaunchIndicator.prototype.getGlyphClass = function () {
|
||||||
return 'ok';
|
return 'ok';
|
||||||
};
|
};
|
||||||
|
|
||||||
NotificationLaunchIndicator.prototype.getText = function () {
|
NotificationLaunchIndicator.prototype.getText = function () {
|
||||||
return "Launch notification";
|
return "Launch notification";
|
||||||
};
|
};
|
||||||
|
|
||||||
NotificationLaunchIndicator.prototype.getDescription = function () {
|
NotificationLaunchIndicator.prototype.getDescription = function () {
|
||||||
return "Launch notification";
|
return "Launch notification";
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/BrowserPersistenceProvider"
|
"./src/BrowserPersistenceProvider"
|
||||||
@ -29,7 +28,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/persistence",
|
name: "example/persistence",
|
||||||
definition: {
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"components": [
|
"components": [
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stubbed implementation of a persistence provider,
|
* Stubbed implementation of a persistence provider,
|
||||||
@ -30,8 +29,6 @@ define(
|
|||||||
function () {
|
function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function BrowserPersistenceProvider($q, SPACE) {
|
function BrowserPersistenceProvider($q, SPACE) {
|
||||||
var spaces = SPACE ? [SPACE] : [],
|
var spaces = SPACE ? [SPACE] : [],
|
||||||
caches = {},
|
caches = {},
|
||||||
@ -51,6 +48,7 @@ define(
|
|||||||
},
|
},
|
||||||
listObjects: function (space) {
|
listObjects: function (space) {
|
||||||
var cache = caches[space];
|
var cache = caches[space];
|
||||||
|
|
||||||
return promises.as(
|
return promises.as(
|
||||||
cache ? Object.keys(cache) : null
|
cache ? Object.keys(cache) : null
|
||||||
);
|
);
|
||||||
@ -68,6 +66,7 @@ define(
|
|||||||
},
|
},
|
||||||
readObject: function (space, key) {
|
readObject: function (space, key) {
|
||||||
var cache = caches[space];
|
var cache = caches[space];
|
||||||
|
|
||||||
return promises.as(
|
return promises.as(
|
||||||
cache ? cache[key] : null
|
cache ? cache[key] : null
|
||||||
);
|
);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ExamplePolicy"
|
"./src/ExamplePolicy"
|
||||||
@ -29,7 +28,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/policy",
|
name: "example/policy",
|
||||||
definition: {
|
definition: {
|
||||||
"name": "Example Policy",
|
"name": "Example Policy",
|
||||||
"description": "Provides an example of using policies to prohibit actions.",
|
"description": "Provides an example of using policies to prohibit actions.",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -37,6 +36,7 @@ define(
|
|||||||
model = (domainObject && domainObject.getModel()) || {},
|
model = (domainObject && domainObject.getModel()) || {},
|
||||||
name = model.name || "",
|
name = model.name || "",
|
||||||
metadata = action.getMetadata() || {};
|
metadata = action.getMetadata() || {};
|
||||||
|
|
||||||
return metadata.key !== 'remove' || name.indexOf('foo') < 0;
|
return metadata.key !== 'remove' || name.indexOf('foo') < 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/WatchIndicator",
|
"./src/WatchIndicator",
|
||||||
@ -31,7 +30,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/profiling",
|
name: "example/profiling",
|
||||||
definition: {
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"indicators": [
|
"indicators": [
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define([
|
define([
|
||||||
"./src/ScratchPersistenceProvider"
|
"./src/ScratchPersistenceProvider"
|
||||||
@ -29,7 +28,7 @@ define([
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name:"example/scratchpad",
|
name: "example/scratchpad",
|
||||||
definition: {
|
definition: {
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"roots": [
|
"roots": [
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -20,8 +20,6 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
/*global define,window*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
function () {
|
function () {
|
||||||
@ -54,13 +52,14 @@ define(
|
|||||||
if (space === 'scratch') {
|
if (space === 'scratch') {
|
||||||
this.table[key] = JSON.stringify(value);
|
this.table[key] = JSON.stringify(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.$q.when(space === 'scratch');
|
return this.$q.when(space === 'scratch');
|
||||||
};
|
};
|
||||||
|
|
||||||
ScratchPersistenceProvider.prototype.readObject = function (space, key) {
|
ScratchPersistenceProvider.prototype.readObject = function (space, key) {
|
||||||
return this.$q.when(
|
return this.$q.when(
|
||||||
(space === 'scratch' && this.table[key]) ?
|
(space === 'scratch' && this.table[key])
|
||||||
JSON.parse(this.table[key]) : undefined
|
? JSON.parse(this.table[key]) : undefined
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -68,6 +67,7 @@ define(
|
|||||||
if (space === 'scratch') {
|
if (space === 'scratch') {
|
||||||
delete this.table[key];
|
delete this.table[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.$q.when(space === 'scratch');
|
return this.$q.when(space === 'scratch');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
msg: 'Hello world!'
|
msg: 'Hello world!'
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Vue from 'Vue';
|
import Vue from 'vue';
|
||||||
import HelloWorld from './HelloWorld.vue';
|
import HelloWorld from './HelloWorld.vue';
|
||||||
|
|
||||||
function SimpleVuePlugin() {
|
function SimpleVuePlugin() {
|
||||||
@ -17,6 +17,7 @@ function SimpleVuePlugin() {
|
|||||||
},
|
},
|
||||||
view: function (domainObject) {
|
view: function (domainObject) {
|
||||||
var vm;
|
var vm;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
show: function (container) {
|
show: function (container) {
|
||||||
vm = new Vue(HelloWorld);
|
vm = new Vue(HelloWorld);
|
||||||
@ -29,7 +30,7 @@ function SimpleVuePlugin() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SimpleVuePlugin
|
export default SimpleVuePlugin;
|
||||||
|
@ -22,31 +22,111 @@ define([
|
|||||||
menusTemplate
|
menusTemplate
|
||||||
) {
|
) {
|
||||||
return {
|
return {
|
||||||
name:"example/styleguide",
|
name: "example/styleguide",
|
||||||
definition: {
|
definition: {
|
||||||
"name": "Open MCT Style Guide",
|
"name": "Open MCT Style Guide",
|
||||||
"description": "Examples and documentation illustrating UI styles in use in Open MCT.",
|
"description": "Examples and documentation illustrating UI styles in use in Open MCT.",
|
||||||
"extensions":
|
"extensions":
|
||||||
{
|
{
|
||||||
"types": [
|
"types": [
|
||||||
{ "key": "styleguide.intro", "name": "Introduction", "cssClass": "icon-page", "description": "Introduction and overview to the style guide" },
|
{
|
||||||
{ "key": "styleguide.standards", "name": "Standards", "cssClass": "icon-page", "description": "" },
|
"key": "styleguide.intro",
|
||||||
{ "key": "styleguide.colors", "name": "Colors", "cssClass": "icon-page", "description": "" },
|
"name": "Introduction",
|
||||||
{ "key": "styleguide.status", "name": "status", "cssClass": "icon-page", "description": "Limits, telemetry paused, etc." },
|
"cssClass": "icon-page",
|
||||||
{ "key": "styleguide.glyphs", "name": "Glyphs", "cssClass": "icon-page", "description": "Glyphs overview" },
|
"description": "Introduction and overview to the style guide"
|
||||||
{ "key": "styleguide.controls", "name": "Controls", "cssClass": "icon-page", "description": "Buttons, selects, HTML controls" },
|
},
|
||||||
{ "key": "styleguide.input", "name": "Text Inputs", "cssClass": "icon-page", "description": "Various text inputs" },
|
{
|
||||||
{ "key": "styleguide.menus", "name": "Menus", "cssClass": "icon-page", "description": "Context menus, dropdowns" }
|
"key": "styleguide.standards",
|
||||||
|
"name": "Standards",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.colors",
|
||||||
|
"name": "Colors",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.status",
|
||||||
|
"name": "status",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": "Limits, telemetry paused, etc."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.glyphs",
|
||||||
|
"name": "Glyphs",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": "Glyphs overview"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.controls",
|
||||||
|
"name": "Controls",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": "Buttons, selects, HTML controls"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.input",
|
||||||
|
"name": "Text Inputs",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": "Various text inputs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.menus",
|
||||||
|
"name": "Menus",
|
||||||
|
"cssClass": "icon-page",
|
||||||
|
"description": "Context menus, dropdowns"
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"views": [
|
"views": [
|
||||||
{ "key": "styleguide.intro", "type": "styleguide.intro", "template": introTemplate, "editable": false },
|
{
|
||||||
{ "key": "styleguide.standards", "type": "styleguide.standards", "template": standardsTemplate, "editable": false },
|
"key": "styleguide.intro",
|
||||||
{ "key": "styleguide.colors", "type": "styleguide.colors", "template": colorsTemplate, "editable": false },
|
"type": "styleguide.intro",
|
||||||
{ "key": "styleguide.status", "type": "styleguide.status", "template": statusTemplate, "editable": false },
|
"template": introTemplate,
|
||||||
{ "key": "styleguide.glyphs", "type": "styleguide.glyphs", "template": glyphsTemplate, "editable": false },
|
"editable": false
|
||||||
{ "key": "styleguide.controls", "type": "styleguide.controls", "template": controlsTemplate, "editable": false },
|
},
|
||||||
{ "key": "styleguide.input", "type": "styleguide.input", "template": inputTemplate, "editable": false },
|
{
|
||||||
{ "key": "styleguide.menus", "type": "styleguide.menus", "template": menusTemplate, "editable": false }
|
"key": "styleguide.standards",
|
||||||
|
"type": "styleguide.standards",
|
||||||
|
"template": standardsTemplate,
|
||||||
|
"editable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.colors",
|
||||||
|
"type": "styleguide.colors",
|
||||||
|
"template": colorsTemplate,
|
||||||
|
"editable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.status",
|
||||||
|
"type": "styleguide.status",
|
||||||
|
"template": statusTemplate,
|
||||||
|
"editable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.glyphs",
|
||||||
|
"type": "styleguide.glyphs",
|
||||||
|
"template": glyphsTemplate,
|
||||||
|
"editable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.controls",
|
||||||
|
"type": "styleguide.controls",
|
||||||
|
"template": controlsTemplate,
|
||||||
|
"editable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.input",
|
||||||
|
"type": "styleguide.input",
|
||||||
|
"template": inputTemplate,
|
||||||
|
"editable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "styleguide.menus",
|
||||||
|
"type": "styleguide.menus",
|
||||||
|
"template": menusTemplate,
|
||||||
|
"editable": false
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"roots": [
|
"roots": [
|
||||||
{
|
{
|
||||||
@ -56,9 +136,9 @@ define([
|
|||||||
"models": [
|
"models": [
|
||||||
{
|
{
|
||||||
"id": "styleguide:home",
|
"id": "styleguide:home",
|
||||||
"priority" : "preferred",
|
"priority": "preferred",
|
||||||
"model": {
|
"model": {
|
||||||
"type": "folder",
|
"type": "noneditable.folder",
|
||||||
"name": "Style Guide Home",
|
"name": "Style Guide Home",
|
||||||
"location": "ROOT",
|
"location": "ROOT",
|
||||||
"composition": [
|
"composition": [
|
||||||
@ -73,9 +153,9 @@ define([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "styleguide:ui-elements",
|
"id": "styleguide:ui-elements",
|
||||||
"priority" : "preferred",
|
"priority": "preferred",
|
||||||
"model": {
|
"model": {
|
||||||
"type": "folder",
|
"type": "noneditable.folder",
|
||||||
"name": "UI Elements",
|
"name": "UI Elements",
|
||||||
"location": "styleguide:home",
|
"location": "styleguide:home",
|
||||||
"composition": [
|
"composition": [
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
<h2>How to Use Glyphs</h2>
|
<h2>How to Use Glyphs</h2>
|
||||||
<div class="cols cols1-1">
|
<div class="cols cols1-1">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<p>The easiest way to use a glyph is to include its CSS class in an element. The CSS adds a psuedo <code>:before</code> HTML element to whatever element it's attached to that makes proper use of the symbols font.</p>
|
<p>The easiest way to use a glyph is to include its CSS class in an element. The CSS adds a pseudo <code>:before</code> HTML element to whatever element it's attached to that makes proper use of the symbols font.</p>
|
||||||
<p>Alternately, you can use the <code>.ui-symbol</code> class in an object that contains encoded HTML entities. This method is only recommended if you cannot use the aforementioned CSS class approach.</p>
|
<p>Alternately, you can use the <code>.ui-symbol</code> class in an object that contains encoded HTML entities. This method is only recommended if you cannot use the aforementioned CSS class approach.</p>
|
||||||
</div>
|
</div>
|
||||||
<mct-example><a class="s-button icon-gear" title="Settings"></a>
|
<mct-example><a class="s-button icon-gear" title="Settings"></a>
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
* 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 define*/
|
|
||||||
|
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -30,14 +29,46 @@ define(
|
|||||||
var pages = {};
|
var pages = {};
|
||||||
|
|
||||||
// Add pages
|
// Add pages
|
||||||
pages.intro = { name: "Introduction", type: "styleguide.intro", location: "styleguide:home" };
|
pages.intro = {
|
||||||
pages.standards = { name: "Standards", type: "styleguide.standards", location: "styleguide:home" };
|
name: "Introduction",
|
||||||
pages.colors = { name: "Colors", type: "styleguide.colors", location: "styleguide:home" };
|
type: "styleguide.intro",
|
||||||
pages.glyphs = { name: "Glyphs", type: "styleguide.glyphs", location: "styleguide:home" };
|
location: "styleguide:home"
|
||||||
pages.status = { name: "Status Indication", type: "styleguide.status", location: "styleguide:home" };
|
};
|
||||||
pages.controls = { name: "Controls", type: "styleguide.controls", location: "styleguide:ui-elements" };
|
pages.standards = {
|
||||||
pages.input = { name: "Text Inputs", type: "styleguide.input", location: "styleguide:ui-elements" };
|
name: "Standards",
|
||||||
pages.menus = { name: "Menus", type: "styleguide.menus", location: "styleguide:ui-elements" };
|
type: "styleguide.standards",
|
||||||
|
location: "styleguide:home"
|
||||||
|
};
|
||||||
|
pages.colors = {
|
||||||
|
name: "Colors",
|
||||||
|
type: "styleguide.colors",
|
||||||
|
location: "styleguide:home"
|
||||||
|
};
|
||||||
|
pages.glyphs = {
|
||||||
|
name: "Glyphs",
|
||||||
|
type: "styleguide.glyphs",
|
||||||
|
location: "styleguide:home"
|
||||||
|
};
|
||||||
|
pages.status = {
|
||||||
|
name: "Status Indication",
|
||||||
|
type: "styleguide.status",
|
||||||
|
location: "styleguide:home"
|
||||||
|
};
|
||||||
|
pages.controls = {
|
||||||
|
name: "Controls",
|
||||||
|
type: "styleguide.controls",
|
||||||
|
location: "styleguide:ui-elements"
|
||||||
|
};
|
||||||
|
pages.input = {
|
||||||
|
name: "Text Inputs",
|
||||||
|
type: "styleguide.input",
|
||||||
|
location: "styleguide:ui-elements"
|
||||||
|
};
|
||||||
|
pages.menus = {
|
||||||
|
name: "Menus",
|
||||||
|
type: "styleguide.menus",
|
||||||
|
location: "styleguide:ui-elements"
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getModels: function () {
|
getModels: function () {
|
||||||
@ -46,6 +77,6 @@ define(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return ExampleStyleGuideModelProvider
|
return ExampleStyleGuideModelProvider;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
107
index.html
107
index.html
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
Open MCT, Copyright (c) 2014-2020, United States Government
|
Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
as represented by the Administrator of the National Aeronautics and Space
|
||||||
Administration. All rights reserved.
|
Administration. All rights reserved.
|
||||||
|
|
||||||
@ -30,24 +30,61 @@
|
|||||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-96x96.png" sizes="96x96" type="image/x-icon">
|
<link rel="icon" type="image/png" href="dist/favicons/favicon-96x96.png" sizes="96x96" type="image/x-icon">
|
||||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-32x32.png" sizes="32x32" type="image/x-icon">
|
<link rel="icon" type="image/png" href="dist/favicons/favicon-32x32.png" sizes="32x32" type="image/x-icon">
|
||||||
<link rel="icon" type="image/png" href="dist/favicons/favicon-16x16.png" sizes="16x16" type="image/x-icon">
|
<link rel="icon" type="image/png" href="dist/favicons/favicon-16x16.png" sizes="16x16" type="image/x-icon">
|
||||||
|
<style type="text/css">
|
||||||
|
@keyframes splash-spinner {
|
||||||
|
0% {
|
||||||
|
transform: translate(-50%, -50%) rotate(0deg); }
|
||||||
|
100% {
|
||||||
|
transform: translate(-50%, -50%) rotate(360deg); } }
|
||||||
|
|
||||||
|
#splash-screen {
|
||||||
|
background-color: black;
|
||||||
|
position: absolute;
|
||||||
|
top: 0; right: 0; bottom: 0; left: 0;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#splash-screen:before {
|
||||||
|
animation-name: splash-spinner;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
border-radius: 50%;
|
||||||
|
border-color: rgba(255,255,255,0.25);
|
||||||
|
border-top-color: white;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 10px;
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
opacity: 0.25;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%; top: 50%;
|
||||||
|
height: 100px; width: 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
const THIRTY_SECONDS = 30 * 1000;
|
const THIRTY_SECONDS = 30 * 1000;
|
||||||
const THIRTY_MINUTES = THIRTY_SECONDS * 60;
|
const ONE_MINUTE = THIRTY_SECONDS * 2;
|
||||||
|
const FIVE_MINUTES = ONE_MINUTE * 5;
|
||||||
|
const FIFTEEN_MINUTES = FIVE_MINUTES * 3;
|
||||||
|
const THIRTY_MINUTES = FIFTEEN_MINUTES * 2;
|
||||||
|
const ONE_HOUR = THIRTY_MINUTES * 2;
|
||||||
|
const TWO_HOURS = ONE_HOUR * 2;
|
||||||
|
const ONE_DAY = ONE_HOUR * 24;
|
||||||
|
|
||||||
[
|
|
||||||
'example/eventGenerator'
|
|
||||||
].forEach(
|
|
||||||
openmct.legacyRegistry.enable.bind(openmct.legacyRegistry)
|
|
||||||
);
|
|
||||||
|
|
||||||
openmct.install(openmct.plugins.LocalStorage());
|
openmct.install(openmct.plugins.LocalStorage());
|
||||||
|
|
||||||
openmct.install(openmct.plugins.Espresso());
|
openmct.install(openmct.plugins.Espresso());
|
||||||
openmct.install(openmct.plugins.MyItems());
|
openmct.install(openmct.plugins.MyItems());
|
||||||
openmct.install(openmct.plugins.Generator());
|
openmct.install(openmct.plugins.Generator());
|
||||||
openmct.install(openmct.plugins.ExampleImagery());
|
openmct.install(openmct.plugins.ExampleImagery());
|
||||||
|
openmct.install(openmct.plugins.PlanLayout());
|
||||||
|
openmct.install(openmct.plugins.Timeline());
|
||||||
|
openmct.install(openmct.plugins.Hyperlink());
|
||||||
openmct.install(openmct.plugins.UTCTimeSystem());
|
openmct.install(openmct.plugins.UTCTimeSystem());
|
||||||
openmct.install(openmct.plugins.AutoflowView({
|
openmct.install(openmct.plugins.AutoflowView({
|
||||||
type: "telemetry.panel"
|
type: "telemetry.panel"
|
||||||
@ -72,30 +109,30 @@
|
|||||||
{
|
{
|
||||||
label: 'Last Day',
|
label: 'Last Day',
|
||||||
bounds: {
|
bounds: {
|
||||||
start: () => Date.now() - 1000 * 60 * 60 * 24,
|
start: () => Date.now() - ONE_DAY,
|
||||||
end: () => Date.now()
|
end: () => Date.now()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Last 2 hours',
|
label: 'Last 2 hours',
|
||||||
bounds: {
|
bounds: {
|
||||||
start: () => Date.now() - 1000 * 60 * 60 * 2,
|
start: () => Date.now() - TWO_HOURS,
|
||||||
end: () => Date.now()
|
end: () => Date.now()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Last hour',
|
label: 'Last hour',
|
||||||
bounds: {
|
bounds: {
|
||||||
start: () => Date.now() - 1000 * 60 * 60,
|
start: () => Date.now() - ONE_HOUR,
|
||||||
end: () => Date.now()
|
end: () => Date.now()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
// maximum recent bounds to retain in conductor history
|
// maximum recent bounds to retain in conductor history
|
||||||
records: 10,
|
records: 10
|
||||||
// maximum duration between start and end bounds
|
// maximum duration between start and end bounds
|
||||||
// for utc-based time systems this is in milliseconds
|
// for utc-based time systems this is in milliseconds
|
||||||
limit: 1000 * 60 * 60 * 24
|
// limit: ONE_DAY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Realtime",
|
name: "Realtime",
|
||||||
@ -104,7 +141,44 @@
|
|||||||
clockOffsets: {
|
clockOffsets: {
|
||||||
start: - THIRTY_MINUTES,
|
start: - THIRTY_MINUTES,
|
||||||
end: THIRTY_SECONDS
|
end: THIRTY_SECONDS
|
||||||
}
|
},
|
||||||
|
presets: [
|
||||||
|
{
|
||||||
|
label: '1 Hour',
|
||||||
|
bounds: {
|
||||||
|
start: - ONE_HOUR,
|
||||||
|
end: THIRTY_SECONDS
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '30 Minutes',
|
||||||
|
bounds: {
|
||||||
|
start: - THIRTY_MINUTES,
|
||||||
|
end: THIRTY_SECONDS
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '15 Minutes',
|
||||||
|
bounds: {
|
||||||
|
start: - FIFTEEN_MINUTES,
|
||||||
|
end: THIRTY_SECONDS
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '5 Minutes',
|
||||||
|
bounds: {
|
||||||
|
start: - FIVE_MINUTES,
|
||||||
|
end: THIRTY_SECONDS
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '1 Minute',
|
||||||
|
bounds: {
|
||||||
|
start: - ONE_MINUTE,
|
||||||
|
end: THIRTY_SECONDS
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}));
|
}));
|
||||||
@ -113,7 +187,12 @@
|
|||||||
openmct.install(openmct.plugins.LADTable());
|
openmct.install(openmct.plugins.LADTable());
|
||||||
openmct.install(openmct.plugins.Filters(['table', 'telemetry.plot.overlay']));
|
openmct.install(openmct.plugins.Filters(['table', 'telemetry.plot.overlay']));
|
||||||
openmct.install(openmct.plugins.ObjectMigration());
|
openmct.install(openmct.plugins.ObjectMigration());
|
||||||
openmct.install(openmct.plugins.ClearData(['table', 'telemetry.plot.overlay', 'telemetry.plot.stacked']));
|
openmct.install(openmct.plugins.ClearData(
|
||||||
|
['table', 'telemetry.plot.overlay', 'telemetry.plot.stacked'],
|
||||||
|
{indicator: true}
|
||||||
|
));
|
||||||
|
openmct.install(openmct.plugins.Clock({ enableClockIndicator: true }));
|
||||||
|
openmct.install(openmct.plugins.Timer());
|
||||||
openmct.start();
|
openmct.start();
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
3
indexTest.js
Normal file
3
indexTest.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
const testsContext = require.context('.', true, /\/(src|platform)\/.*Spec.js$/);
|
||||||
|
|
||||||
|
testsContext.keys().forEach(testsContext);
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -22,20 +22,19 @@
|
|||||||
|
|
||||||
/*global module,process*/
|
/*global module,process*/
|
||||||
|
|
||||||
const devMode = process.env.NODE_ENV !== 'production';
|
|
||||||
const browsers = [process.env.NODE_ENV === 'debug' ? 'ChromeDebugging' : 'ChromeHeadless'];
|
const browsers = [process.env.NODE_ENV === 'debug' ? 'ChromeDebugging' : 'ChromeHeadless'];
|
||||||
const coverageEnabled = process.env.COVERAGE === 'true';
|
const coverageEnabled = process.env.COVERAGE === 'true';
|
||||||
const reporters = ['progress', 'html'];
|
const reporters = ['spec', 'junit'];
|
||||||
|
|
||||||
if (coverageEnabled) {
|
if (coverageEnabled) {
|
||||||
reporters.push('coverage-istanbul');
|
reporters.push('coverage-istanbul');
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = (config) => {
|
module.exports = (config) => {
|
||||||
const webpackConfig = require('./webpack.config.js');
|
const webpackConfig = require('./webpack.dev.js');
|
||||||
delete webpackConfig.output;
|
delete webpackConfig.output;
|
||||||
|
|
||||||
if (!devMode || coverageEnabled) {
|
if (coverageEnabled) {
|
||||||
webpackConfig.module.rules.push({
|
webpackConfig.module.rules.push({
|
||||||
test: /\.js$/,
|
test: /\.js$/,
|
||||||
exclude: /node_modules|example|lib|dist/,
|
exclude: /node_modules|example|lib|dist/,
|
||||||
@ -52,49 +51,81 @@ module.exports = (config) => {
|
|||||||
basePath: '',
|
basePath: '',
|
||||||
frameworks: ['jasmine'],
|
frameworks: ['jasmine'],
|
||||||
files: [
|
files: [
|
||||||
'platform/**/*Spec.js',
|
'indexTest.js',
|
||||||
'src/**/*Spec.js'
|
{
|
||||||
|
pattern: 'dist/couchDBChangesFeed.js*',
|
||||||
|
included: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: 'dist/inMemorySearchWorker.js*',
|
||||||
|
included: false
|
||||||
|
}
|
||||||
],
|
],
|
||||||
port: 9876,
|
port: 9876,
|
||||||
reporters: reporters,
|
reporters: reporters,
|
||||||
browsers: browsers,
|
browsers: browsers,
|
||||||
|
client: {
|
||||||
|
jasmine: {
|
||||||
|
random: false,
|
||||||
|
timeoutInterval: 5000
|
||||||
|
}
|
||||||
|
},
|
||||||
customLaunchers: {
|
customLaunchers: {
|
||||||
ChromeDebugging: {
|
ChromeDebugging: {
|
||||||
base: 'Chrome',
|
base: 'Chrome',
|
||||||
flags: ['--remote-debugging-port=9222'],
|
flags: ['--remote-debugging-port=9222'],
|
||||||
debug: true
|
debug: true
|
||||||
|
},
|
||||||
|
FirefoxESR: {
|
||||||
|
base: 'FirefoxHeadless',
|
||||||
|
name: 'FirefoxESR'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
colors: true,
|
colors: true,
|
||||||
logLevel: config.LOG_INFO,
|
logLevel: config.LOG_INFO,
|
||||||
autoWatch: true,
|
autoWatch: true,
|
||||||
// HTML test reporting.
|
// HTML test reporting.
|
||||||
htmlReporter: {
|
// htmlReporter: {
|
||||||
|
// outputDir: "dist/reports/tests",
|
||||||
|
// preserveDescribeNesting: true,
|
||||||
|
// foldAll: false
|
||||||
|
// },
|
||||||
|
junitReporter: {
|
||||||
outputDir: "dist/reports/tests",
|
outputDir: "dist/reports/tests",
|
||||||
preserveDescribeNesting: true,
|
outputFile: "test-results.xml",
|
||||||
foldAll: false
|
useBrowserName: false
|
||||||
},
|
},
|
||||||
coverageIstanbulReporter: {
|
coverageIstanbulReporter: {
|
||||||
fixWebpackSourcePaths: true,
|
fixWebpackSourcePaths: true,
|
||||||
dir: process.env.CIRCLE_ARTIFACTS ?
|
dir: process.env.CIRCLE_ARTIFACTS
|
||||||
process.env.CIRCLE_ARTIFACTS + '/coverage' :
|
? process.env.CIRCLE_ARTIFACTS + '/coverage'
|
||||||
"dist/reports/coverage",
|
: "dist/reports/coverage",
|
||||||
reports: ['html', 'lcovonly', 'text-summary'],
|
reports: ['lcovonly', 'text-summary'],
|
||||||
thresholds: {
|
thresholds: {
|
||||||
global: {
|
global: {
|
||||||
lines: 62
|
lines: 66
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
specReporter: {
|
||||||
|
maxLogLines: 5,
|
||||||
|
suppressErrorSummary: false,
|
||||||
|
suppressFailed: false,
|
||||||
|
suppressPassed: false,
|
||||||
|
suppressSkipped: true,
|
||||||
|
showSpecTiming: true,
|
||||||
|
failFast: false
|
||||||
|
},
|
||||||
preprocessors: {
|
preprocessors: {
|
||||||
'platform/**/*Spec.js': ['webpack', 'sourcemap'],
|
'indexTest.js': ['webpack', 'sourcemap']
|
||||||
'src/**/*Spec.js': ['webpack', 'sourcemap']
|
|
||||||
},
|
},
|
||||||
webpack: webpackConfig,
|
webpack: webpackConfig,
|
||||||
webpackMiddleware: {
|
webpackMiddleware: {
|
||||||
stats: 'errors-only',
|
stats: 'errors-only',
|
||||||
logLevel: 'warn'
|
logLevel: 'warn'
|
||||||
},
|
},
|
||||||
singleRun: true
|
concurrency: 1,
|
||||||
|
singleRun: true,
|
||||||
|
browserNoActivityTimeout: 400000
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
96
lighthouserc.yml
Normal file
96
lighthouserc.yml
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
---
|
||||||
|
ci:
|
||||||
|
collect:
|
||||||
|
urls:
|
||||||
|
- http://localhost/
|
||||||
|
numberOfRuns: 5
|
||||||
|
settings:
|
||||||
|
onlyCategories:
|
||||||
|
- performance
|
||||||
|
- best-practices
|
||||||
|
upload:
|
||||||
|
target: temporary-public-storage
|
||||||
|
assert:
|
||||||
|
preset: lighthouse:recommended
|
||||||
|
assertions:
|
||||||
|
### Applicable assertions
|
||||||
|
bootup-time:
|
||||||
|
- warn
|
||||||
|
- minScore: 0.88 #Original value was calculated at 0.88
|
||||||
|
dom-size:
|
||||||
|
- error
|
||||||
|
- maxNumericValue: 200 #Original value was calculated at 188
|
||||||
|
first-contentful-paint:
|
||||||
|
- error
|
||||||
|
- minScore: 0.07 #Original value was calculated at 0.08
|
||||||
|
mainthread-work-breakdown:
|
||||||
|
- warn
|
||||||
|
- minScore: 0.8 #Original value was calculated at 0.8
|
||||||
|
unused-javascript:
|
||||||
|
- warn
|
||||||
|
- maxLength: 1
|
||||||
|
- error
|
||||||
|
- maxNumericValue: 2000 #Original value was calculated at 1855
|
||||||
|
unused-css-rules: warn
|
||||||
|
installable-manifest: warn
|
||||||
|
service-worker: warn
|
||||||
|
### Disabled seo, accessibility, and pwa assertions, below
|
||||||
|
categories:seo: 'off'
|
||||||
|
categories:accessibility: 'off'
|
||||||
|
categories:pwa: 'off'
|
||||||
|
accesskeys: 'off'
|
||||||
|
apple-touch-icon: 'off'
|
||||||
|
aria-allowed-attr: 'off'
|
||||||
|
aria-command-name: 'off'
|
||||||
|
aria-hidden-body: 'off'
|
||||||
|
aria-hidden-focus: 'off'
|
||||||
|
aria-input-field-name: 'off'
|
||||||
|
aria-meter-name: 'off'
|
||||||
|
aria-progressbar-name: 'off'
|
||||||
|
aria-required-attr: 'off'
|
||||||
|
aria-required-children: 'off'
|
||||||
|
aria-required-parent: 'off'
|
||||||
|
aria-roles: 'off'
|
||||||
|
aria-toggle-field-name: 'off'
|
||||||
|
aria-tooltip-name: 'off'
|
||||||
|
aria-treeitem-name: 'off'
|
||||||
|
aria-valid-attr: 'off'
|
||||||
|
aria-valid-attr-value: 'off'
|
||||||
|
button-name: 'off'
|
||||||
|
bypass: 'off'
|
||||||
|
canonical: 'off'
|
||||||
|
color-contrast: 'off'
|
||||||
|
content-width: 'off'
|
||||||
|
crawlable-anchors: 'off'
|
||||||
|
csp-xss: 'off'
|
||||||
|
font-display: 'off'
|
||||||
|
font-size: 'off'
|
||||||
|
maskable-icon: 'off'
|
||||||
|
heading-order: 'off'
|
||||||
|
hreflang: 'off'
|
||||||
|
html-has-lang: 'off'
|
||||||
|
html-lang-valid: 'off'
|
||||||
|
http-status-code: 'off'
|
||||||
|
image-alt: 'off'
|
||||||
|
input-image-alt: 'off'
|
||||||
|
is-crawlable: 'off'
|
||||||
|
label: 'off'
|
||||||
|
link-name: 'off'
|
||||||
|
link-text: 'off'
|
||||||
|
list: 'off'
|
||||||
|
listitem: 'off'
|
||||||
|
meta-description: 'off'
|
||||||
|
meta-refresh: 'off'
|
||||||
|
meta-viewport: 'off'
|
||||||
|
object-alt: 'off'
|
||||||
|
plugins: 'off'
|
||||||
|
robots-txt: 'off'
|
||||||
|
splash-screen: 'off'
|
||||||
|
tabindex: 'off'
|
||||||
|
tap-targets: 'off'
|
||||||
|
td-headers-attr: 'off'
|
||||||
|
th-has-data-cells: 'off'
|
||||||
|
themed-omnibox: 'off'
|
||||||
|
valid-lang: 'off'
|
||||||
|
video-caption: 'off'
|
||||||
|
viewport: 'off'
|
@ -1,5 +1,5 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT, Copyright (c) 2014-2017, United States Government
|
* Open MCT, Copyright (c) 2014-2021, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
* Administration. All rights reserved.
|
* Administration. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -32,6 +32,6 @@ if (document.currentScript) {
|
|||||||
|
|
||||||
const MCT = require('./src/MCT');
|
const MCT = require('./src/MCT');
|
||||||
|
|
||||||
var openmct = new MCT();
|
const openmct = new MCT();
|
||||||
|
|
||||||
module.exports = openmct;
|
module.exports = openmct;
|
||||||
|
92
package.json
92
package.json
@ -1,92 +1,105 @@
|
|||||||
{
|
{
|
||||||
"name": "openmct",
|
"name": "openmct",
|
||||||
"version": "1.0.0-snapshot",
|
"version": "1.8.3-SNAPSHOT",
|
||||||
"description": "The Open MCT core platform",
|
"description": "The Open MCT core platform",
|
||||||
"dependencies": {},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@braintree/sanitize-url": "^5.0.2",
|
||||||
|
"@percy/cli": "^1.0.0-beta.71",
|
||||||
|
"@percy/playwright": "^1.0.1",
|
||||||
|
"@playwright/test": "^1.17.2",
|
||||||
|
"allure-playwright": "^2.0.0-beta.14",
|
||||||
"angular": ">=1.8.0",
|
"angular": ">=1.8.0",
|
||||||
"angular-route": "1.4.14",
|
"angular-route": "1.4.14",
|
||||||
"babel-eslint": "8.2.6",
|
"babel-eslint": "10.1.0",
|
||||||
"comma-separated-values": "^3.6.4",
|
"comma-separated-values": "^3.6.4",
|
||||||
"concurrently": "^3.6.1",
|
"concurrently": "^3.6.1",
|
||||||
"copy-webpack-plugin": "^4.5.2",
|
"copy-webpack-plugin": "^10.2.0",
|
||||||
"cross-env": "^6.0.3",
|
"cross-env": "^6.0.3",
|
||||||
"css-loader": "^1.0.0",
|
"css-loader": "^4.0.0",
|
||||||
"d3-array": "1.2.x",
|
|
||||||
"d3-axis": "1.0.x",
|
"d3-axis": "1.0.x",
|
||||||
"d3-collection": "1.0.x",
|
|
||||||
"d3-color": "1.0.x",
|
|
||||||
"d3-format": "1.2.x",
|
|
||||||
"d3-interpolate": "1.1.x",
|
|
||||||
"d3-scale": "1.0.x",
|
"d3-scale": "1.0.x",
|
||||||
"d3-selection": "1.3.x",
|
"d3-selection": "1.3.x",
|
||||||
"d3-time": "1.0.x",
|
"eslint": "7.0.0",
|
||||||
"d3-time-format": "2.1.x",
|
"eslint-plugin-playwright": "0.7.1",
|
||||||
"eslint": "5.2.0",
|
"eslint-plugin-vue": "^7.5.0",
|
||||||
"eslint-plugin-vue": "^6.0.0",
|
|
||||||
"eslint-plugin-you-dont-need-lodash-underscore": "^6.10.0",
|
"eslint-plugin-you-dont-need-lodash-underscore": "^6.10.0",
|
||||||
"eventemitter3": "^1.2.0",
|
"eventemitter3": "^1.2.0",
|
||||||
"exports-loader": "^0.7.0",
|
"exports-loader": "^0.7.0",
|
||||||
"express": "^4.13.1",
|
"express": "^4.13.1",
|
||||||
"fast-sass-loader": "1.4.6",
|
"file-loader": "^6.1.0",
|
||||||
"file-loader": "^1.1.11",
|
|
||||||
"file-saver": "^1.3.8",
|
"file-saver": "^1.3.8",
|
||||||
"git-rev-sync": "^1.4.0",
|
"git-rev-sync": "^1.4.0",
|
||||||
"glob": ">= 3.0.0",
|
"glob": ">= 3.0.0",
|
||||||
"html-loader": "^0.5.5",
|
"html-loader": "^0.5.5",
|
||||||
"html2canvas": "^1.0.0-alpha.12",
|
"html2canvas": "^1.0.0-rc.7",
|
||||||
"imports-loader": "^0.8.0",
|
"imports-loader": "^0.8.0",
|
||||||
"istanbul-instrumenter-loader": "^3.0.1",
|
"istanbul-instrumenter-loader": "^3.0.1",
|
||||||
"jasmine-core": "^3.1.0",
|
"jasmine-core": "^4.0.0",
|
||||||
"jsdoc": "^3.3.2",
|
"jsdoc": "^3.3.2",
|
||||||
"karma": "^2.0.3",
|
"karma": "6.3.10",
|
||||||
"karma-chrome-launcher": "^2.2.0",
|
"karma-chrome-launcher": "3.1.0",
|
||||||
"karma-cli": "^1.0.1",
|
"karma-cli": "2.0.0",
|
||||||
"karma-coverage": "^1.1.2",
|
"karma-coverage": "2.1.0",
|
||||||
"karma-coverage-istanbul-reporter": "^2.1.1",
|
"karma-coverage-istanbul-reporter": "3.0.3",
|
||||||
"karma-html-reporter": "^0.2.7",
|
"karma-firefox-launcher": "2.1.2",
|
||||||
"karma-jasmine": "^1.1.2",
|
"karma-jasmine": "4.0.1",
|
||||||
"karma-sourcemap-loader": "^0.3.7",
|
"karma-junit-reporter": "2.0.1",
|
||||||
"karma-webpack": "^3.0.0",
|
"karma-sourcemap-loader": "0.3.8",
|
||||||
|
"karma-spec-reporter": "0.0.33",
|
||||||
|
"karma-webpack": "^5.0.0",
|
||||||
"location-bar": "^3.0.1",
|
"location-bar": "^3.0.1",
|
||||||
"lodash": "^4.17.12",
|
"lodash": "^4.17.12",
|
||||||
"markdown-toc": "^0.11.7",
|
"markdown-toc": "^0.11.7",
|
||||||
"marked": "^0.3.5",
|
"marked": "^0.3.5",
|
||||||
"mini-css-extract-plugin": "^0.4.1",
|
"mini-css-extract-plugin": "2.4.5",
|
||||||
"minimist": "^1.1.1",
|
"minimist": "^1.2.5",
|
||||||
"moment": "2.25.3",
|
"moment": "2.25.3",
|
||||||
"moment-duration-format": "^2.2.2",
|
"moment-duration-format": "^2.2.2",
|
||||||
"moment-timezone": "0.5.28",
|
"moment-timezone": "0.5.28",
|
||||||
"node-bourbon": "^4.2.3",
|
"node-bourbon": "^4.2.3",
|
||||||
"node-sass": "^4.9.2",
|
"painterro": "^1.2.56",
|
||||||
"painterro": "^0.2.65",
|
"playwright": "^1.17.2",
|
||||||
|
"plotly.js-basic-dist": "^2.5.0",
|
||||||
|
"plotly.js-gl2d-dist": "^2.5.0",
|
||||||
"printj": "^1.2.1",
|
"printj": "^1.2.1",
|
||||||
"raw-loader": "^0.5.1",
|
"raw-loader": "^0.5.1",
|
||||||
"request": "^2.69.0",
|
"request": "^2.69.0",
|
||||||
|
"resolve-url-loader": "^4.0.0",
|
||||||
|
"sass": "^1.42.1",
|
||||||
|
"sass-loader": "^12.1.0",
|
||||||
|
"sinon": "^12.0.1",
|
||||||
"split": "^1.0.0",
|
"split": "^1.0.0",
|
||||||
"style-loader": "^1.0.1",
|
"style-loader": "^1.0.1",
|
||||||
"uuid": "^3.3.3",
|
"uuid": "^3.3.3",
|
||||||
"v8-compile-cache": "^1.1.0",
|
"v8-compile-cache": "^1.1.0",
|
||||||
"vue": "2.5.6",
|
"vue": "2.5.6",
|
||||||
"vue-loader": "^15.2.6",
|
"vue-eslint-parser": "8.0.1",
|
||||||
|
"vue-loader": "15.9.8",
|
||||||
"vue-template-compiler": "2.5.6",
|
"vue-template-compiler": "2.5.6",
|
||||||
"webpack": "^4.16.2",
|
"webpack": "^5.65.0",
|
||||||
"webpack-cli": "^3.1.0",
|
"webpack-cli": "^4.0.0",
|
||||||
"webpack-dev-middleware": "^3.1.3",
|
"webpack-dev-middleware": "^3.1.3",
|
||||||
"webpack-hot-middleware": "^2.22.3",
|
"webpack-hot-middleware": "^2.22.3",
|
||||||
|
"webpack-merge": "^5.8.0",
|
||||||
"zepto": "^1.2.0"
|
"zepto": "^1.2.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"clean": "rm -rf ./dist",
|
"clean": "rm -rf ./dist /node_modules; rm package-lock.json",
|
||||||
|
"clean-test-lint": "npm run clean; npm install ; npm run test; npm run lint",
|
||||||
"start": "node app.js",
|
"start": "node app.js",
|
||||||
"lint": "eslint platform example src --ext .js,.vue openmct.js",
|
"lint": "eslint platform example src --ext .js,.vue openmct.js",
|
||||||
"lint:fix": "eslint platform example src --ext .js,.vue openmct.js --fix",
|
"lint:fix": "eslint platform example src --ext .js,.vue openmct.js --fix",
|
||||||
"build:prod": "cross-env NODE_ENV=production webpack",
|
"build:prod": "cross-env webpack --config webpack.prod.js",
|
||||||
"build:dev": "webpack",
|
"build:dev": "webpack --config webpack.dev.js",
|
||||||
"build:watch": "webpack --watch",
|
"build:watch": "webpack --config webpack.dev.js --watch",
|
||||||
"test": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" karma start --single-run",
|
"test": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" karma start --single-run",
|
||||||
"test:debug": "cross-env NODE_ENV=debug karma start --no-single-run",
|
"test:debug": "cross-env NODE_ENV=debug karma start --no-single-run",
|
||||||
"test:coverage": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" COVERAGE=true karma start --single-run",
|
"test:coverage": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" COVERAGE=true karma start --single-run",
|
||||||
|
"test:coverage:firefox": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" karma start --single-run --browsers=FirefoxHeadless",
|
||||||
|
"test:e2e:ci": "npx playwright test --config=e2e/playwright-ci.config.js smoke default condition.e2e",
|
||||||
|
"test:e2e:local": "npx playwright test --config=e2e/playwright-local.config.js",
|
||||||
|
"test:e2e:visual": "percy exec -- npx playwright test --config=e2e/playwright-visual.config.js default",
|
||||||
|
"test:e2e:full": "npx playwright test --config=e2e/playwright-ci.config.js",
|
||||||
"test:watch": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" karma start --no-single-run",
|
"test:watch": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" karma start --no-single-run",
|
||||||
"verify": "concurrently 'npm:test' 'npm:lint'",
|
"verify": "concurrently 'npm:test' 'npm:lint'",
|
||||||
"jsdoc": "jsdoc -c jsdoc.json -R API.md -r -d dist/docs/api",
|
"jsdoc": "jsdoc -c jsdoc.json -R API.md -r -d dist/docs/api",
|
||||||
@ -98,6 +111,9 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nasa/openmct.git"
|
"url": "https://github.com/nasa/openmct.git"
|
||||||
},
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.1 <15.0.0"
|
||||||
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"private": true
|
"private": true
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
The "about" bundle provides the default lower-right application logo,
|
|
||||||
as well as the dialog it launches when clicked.
|
|
||||||
|
|
||||||
# Extensions
|
|
||||||
|
|
||||||
The About dialog contains several line items to display different
|
|
||||||
version properties (e.g. when built, et cetera.) Plug-ins may wish
|
|
||||||
to introduce additional line items here, in particular if the
|
|
||||||
platform is used to build a separately-branded piece of software.
|
|
||||||
|
|
||||||
This bundle introduces the `versions` extension category to support this.
|
|
||||||
An extension of this category is implementation-less (all information
|
|
||||||
is contained within its declaration) and should include the following
|
|
||||||
fields:
|
|
||||||
|
|
||||||
* `name`: The name to display for this version line-item; this may
|
|
||||||
be the name of the software, or something else such as "Built".
|
|
||||||
* `value`: The value to display corresponding to this line-item;
|
|
||||||
this is typically a version number, revision identifier, or
|
|
||||||
human-readable date.
|
|
||||||
* `description`: Optional; a longer-form description of this line
|
|
||||||
item, to display in a tooltip.
|
|
||||||
|
|
||||||
Ordering of these line items is handled by extension priority; see framework
|
|
||||||
documentation (`platform/framework/README.md`) for information on how
|
|
||||||
this ordering is handled.
|
|
@ -1,181 +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([
|
|
||||||
"./res/templates/about-dialog.html",
|
|
||||||
"./src/LogoController",
|
|
||||||
"./src/AboutController",
|
|
||||||
"./src/LicenseController",
|
|
||||||
"./res/templates/app-logo.html",
|
|
||||||
"./res/templates/about-logo.html",
|
|
||||||
"./res/templates/overlay-about.html",
|
|
||||||
"./res/templates/license-apache.html",
|
|
||||||
"./res/templates/license-mit.html",
|
|
||||||
"./res/templates/licenses.html",
|
|
||||||
"./res/templates/licenses-export-md.html"
|
|
||||||
], function (
|
|
||||||
aboutDialogTemplate,
|
|
||||||
LogoController,
|
|
||||||
AboutController,
|
|
||||||
LicenseController,
|
|
||||||
appLogoTemplate,
|
|
||||||
aboutLogoTemplate,
|
|
||||||
overlayAboutTemplate,
|
|
||||||
licenseApacheTemplate,
|
|
||||||
licenseMitTemplate,
|
|
||||||
licensesTemplate,
|
|
||||||
licensesExportMdTemplate
|
|
||||||
) {
|
|
||||||
|
|
||||||
return {
|
|
||||||
name:"platform/commonUI/about",
|
|
||||||
definition: {
|
|
||||||
"name": "About Open MCT",
|
|
||||||
"extensions": {
|
|
||||||
"templates": [
|
|
||||||
{
|
|
||||||
"key": "app-logo",
|
|
||||||
"priority": "optional",
|
|
||||||
"template": appLogoTemplate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "about-logo",
|
|
||||||
"priority": "preferred",
|
|
||||||
"template": aboutLogoTemplate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "about-dialog",
|
|
||||||
"template": aboutDialogTemplate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "overlay-about",
|
|
||||||
"template": overlayAboutTemplate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "license-apache",
|
|
||||||
"template": licenseApacheTemplate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "license-mit",
|
|
||||||
"template": licenseMitTemplate
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"controllers": [
|
|
||||||
{
|
|
||||||
"key": "LogoController",
|
|
||||||
"depends": [
|
|
||||||
"overlayService"
|
|
||||||
],
|
|
||||||
"implementation": LogoController
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "AboutController",
|
|
||||||
"depends": [
|
|
||||||
"versions[]",
|
|
||||||
"$window"
|
|
||||||
],
|
|
||||||
"implementation": AboutController
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "LicenseController",
|
|
||||||
"depends": [
|
|
||||||
"licenses[]"
|
|
||||||
],
|
|
||||||
"implementation": LicenseController
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"licenses": [
|
|
||||||
{
|
|
||||||
"name": "Json.NET",
|
|
||||||
"version": "6.0.8",
|
|
||||||
"author": "Newtonsoft",
|
|
||||||
"description": "JSON serialization/deserialization",
|
|
||||||
"website": "http://www.newtonsoft.com/json",
|
|
||||||
"copyright": "Copyright (c) 2007 James Newton-King",
|
|
||||||
"license": "license-mit",
|
|
||||||
"link": "https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Nancy",
|
|
||||||
"version": "0.23.2",
|
|
||||||
"author": "Andreas Håkansson, Steven Robbins and contributors",
|
|
||||||
"description": "Embedded web server",
|
|
||||||
"website": "http://nancyfx.org/",
|
|
||||||
"copyright": "Copyright © 2010 Andreas Håkansson, Steven Robbins and contributors",
|
|
||||||
"license": "license-mit",
|
|
||||||
"link": "http://www.opensource.org/licenses/mit-license.php"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Nancy.Hosting.Self",
|
|
||||||
"version": "0.23.2",
|
|
||||||
"author": "Andreas Håkansson, Steven Robbins and contributors",
|
|
||||||
"description": "Embedded web server",
|
|
||||||
"website": "http://nancyfx.org/",
|
|
||||||
"copyright": "Copyright © 2010 Andreas Håkansson, Steven Robbins and contributors",
|
|
||||||
"license": "license-mit",
|
|
||||||
"link": "http://www.opensource.org/licenses/mit-license.php"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SuperSocket",
|
|
||||||
"version": "0.9.0.2",
|
|
||||||
"author": " Kerry Jiang",
|
|
||||||
"description": "Supports SuperWebSocket",
|
|
||||||
"website": "https://supersocket.codeplex.com/",
|
|
||||||
"copyright": "Copyright 2010-2014 Kerry Jiang (kerry-jiang@hotmail.com)",
|
|
||||||
"license": "license-apache",
|
|
||||||
"link": "https://supersocket.codeplex.com/license"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "SuperWebSocket",
|
|
||||||
"version": "0.9.0.2",
|
|
||||||
"author": " Kerry Jiang",
|
|
||||||
"description": "WebSocket implementation for client-server communication",
|
|
||||||
"website": "https://superwebsocket.codeplex.com/",
|
|
||||||
"copyright": "Copyright 2010-2014 Kerry Jiang (kerry-jiang@hotmail.com)",
|
|
||||||
"license": "license-apache",
|
|
||||||
"link": "https://superwebsocket.codeplex.com/license"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "log4net",
|
|
||||||
"version": "2.0.3",
|
|
||||||
"author": "Apache Software Foundation",
|
|
||||||
"description": "Logging",
|
|
||||||
"website": "http://logging.apache.org/log4net/",
|
|
||||||
"copyright": "Copyright © 2004-2015 Apache Software Foundation.",
|
|
||||||
"license": "license-apache",
|
|
||||||
"link": "http://logging.apache.org/log4net/license.html"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"routes": [
|
|
||||||
{
|
|
||||||
"when": "/licenses",
|
|
||||||
"template": licensesTemplate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"when": "/licenses-md",
|
|
||||||
"template": licensesExportMdTemplate
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
@ -1,41 +0,0 @@
|
|||||||
<!--
|
|
||||||
Open MCT, Copyright (c) 2014-2018, United States Government
|
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
Administration. All rights reserved.
|
|
||||||
|
|
||||||
Open MCT is licensed under the Apache License, Version 2.0 (the
|
|
||||||
"License"); you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0.
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
License for the specific language governing permissions and limitations
|
|
||||||
under the License.
|
|
||||||
|
|
||||||
Open MCT includes source code licensed under additional open source
|
|
||||||
licenses. See the Open Source Licenses file (LICENSES.md) included with
|
|
||||||
this source code distribution or the Licensing information page available
|
|
||||||
at runtime from the About dialog for additional information.
|
|
||||||
-->
|
|
||||||
<div class="abs t-about l-about t-about-openmctweb s-about" ng-controller = "AboutController as about">
|
|
||||||
<div class="l-splash s-splash"></div>
|
|
||||||
<div class="s-text l-content">
|
|
||||||
<h1 class="l-title s-title">Open MCT</h1>
|
|
||||||
<div class="l-description s-description">
|
|
||||||
<p>Open MCT, Copyright © 2014-2018, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.</p>
|
|
||||||
<p>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 <a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>.</p>
|
|
||||||
<p>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.</p>
|
|
||||||
<p>Open MCT includes source code licensed under additional open source licenses. See the Open Source Licenses file included with this distribution or <a ng-click="about.openLicenses()">click here for licensing information</a>.</p>
|
|
||||||
</div>
|
|
||||||
<h2>Version Information</h2>
|
|
||||||
<ul class="t-info l-info s-info" ng-repeat = "version in about.versions()">
|
|
||||||
<li title="{{version.description}}">
|
|
||||||
<span class="info version-name">{{version.name}}</span>
|
|
||||||
<span class="info version-value">{{version.value}}</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,25 +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.
|
|
||||||
-->
|
|
||||||
<span ng-controller="LogoController as logo">
|
|
||||||
<mct-include ng-click="logo.showAboutDialog()" key="'app-logo'">
|
|
||||||
</mct-include>
|
|
||||||
</span>
|
|
@ -1,24 +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.
|
|
||||||
-->
|
|
||||||
<span ng-controller = "AboutController as about">
|
|
||||||
<div class='app-logo logo-openmctweb abs' title="Version {{about.versions()[0].value}}"></div>
|
|
||||||
</span>
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user