Compare commits
	
		
			62 Commits
		
	
	
		
			omm-r5.1.0
			...
			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