Compare commits
	
		
			62 Commits
		
	
	
		
			7475-inves
			...
			plotly-tes
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | dc7b9a1e61 | ||
|   | 2df62ef925 | ||
|   | bdc3fdd7bb | ||
|   | b040af1e28 | ||
|   | aed4a5ba2a | ||
|   | 32287f9108 | ||
|   | c8bbeb0cae | ||
|   | 6b74a133d8 | ||
|   | ceaf4c2ef0 | ||
|   | 982b69e7e1 | ||
|   | 8e5182732d | ||
|   | 2d0b92cc38 | ||
|   | 75e846ea3f | ||
|   | 1b5dee981d | ||
|   | 4fee7f73e7 | ||
|   | 4308a4c9cf | ||
|   | abbffcfbf1 | ||
|   | 01710876fb | ||
|   | 9e3d97c85d | ||
|   | 519075001e | ||
|   | 96a48dd9ee | ||
|   | 550daae76f | ||
|   | b8fcb8ff14 | ||
|   | 373ddd0bf5 | ||
|   | d62cc6b3ee | ||
|   | 5116d38437 | ||
|   | 29771f2722 | ||
|   | 7bfe4bb25c | ||
|   | 510c637081 | ||
|   | d7c65fec4c | ||
|   | 626e2d8e80 | ||
|   | 1fe673c1f5 | ||
|   | d9b00574e7 | ||
|   | 7c48b3ba9a | ||
|   | b6e589eed4 | ||
|   | fb1813c14b | ||
|   | cce834f873 | ||
|   | ca60d02614 | ||
|   | 9520c09b49 | ||
|   | 0d70717b35 | ||
|   | f18da542d6 | ||
|   | e7c38d473b | ||
|   | 2f8db31a33 | ||
|   | 1c58d8c85f | ||
|   | baf426055c | ||
|   | aa3af520ea | ||
|   | 4a43893ccc | ||
|   | 77f50a41c9 | ||
|   | e4cd5f441f | ||
|   | a9cfb002fb | ||
|   | b603a5b722 | ||
|   | be165761c7 | ||
|   | da88cf58cc | ||
|   | bc2bd53f9b | ||
|   | 6b7fd5f22a | ||
|   | 4ee214a142 | ||
|   | 4af24db38a | ||
|   | 8db27809ef | ||
|   | 3116b1addd | ||
|   | 5f67c45b50 | ||
|   | 8158afc29a | ||
|   | 13b3acb7e0 | 
| @@ -2,7 +2,7 @@ version: 2 | ||||
| jobs: | ||||
|   build: | ||||
|     docker: | ||||
|         - image: circleci/node:8-browsers | ||||
|         - image: circleci/node:13-browsers | ||||
|           environment: | ||||
|             CHROME_BIN: "/usr/bin/google-chrome" | ||||
|     steps: | ||||
| @@ -11,7 +11,7 @@ jobs: | ||||
|             name: Update npm | ||||
|             command: 'sudo npm install -g npm@latest' | ||||
|         - restore_cache: | ||||
|             key: dependency-cache-{{ checksum "package.json" }} | ||||
|             key: dependency-cache-node-13-{{ checksum "package.json" }} | ||||
|         - run: | ||||
|             name: Installing dependencies (npm install) | ||||
|             command: npm install | ||||
|   | ||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -38,3 +38,4 @@ protractor/logs | ||||
| npm-debug.log | ||||
|  | ||||
| package-lock.json | ||||
| report.*.json | ||||
|   | ||||
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							| @@ -2,7 +2,6 @@ | ||||
|   "name": "openmct", | ||||
|   "version": "1.0.0-snapshot", | ||||
|   "description": "The Open MCT core platform", | ||||
|   "dependencies": {}, | ||||
|   "devDependencies": { | ||||
|     "angular": "1.7.9", | ||||
|     "angular-route": "1.4.14", | ||||
| @@ -39,13 +38,13 @@ | ||||
|     "istanbul-instrumenter-loader": "^3.0.1", | ||||
|     "jasmine-core": "^3.1.0", | ||||
|     "jsdoc": "^3.3.2", | ||||
|     "karma": "^2.0.3", | ||||
|     "karma-chrome-launcher": "^2.2.0", | ||||
|     "karma": "5.0.9", | ||||
|     "karma-chrome-launcher": "3.1.0", | ||||
|     "karma-cli": "^1.0.1", | ||||
|     "karma-coverage": "^1.1.2", | ||||
|     "karma-coverage-istanbul-reporter": "^2.1.1", | ||||
|     "karma-html-reporter": "^0.2.7", | ||||
|     "karma-jasmine": "^1.1.2", | ||||
|     "karma-jasmine": "^2.0.0", | ||||
|     "karma-sourcemap-loader": "^0.3.7", | ||||
|     "karma-webpack": "^3.0.0", | ||||
|     "location-bar": "^3.0.1", | ||||
| @@ -60,6 +59,7 @@ | ||||
|     "node-bourbon": "^4.2.3", | ||||
|     "node-sass": "^4.9.2", | ||||
|     "painterro": "^0.2.65", | ||||
|     "plotly.js": "^1.54.1", | ||||
|     "printj": "^1.2.1", | ||||
|     "raw-loader": "^0.5.1", | ||||
|     "request": "^2.69.0", | ||||
| @@ -84,9 +84,9 @@ | ||||
|     "build:prod": "cross-env NODE_ENV=production webpack", | ||||
|     "build:dev": "webpack", | ||||
|     "build:watch": "webpack --watch", | ||||
|     "test": "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:coverage": "./scripts/test-coverage.sh", | ||||
|     "test:coverage": "cross-env NODE_ENV=production COVERAGE=true NODE_OPTIONS=\"--max-old-space-size=4096\" karma start --single-run", | ||||
|     "test:watch": "karma start --no-single-run", | ||||
|     "verify": "concurrently 'npm:test' 'npm:lint'", | ||||
|     "jsdoc": "jsdoc -c jsdoc.json -R API.md -r -d dist/docs/api", | ||||
|   | ||||
| @@ -1,621 +0,0 @@ | ||||
|  | ||||
| { | ||||
|   "header": { | ||||
|     "event": "Allocation failed - JavaScript heap out of memory", | ||||
|     "location": "OnFatalError", | ||||
|     "filename": "report.20200527.134750.93992.001.json", | ||||
|     "dumpEventTime": "2020-05-27T13:47:50Z", | ||||
|     "dumpEventTimeStamp": "1590612470877", | ||||
|     "processId": 93992, | ||||
|     "commandLine": [ | ||||
|       "node", | ||||
|       "/Users/dtailor/Desktop/openmct/node_modules/.bin/karma", | ||||
|       "start", | ||||
|       "--single-run" | ||||
|     ], | ||||
|     "nodejsVersion": "v11.9.0", | ||||
|     "wordSize": 64, | ||||
|     "componentVersions": { | ||||
|       "node": "11.9.0", | ||||
|       "v8": "7.0.276.38-node.16", | ||||
|       "uv": "1.25.0", | ||||
|       "zlib": "1.2.11", | ||||
|       "brotli": "1.0.7", | ||||
|       "ares": "1.15.0", | ||||
|       "modules": "67", | ||||
|       "nghttp2": "1.34.0", | ||||
|       "napi": "4", | ||||
|       "llhttp": "1.0.1", | ||||
|       "http_parser": "2.8.0", | ||||
|       "openssl": "1.1.1a", | ||||
|       "cldr": "34.0", | ||||
|       "icu": "63.1", | ||||
|       "tz": "2018e", | ||||
|       "unicode": "11.0", | ||||
|       "arch": "x64", | ||||
|       "platform": "darwin", | ||||
|       "release": "node" | ||||
|     }, | ||||
|     "osVersion": "Darwin 18.7.0 Darwin Kernel Version 18.7.0: Thu Jan 23 06:52:12 PST 2020; root:xnu-4903.278.25~1/RELEASE_X86_64", | ||||
|     "machine": "Darwin 18.7.0 Darwin Kernel Version 18.7.0: Thu Jan 23 06:52:12 PST 2020; root:xnu-4903.278.25~1/RELEASE_X86_64tailor x86_64" | ||||
|   }, | ||||
|   "javascriptStack": { | ||||
|     "message": "No stack.", | ||||
|     "stack": [ | ||||
|       "Unavailable." | ||||
|     ] | ||||
|   }, | ||||
|   "nativeStack": [ | ||||
|     " [pc=0x10013090e] report::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, v8::Local<v8::String>) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x100063744] node::OnFatalError(char const*, char const*) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1001a8c47] v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1001a8be4] v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1005add42] v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1005b0273] v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1005ac7a8] v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1005aa965] v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1005b720c] v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1005b728f] v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x100586484] v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x1008389a4] v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node]", | ||||
|     " [pc=0x14acfddcfc7d] " | ||||
|   ], | ||||
|   "javascriptHeap": { | ||||
|     "totalMemory": 1479229440, | ||||
|     "totalCommittedMemory": 1477309024, | ||||
|     "usedMemory": 1445511032, | ||||
|     "availableMemory": 50296592, | ||||
|     "memoryLimit": 1526909922, | ||||
|     "heapSpaces": { | ||||
|       "read_only_space": { | ||||
|         "memorySize": 524288, | ||||
|         "committedMemory": 42224, | ||||
|         "capacity": 515584, | ||||
|         "used": 33520, | ||||
|         "available": 482064 | ||||
|       }, | ||||
|       "new_space": { | ||||
|         "memorySize": 4194304, | ||||
|         "committedMemory": 4194288, | ||||
|         "capacity": 2062336, | ||||
|         "used": 59016, | ||||
|         "available": 2003320 | ||||
|       }, | ||||
|       "old_space": { | ||||
|         "memorySize": 305860608, | ||||
|         "committedMemory": 305138544, | ||||
|         "capacity": 283264904, | ||||
|         "used": 282942208, | ||||
|         "available": 322696 | ||||
|       }, | ||||
|       "code_space": { | ||||
|         "memorySize": 6291456, | ||||
|         "committedMemory": 5687328, | ||||
|         "capacity": 5237152, | ||||
|         "used": 5237152, | ||||
|         "available": 0 | ||||
|       }, | ||||
|       "map_space": { | ||||
|         "memorySize": 5255168, | ||||
|         "committedMemory": 5143024, | ||||
|         "capacity": 2523280, | ||||
|         "used": 2523280, | ||||
|         "available": 0 | ||||
|       }, | ||||
|       "large_object_space": { | ||||
|         "memorySize": 1157103616, | ||||
|         "committedMemory": 1157103616, | ||||
|         "capacity": 1202204368, | ||||
|         "used": 1154715856, | ||||
|         "available": 47488512 | ||||
|       }, | ||||
|       "new_large_object_space": { | ||||
|         "memorySize": 0, | ||||
|         "committedMemory": 0, | ||||
|         "capacity": 0, | ||||
|         "used": 0, | ||||
|         "available": 0 | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "resourceUsage": { | ||||
|     "userCpuSeconds": 43.1616, | ||||
|     "kernelCpuSeconds": 43.1616, | ||||
|     "cpuConsumptionPercent": 5.42705e-06, | ||||
|     "maxRss": 1966080000000, | ||||
|     "pageFaults": { | ||||
|       "IORequired": 245, | ||||
|       "IONotRequired": 832598 | ||||
|     }, | ||||
|     "fsActivity": { | ||||
|       "reads": 0, | ||||
|       "writes": 0 | ||||
|     } | ||||
|   }, | ||||
|   "libuv": [ | ||||
|   ], | ||||
|   "environmentVariables": { | ||||
|     "npm_config_save_dev": "", | ||||
|     "npm_config_legacy_bundling": "", | ||||
|     "npm_config_dry_run": "", | ||||
|     "npm_package_devDependencies_markdown_toc": "^0.11.7", | ||||
|     "npm_config_only": "", | ||||
|     "npm_config_browser": "", | ||||
|     "npm_config_viewer": "man", | ||||
|     "npm_config_commit_hooks": "true", | ||||
|     "npm_package_gitHead": "7126abe7ec1d66d3252f3598fbd6bd27217018bc", | ||||
|     "npm_config_also": "", | ||||
|     "npm_package_scripts_otherdoc": "node docs/gendocs.js --in docs/src --out dist/docs --suppress-toc 'docs/src/index.md|docs/src/process/index.md'", | ||||
|     "npm_package_devDependencies_minimist": "^1.1.1", | ||||
|     "npm_config_sign_git_commit": "", | ||||
|     "npm_config_rollback": "true", | ||||
|     "npm_package_devDependencies_fast_sass_loader": "1.4.6", | ||||
|     "TERM_PROGRAM": "Apple_Terminal", | ||||
|     "npm_config_usage": "", | ||||
|     "npm_config_audit": "true", | ||||
|     "npm_package_devDependencies_git_rev_sync": "^1.4.0", | ||||
|     "npm_package_devDependencies_file_loader": "^1.1.11", | ||||
|     "npm_package_devDependencies_d3_selection": "1.3.x", | ||||
|     "NODE": "/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node", | ||||
|     "npm_package_homepage": "https://github.com/nasa/openmct#readme", | ||||
|     "INIT_CWD": "/Users/dtailor/Desktop/openmct", | ||||
|     "NVM_CD_FLAGS": "", | ||||
|     "npm_config_globalignorefile": "/Users/dtailor/.nvm/versions/node/v11.9.0/etc/npmignore", | ||||
|     "npm_package_devDependencies_comma_separated_values": "^3.6.4", | ||||
|     "SHELL": "/bin/bash", | ||||
|     "TERM": "xterm-256color", | ||||
|     "npm_config_init_author_url": "", | ||||
|     "npm_config_shell": "/bin/bash", | ||||
|     "npm_config_maxsockets": "50", | ||||
|     "npm_package_devDependencies_vue_template_compiler": "2.5.6", | ||||
|     "npm_package_devDependencies_style_loader": "^1.0.1", | ||||
|     "npm_package_devDependencies_moment_duration_format": "^2.2.2", | ||||
|     "npm_config_parseable": "", | ||||
|     "npm_config_shrinkwrap": "true", | ||||
|     "npm_config_metrics_registry": "https://registry.npmjs.org/", | ||||
|     "TMPDIR": "/var/folders/ks/ytghmh9x4lj3cchr5km5lhkcb7v9y2/T/", | ||||
|     "npm_config_timing": "", | ||||
|     "npm_config_init_license": "ISC", | ||||
|     "npm_package_scripts_lint": "eslint platform example src --ext .js,.vue openmct.js", | ||||
|     "npm_package_devDependencies_d3_array": "1.2.x", | ||||
|     "Apple_PubSub_Socket_Render": "/private/tmp/com.apple.launchd.PsV6Dfq4Tm/Render", | ||||
|     "npm_config_if_present": "", | ||||
|     "npm_package_devDependencies_concurrently": "^3.6.1", | ||||
|     "TERM_PROGRAM_VERSION": "421.2", | ||||
|     "npm_package_scripts_jsdoc": "jsdoc -c jsdoc.json -R API.md -r -d dist/docs/api", | ||||
|     "npm_config_sign_git_tag": "", | ||||
|     "npm_config_init_author_email": "", | ||||
|     "npm_config_cache_max": "Infinity", | ||||
|     "npm_config_preid": "", | ||||
|     "npm_config_long": "", | ||||
|     "npm_config_local_address": "", | ||||
|     "npm_config_cert": "", | ||||
|     "npm_config_git_tag_version": "true", | ||||
|     "npm_package_devDependencies_exports_loader": "^0.7.0", | ||||
|     "TERM_SESSION_ID": "0630D2FA-BAC2-48D3-A21D-9AB58A79FB14", | ||||
|     "npm_config_noproxy": "", | ||||
|     "npm_config_registry": "https://registry.npmjs.org/", | ||||
|     "npm_config_fetch_retries": "2", | ||||
|     "npm_package_private": "true", | ||||
|     "npm_package_devDependencies_karma_jasmine": "^1.1.2", | ||||
|     "npm_package_repository_url": "git+https://github.com/nasa/openmct.git", | ||||
|     "npm_config_versions": "", | ||||
|     "npm_config_key": "", | ||||
|     "npm_config_message": "%s", | ||||
|     "npm_package_readmeFilename": "README.md", | ||||
|     "npm_package_devDependencies_painterro": "^0.2.65", | ||||
|     "npm_package_scripts_verify": "concurrently 'npm:test' 'npm:lint'", | ||||
|     "npm_package_devDependencies_webpack": "^4.16.2", | ||||
|     "npm_package_devDependencies_eventemitter3": "^1.2.0", | ||||
|     "npm_package_description": "The Open MCT core platform", | ||||
|     "USER": "dtailor", | ||||
|     "NVM_DIR": "/Users/dtailor/.nvm", | ||||
|     "npm_package_license": "Apache-2.0", | ||||
|     "npm_package_scripts_build_dev": "webpack", | ||||
|     "npm_package_devDependencies_webpack_cli": "^3.1.0", | ||||
|     "npm_package_devDependencies_location_bar": "^3.0.1", | ||||
|     "npm_package_devDependencies_jasmine_core": "^3.1.0", | ||||
|     "npm_config_globalconfig": "/Users/dtailor/.nvm/versions/node/v11.9.0/etc/npmrc", | ||||
|     "npm_package_devDependencies_karma": "^2.0.3", | ||||
|     "npm_config_prefer_online": "", | ||||
|     "npm_config_always_auth": "", | ||||
|     "npm_config_logs_max": "10", | ||||
|     "npm_package_devDependencies_angular": "1.7.9", | ||||
|     "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.JH8E4KgH06/Listeners", | ||||
|     "npm_package_devDependencies_request": "^2.69.0", | ||||
|     "npm_package_devDependencies_eslint": "5.2.0", | ||||
|     "__CF_USER_TEXT_ENCODING": "0x167DA7C2:0x0:0x0", | ||||
|     "npm_execpath": "/Users/dtailor/.nvm/versions/node/v11.9.0/lib/node_modules/npm/bin/npm-cli.js", | ||||
|     "npm_config_global_style": "", | ||||
|     "npm_config_cache_lock_retries": "10", | ||||
|     "npm_config_cafile": "", | ||||
|     "npm_config_update_notifier": "true", | ||||
|     "npm_package_scripts_test_debug": "cross-env NODE_ENV=debug karma start --no-single-run", | ||||
|     "npm_package_devDependencies_glob": ">= 3.0.0", | ||||
|     "npm_config_heading": "npm", | ||||
|     "npm_config_audit_level": "low", | ||||
|     "npm_package_devDependencies_mini_css_extract_plugin": "^0.4.1", | ||||
|     "npm_package_devDependencies_copy_webpack_plugin": "^4.5.2", | ||||
|     "npm_config_read_only": "", | ||||
|     "npm_config_offline": "", | ||||
|     "npm_config_searchlimit": "20", | ||||
|     "npm_config_fetch_retry_mintimeout": "10000", | ||||
|     "npm_package_devDependencies_webpack_dev_middleware": "^3.1.3", | ||||
|     "npm_config_json": "", | ||||
|     "npm_config_access": "", | ||||
|     "npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"test\"],\"original\":[\"run\",\"test\"]}", | ||||
|     "npm_package_scripts_lint_fix": "eslint platform example src --ext .js,.vue openmct.js --fix", | ||||
|     "npm_package_devDependencies_uuid": "^3.3.3", | ||||
|     "npm_package_devDependencies_karma_coverage": "^1.1.2", | ||||
|     "PATH": "/Users/dtailor/.nvm/versions/node/v11.9.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/dtailor/Desktop/openmct/node_modules/.bin:/Users/dtailor/.nvm/versions/node/v11.9.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/dtailor/Desktop/openmct/node_modules/.bin:/Users/dtailor/.nvm/versions/node/v11.9.0/bin:/Users/dtailor/.homebrew/bin:/Users/dtailor/local/bin:/Users/dtailor/.homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/dtailor/Applications/Visual Studio Code.app/Contents/Resources/app/bin:/opt/local/bin:/Users/dtailor/.homebrew/bin:/Users/dtailor/.homebrew/bin:/Users/dtailor/.homebrew/bin:/Users/dtailor/local/bin:/Users/dtailor/.homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin", | ||||
|     "npm_config_allow_same_version": "", | ||||
|     "npm_config_https_proxy": "", | ||||
|     "npm_config_engine_strict": "", | ||||
|     "npm_config_description": "true", | ||||
|     "npm_package_devDependencies_html2canvas": "^1.0.0-alpha.12", | ||||
|     "_": "/Users/dtailor/Desktop/openmct/node_modules/.bin/karma", | ||||
|     "npm_config_userconfig": "/Users/dtailor/.npmrc", | ||||
|     "npm_config_init_module": "/Users/dtailor/.npm-init.js", | ||||
|     "npm_package_author": "", | ||||
|     "npm_package_devDependencies_karma_chrome_launcher": "^2.2.0", | ||||
|     "npm_package_devDependencies_d3_scale": "1.0.x", | ||||
|     "npm_config_cidr": "", | ||||
|     "npm_package_devDependencies_printj": "^1.2.1", | ||||
|     "PWD": "/Users/dtailor/Desktop/openmct", | ||||
|     "npm_config_user": "377333698", | ||||
|     "npm_config_node_version": "11.9.0", | ||||
|     "npm_package_bugs_url": "https://github.com/nasa/openmct/issues", | ||||
|     "npm_package_scripts_test_watch": "karma start --no-single-run", | ||||
|     "npm_lifecycle_event": "test", | ||||
|     "npm_package_devDependencies_v8_compile_cache": "^1.1.0", | ||||
|     "npm_config_ignore_prepublish": "", | ||||
|     "npm_config_save": "true", | ||||
|     "npm_config_editor": "vi", | ||||
|     "npm_config_auth_type": "legacy", | ||||
|     "npm_package_repository_type": "git", | ||||
|     "npm_package_devDependencies_vue": "2.5.6", | ||||
|     "npm_package_devDependencies_marked": "^0.3.5", | ||||
|     "npm_package_devDependencies_angular_route": "1.4.14", | ||||
|     "npm_package_name": "openmct", | ||||
|     "LANG": "en_US.UTF-8", | ||||
|     "npm_config_script_shell": "", | ||||
|     "npm_config_tag": "latest", | ||||
|     "npm_config_global": "", | ||||
|     "npm_config_progress": "true", | ||||
|     "npm_package_scripts_start": "node app.js", | ||||
|     "npm_package_devDependencies_karma_coverage_istanbul_reporter": "^2.1.1", | ||||
|     "npm_config_ham_it_up": "", | ||||
|     "npm_config_searchstaleness": "900", | ||||
|     "npm_config_optional": "true", | ||||
|     "npm_package_scripts_docs": "npm run jsdoc ; npm run otherdoc", | ||||
|     "npm_package_devDependencies_istanbul_instrumenter_loader": "^3.0.1", | ||||
|     "XPC_FLAGS": "0x0", | ||||
|     "npm_config_save_prod": "", | ||||
|     "npm_config_force": "", | ||||
|     "npm_config_bin_links": "true", | ||||
|     "npm_package_devDependencies_moment": "2.25.3", | ||||
|     "npm_package_devDependencies_karma_webpack": "^3.0.0", | ||||
|     "npm_package_devDependencies_express": "^4.13.1", | ||||
|     "npm_config_searchopts": "", | ||||
|     "npm_package_devDependencies_d3_time": "1.0.x", | ||||
|     "FORCE_COLOR": "2", | ||||
|     "npm_config_node_gyp": "/Users/dtailor/.nvm/versions/node/v11.9.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js", | ||||
|     "npm_config_depth": "Infinity", | ||||
|     "npm_package_scripts_build_prod": "cross-env NODE_ENV=production webpack", | ||||
|     "npm_config_sso_poll_frequency": "500", | ||||
|     "npm_config_rebuild_bundle": "true", | ||||
|     "npm_package_version": "1.0.0-snapshot", | ||||
|     "XPC_SERVICE_NAME": "0", | ||||
|     "npm_config_unicode": "true", | ||||
|     "npm_package_devDependencies_jsdoc": "^3.3.2", | ||||
|     "SHLVL": "4", | ||||
|     "HOME": "/Users/dtailor", | ||||
|     "npm_config_fetch_retry_maxtimeout": "60000", | ||||
|     "npm_package_scripts_test": "karma start --single-run", | ||||
|     "npm_package_devDependencies_zepto": "^1.2.0", | ||||
|     "npm_package_devDependencies_eslint_plugin_vue": "^6.0.0", | ||||
|     "npm_config_ca": "", | ||||
|     "npm_config_tag_version_prefix": "v", | ||||
|     "npm_config_strict_ssl": "true", | ||||
|     "npm_config_sso_type": "oauth", | ||||
|     "npm_config_scripts_prepend_node_path": "warn-only", | ||||
|     "npm_config_save_prefix": "^", | ||||
|     "npm_config_loglevel": "notice", | ||||
|     "npm_package_devDependencies_lodash": "^3.10.1", | ||||
|     "npm_package_devDependencies_karma_cli": "^1.0.1", | ||||
|     "npm_package_devDependencies_d3_color": "1.0.x", | ||||
|     "npm_config_save_exact": "", | ||||
|     "npm_config_dev": "", | ||||
|     "npm_config_group": "1286109195", | ||||
|     "npm_config_fetch_retry_factor": "10", | ||||
|     "npm_package_devDependencies_webpack_hot_middleware": "^2.22.3", | ||||
|     "npm_package_devDependencies_cross_env": "^6.0.3", | ||||
|     "npm_package_devDependencies_babel_eslint": "8.2.6", | ||||
|     "HOMEBREW_PREFIX": "/Users/dtailor/.homebrew", | ||||
|     "npm_config_version": "", | ||||
|     "npm_config_prefer_offline": "", | ||||
|     "npm_config_cache_lock_stale": "60000", | ||||
|     "npm_config_otp": "", | ||||
|     "npm_config_cache_min": "10", | ||||
|     "npm_package_devDependencies_vue_loader": "^15.2.6", | ||||
|     "npm_config_searchexclude": "", | ||||
|     "npm_config_cache": "/Users/dtailor/.npm", | ||||
|     "npm_package_scripts_test_coverage": "./scripts/test-coverage.sh", | ||||
|     "npm_package_devDependencies_d3_interpolate": "1.1.x", | ||||
|     "npm_package_devDependencies_d3_format": "1.2.x", | ||||
|     "LOGNAME": "dtailor", | ||||
|     "npm_lifecycle_script": "karma start --single-run", | ||||
|     "npm_config_color": "true", | ||||
|     "npm_package_devDependencies_node_bourbon": "^4.2.3", | ||||
|     "npm_package_devDependencies_karma_sourcemap_loader": "^0.3.7", | ||||
|     "npm_package_devDependencies_karma_html_reporter": "^0.2.7", | ||||
|     "npm_config_proxy": "", | ||||
|     "npm_config_package_lock": "true", | ||||
|     "npm_package_devDependencies_d3_time_format": "2.1.x", | ||||
|     "npm_package_devDependencies_d3_axis": "1.0.x", | ||||
|     "npm_config_package_lock_only": "", | ||||
|     "npm_package_devDependencies_moment_timezone": "0.5.28", | ||||
|     "npm_config_save_optional": "", | ||||
|     "NVM_BIN": "/Users/dtailor/.nvm/versions/node/v11.9.0/bin", | ||||
|     "npm_config_ignore_scripts": "", | ||||
|     "npm_config_user_agent": "npm/6.5.0 node/v11.9.0 darwin x64", | ||||
|     "npm_package_devDependencies_imports_loader": "^0.8.0", | ||||
|     "npm_package_devDependencies_file_saver": "^1.3.8", | ||||
|     "npm_config_cache_lock_wait": "10000", | ||||
|     "npm_config_production": "", | ||||
|     "npm_package_scripts_build_watch": "webpack --watch", | ||||
|     "DISPLAY": "/private/tmp/com.apple.launchd.E3N8oC6RMf/org.macosforge.xquartz:0", | ||||
|     "npm_config_send_metrics": "", | ||||
|     "npm_config_save_bundle": "", | ||||
|     "npm_package_scripts_prepare": "npm run build:prod", | ||||
|     "npm_config_node_options": "", | ||||
|     "npm_config_umask": "0022", | ||||
|     "npm_config_init_version": "1.0.0", | ||||
|     "npm_package_devDependencies_split": "^1.0.0", | ||||
|     "npm_package_devDependencies_raw_loader": "^0.5.1", | ||||
|     "npm_config_init_author_name": "", | ||||
|     "npm_config_git": "git", | ||||
|     "npm_config_scope": "", | ||||
|     "npm_package_scripts_clean": "rm -rf ./dist", | ||||
|     "npm_package_devDependencies_node_sass": "^4.9.2", | ||||
|     "npm_package_devDependencies_css_loader": "^1.0.0", | ||||
|     "DISABLE_UPDATE_CHECK": "1", | ||||
|     "npm_config_onload_script": "", | ||||
|     "npm_config_unsafe_perm": "true", | ||||
|     "npm_config_tmp": "/var/folders/ks/ytghmh9x4lj3cchr5km5lhkcb7v9y2/T", | ||||
|     "npm_package_devDependencies_d3_collection": "1.0.x", | ||||
|     "npm_node_execpath": "/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node", | ||||
|     "npm_config_link": "", | ||||
|     "npm_config_prefix": "/Users/dtailor/.nvm/versions/node/v11.9.0", | ||||
|     "npm_package_devDependencies_html_loader": "^0.5.5" | ||||
|   }, | ||||
|   "userLimits": { | ||||
|     "core_file_size_blocks": { | ||||
|       "soft": 0, | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "data_seg_size_kbytes": { | ||||
|       "soft": "unlimited", | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "file_size_blocks": { | ||||
|       "soft": "unlimited", | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "max_locked_memory_bytes": { | ||||
|       "soft": "unlimited", | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "max_memory_size_kbytes": { | ||||
|       "soft": "unlimited", | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "open_files": { | ||||
|       "soft": 24576, | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "stack_size_bytes": { | ||||
|       "soft": 8388608, | ||||
|       "hard": 67104768 | ||||
|     }, | ||||
|     "cpu_time_seconds": { | ||||
|       "soft": "unlimited", | ||||
|       "hard": "unlimited" | ||||
|     }, | ||||
|     "max_user_processes": { | ||||
|       "soft": 1418, | ||||
|       "hard": 2128 | ||||
|     }, | ||||
|     "virtual_memory_kbytes": { | ||||
|       "soft": "unlimited", | ||||
|       "hard": "unlimited" | ||||
|     } | ||||
|   }, | ||||
|   "sharedObjects": [ | ||||
|     "/Users/dtailor/.nvm/versions/node/v11.9.0/bin/node", | ||||
|     "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", | ||||
|     "/usr/lib/libSystem.B.dylib", | ||||
|     "/usr/lib/libc++.1.dylib", | ||||
|     "/usr/lib/libobjc.A.dylib", | ||||
|     "/usr/lib/libDiagnosticMessagesClient.dylib", | ||||
|     "/usr/lib/libicucore.A.dylib", | ||||
|     "/usr/lib/libz.1.dylib", | ||||
|     "/usr/lib/libc++abi.dylib", | ||||
|     "/usr/lib/system/libcache.dylib", | ||||
|     "/usr/lib/system/libcommonCrypto.dylib", | ||||
|     "/usr/lib/system/libcompiler_rt.dylib", | ||||
|     "/usr/lib/system/libcopyfile.dylib", | ||||
|     "/usr/lib/system/libcorecrypto.dylib", | ||||
|     "/usr/lib/system/libdispatch.dylib", | ||||
|     "/usr/lib/system/libdyld.dylib", | ||||
|     "/usr/lib/system/libkeymgr.dylib", | ||||
|     "/usr/lib/system/liblaunch.dylib", | ||||
|     "/usr/lib/system/libmacho.dylib", | ||||
|     "/usr/lib/system/libquarantine.dylib", | ||||
|     "/usr/lib/system/libremovefile.dylib", | ||||
|     "/usr/lib/system/libsystem_asl.dylib", | ||||
|     "/usr/lib/system/libsystem_blocks.dylib", | ||||
|     "/usr/lib/system/libsystem_c.dylib", | ||||
|     "/usr/lib/system/libsystem_configuration.dylib", | ||||
|     "/usr/lib/system/libsystem_coreservices.dylib", | ||||
|     "/usr/lib/system/libsystem_darwin.dylib", | ||||
|     "/usr/lib/system/libsystem_dnssd.dylib", | ||||
|     "/usr/lib/system/libsystem_info.dylib", | ||||
|     "/usr/lib/system/libsystem_m.dylib", | ||||
|     "/usr/lib/system/libsystem_malloc.dylib", | ||||
|     "/usr/lib/system/libsystem_networkextension.dylib", | ||||
|     "/usr/lib/system/libsystem_notify.dylib", | ||||
|     "/usr/lib/system/libsystem_sandbox.dylib", | ||||
|     "/usr/lib/system/libsystem_secinit.dylib", | ||||
|     "/usr/lib/system/libsystem_kernel.dylib", | ||||
|     "/usr/lib/system/libsystem_platform.dylib", | ||||
|     "/usr/lib/system/libsystem_pthread.dylib", | ||||
|     "/usr/lib/system/libsystem_symptoms.dylib", | ||||
|     "/usr/lib/system/libsystem_trace.dylib", | ||||
|     "/usr/lib/system/libunwind.dylib", | ||||
|     "/usr/lib/system/libxpc.dylib", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices", | ||||
|     "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics", | ||||
|     "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO", | ||||
|     "/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis", | ||||
|     "/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight", | ||||
|     "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface", | ||||
|     "/usr/lib/libxml2.2.dylib", | ||||
|     "/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate", | ||||
|     "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation", | ||||
|     "/usr/lib/libcompression.dylib", | ||||
|     "/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration", | ||||
|     "/System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay", | ||||
|     "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit", | ||||
|     "/System/Library/Frameworks/Metal.framework/Versions/A/Metal", | ||||
|     "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders", | ||||
|     "/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport", | ||||
|     "/System/Library/Frameworks/Security.framework/Versions/A/Security", | ||||
|     "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore", | ||||
|     "/usr/lib/libbsm.0.dylib", | ||||
|     "/usr/lib/liblzma.5.dylib", | ||||
|     "/usr/lib/libauto.dylib", | ||||
|     "/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration", | ||||
|     "/usr/lib/libarchive.2.dylib", | ||||
|     "/usr/lib/liblangid.dylib", | ||||
|     "/usr/lib/libCRFSuite.dylib", | ||||
|     "/usr/lib/libenergytrace.dylib", | ||||
|     "/usr/lib/system/libkxld.dylib", | ||||
|     "/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression", | ||||
|     "/usr/lib/libOpenScriptingUtil.dylib", | ||||
|     "/usr/lib/libcoretls.dylib", | ||||
|     "/usr/lib/libcoretls_cfhelpers.dylib", | ||||
|     "/usr/lib/libpam.2.dylib", | ||||
|     "/usr/lib/libsqlite3.dylib", | ||||
|     "/usr/lib/libxar.1.dylib", | ||||
|     "/usr/lib/libbz2.1.0.dylib", | ||||
|     "/usr/lib/libnetwork.dylib", | ||||
|     "/usr/lib/libapple_nghttp2.dylib", | ||||
|     "/usr/lib/libpcap.A.dylib", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices", | ||||
|     "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList", | ||||
|     "/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS", | ||||
|     "/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth", | ||||
|     "/System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport", | ||||
|     "/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC", | ||||
|     "/System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP", | ||||
|     "/System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities", | ||||
|     "/usr/lib/libmecabra.dylib", | ||||
|     "/usr/lib/libmecab.1.0.0.dylib", | ||||
|     "/usr/lib/libgermantok.dylib", | ||||
|     "/usr/lib/libThaiTokenizer.dylib", | ||||
|     "/usr/lib/libChineseTokenizer.dylib", | ||||
|     "/usr/lib/libiconv.2.dylib", | ||||
|     "/usr/lib/libcharset.1.dylib", | ||||
|     "/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling", | ||||
|     "/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji", | ||||
|     "/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon", | ||||
|     "/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData", | ||||
|     "/usr/lib/libcmph.dylib", | ||||
|     "/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData", | ||||
|     "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory", | ||||
|     "/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS", | ||||
|     "/usr/lib/libutil.dylib", | ||||
|     "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement", | ||||
|     "/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement", | ||||
|     "/usr/lib/libxslt.1.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib", | ||||
|     "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib", | ||||
|     "/System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler", | ||||
|     "/System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator", | ||||
|     "/System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment", | ||||
|     "/System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib", | ||||
|     "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore", | ||||
|     "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage", | ||||
|     "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork", | ||||
|     "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix", | ||||
|     "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector", | ||||
|     "/System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools", | ||||
|     "/System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary", | ||||
|     "/usr/lib/libMobileGestalt.dylib", | ||||
|     "/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage", | ||||
|     "/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL", | ||||
|     "/System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer", | ||||
|     "/System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore", | ||||
|     "/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL", | ||||
|     "/usr/lib/libFosl_dynamic.dylib", | ||||
|     "/System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib", | ||||
|     "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib", | ||||
|     "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib", | ||||
|     "/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib", | ||||
|     "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib", | ||||
|     "/usr/lib/libcups.2.dylib", | ||||
|     "/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos", | ||||
|     "/System/Library/Frameworks/GSS.framework/Versions/A/GSS", | ||||
|     "/usr/lib/libresolv.9.dylib", | ||||
|     "/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal", | ||||
|     "/usr/lib/libheimdal-asn1.dylib", | ||||
|     "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory", | ||||
|     "/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth", | ||||
|     "/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation", | ||||
|     "/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio", | ||||
|     "/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox", | ||||
|     "/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce", | ||||
|     "/System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices", | ||||
|     "/System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard" | ||||
|   ] | ||||
| } | ||||
| @@ -1,2 +0,0 @@ | ||||
| export NODE_OPTIONS=--max_old_space_size=4096 | ||||
| cross-env COVERAGE=true karma start --single-run | ||||
							
								
								
									
										72
									
								
								src/plugins/plotlyPlot/PlotlyViewProvider.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								src/plugins/plotlyPlot/PlotlyViewProvider.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| /***************************************************************************** | ||||
|  * Open MCT, Copyright (c) 2014-2019, 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. | ||||
|  *****************************************************************************/ | ||||
|  | ||||
| import PlotlyViewLayout from './components/PlotlyViewLayout.vue'; | ||||
| import Vue from 'vue'; | ||||
|  | ||||
| export default function PlotlyViewProvider(openmct) { | ||||
|     return { | ||||
|         key: 'plotlyPlot', | ||||
|         name: 'Plotly Plot', | ||||
|         cssClass: 'icon-plot-overlay', | ||||
|         canView: function (domainObject) { | ||||
|             return domainObject.type === 'plotlyPlot'; | ||||
|         }, | ||||
|         canEdit: function (domainObject) { | ||||
|             return domainObject.type === 'plotlyPlot'; | ||||
|         }, | ||||
|         view: function (domainObject) { | ||||
|             let component; | ||||
|  | ||||
|             return { | ||||
|                 show: function (element, isEditing) { | ||||
|                     component =  new Vue({ | ||||
|                         provide: { | ||||
|                             openmct, | ||||
|                             domainObject | ||||
|                         }, | ||||
|                         el: element, | ||||
|                         components: { | ||||
|                             PlotlyViewLayout | ||||
|                         }, | ||||
|                         data() { | ||||
|                             return { | ||||
|                                 isEditing | ||||
|                             } | ||||
|                         }, | ||||
|                         template: '<plotly-view-layout :isEditing="isEditing"></plotly-view-layout>' | ||||
|                     }); | ||||
|                 }, | ||||
|                 onEditModeChange: function (isEditing) { | ||||
|                     component.isEditing = isEditing; | ||||
|                 }, | ||||
|                 destroy: function (element) { | ||||
|                     component.$destroy(); | ||||
|                     component = undefined; | ||||
|                 } | ||||
|             }; | ||||
|         }, | ||||
|         priority: function () { | ||||
|             return 1; | ||||
|         } | ||||
|     }; | ||||
| } | ||||
							
								
								
									
										237
									
								
								src/plugins/plotlyPlot/components/PlotlyViewLayout.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										237
									
								
								src/plugins/plotlyPlot/components/PlotlyViewLayout.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,237 @@ | ||||
| <template> | ||||
| <div class="l-view-section"></div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import Plotly from 'plotly.js/dist/plotly.min.js'; | ||||
| import moment from 'moment' | ||||
|  | ||||
| export default { | ||||
|     inject: ['openmct', 'domainObject'], | ||||
|     data: function () { | ||||
|  | ||||
|         return { | ||||
|             telemetryObjects: [], | ||||
|             bounds: {}, | ||||
|             timeRange:  0, | ||||
|             plotData: {}, | ||||
|             subscriptions: {} | ||||
|         } | ||||
|     }, | ||||
|     mounted() { | ||||
|         this.plotElement = document.querySelector('.l-view-section'); | ||||
|  | ||||
|         this.composition = this.openmct.composition.get(this.domainObject); | ||||
|         this.composition.on('add', this.addTelemetry); | ||||
|         this.composition.on('remove', this.removeTelemetry); | ||||
|         this.composition.load(); | ||||
|  | ||||
|         this.openmct.time.on('bounds', this.refreshData); | ||||
|         this.openmct.time.on('clock', this.changeClock); | ||||
|     }, | ||||
|     destroyed() { | ||||
|         Object.keys(this.subscriptions) | ||||
|             .forEach(subscription => this.unsubscribe(subscription)); | ||||
|     }, | ||||
|     methods: { | ||||
|         changeClock() { | ||||
|             if (this.openmct.time.clock()) { | ||||
|                 //Plotly.purge(this.plotElement); | ||||
|                 this.telemetryObjects.forEach((telemetryObject, index) => { | ||||
|                     this.subscribeTo(telemetryObject, index); | ||||
|                 }); | ||||
|             } | ||||
|         }, | ||||
|         addTelemetry(telemetryObject) { | ||||
|             this.telemetryObjects.push(telemetryObject); | ||||
|             const index = this.telemetryObjects.length - 1; | ||||
|             this.requestHistory(telemetryObject, index, true); | ||||
|             this.subscribeTo(telemetryObject, index); | ||||
|         }, | ||||
|         subscribeTo(telemetryObject, index) { | ||||
|             let keyString = this.openmct.objects.makeKeyString(telemetryObject.identifier); | ||||
|             this.subscriptions[keyString] = this.openmct.telemetry.subscribe(telemetryObject, (datum) => { | ||||
|                 //Check that telemetry object has not been removed since telemetry was requested. | ||||
|                 if (!this.telemetryObjects.includes(telemetryObject)) { | ||||
|                     return; | ||||
|                 } | ||||
|                 this.updateData(datum, index); | ||||
|             }); | ||||
|         }, | ||||
|         unsubscribe(keyString) { | ||||
|             this.subscriptions[keyString](); | ||||
|             delete this.subscriptions[keyString]; | ||||
|         }, | ||||
|         refreshData(bounds, isTick) { | ||||
|             this.bounds = bounds; | ||||
|  | ||||
|             this.telemetryObjects.forEach((telemetryObject, index) => { | ||||
|                 if(!isTick) { | ||||
|                     this.requestHistory(telemetryObject, index, false); | ||||
|                 } else { | ||||
|                     if (this.timeRange === 0 || this.timeRange !== this.bounds.end - this.bounds.start) { | ||||
|                         this.timeRange = this.bounds.end - this.bounds.start; | ||||
|  | ||||
|                         this.requestHistory(telemetryObject, index, false); | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
|         }, | ||||
|         requestHistory(telemetryObject, index, isAdd) { | ||||
|             this.openmct | ||||
|                 .telemetry | ||||
|                 .request(telemetryObject, { | ||||
|                     start: this.bounds.start, | ||||
|                     end: this.bounds.end | ||||
|                 }) | ||||
|                 .then((telemetryData) => { | ||||
|                     this.addTrace(telemetryData, telemetryObject, index, isAdd); | ||||
|                 }); | ||||
|         }, | ||||
|         getLayout(telemetryObject, isFixed) { | ||||
|             return { | ||||
|                 hovermode: 'compare', | ||||
|                 hoverdistance: -1, | ||||
|                 autosize: "true", | ||||
|                 showlegend: true, | ||||
|                 legend: { | ||||
|                     y: 1.1, | ||||
|                     "orientation": "h" | ||||
|                 }, | ||||
|                 font: { | ||||
|                     family: "'Helvetica Neue', Helvetica, Arial, sans-serif", | ||||
|                     size: "12px", | ||||
|                     color: "#666" | ||||
|                 }, | ||||
|                 xaxis: { // hardcoded as UTC for now | ||||
|                     title: 'UTC', | ||||
|                     zeroline: false, | ||||
|                     range: isFixed ? 'undefined' : [ | ||||
|                         this.formatDatumX({utc: this.bounds.start}), | ||||
|                         this.formatDatumX({utc: this.bounds.start}) | ||||
|                     ] | ||||
|                 }, | ||||
|                 yaxis: { | ||||
|                     title: this.getYAxisLabel(telemetryObject), | ||||
|                     zeroline: false | ||||
|                 }, | ||||
|                 margin: { | ||||
|                     l: 40, | ||||
|                     r: 10, | ||||
|                     b: 40, | ||||
|                     t: 10 | ||||
|                 }, | ||||
|                 paper_bgcolor: 'transparent', | ||||
|                 plot_bgcolor: 'transparent' | ||||
|             } | ||||
|         }, | ||||
|         removeTelemetry(identifier) { | ||||
|             let keyString = this.openmct.objects.makeKeyString(identifier); | ||||
|             this.unsubscribe(keyString); | ||||
|             this.telemetryObjects = this.telemetryObjects.filter(object => !(identifier.key === object.identifier.key)); | ||||
|             if (!this.telemetryObjects.length) { | ||||
|                 //Plotly.purge(this.plotElement); | ||||
|             } else { | ||||
|                 //Plotly.deleteTraces(this.plotElement, this.telemetryObjects.length - 1); | ||||
|             } | ||||
|         }, | ||||
|         getYAxisLabel(telemetryObject) { | ||||
|             this.setYAxisProp(telemetryObject); | ||||
|             const valueMetadatas = this.openmct.telemetry.getMetadata(telemetryObject).values(); | ||||
|             const index = valueMetadatas.findIndex(value => value.key === this.yAxisProp); | ||||
|             const yLabel = valueMetadatas[index].name; | ||||
|  | ||||
|             return yLabel; | ||||
|         }, | ||||
|         setYAxisProp(telemetryObject) { | ||||
|             if (telemetryObject.type === 'generator') { | ||||
|                 this.yAxisProp = 'sin'; | ||||
|             } else if (telemetryObject.type === 'example.state-generator') { | ||||
|                 this.yAxisProp = 'state'; | ||||
|             } else if (telemetryObject.type === 'conditionSet') { | ||||
|                 this.yAxisProp = 'output'; | ||||
|             } | ||||
|         }, | ||||
|         formatDatumX(datum) { | ||||
|             let timestamp = moment.utc(datum.utc).format('YYYY-MM-DDTHH:mm:ss[Z]'); | ||||
|             return timestamp; | ||||
|         }, | ||||
|         formatDatumY(datum) { | ||||
|             return datum.sin; | ||||
|         }, | ||||
|         addTrace(telemetryData, telemetryObject, index, isAdd) { | ||||
|             let x = []; | ||||
|             let y = []; | ||||
|  | ||||
|             // temp palette for demo | ||||
|             const colors = ['rgb(32, 178, 170)', 'rgb(154, 205, 50)', 'rgb(255, 140, 0)']; | ||||
|  | ||||
|             telemetryData.forEach((datum) => { | ||||
|                 x.push(this.formatDatumX(datum)); | ||||
|                 y.push(this.formatDatumY(datum)); | ||||
|             }) | ||||
|  | ||||
|             let traceData = [{ // trace configuration | ||||
|                 x, | ||||
|                 y, | ||||
|                 name: telemetryObject.name, | ||||
|                 type: 'scattergl', | ||||
|                 mode: 'lines+markers', | ||||
|                 marker: { | ||||
|                     size: 5 | ||||
|                 }, | ||||
|                 line: { | ||||
|                     color: colors[index], // to set new color for each trace | ||||
|                     shape: 'linear', | ||||
|                     width: 1.5 | ||||
|                 } | ||||
|             }]; | ||||
|  | ||||
|             this.plotData[telemetryObject.identifier.key] = traceData[0]; | ||||
|  | ||||
|             if (!this.plotElement.childNodes.length) { // not traces yet, so create new plot | ||||
|                 // Plotly.newPlot( | ||||
|                 //     this.plotElement, | ||||
|                 //     traceData, | ||||
|                 //     this.getLayout(telemetryObject, true), | ||||
|                 //     { | ||||
|                 //         displayModeBar: false, // turns off hover-activated toolbar | ||||
|                 //         staticPlot: true // turns off hover effects on datapoints | ||||
|                 //     } | ||||
|                 // ); | ||||
|             } else { | ||||
|                 // if (isAdd) { // add a new trace to existing plot | ||||
|                 //     Plotly.addTraces(this.plotElement, traceData); | ||||
|                 // } else { // update existing trace with new data (bounds change) | ||||
|                 //     Plotly.react(this.plotElement, Object.values(this.plotData), this.getLayout(telemetryObject, false)); | ||||
|                 //     this.updatePlotRange(); | ||||
|                 // } | ||||
|             } | ||||
|         }, | ||||
|         updateData(datum, index) { | ||||
|             // plot all datapoints within bounds | ||||
|             if (datum.utc <= this.bounds.end) { | ||||
|  | ||||
|                 // Plotly.extendTraces( | ||||
|                 //     this.plotElement, | ||||
|                 //     { | ||||
|                 //         x: [[this.formatDatumX(datum)]], | ||||
|                 //         y: [[this.formatDatumY(datum)]] | ||||
|                 //     }, | ||||
|                 //     [index] | ||||
|                 // ); | ||||
|                 this.updatePlotRange(); | ||||
|             } | ||||
|         }, | ||||
|         updatePlotRange() { | ||||
|             let newRange = { | ||||
|                 'xaxis.range': [ | ||||
|                     this.formatDatumX({utc: this.bounds.start}), | ||||
|                     this.formatDatumX({utc: this.bounds.end}) | ||||
|                 ] | ||||
|             }; | ||||
| //            Plotly.relayout(this.plotElement, newRange); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| </script> | ||||
							
								
								
									
										17
									
								
								src/plugins/plotlyPlot/plugin.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/plugins/plotlyPlot/plugin.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| import PlotlyViewProvider from './PlotlyViewProvider'; | ||||
|  | ||||
| export default function plugin() { | ||||
|     return function install(openmct) { | ||||
|         openmct.objectViews.addProvider(new PlotlyViewProvider(openmct)); | ||||
|  | ||||
|         openmct.types.addType('plotlyPlot', { | ||||
|             name: "Plotly Plot", | ||||
|             description: "Simple plot rendered by plotly.js", | ||||
|             creatable: true, | ||||
|             cssClass: 'icon-plot-overlay', | ||||
|             initialize: function (domainObject) { | ||||
|                 domainObject.composition = []; | ||||
|             } | ||||
|         }); | ||||
|     }; | ||||
| } | ||||
| @@ -34,6 +34,7 @@ define([ | ||||
|     './URLIndicatorPlugin/URLIndicatorPlugin', | ||||
|     './telemetryMean/plugin', | ||||
|     './plot/plugin', | ||||
|     './plotlyPlot/plugin', | ||||
|     './telemetryTable/plugin', | ||||
|     './staticRootPlugin/plugin', | ||||
|     './notebook/plugin', | ||||
| @@ -67,6 +68,7 @@ define([ | ||||
|     URLIndicatorPlugin, | ||||
|     TelemetryMean, | ||||
|     PlotPlugin, | ||||
|     PlotlyPlotPlugin, | ||||
|     TelemetryTablePlugin, | ||||
|     StaticRootPlugin, | ||||
|     Notebook, | ||||
| @@ -173,8 +175,8 @@ define([ | ||||
|     plugins.ExampleImagery = ExampleImagery; | ||||
|     plugins.ImageryPlugin = ImageryPlugin; | ||||
|     plugins.Plot = PlotPlugin; | ||||
|     plugins.PlotlyPlot = PlotlyPlotPlugin.default; | ||||
|     plugins.TelemetryTable = TelemetryTablePlugin; | ||||
|  | ||||
|     plugins.SummaryWidget = SummaryWidget; | ||||
|     plugins.TelemetryMean = TelemetryMean; | ||||
|     plugins.URLIndicator = URLIndicatorPlugin; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user