diff --git a/.webpack/webpack.common.js b/.webpack/webpack.common.js index 90c0b604..69441f03 100644 --- a/.webpack/webpack.common.js +++ b/.webpack/webpack.common.js @@ -1,5 +1,3 @@ -/* global __dirname module */ - const path = require('path'); const packageDefinition = require('../package.json'); const webpack = require('webpack'); @@ -100,7 +98,7 @@ const config = { bourbon: 'bourbon.scss', printj: path.join(__dirname, '..', 'node_modules/printj/dist/printj.min.js'), /** - * VISTA Paths + * OMM Paths **/ types: path.join(__dirname, '..', 'src/types'), services: path.join(__dirname, '..', 'src/services'), @@ -112,10 +110,10 @@ const config = { }, plugins: [ new webpack.DefinePlugin({ - __VISTA_VERSION__: `'${packageDefinition.version}'`, - __VISTA_BUILD_DATE__: `'${new Date()}'`, - __VISTA_REVISION__: `'${gitRevision}'`, - __VISTA_BUILD_BRANCH__: `'${gitBranch}'`, + __OMM_VERSION__: `'${packageDefinition.version}'`, + __OMM_BUILD_DATE__: `'${new Date()}'`, + __OMM_REVISION__: `'${gitRevision}'`, + __OMM_BUILD_BRANCH__: `'${gitBranch}'`, __VUE_OPTIONS_API__: true, // enable/disable Options API support, default: true __VUE_PROD_DEVTOOLS__: false // enable/disable devtools support in production, default: false }), diff --git a/.webpack/webpack.dev.js b/.webpack/webpack.dev.js index 735ed754..82aa5e33 100644 --- a/.webpack/webpack.dev.js +++ b/.webpack/webpack.dev.js @@ -1,5 +1,3 @@ -/* global __dirname module*/ - /* This configuration should be used for development purposes. It contains full source map, a devServer (which be invoked using by `npm start`), and a non-minified Vue.js distribution. diff --git a/.webpack/webpack.prod.js b/.webpack/webpack.prod.js index 044a016f..9a2e87ff 100644 --- a/.webpack/webpack.prod.js +++ b/.webpack/webpack.prod.js @@ -1,5 +1,3 @@ -/* global __dirname module */ - /* This configuration should be used for production installs. It is the default webpack configuration. @@ -7,7 +5,6 @@ It is the default webpack configuration. const { merge } = require('webpack-merge'); const common = require('./webpack.common'); -const path = require('path'); /** @type {import('webpack').Configuration} */ module.exports = merge(common, { diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..29f253eb --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,54 @@ +const globals = require('globals'); +const js = require('@eslint/js'); +const vueParser = require('vue-eslint-parser'); +const babelParser = require('@babel/eslint-parser'); +// eslint-plugin-prettier/recommended must be last in configuration +// so that eslint-config-prettier has the opportunity to override other configs +const prettierRecommended = require('eslint-plugin-prettier/recommended'); + +/** @type {import('eslint').Linter.Config[]} */ +module.exports = [ + { + ignores: ['**/dist/*', '**/target/*'] + }, + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.es2024, + ...globals.jasmine, + ...globals.amd, + ...globals.node, + __OMM_VERSION__: 'readonly', + __OMM_BUILD_DATE__: 'readonly', + __OMM_REVISION__: 'readonly', + __OMM_BUILD_BRANCH__: 'readonly' + }, + parser: vueParser, + parserOptions: { + parser: babelParser, + requireConfigFile: false, + allowImportExportEverywhere: true, + ecmaVersion: 'latest', + ecmaFeatures: { + impliedStrict: true + }, + sourceType: 'module' + } + } + }, + js.configs.recommended, + prettierRecommended, + { + rules: { + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'none' + } + ], + 'prettier/prettier': 'error' + } + } +]; diff --git a/karma.conf.js b/karma.conf.js index 477ffe08..c6417a1c 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,5 +1,3 @@ -/*global module*/ - const path = require('path'); module.exports = function (config) { @@ -13,7 +11,6 @@ module.exports = function (config) { use: { loader: 'babel-loader', options: { - // eslint-disable-next-line no-undef configFile: path.resolve(process.cwd(), 'babel.coverage.js') } } diff --git a/loader.js b/loader.js index c9b5e237..17a77244 100644 --- a/loader.js +++ b/loader.js @@ -141,10 +141,10 @@ define([ */ function insertBuildInfo(markup) { return markup - .replace(/\$\{project\.version\}/g, __VISTA_VERSION__) - .replace(/\$\{timestamp\}/g, __VISTA_BUILD_DATE__) - .replace(/\$\{buildNumber\}/g, __VISTA_REVISION__) - .replace(/\$\{branch\}/g, __VISTA_BUILD_BRANCH__); + .replace(/\$\{project\.version\}/g, __OMM_VERSION__) + .replace(/\$\{timestamp\}/g, __OMM_BUILD_DATE__) + .replace(/\$\{buildNumber\}/g, __OMM_REVISION__) + .replace(/\$\{branch\}/g, __OMM_BUILD_BRANCH__); } return loader; diff --git a/package.json b/package.json index 0dcd7c09..d9284339 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "version": "2512.01-next", "description": "Open MCT for MCWS", "devDependencies": { + "@babel/eslint-parser": "7.26.8", "@braintree/sanitize-url": "6.0.4", + "@eslint/js": "9.19.0", "@vue/compiler-sfc": "3.4.3", "babel-loader": "8.2.0", "babel-plugin-istanbul": "6.1.1", @@ -11,9 +13,14 @@ "comma-separated-values": "3.6.4", "copy-webpack-plugin": "12.0.2", "css-loader": "6.10.0", + "eslint": "9.19.0", + "eslint-config-prettier": "10.0.1", + "eslint-plugin-prettier": "5.2.3", + "eslint-plugin-vue": "9.32.0", "eventemitter3": "5.0.1", "file-saver": "2.0.5", "git-rev-sync": "3.0.2", + "globals": "15.14.0", "html2canvas": "1.4.1", "imports-loader": "0.8.0", "jasmine-core": "5.1.1", @@ -42,6 +49,7 @@ "source-map-loader": "^0.2.4", "style-loader": "3.3.3", "vue": "3.4.24", + "vue-eslint-parser": "^9.4.3", "vue-loader": "16.8.3", "webpack": "5.94.0", "webpack-cli": "5.1.1", @@ -51,8 +59,8 @@ "scripts": { "clean": "npm cache clean --force;rm -rf ./dist ./node_modules ./target ./package-lock.json", "start": "npx webpack serve --config ./.webpack/webpack.dev.js", - "lint": "npx prettier --check \"**\"", - "lint:fix": "npx prettier --write \"**\"", + "lint": "eslint \"**\"", + "lint:fix": "eslint \"**\" --fix", "build:prod": "webpack --config ./.webpack/webpack.prod.js", "build:dev": "webpack --config ./.webpack/webpack.dev.js", "build:watch": "webpack --config ./.webpack/webpack.dev.js --watch", @@ -72,4 +80,4 @@ }, "author": "", "license": "Apache-2.0" -} +} \ No newline at end of file diff --git a/scripts/summarize-report.js b/scripts/summarize-report.js index 66745638..cacbb2a6 100644 --- a/scripts/summarize-report.js +++ b/scripts/summarize-report.js @@ -296,7 +296,6 @@ if (!args['exclude-requirements-matrix']) { console.log('Requirement ID | Test Procedures | Status'); console.log('--- | --- | --- '); _.each(sortedRequirements, function (requirement) { - var procedureCount = requirement.procedures.length; var implemented = _.filter(requirement.procedures, { implemented: true }).length; var conducted = _.filter(requirement.procedures, { conducted: true }).length; var verified = _.filter(requirement.procedures, { conducted: true, passed: true }).length; diff --git a/src/AMMOSPlugins.js b/src/AMMOSPlugins.js index 84852f00..8339a3bf 100644 --- a/src/AMMOSPlugins.js +++ b/src/AMMOSPlugins.js @@ -87,7 +87,7 @@ define([ options: timePlugin, format: utcFormat }); - openmct.install(RealtimeIndicatorPlugin.default(vistaTime)); + openmct.install(RealtimeIndicatorPlugin.default(vistaTime, utcFormat)); mcwsClient.default.configure(options); diff --git a/src/actionModifiers/ImportExportWithDatasets/importWithDatasetsModifier.js b/src/actionModifiers/ImportExportWithDatasets/importWithDatasetsModifier.js index 9e072d5c..bfcd3a84 100644 --- a/src/actionModifiers/ImportExportWithDatasets/importWithDatasetsModifier.js +++ b/src/actionModifiers/ImportExportWithDatasets/importWithDatasetsModifier.js @@ -98,6 +98,7 @@ function importWithDatasetsModifier(openmct) { try { json = JSON.parse(objectTree); } catch (error) { + console.error('Error parsing object tree.', error); success = false; } @@ -115,6 +116,7 @@ function importWithDatasetsModifier(openmct) { component.updateData(referencedDatasets, datasets); } catch (error) { + console.error('Error updating referenced datasets.', error); success = false; } } @@ -158,7 +160,7 @@ function importWithDatasetsModifier(openmct) { }; const componentOptions = { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; diff --git a/src/alarmsView/AlarmsAutoclearViewProvider.js b/src/alarmsView/AlarmsAutoclearViewProvider.js index 0f893e08..666e3117 100644 --- a/src/alarmsView/AlarmsAutoclearViewProvider.js +++ b/src/alarmsView/AlarmsAutoclearViewProvider.js @@ -23,14 +23,19 @@ export default class AlarmsAutoClearViewProvider { } view(selection) { + const self = this; const domainObject = selection[0][0].context.item; - const tableConfiguration = new TelemetryTableConfiguration(domainObject, openmct, this.options); + const tableConfiguration = new TelemetryTableConfiguration( + domainObject, + this.openmct, + this.options + ); return { show: function (element) { const componentDefinition = { provide: { - openmct, + openmct: self.openmct, tableConfiguration }, components: { @@ -42,12 +47,12 @@ export default class AlarmsAutoClearViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); this._destroy = destroy; }, priority: function () { - return openmct.priority.HIGH; + return self.openmct.priority.HIGH; }, destroy: function () { this._destroy?.(); diff --git a/src/alarmsView/AlarmsViewProvider.js b/src/alarmsView/AlarmsViewProvider.js index 96ef1118..cb9845e8 100644 --- a/src/alarmsView/AlarmsViewProvider.js +++ b/src/alarmsView/AlarmsViewProvider.js @@ -21,8 +21,9 @@ export default class AlarmsViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; - const table = new AlarmsTable(domainObject, openmct, this.options); + const table = new AlarmsTable(domainObject, this.openmct, this.options); const markingProp = { enable: true, useAlternateControlBar: false, @@ -43,7 +44,7 @@ export default class AlarmsViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -61,7 +62,7 @@ export default class AlarmsViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/alarmsView/plugin.js b/src/alarmsView/plugin.js index bb75302a..707316f9 100644 --- a/src/alarmsView/plugin.js +++ b/src/alarmsView/plugin.js @@ -31,6 +31,7 @@ export default function AlarmsViewPlugin(options) { 'vista.alarm-view-configuration', 'Config', 'vista.alarmsView', + openmct, options ) ); diff --git a/src/channelTable/channelTablePlugin/ChannelTableFormatViewProvider.js b/src/channelTable/channelTablePlugin/ChannelTableFormatViewProvider.js index 0533f21b..37fe933f 100644 --- a/src/channelTable/channelTablePlugin/ChannelTableFormatViewProvider.js +++ b/src/channelTable/channelTablePlugin/ChannelTableFormatViewProvider.js @@ -40,7 +40,7 @@ export default function ChannelTableFormatViewProvider(openmct, options) { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, diff --git a/src/channelTable/channelTablePlugin/ChannelTableViewProvider.js b/src/channelTable/channelTablePlugin/ChannelTableViewProvider.js index fbecad30..acff3651 100644 --- a/src/channelTable/channelTablePlugin/ChannelTableViewProvider.js +++ b/src/channelTable/channelTablePlugin/ChannelTableViewProvider.js @@ -25,6 +25,7 @@ export default class ChannelTableViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; const markingProp = { enable: true, @@ -48,7 +49,7 @@ export default class ChannelTableViewProvider { TableComponent }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -69,7 +70,7 @@ export default class ChannelTableViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/channelTable/channelTablePlugin/plugin.js b/src/channelTable/channelTablePlugin/plugin.js index 51d291a7..fee8d3be 100644 --- a/src/channelTable/channelTablePlugin/plugin.js +++ b/src/channelTable/channelTablePlugin/plugin.js @@ -32,6 +32,7 @@ export default function install(options) { 'vista.channel-list-configuration', 'Config', CHANNEL_TABLE_KEY, + openmct, options ) ); diff --git a/src/channelTable/channelTableSetPlugin/ChannelTableSetView.js b/src/channelTable/channelTableSetPlugin/ChannelTableSetView.js index 4741098b..2dd5d81d 100644 --- a/src/channelTable/channelTableSetPlugin/ChannelTableSetView.js +++ b/src/channelTable/channelTableSetPlugin/ChannelTableSetView.js @@ -33,7 +33,7 @@ export default class ChannelTableSetView { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); this.component = componentInstance; this._destroy = destroy; diff --git a/src/channelTable/channelTableSetPlugin/ChannelTableSetViewProvider.js b/src/channelTable/channelTableSetPlugin/ChannelTableSetViewProvider.js index c307dbe4..d25cbd0c 100644 --- a/src/channelTable/channelTableSetPlugin/ChannelTableSetViewProvider.js +++ b/src/channelTable/channelTableSetPlugin/ChannelTableSetViewProvider.js @@ -19,7 +19,7 @@ export default class ChannelTableSetViewProvider { } view(domainObject, objectPath) { - return new ChannelTableSetView(openmct, domainObject, objectPath); + return new ChannelTableSetView(this.openmct, domainObject, objectPath); } canEdit(domainObject) { diff --git a/src/clearDataIndicator/plugin.js b/src/clearDataIndicator/plugin.js index 9776f6b6..01d2f498 100644 --- a/src/clearDataIndicator/plugin.js +++ b/src/clearDataIndicator/plugin.js @@ -14,7 +14,7 @@ export default function plugin(globalStalenessMs) { template: '' }; - const { componentInstance, destroy, el } = mount(componentDefinition); + const { destroy, el } = mount(componentDefinition); const indicator = { key: 'clear-data-indicator', diff --git a/src/commandEventsView/CommandEventsViewProvider.js b/src/commandEventsView/CommandEventsViewProvider.js index c1469786..ce387c74 100644 --- a/src/commandEventsView/CommandEventsViewProvider.js +++ b/src/commandEventsView/CommandEventsViewProvider.js @@ -19,8 +19,9 @@ export default class CommandEventsViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; - const table = new CommandEventsTable(domainObject, openmct, this.options); + const table = new CommandEventsTable(domainObject, this.openmct, this.options); const markingProp = { enable: true, useAlternateControlBar: false, @@ -41,7 +42,7 @@ export default class CommandEventsViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -64,7 +65,7 @@ export default class CommandEventsViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/commandEventsView/plugin.js b/src/commandEventsView/plugin.js index 4ab7e414..fb5638f6 100644 --- a/src/commandEventsView/plugin.js +++ b/src/commandEventsView/plugin.js @@ -35,6 +35,7 @@ export default function CommandEventsViewPlugin(options) { 'vista.command-events-view-configuration', 'Config', 'vista.commandEventsView', + openmct, options ) ); diff --git a/src/containerView/FolderGridViewProvider.js b/src/containerView/FolderGridViewProvider.js index bbee1363..943e5263 100644 --- a/src/containerView/FolderGridViewProvider.js +++ b/src/containerView/FolderGridViewProvider.js @@ -17,6 +17,7 @@ export default class FolderGridView { view(domainObject, objectPath) { let _destroy = null; + const self = this; return { show: function (element) { @@ -25,7 +26,7 @@ export default class FolderGridView { gridViewComponent: FolderGridViewComponent }, provide: { - openmct, + openmct: self.openmct, domainObject }, template: '' @@ -35,7 +36,7 @@ export default class FolderGridView { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, diff --git a/src/containerView/FolderListViewProvider.js b/src/containerView/FolderListViewProvider.js index 2d42520d..f21a4d7a 100644 --- a/src/containerView/FolderListViewProvider.js +++ b/src/containerView/FolderListViewProvider.js @@ -17,6 +17,7 @@ export default class FolderListView { view(domainObject, objectPath) { let _destroy = null; + const self = this; return { show: function (element) { @@ -25,7 +26,7 @@ export default class FolderListView { listViewComponent: FolderListViewComponent }, provide: { - openmct, + openmct: self.openmct, domainObject }, template: '' @@ -35,7 +36,7 @@ export default class FolderListView { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, diff --git a/src/customForms/UrlField/UrlFieldFormController.js b/src/customForms/UrlField/UrlFieldFormController.js index 53d20c55..7135a051 100644 --- a/src/customForms/UrlField/UrlFieldFormController.js +++ b/src/customForms/UrlField/UrlFieldFormController.js @@ -26,7 +26,7 @@ export default function UrlFieldFormController(openmct) { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, diff --git a/src/dictionaryView/dictionaryViewProvider.js b/src/dictionaryView/dictionaryViewProvider.js index 226b2ab3..8b29d6fb 100644 --- a/src/dictionaryView/dictionaryViewProvider.js +++ b/src/dictionaryView/dictionaryViewProvider.js @@ -19,8 +19,9 @@ export default class DictionaryViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; - const table = new DictionaryViewTable(domainObject, openmct, this.options); + const table = new DictionaryViewTable(domainObject, this.openmct, this.options); const markingProp = { enable: true, useAlternateControlBar: false, @@ -42,7 +43,7 @@ export default class DictionaryViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, domainObject, table, objectPath, @@ -67,7 +68,7 @@ export default class DictionaryViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/evrView/EVRViewLevelsConfigurationViewProvider.js b/src/evrView/EVRViewLevelsConfigurationViewProvider.js index a34e097f..cfe92102 100644 --- a/src/evrView/EVRViewLevelsConfigurationViewProvider.js +++ b/src/evrView/EVRViewLevelsConfigurationViewProvider.js @@ -1,7 +1,7 @@ import EVRViewLevelsConfigurationView from './EVRViewLevelsConfigurationView.vue'; import mount from 'ommUtils/mountVueComponent'; -export default function EVRViewLevelsConfigurationViewProvider(options) { +export default function EVRViewLevelsConfigurationViewProvider(openmct, options) { return { key: 'vista.evrView-configuration', name: 'Level Color', @@ -46,7 +46,7 @@ export default function EVRViewLevelsConfigurationViewProvider(options) { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, diff --git a/src/evrView/EVRViewProvider.js b/src/evrView/EVRViewProvider.js index 4ad1a46f..c2c93742 100644 --- a/src/evrView/EVRViewProvider.js +++ b/src/evrView/EVRViewProvider.js @@ -37,6 +37,7 @@ export default class EVRViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; const table = new EVRTable(domainObject, this.openmct, this.options); const markingProp = { @@ -53,7 +54,7 @@ export default class EVRViewProvider { TableComponent }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -79,7 +80,7 @@ export default class EVRViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/evrView/plugin.js b/src/evrView/plugin.js index da8a9ca7..b6d635cd 100644 --- a/src/evrView/plugin.js +++ b/src/evrView/plugin.js @@ -21,13 +21,16 @@ export default function EVRViewPlugin(options) { } }); - openmct.inspectorViews.addProvider(new EVRViewLevelsConfigurationViewProvider(taxonomy)); + openmct.inspectorViews.addProvider( + new EVRViewLevelsConfigurationViewProvider(openmct, taxonomy) + ); openmct.inspectorViews.addProvider( new VistaTableConfigurationProvider( 'vista.evr-view-configuration', 'Config', 'vista.evrView', + openmct, tablePerformanceOptions ) ); diff --git a/src/exportDataAction/ExportDataActionSpec.js b/src/exportDataAction/ExportDataActionSpec.js index eb700dd8..8b3ae596 100644 --- a/src/exportDataAction/ExportDataActionSpec.js +++ b/src/exportDataAction/ExportDataActionSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,jasmine,spyOn,Promise,it,expect,waitsFor,runs,afterEach*/ - define(['./ExportDataAction'], (ExportDataActionModule) => { const ExportDataAction = ExportDataActionModule.default; @@ -57,7 +55,6 @@ define(['./ExportDataAction'], (ExportDataActionModule) => { 'composition', 'telemetry' ]); - mockTelemetry = []; mockCompositionCollection = jasmine.createSpyObj('compositionCollection', ['load']); mockCompositionCollection.load.and.returnValue(Promise.resolve(mockComposition)); mockOpenmct.composition = jasmine.createSpyObj('composition', ['get']); diff --git a/src/exportDataAction/ExportDataTaskSpec.js b/src/exportDataAction/ExportDataTaskSpec.js index c9268fa5..58065a79 100644 --- a/src/exportDataAction/ExportDataTaskSpec.js +++ b/src/exportDataAction/ExportDataTaskSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,jasmine,spyOn,Promise,it,expect,waitsFor,runs,afterEach*/ - define(['./ExportDataTask'], function (ExportDataTaskModule) { const ExportDataTask = ExportDataTaskModule.default; @@ -8,7 +6,6 @@ define(['./ExportDataTask'], function (ExportDataTaskModule) { let testTelemetryData; let mockTelemetryObjects; let mockOpenMct; - let pendingPromises; let task; function makeMockTelemetryObject(id) { @@ -45,8 +42,6 @@ define(['./ExportDataTask'], function (ExportDataTaskModule) { return Promise.resolve(testTelemetryData[telemetryObject.identifier.key]); }); - pendingPromises = []; - spyOn(ExportDataTask.prototype, 'exportCSV').and.callThrough(); mockTelemetryObjects = ['a', 'b', 'c'].map(makeMockTelemetryObject); @@ -94,8 +89,8 @@ define(['./ExportDataTask'], function (ExportDataTaskModule) { it('contains all telemetry data for all objects', () => { const rows = ExportDataTask.prototype.exportCSV.calls.mostRecent().args[0]; - const options = ExportDataTask.prototype.exportCSV.calls.mostRecent().args[1]; - const headers = options.headers; + // const options = ExportDataTask.prototype.exportCSV.calls.mostRecent().args[1]; + // const headers = options.headers; function hasValue(id, key, value) { return rows.some(function (row) { diff --git a/src/formats/JSONStringFormat.js b/src/formats/JSONStringFormat.js index 29a29ed5..2705a24a 100644 --- a/src/formats/JSONStringFormat.js +++ b/src/formats/JSONStringFormat.js @@ -1,4 +1,3 @@ -/*global define*/ define(['lodash'], function (_) { /** * Format embedded JavaScript objects as JSON strings for debugging @@ -27,7 +26,7 @@ define(['lodash'], function (_) { JSON.parse(stringValue); return true; } catch (error) { - console.error('Failed to parse %s', stringValue); + console.error('Failed to parse %s', stringValue, error); return false; } }; diff --git a/src/formats/LMSTFormat.js b/src/formats/LMSTFormat.js index f4c5ee43..c51afb8b 100644 --- a/src/formats/LMSTFormat.js +++ b/src/formats/LMSTFormat.js @@ -1,4 +1,3 @@ -/*global define*/ define(['moment'], function (moment) { var MSL_EPOCH = moment.utc(Date.UTC(2012, 7, 5, 13, 49, 59)), MARS_SECONDS_PER_EARTH_SECOND = 1.02749125; diff --git a/src/formats/LMSTFormatSpec.js b/src/formats/LMSTFormatSpec.js index ecf454c4..d43d7884 100644 --- a/src/formats/LMSTFormatSpec.js +++ b/src/formats/LMSTFormatSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,it,expect*/ - define(['./LMSTFormat'], function (LMSTFormat) { 'use strict'; diff --git a/src/formats/MSLSOLFormat.js b/src/formats/MSLSOLFormat.js index 43cb95aa..7e0bcd56 100644 --- a/src/formats/MSLSOLFormat.js +++ b/src/formats/MSLSOLFormat.js @@ -1,4 +1,3 @@ -/*global define*/ define(['moment'], function (moment) { var MSL_EPOCH = moment.utc(Date.UTC(2012, 7, 5, 13, 49, 59)), MARS_SECONDS_PER_EARTH_SECOND = 1.02749125; diff --git a/src/formats/MSLSOLFormatSpec.js b/src/formats/MSLSOLFormatSpec.js index 0698ead9..d96c5406 100644 --- a/src/formats/MSLSOLFormatSpec.js +++ b/src/formats/MSLSOLFormatSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,it,expect*/ - define(['./MSLSOLFormat'], function (MSLSOLFormat) { 'use strict'; diff --git a/src/formats/SCLKFloat64Format.js b/src/formats/SCLKFloat64Format.js index 93c92938..a76d9d85 100644 --- a/src/formats/SCLKFloat64Format.js +++ b/src/formats/SCLKFloat64Format.js @@ -1,4 +1,3 @@ -/*global define*/ define(['lodash'], function (_) { /** * Format for SCLK values as 64 bit float. diff --git a/src/formats/SCLKFloat64FormatSpec.js b/src/formats/SCLKFloat64FormatSpec.js index 26a38364..e2c21860 100644 --- a/src/formats/SCLKFloat64FormatSpec.js +++ b/src/formats/SCLKFloat64FormatSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,it,expect*/ - define(['./SCLKFloat64Format'], function (SCLKFloat64Format) { 'use strict'; diff --git a/src/formats/UTCDayOfYearFormatSpec.js b/src/formats/UTCDayOfYearFormatSpec.js index 77d5ae53..68d291a6 100644 --- a/src/formats/UTCDayOfYearFormatSpec.js +++ b/src/formats/UTCDayOfYearFormatSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,it,expect*/ - define(['./UTCDayOfYearFormat'], function (UTCDayOfYearFormat) { 'use strict'; diff --git a/src/formats/UTCFormatSpec.js b/src/formats/UTCFormatSpec.js index f05c8768..66463315 100644 --- a/src/formats/UTCFormatSpec.js +++ b/src/formats/UTCFormatSpec.js @@ -1,5 +1,3 @@ -/*global define,describe,beforeEach,it,expect*/ - define(['./UTCFormat'], function (UTCFormat) { 'use strict'; diff --git a/src/frameEventFilterView/FrameEventFilterViewProvider.js b/src/frameEventFilterView/FrameEventFilterViewProvider.js index 8e8ffb6c..2dc72382 100644 --- a/src/frameEventFilterView/FrameEventFilterViewProvider.js +++ b/src/frameEventFilterView/FrameEventFilterViewProvider.js @@ -19,8 +19,9 @@ export default class FrameEventFilterViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; - let table = new FrameEventFilterTable(domainObject, openmct, this.options); + let table = new FrameEventFilterTable(domainObject, this.openmct, this.options); let markingProp = { enable: true, useAlternateControlBar: false, @@ -41,7 +42,7 @@ export default class FrameEventFilterViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -65,7 +66,7 @@ export default class FrameEventFilterViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/frameaccountability/frameAccountabilityViewProvider.js b/src/frameaccountability/frameAccountabilityViewProvider.js index 984e1901..1085a1b9 100644 --- a/src/frameaccountability/frameAccountabilityViewProvider.js +++ b/src/frameaccountability/frameAccountabilityViewProvider.js @@ -54,7 +54,7 @@ export default class FrameAccountabilityViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); this._destroy = destroy; } diff --git a/src/frameaccountability/sortedEventsCollection.js b/src/frameaccountability/sortedEventsCollection.js index b1d59414..510c0dc8 100644 --- a/src/frameaccountability/sortedEventsCollection.js +++ b/src/frameaccountability/sortedEventsCollection.js @@ -1,4 +1,5 @@ import TableRowCollection from 'openmct.tables.collections.TableRowCollection'; +import _ from 'lodash'; export default class SortedEventsCollection extends TableRowCollection { constructor() { diff --git a/src/framesummary/FrameWatchColumn.js b/src/framesummary/FrameWatchColumn.js index 5dfe89a6..3c574a65 100644 --- a/src/framesummary/FrameWatchColumn.js +++ b/src/framesummary/FrameWatchColumn.js @@ -18,7 +18,7 @@ define(function () { } hasValueForDatum(telemetryDatum) { - return telemetryDatum.hasOwnProperty(this.key); + return Object.hasOwn(telemetryDatum, this.key); } getRawValue(telemetryDatum) { diff --git a/src/framesummary/FrameWatchConfigurationViewProvider.js b/src/framesummary/FrameWatchConfigurationViewProvider.js index 94870542..72b64669 100644 --- a/src/framesummary/FrameWatchConfigurationViewProvider.js +++ b/src/framesummary/FrameWatchConfigurationViewProvider.js @@ -21,14 +21,19 @@ export default class FrameWatchConfigurationViewProvider { } view(selection) { + const self = this; const domainObject = selection[0][0].context.item; - const tableConfiguration = new FrameWatchTableConfiguration(domainObject, openmct, this.type); + const tableConfiguration = new FrameWatchTableConfiguration( + domainObject, + this.openmct, + this.type + ); return { show: function (element) { const componentDefinition = { provide: { - openmct: this.openmct, + openmct: self.openmct, tableConfiguration }, components: { @@ -41,12 +46,12 @@ export default class FrameWatchConfigurationViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); this._destroy = destroy; }, priority: function () { - return this.openmct.priority.HIGH + 1; + return self.openmct.priority.HIGH + 1; }, destroy: function () { this._destroy?.(); diff --git a/src/framesummary/FrameWatchViewProvider.js b/src/framesummary/FrameWatchViewProvider.js index 3e2a5429..aec5f9b6 100644 --- a/src/framesummary/FrameWatchViewProvider.js +++ b/src/framesummary/FrameWatchViewProvider.js @@ -21,6 +21,7 @@ export default class FrameWatchViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; const table = new FrameWatchTable(domainObject, this.openmct, this.options, this.type); @@ -37,7 +38,7 @@ export default class FrameWatchViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -56,7 +57,7 @@ export default class FrameWatchViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/globalFilters/plugin.js b/src/globalFilters/plugin.js index 26a96cd1..de7f69d7 100644 --- a/src/globalFilters/plugin.js +++ b/src/globalFilters/plugin.js @@ -14,7 +14,7 @@ export default function plugin(config) { template: '' }; - const { componentInstance, destroy, el } = mount(componentDefinition); + const { destroy, el } = mount(componentDefinition); const indicator = { key: 'global-filter-indicator', diff --git a/src/historical/HistoricalProvider.js b/src/historical/HistoricalProvider.js index 224001ca..0d938910 100644 --- a/src/historical/HistoricalProvider.js +++ b/src/historical/HistoricalProvider.js @@ -533,6 +533,7 @@ define([ params.filter[options.domain + '__lte'] = formatter.format(options.end); } catch (e) { // TODO: better handling when domain not available. + console.error('Error requesting telemetry data for', domainObject, e); } const sessions = this.getSessionService(); @@ -628,7 +629,7 @@ define([ return map; }, {}); - for (key in filters) { + for (const key in filters) { let metadataFilters = valuesWithFilters[key]; if (metadataFilters) { metadataFilters.forEach((filter) => { diff --git a/src/images/favicons/favicon-vista-16x16.png b/src/images/favicons/favicon-vista-16x16.png deleted file mode 100644 index 63605af7..00000000 Binary files a/src/images/favicons/favicon-vista-16x16.png and /dev/null differ diff --git a/src/images/favicons/favicon-vista-32x32.png b/src/images/favicons/favicon-vista-32x32.png deleted file mode 100644 index 0c6fa774..00000000 Binary files a/src/images/favicons/favicon-vista-32x32.png and /dev/null differ diff --git a/src/images/favicons/favicon-vista-96x96.png b/src/images/favicons/favicon-vista-96x96.png deleted file mode 100644 index 1786de71..00000000 Binary files a/src/images/favicons/favicon-vista-96x96.png and /dev/null differ diff --git a/src/lib/eventHelpers.js b/src/lib/eventHelpers.js index 9dcf85a2..ec14a362 100644 --- a/src/lib/eventHelpers.js +++ b/src/lib/eventHelpers.js @@ -1,5 +1,3 @@ -/*global define*/ - define([], function () { 'use strict'; @@ -13,7 +11,7 @@ define([], function () { event: event, callback: callback, context: context, - _cb: !!context ? callback.bind(context) : callback + _cb: context ? callback.bind(context) : callback }; if (object.$watch && event.indexOf('change:') === 0) { var scopePath = event.replace('change:', ''); diff --git a/src/lib/extend.js b/src/lib/extend.js index f3c31048..953253a6 100644 --- a/src/lib/extend.js +++ b/src/lib/extend.js @@ -6,7 +6,7 @@ define([], function () { child, Surrogate; - if (props && props.hasOwnProperty('constructor')) { + if (props && Object.hasOwn(props, 'constructor')) { child = props.constructor; } else { child = function () { diff --git a/src/mcwsIndicator/plugin.js b/src/mcwsIndicator/plugin.js index 343c072a..f9a26273 100644 --- a/src/mcwsIndicator/plugin.js +++ b/src/mcwsIndicator/plugin.js @@ -13,7 +13,7 @@ export default function MCWSIndicatorPlugin() { template: '' }; - const { componentInstance, destroy, el } = mount(componentDefinition); + const { destroy, el } = mount(componentDefinition); const indicator = { key: 'mcws-indicator', diff --git a/src/messagesView/MessagesViewProvider.js b/src/messagesView/MessagesViewProvider.js index 47d40c47..d109be76 100644 --- a/src/messagesView/MessagesViewProvider.js +++ b/src/messagesView/MessagesViewProvider.js @@ -19,8 +19,9 @@ export default class MessagesViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; - const table = new MessagesTable(domainObject, openmct, this.options); + const table = new MessagesTable(domainObject, this.openmct, this.options); const markingProp = { enable: true, useAlternateControlBar: false, @@ -42,7 +43,7 @@ export default class MessagesViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -65,7 +66,7 @@ export default class MessagesViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/messagesView/plugin.js b/src/messagesView/plugin.js index 64fa3a46..a3c7841d 100644 --- a/src/messagesView/plugin.js +++ b/src/messagesView/plugin.js @@ -22,6 +22,7 @@ export default function MessagesViewPlugin(options) { 'vista.messages-view-configuration', 'Config', 'vista.messagesView', + openmct, options ) ); diff --git a/src/metadataAction/metadataAction.js b/src/metadataAction/metadataAction.js index 626f34cb..e1366ce3 100644 --- a/src/metadataAction/metadataAction.js +++ b/src/metadataAction/metadataAction.js @@ -27,11 +27,7 @@ export default class MetadataAction { template: '' }; - const componentOptions = { - element - }; - - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy, el } = mount(componentDefinition); this.openmct.overlays.overlay({ element: el, diff --git a/src/multipleHistoricalSessions/plugin.js b/src/multipleHistoricalSessions/plugin.js index 9f5dfc0b..87aa144e 100644 --- a/src/multipleHistoricalSessions/plugin.js +++ b/src/multipleHistoricalSessions/plugin.js @@ -36,7 +36,7 @@ export default function HistoricalSessionsPlugin(options) { template: '' }; - const { componentInstance, destroy, el } = mount(componentDefinition); + const { destroy, el } = mount(componentDefinition); const indicator = { key: 'historical-session-indicator', diff --git a/src/packetQuery/PacketQueryViewProvider.js b/src/packetQuery/PacketQueryViewProvider.js index 8f3099c0..bc341e8f 100644 --- a/src/packetQuery/PacketQueryViewProvider.js +++ b/src/packetQuery/PacketQueryViewProvider.js @@ -15,6 +15,7 @@ export default class PacketQueryViewProvider { view(domainObject, objectPath) { let _destroy = null; + const self = this; const view = { show: function (element) { @@ -29,7 +30,7 @@ export default class PacketQueryViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, objectPath, currentView: view }, @@ -44,7 +45,7 @@ export default class PacketQueryViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, diff --git a/src/packetQuery/components/PacketQueryView.vue b/src/packetQuery/components/PacketQueryView.vue index 52e6e659..bf5365a4 100644 --- a/src/packetQuery/components/PacketQueryView.vue +++ b/src/packetQuery/components/PacketQueryView.vue @@ -107,7 +107,7 @@ export default { return ''; }, isValid() { - return !Boolean(this.message); + return !this.message; }, noFilterSelected() { return !this.queryModel.useSession && !this.queryModel.useTimeConductor; @@ -134,13 +134,6 @@ export default { } }, data() { - const sortBy = SORT_OPTIONS.map((option) => { - return { - name: option, - value: option - }; - }); - return { queryModel: { useSession: undefined, @@ -213,10 +206,10 @@ export default { const bounds = this.openmct.time.bounds(); const start = bounds.start; const end = bounds.end; - const timeSystem = openmct.time.timeSystem(); + const timeSystem = this.openmct.time.timeSystem(); const domain = timeSystem.key; - const format = openmct.telemetry.getFormatter(timeSystem.timeFormat); + const format = this.openmct.telemetry.getFormatter(timeSystem.timeFormat); builder.filter(domain, format.format(start), '>'); builder.filter(domain, format.format(end), '<'); diff --git a/src/packetSummary/PacketSummaryViewProvider.js b/src/packetSummary/PacketSummaryViewProvider.js index 8a0940e7..070d3370 100644 --- a/src/packetSummary/PacketSummaryViewProvider.js +++ b/src/packetSummary/PacketSummaryViewProvider.js @@ -22,8 +22,9 @@ export default class ProductSummaryViewProvider { view(domainObject, objectPath) { let component; let _destroy = null; + const self = this; - const table = new PacketSummaryTable(domainObject, openmct, this.options); + const table = new PacketSummaryTable(domainObject, this.openmct, this.options); const view = { show: function (element, editMode, { renderWhenVisible }) { @@ -38,7 +39,7 @@ export default class ProductSummaryViewProvider { }; }, provide: { - openmct, + openmct: self.openmct, table, objectPath, currentView: view, @@ -55,7 +56,7 @@ export default class ProductSummaryViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { componentInstance, destroy } = mount(componentDefinition, componentOptions); component = componentInstance; _destroy = destroy; diff --git a/src/packetSummary/plugin.js b/src/packetSummary/plugin.js index 030a7b42..a950ada5 100644 --- a/src/packetSummary/plugin.js +++ b/src/packetSummary/plugin.js @@ -38,6 +38,7 @@ export default function PacketSummaryPlugin(options) { 'vista.packet-summary-configuration', 'Config', 'vista.packetSummaryView', + openmct, options ) ); diff --git a/src/persistence/BaseMCWSPersistenceProvider.js b/src/persistence/BaseMCWSPersistenceProvider.js index ab5b5ff0..49995155 100644 --- a/src/persistence/BaseMCWSPersistenceProvider.js +++ b/src/persistence/BaseMCWSPersistenceProvider.js @@ -197,7 +197,9 @@ export default class BaseMCWSPersistenceProvider { } return namespaceDefinition; - } catch (createError) { + } catch (e) { + console.error('Error creating namespace:', e); + return; } } diff --git a/src/product-status/DataProductInspectorViewProvider.js b/src/product-status/DataProductInspectorViewProvider.js index ac073cbe..a5a5309c 100644 --- a/src/product-status/DataProductInspectorViewProvider.js +++ b/src/product-status/DataProductInspectorViewProvider.js @@ -19,15 +19,20 @@ export default class DataProductViewProvider { view(selection) { let _destroy = null; + const self = this; const domainObject = selection[0][0].context.item; - const tableConfiguration = new TelemetryTableConfiguration(domainObject, openmct, this.options); + const tableConfiguration = new TelemetryTableConfiguration( + domainObject, + this.openmct, + this.options + ); return { show: function (element) { const componentDefinition = { provide: { - openmct, + openmct: self.openmct, tableConfiguration }, components: { @@ -40,12 +45,12 @@ export default class DataProductViewProvider { element }; - const { componentInstance, destroy, el } = mount(componentDefinition, componentOptions); + const { destroy } = mount(componentDefinition, componentOptions); _destroy = destroy; }, priority: function () { - return openmct.priority.HIGH; + return self.openmct.priority.HIGH; }, destroy: function () { _destroy?.(); diff --git a/src/product-status/DataProductRow.js b/src/product-status/DataProductRow.js index 679d11ef..ae94d58e 100644 --- a/src/product-status/DataProductRow.js +++ b/src/product-status/DataProductRow.js @@ -6,6 +6,7 @@ const RECORD_TYPE_FIELD = 'record_type'; const TOTAL_PARTS_FIELD = 'total_parts'; const PRODUCT_STARTED_RECORD_TYPE = 'PRODUCT_STARTED'; +// eslint-disable-next-line no-unused-vars const COMPLETE_PRODUCT_RECORD_TYPE = 'COMPLETE_PRODUCT'; const PRODUCT_PART_RECEIVED_RECORD_TYPE = 'PRODUCT_PART_RECEIVED'; diff --git a/src/product-status/DataProductRowSpec.js b/src/product-status/DataProductRowSpec.js index 692829db..5e4718ae 100644 --- a/src/product-status/DataProductRowSpec.js +++ b/src/product-status/DataProductRowSpec.js @@ -18,7 +18,7 @@ describe('The Data Product Row', () => { }; rowId = 'test-row-id'; startMessage = { - transaction_id: 'McamRThumbnail\/McamRThumbnail_0457586851-19880', + transaction_id: 'McamRThumbnail/McamRThumbnail_0457586851-19880', session_host: 'host', apid: '424', total_parts: '0', @@ -30,7 +30,7 @@ describe('The Data Product Row', () => { }; partReceivedMessage = { creation_time: '', - transaction_id: 'McamRThumbnail\/McamRThumbnail_0457586851-19880', + transaction_id: 'McamRThumbnail/McamRThumbnail_0457586851-19880', dvt_coarse: '457586851', ground_status: 'UNKNOWN', session_host: 'host', @@ -45,7 +45,7 @@ describe('The Data Product Row', () => { file_size: '0', record_type: 'product_part_received', command_number: '0', - unique_name: 'products\/McamRThumbnail\/McamRThumbnail_0457586851-19880', + unique_name: 'products/McamRThumbnail/McamRThumbnail_0457586851-19880', seq_version: '0', checksum: '0', part_number: '0', @@ -56,7 +56,7 @@ describe('The Data Product Row', () => { }; completeMessage = { creation_time: '2019-259T17:06:57.800', - transaction_id: 'McamRThumbnail\/McamRThumbnail_0457586851-19880', + transaction_id: 'McamRThumbnail/McamRThumbnail_0457586851-19880', dvt_coarse: '457586851', ground_status: 'COMPLETE_CHECKSUM_PASS', session_host: 'host', @@ -108,7 +108,7 @@ describe('The Data Product Row', () => { it('Replaces content of in progress rows with info from new message', () => { const secondPartReceived = { creation_time: '', - transaction_id: 'McamRThumbnail\/McamRThumbnail_0457586851-19880', + transaction_id: 'McamRThumbnail/McamRThumbnail_0457586851-19880', dvt_coarse: '457586851', ground_status: 'UNKNOWN', session_host: 'host', @@ -143,7 +143,7 @@ describe('The Data Product Row', () => { dataProductRow.update(partReceivedMessage); expect(dataProductRow.datum['unique_name']).toEqual( - 'products\/McamRThumbnail\/McamRThumbnail_0457586851-19880' + 'products/McamRThumbnail/McamRThumbnail_0457586851-19880' ); expect(dataProductRow.datum['checksum']).toEqual('0'); expect(dataProductRow.datum['part_number']).toEqual('0'); @@ -165,7 +165,7 @@ describe('The Data Product Row', () => { ); dataProductRow.update(partReceivedMessage); expect(dataProductRow.datum['unique_name']).toEqual( - 'products\/McamRThumbnail\/McamRThumbnail_0457586851-19880' + 'products/McamRThumbnail/McamRThumbnail_0457586851-19880' ); expect(dataProductRow.datum['checksum']).toEqual('0'); expect(dataProductRow.datum['part_number']).toEqual('0'); @@ -184,7 +184,7 @@ describe('The Data Product Row', () => { it('Does replace content of complete rows with complete rows', () => { const aDifferentCompleteMessage = { creation_time: '2019-259T17:06:57.800', - transaction_id: 'McamRThumbnail\/McamRThumbnail_0457586851-19880', + transaction_id: 'McamRThumbnail/McamRThumbnail_0457586851-19880', dvt_coarse: '457586851', ground_status: 'COMPLETE_CHECKSUM_PASS', session_host: 'host', @@ -216,7 +216,7 @@ describe('The Data Product Row', () => { ); dataProductRow.update(partReceivedMessage); expect(dataProductRow.datum['unique_name']).toEqual( - 'products\/McamRThumbnail\/McamRThumbnail_0457586851-19880' + 'products/McamRThumbnail/McamRThumbnail_0457586851-19880' ); expect(dataProductRow.datum['checksum']).toEqual('0'); expect(dataProductRow.datum['part_number']).toEqual('0'); diff --git a/src/product-status/DataProductTable.js b/src/product-status/DataProductTable.js index 3ccef413..a7761a7b 100644 --- a/src/product-status/DataProductTable.js +++ b/src/product-status/DataProductTable.js @@ -99,6 +99,8 @@ export default class DataProductTable extends TelemetryTable { } createColumn(metadatum) { + let copyOfMetadatum; + switch (metadatum.key) { //Create custom column types with links for EMD, DAT, and TXT files case 'emd_url': @@ -113,7 +115,7 @@ export default class DataProductTable extends TelemetryTable { case 'scet': case 'sclk': case 'msl.sol': - let copyOfMetadatum = Object.assign({}, metadatum); + copyOfMetadatum = Object.assign({}, metadatum); copyOfMetadatum.name = 'Dvt ' + copyOfMetadatum.name; return super.createColumn(copyOfMetadatum); } diff --git a/src/product-status/data-product-autoclear.vue b/src/product-status/data-product-autoclear.vue index 37fd635c..567725b8 100644 --- a/src/product-status/data-product-autoclear.vue +++ b/src/product-status/data-product-autoclear.vue @@ -25,8 +25,6 @@