Compare commits

...

31 Commits

Author SHA1 Message Date
1712f0579d Merge branch 'master' into lodash-upgrade-test 2020-04-29 15:42:01 -07:00
5b7eaf6b04 fixed bug in TelemetryMetadataManager.js .map() call and added test for flattenDeep() 2020-04-29 15:41:20 -07:00
ac69513e37 addressed review comments 2020-04-29 13:56:50 -07:00
011fc94cb5 Merge branch 'master' of https://github.com/nasa/openmct into lodash-upgrade-test 2020-04-29 12:01:52 -07:00
4446c5d075 added tests for array-utils 2020-04-29 12:01:40 -07:00
4297ffd270 renamed testTools.js to test-utils.js aliased as testUtils 2020-04-27 16:45:40 -07:00
5bf988a7f1 added utils/array-utils.js, alias in webpack for arrayUtils, objectUtils 2020-04-27 16:35:06 -07:00
10da86183b Merge branch 'eslint-script' of https://github.com/nasa/openmct into lodash-upgrade-test 2020-04-27 12:28:58 -07:00
ec5e3b929b changed sortBy to orderBy 2020-04-27 12:18:38 -07:00
8077ab43fe removed unneeded lodash import statements, changed _.extend to Object.assign 2020-04-27 11:44:35 -07:00
ccc0376352 fixed lint errors 2020-04-24 15:22:53 -07:00
2497b8df18 fixed flatten method 2020-04-24 15:15:51 -07:00
00c68a124e Merge branch 'lodash-upgrade-test' of https://github.com/nasa/openmct into lodash-upgrade-test 2020-04-24 15:09:35 -07:00
fe5fef8a3d fixed sortedBy methods, added missing import statements, changed several lodash methods to native 2020-04-24 15:08:54 -07:00
3455ed5ac9 Merge branch 'master' of https://github.com/nasa/openmct into lodash-upgrade-test 2020-04-24 12:00:10 -07:00
eb5050b8ef added you-dont-need-lodash linter 2020-04-22 16:23:04 -07:00
eca22fef9e Merge branch 'master' into lodash-upgrade-test 2020-04-22 15:34:51 -07:00
b66a599c69 Merge branch 'lodash-upgrade-test' of https://github.com/nasa/openmct into lodash-upgrade-test 2020-04-22 15:26:56 -07:00
835bcbcb5a native implementations as requested 2020-04-22 15:26:08 -07:00
9cb2fe3fb3 Merge branch 'master' into eslint-script 2020-04-21 11:14:10 -07:00
40c9546415 Merge branch 'master' into lodash-upgrade-test 2020-04-21 10:51:15 -07:00
0622dbe78c added lodash/prefer-is-nil linter restriction and reverted changes to PlotYAxisFormController 2020-04-09 13:02:14 -07:00
5e8ac0f771 Merge branch 'master' into eslint-script 2020-04-09 12:33:46 -07:00
c5d31ce1cb modified eslint script and fixed errors found 2020-04-09 12:17:45 -07:00
2b96a8994c Merge branch 'lodash-upgrade-test' of https://github.com/nasa/openmct into lodash-upgrade-test 2020-04-09 11:54:52 -07:00
5efa7f69e4 added lodash/prefer-get exclusion 2020-04-09 11:54:00 -07:00
33bb1c202e Merge branch 'master' into lodash-upgrade-test 2020-04-09 11:49:39 -07:00
d73e9f6dae fixed issues cuaght by circle-ci 2020-04-08 15:52:59 -07:00
691742d8f0 working on circle-ci lint errors 2020-04-08 14:19:31 -07:00
ef4312e29a completed changes to support upgrade to lodash v4.17.12 2020-04-07 16:21:49 -07:00
09cfe4f99a upgraded lodash, changed method names 2020-04-07 12:02:49 -07:00
83 changed files with 391 additions and 206 deletions

View File

@ -8,9 +8,12 @@ module.exports = {
"globals": {
"_": "readonly"
},
"plugins": ["lodash"],
"extends": [
"eslint:recommended",
"plugin:vue/recommended"
"plugin:vue/recommended",
"plugin:lodash/recommended",
"plugin:you-dont-need-lodash-underscore/compatible"
],
"parser": "vue-eslint-parser",
"parserOptions": {
@ -22,6 +25,24 @@ module.exports = {
}
},
"rules": {
"you-dont-need-lodash-underscore/uniq": "off",
"you-dont-need-lodash-underscore/omit": "off",
"you-dont-need-lodash-underscore/concat": "off",
"you-dont-need-lodash-underscore/values": "off",
"you-dont-need-lodash-underscore/map": "off",
"you-dont-need-lodash-underscore/throttle": "off",
"lodash/prefer-immutable-method": "off",
"lodash/prefer-lodash-chain": "off",
"lodash/prefer-lodash-method": "off",
"lodash/prefer-lodash-typecheck": "off",
"lodash/prefer-constant": "off",
"lodash/prefer-noop": "off",
"lodash/prefer-matches": "off",
"lodash/prefer-includes": "off",
"lodash/prefer-startswith": "off",
"lodash/prefer-get": "off",
"lodash/prefer-is-nil": "off",
"lodash/import-scope": "off",
"no-bitwise": "error",
"curly": "error",
"eqeqeq": "error",

View File

@ -1,6 +1,4 @@
define([
'lodash'
], function (
define([], function (
_
) {
@ -99,7 +97,7 @@ define([
};
GeneratorMetadataProvider.prototype.getMetadata = function (domainObject) {
return _.extend(
return Object.assign(
{},
domainObject.telemetry,
METADATA_BY_TYPE[domainObject.type]

View File

@ -1,14 +1,14 @@
<template>
<div class="example">{{ msg }}</div>
<div class="example">{{ msg }}</div>
</template>
<script>
export default {
data () {
return {
msg: 'Hello world!'
data() {
return {
msg: 'Hello world!'
}
}
}
}
</script>

View File

@ -23,7 +23,9 @@
"d3-time": "1.0.x",
"d3-time-format": "2.1.x",
"eslint": "5.2.0",
"eslint-plugin-lodash": "^6.0.0",
"eslint-plugin-vue": "^6.0.0",
"eslint-plugin-you-dont-need-lodash-underscore": "^6.10.0",
"eventemitter3": "^1.2.0",
"exports-loader": "^0.7.0",
"express": "^4.13.1",
@ -47,7 +49,7 @@
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^3.0.0",
"location-bar": "^3.0.1",
"lodash": "^3.10.1",
"lodash": "^4.17.12",
"markdown-toc": "^0.11.7",
"marked": "^0.3.5",
"mini-css-extract-plugin": "^0.4.1",
@ -76,8 +78,8 @@
},
"scripts": {
"start": "node app.js",
"lint": "eslint platform example src/**/*.{js,vue} openmct.js",
"lint:fix": "eslint platform example src/**/*.{js,vue} openmct.js --fix",
"lint": "eslint platform example src --ext .js,.vue openmct.js",
"lint:fix": "eslint platform example src --ext .js,.vue openmct.js --fix",
"build:prod": "cross-env NODE_ENV=production webpack",
"build:dev": "webpack",
"build:watch": "webpack --watch",

View File

@ -21,7 +21,7 @@
*****************************************************************************/
define(
['../../../../../src/api/objects/object-utils'],
['objectUtils'],
function (objectUtils) {
/**

View File

@ -26,7 +26,7 @@
* @namespace platform/containment
*/
define(
['../../../src/api/objects/object-utils'],
['objectUtils'],
function (objectUtils) {
function PersistableCompositionPolicy(openmct) {

View File

@ -24,7 +24,7 @@
* Module defining ActionCapability. Created by vwoeltje on 11/10/14.
*/
define(
['lodash'],
[],
function (_) {
/**
@ -81,7 +81,7 @@ define(
baseContext = context || {};
}
var actionContext = _.extend({}, baseContext);
var actionContext = Object.assign({}, baseContext);
actionContext.domainObject = this.domainObject;
return this.actionService.getActions(actionContext);

View File

@ -121,7 +121,7 @@ define(['lodash'], function (_) {
*/
ExportAsJSONAction.prototype.rewriteLink = function (child, parent) {
this.externalIdentifiers.push(this.getId(child));
var index = _.findIndex(parent.composition, function (id) {
var index = parent.composition.findIndex(function (id) {
return _.isEqual(child.identifier, id);
});
var copyOfChild = this.copyObject(child);

View File

@ -19,7 +19,7 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
define(['zepto', '../../../../src/api/objects/object-utils.js'], function ($, objectUtils) {
define(['zepto', 'objectUtils'], function ($, objectUtils) {
/**
* The ImportAsJSONAction is available from context menus and allows a user

View File

@ -25,8 +25,7 @@
* Module defining GenericSearchProvider. Created by shale on 07/16/2015.
*/
define([
'../../../../src/api/objects/object-utils',
'lodash'
'objectUtils'
], function (
objectUtils,
_
@ -191,9 +190,7 @@ define([
}
var domainObject = objectUtils.toNewFormat(model, id);
var composition = _.find(this.openmct.composition.registry, function (p) {
return p.appliesTo(domainObject);
});
var composition = this.openmct.composition.registry.find(p => p.appliesTo(domainObject));
if (!composition) {
return;

View File

@ -25,12 +25,12 @@
*/
define(
[
'../../../src/api/objects/object-utils',
'lodash'
'objectUtils',
'arrayUtils'
],
function (
objectUtils,
_
arrayUtils
) {
var ZERO = function () {
@ -235,7 +235,7 @@ define(
var defaultRange = metadata.valuesForHints(['range'])[0];
defaultRange = defaultRange ? defaultRange.key : undefined;
var sourceMap = _.indexBy(metadata.values(), 'key');
const sourceMap = arrayUtils.keyBy(metadata.values(), 'key');
var isLegacyProvider = telemetryAPI.findRequestProvider(domainObject) ===
telemetryAPI.legacyProvider;
@ -300,7 +300,7 @@ define(
var defaultRange = metadata.valuesForHints(['range'])[0];
defaultRange = defaultRange ? defaultRange.key : undefined;
var sourceMap = _.indexBy(metadata.values(), 'key');
const sourceMap = arrayUtils.keyBy(metadata.values(), 'key');
var isLegacyProvider = telemetryAPI.findSubscriptionProvider(domainObject) ===
telemetryAPI.legacyProvider;

View File

@ -21,7 +21,7 @@
*****************************************************************************/
define([
'../../api/objects/object-utils'
'objectUtils'
], function (objectUtils) {
function ActionDialogDecorator(mct, actionService) {
this.mct = mct;

View File

@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
define(['../../api/objects/object-utils'], function (objectUtils) {
define(['objectUtils'], function (objectUtils) {
function AdapterCapability(domainObject) {
this.domainObject = domainObject;
}

View File

@ -24,7 +24,7 @@
* Module defining AlternateCompositionCapability. Created by vwoeltje on 11/7/14.
*/
define([
'../../api/objects/object-utils',
'objectUtils',
'../../../platform/core/src/capabilities/ContextualDomainObject'
], function (objectUtils, ContextualDomainObject) {
function AlternateCompositionCapability($injector, domainObject) {

View File

@ -22,7 +22,7 @@
define([
'../capabilities/AlternateCompositionCapability',
'../../api/objects/object-utils'
'objectUtils'
], function (
AlternateCompositionCapability,
objectUtils

View File

@ -21,9 +21,9 @@
*****************************************************************************/
define([
'../../api/objects/object-utils'
'objectUtils'
], function (
utils
objectUtils
) {
/**
* @implements module:openmct.TelemetryAPI~TelemetryProvider
@ -41,8 +41,8 @@ define([
* @see module:openmct.TelemetryAPI~TelemetryProvider#canProvideTelemetry
*/
LegacyTelemetryProvider.prototype.canProvideTelemetry = function (domainObject) {
return this.instantiate(utils.toOldFormat(domainObject),
utils.makeKeyString(domainObject.identifier)).hasCapability("telemetry");
return this.instantiate(objectUtils.toOldFormat(domainObject),
objectUtils.makeKeyString(domainObject.identifier)).hasCapability("telemetry");
};
LegacyTelemetryProvider.prototype.supportsRequest =
@ -105,7 +105,7 @@ define([
*/
LegacyTelemetryProvider.prototype.request = function (domainObject, request) {
var metadata = this.telemetryApi.getMetadata(domainObject);
var oldObject = this.instantiate(utils.toOldFormat(domainObject), utils.makeKeyString(domainObject.identifier));
var oldObject = this.instantiate(objectUtils.toOldFormat(domainObject), objectUtils.makeKeyString(domainObject.identifier));
var capability = oldObject.getCapability("telemetry");
return capability.requestData(request).then(function (telemetrySeries) {
@ -131,7 +131,7 @@ define([
*/
LegacyTelemetryProvider.prototype.subscribe = function (domainObject, callback, request) {
var metadata = this.telemetryApi.getMetadata(domainObject);
var oldObject = this.instantiate(utils.toOldFormat(domainObject), utils.makeKeyString(domainObject.identifier));
var oldObject = this.instantiate(objectUtils.toOldFormat(domainObject), objectUtils.makeKeyString(domainObject.identifier));
var capability = oldObject.getCapability("telemetry");
function callbackWrapper(series) {
@ -142,16 +142,16 @@ define([
LegacyTelemetryProvider.prototype.supportsLimits = function (domainObject) {
var oldObject = this.instantiate(
utils.toOldFormat(domainObject),
utils.makeKeyString(domainObject.identifier)
objectUtils.toOldFormat(domainObject),
objectUtils.makeKeyString(domainObject.identifier)
);
return oldObject.hasCapability("limit");
};
LegacyTelemetryProvider.prototype.getLimitEvaluator = function (domainObject) {
var oldObject = this.instantiate(
utils.toOldFormat(domainObject),
utils.makeKeyString(domainObject.identifier)
objectUtils.toOldFormat(domainObject),
objectUtils.makeKeyString(domainObject.identifier)
);
var limitEvaluator = oldObject.getCapability("limit");

View File

@ -78,7 +78,7 @@ define([
};
TimeSettingsURLHandler.prototype.parseQueryParams = function () {
var searchParams = _.pick(this.$location.search(), _.values(SEARCH));
var searchParams = _.pick(this.$location.search(), Object.values(SEARCH));
var parsedParams = {
clock: searchParams[SEARCH.MODE],
timeSystem: searchParams[SEARCH.TIME_SYSTEM]

View File

@ -21,9 +21,9 @@
*****************************************************************************/
define([
'../../api/objects/object-utils'
'objectUtils'
], function (
utils
objectUtils
) {
function ObjectServiceProvider(eventEmitter, objectService, instantiate, topic) {
this.eventEmitter = eventEmitter;
@ -43,22 +43,22 @@ define([
var handleLegacyMutation;
var handleMutation = function (newStyleObject) {
var keyString = utils.makeKeyString(newStyleObject.identifier);
var oldStyleObject = this.instantiate(utils.toOldFormat(newStyleObject), keyString);
var keyString = objectUtils.makeKeyString(newStyleObject.identifier);
var oldStyleObject = this.instantiate(objectUtils.toOldFormat(newStyleObject), keyString);
// Don't trigger self
removeGeneralTopicListener();
oldStyleObject.getCapability('mutation').mutate(function () {
return utils.toOldFormat(newStyleObject);
return objectUtils.toOldFormat(newStyleObject);
});
removeGeneralTopicListener = this.generalTopic.listen(handleLegacyMutation);
}.bind(this);
handleLegacyMutation = function (legacyObject) {
var newStyleObject = utils.toNewFormat(legacyObject.getModel(), legacyObject.getId()),
keystring = utils.makeKeyString(newStyleObject.identifier);
var newStyleObject = objectUtils.toNewFormat(legacyObject.getModel(), legacyObject.getId()),
keystring = objectUtils.makeKeyString(newStyleObject.identifier);
this.eventEmitter.emit(keystring + ":*", newStyleObject);
this.eventEmitter.emit('mutation', newStyleObject);
@ -74,7 +74,7 @@ define([
return object.getCapability('persistence')
.persist()
.then(function () {
return utils.toNewFormat(object, key);
return objectUtils.toNewFormat(object, key);
});
};
@ -83,11 +83,11 @@ define([
};
ObjectServiceProvider.prototype.get = function (key) {
var keyString = utils.makeKeyString(key);
var keyString = objectUtils.makeKeyString(key);
return this.objectService.getObjects([keyString])
.then(function (results) {
var model = results[keyString].getModel();
return utils.toNewFormat(model, key);
return objectUtils.toNewFormat(model, key);
});
};
@ -99,10 +99,10 @@ define([
this.getObjects = function (keys) {
var results = {},
promises = keys.map(function (keyString) {
var key = utils.parseKeyString(keyString);
var key = objectUtils.parseKeyString(keyString);
return openmct.objects.get(key)
.then(function (object) {
object = utils.toOldFormat(object);
object = objectUtils.toOldFormat(object);
results[keyString] = instantiate(object, keyString);
});
});
@ -123,7 +123,7 @@ define([
);
ROOTS.forEach(function (r) {
openmct.objects.addRoot(utils.parseKeyString(r.id));
openmct.objects.addRoot(objectUtils.parseKeyString(r.id));
});
return this;

View File

@ -21,7 +21,7 @@
*****************************************************************************/
define([
'../../api/objects/object-utils'
'objectUtils'
], function (
objectUtils
) {

View File

@ -1,7 +1,7 @@
define([
'./LegacyViewProvider',
'./TypeInspectorViewProvider',
'../../api/objects/object-utils'
'objectUtils'
], function (
LegacyViewProvider,
TypeInspectorViewProvider,

View File

@ -21,12 +21,10 @@
*****************************************************************************/
define([
'lodash',
'EventEmitter',
'./DefaultCompositionProvider',
'./CompositionCollection'
], function (
_,
EventEmitter,
DefaultCompositionProvider,
CompositionCollection
@ -70,9 +68,7 @@ define([
* @memberof module:openmct.CompositionAPI#
*/
CompositionAPI.prototype.get = function (domainObject) {
var provider = _.find(this.registry, function (p) {
return p.appliesTo(domainObject);
});
var provider = this.registry.find(p => p.appliesTo(domainObject));
if (!provider) {
return;

View File

@ -20,9 +20,7 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
define([
'lodash'
], function (
define([], function (
_
) {
/**
@ -122,7 +120,7 @@ define([
throw new Error('Event not supported by composition: ' + event);
}
var index = _.findIndex(this.listeners[event], function (l) {
var index = this.listeners[event].findIndex(function (l) {
return l.callback === callback && l.context === context;
});

View File

@ -22,7 +22,7 @@
define([
'lodash',
'../objects/object-utils'
'objectUtils'
], function (
_,
objectUtils
@ -143,7 +143,7 @@ define([
var keyString = objectUtils.makeKeyString(domainObject.identifier);
var objectListeners = this.listeningTo[keyString];
var index = _.findIndex(objectListeners[event], function (l) {
var index = objectListeners[event].findIndex(function (l) {
return l.callback === callback && l.context === context;
});
@ -196,8 +196,8 @@ define([
* @private
*/
DefaultCompositionProvider.prototype.includes = function (parent, childId) {
return parent.composition.findIndex(composee =>
this.publicAPI.objects.areIdsEqual(composee, childId)) !== -1;
return parent.composition.some(composee =>
this.publicAPI.objects.areIdsEqual(composee, childId));
};
DefaultCompositionProvider.prototype.reorder = function (domainObject, oldIndex, newIndex) {

View File

@ -20,11 +20,9 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
define([
'./SimpleIndicator',
'lodash'
'./SimpleIndicator'
], function (
SimpleIndicator,
_
SimpleIndicator
) {
function IndicatorAPI(openmct) {
this.openmct = openmct;

View File

@ -21,10 +21,10 @@
*****************************************************************************/
define([
'./object-utils.js',
'objectUtils',
'lodash'
], function (
utils,
objectUtils,
_
) {
var ANY_OBJECT_EVENT = "mutation";
@ -43,7 +43,7 @@ define([
}
function qualifiedEventName(object, eventName) {
var keystring = utils.makeKeyString(object.identifier);
var keystring = objectUtils.makeKeyString(object.identifier);
return [keystring, eventName].join(':');
}

View File

@ -21,15 +21,13 @@
*****************************************************************************/
define([
'lodash',
'./object-utils',
'objectUtils',
'./MutableObject',
'./RootRegistry',
'./RootObjectProvider',
'EventEmitter'
], function (
_,
utils,
objectUtils,
MutableObject,
RootRegistry,
RootObjectProvider,
@ -143,7 +141,7 @@ define([
* has been saved, or be rejected if it cannot be saved
*/
ObjectAPI.prototype.get = function (identifier) {
identifier = utils.parseKeyString(identifier);
identifier = objectUtils.parseKeyString(identifier);
var provider = this.getProvider(identifier);
if (!provider) {
@ -212,7 +210,7 @@ define([
* @returns {string} A string representation of the given identifier, including namespace and key
*/
ObjectAPI.prototype.makeKeyString = function (identifier) {
return utils.makeKeyString(identifier);
return objectUtils.makeKeyString(identifier);
};
/**
@ -220,7 +218,7 @@ define([
* @param {module:openmct.ObjectAPI~Identifier[]} identifiers
*/
ObjectAPI.prototype.areIdsEqual = function (...identifiers) {
return identifiers.map(utils.parseKeyString)
return identifiers.map(objectUtils.parseKeyString)
.every(identifier => {
return identifier === identifiers[0] ||
(identifier.namespace === identifiers[0].namespace &&
@ -234,7 +232,7 @@ define([
let location = domainObject.location;
if (location) {
return this.getOriginalPath(utils.parseKeyString(location), path);
return this.getOriginalPath(objectUtils.parseKeyString(location), path);
} else {
return path;
}

View File

@ -21,9 +21,11 @@
*****************************************************************************/
define([
'lodash'
'lodash',
'arrayUtils'
], function (
_
_,
arrayUtils
) {
function RootRegistry() {
@ -35,7 +37,7 @@ define([
return provider();
});
return Promise.all(promises)
.then(_.flatten);
.then(arrayUtils.flatten);
};
function isKey(key) {
@ -43,7 +45,7 @@ define([
}
RootRegistry.prototype.addRoot = function (key) {
if (isKey(key) || (_.isArray(key) && _.every(key, isKey))) {
if (isKey(key) || (Array.isArray(key) && key.every(isKey))) {
this.providers.push(function () {
return key;
});

View File

@ -1,5 +1,5 @@
define([
'../object-utils'
'objectUtils'
], function (
objectUtils
) {

View File

@ -85,9 +85,13 @@ define([
value: +e.value
};
}), 'e.value');
valueMetadata.values = _.pluck(valueMetadata.enumerations, 'value');
valueMetadata.max = _.max(valueMetadata.values);
valueMetadata.min = _.min(valueMetadata.values);
valueMetadata.values = Object.entries(valueMetadata.enumerations)
.reduce((accumulator, [key, {value}]) => {
accumulator[key] = value;
return accumulator
}, []);
valueMetadata.max = Math.max(...valueMetadata.values);
valueMetadata.min = Math.min(...valueMetadata.values);
}
valueMetadatas.push(valueMetadata);
@ -103,7 +107,7 @@ define([
var metadata = domainObject.telemetry || {};
if (this.typeHasTelemetry(domainObject)) {
var typeMetadata = this.typeService.getType(domainObject.type).typeDef.telemetry;
_.extend(metadata, typeMetadata);
Object.assign(metadata, typeMetadata);
if (!metadata.values) {
metadata.values = valueMetadatasFromOldFormat(metadata);
}

View File

@ -24,7 +24,7 @@ define([
'./TelemetryMetadataManager',
'./TelemetryValueFormatter',
'./DefaultMetadataProvider',
'../objects/object-utils',
'objectUtils',
'lodash'
], function (
TelemetryMetadataManager,
@ -370,7 +370,8 @@ define([
TelemetryAPI.prototype.commonValuesForHints = function (metadatas, hints) {
var options = metadatas.map(function (metadata) {
var values = metadata.valuesForHints(hints);
return _.indexBy(values, 'key');
const keyBy = (array, key) => (array || []).reduce((r, x) => ({ ...r, [key ? x[key] : x]: x }), {});
return keyBy(values, 'key');
}).reduce(function (a, b) {
var results = {};
Object.keys(a).forEach(function (key) {
@ -383,7 +384,7 @@ define([
var sortKeys = hints.map(function (h) {
return 'hints.' + h;
});
return _.sortByAll(options, sortKeys);
return _.sortBy(options, sortKeys);
};
/**

View File

@ -57,13 +57,13 @@ define([
if (valueMetadata.format === 'enum') {
if (!valueMetadata.values) {
valueMetadata.values = _.pluck(valueMetadata.enumerations, 'value');
valueMetadata.enumerations.map(enumeration => enumeration.value);
}
if (!valueMetadata.hasOwnProperty('max')) {
valueMetadata.max = _.max(valueMetadata.values) + 1;
}
if (!valueMetadata.hasOwnProperty('min')) {
valueMetadata.min = _.min(valueMetadata.values) - 1;
valueMetadata.min = _.max(valueMetadata.values) + 1;
}
}
@ -121,7 +121,7 @@ define([
return metadata.hints[hint];
}
});
return _.sortByAll(matchingMetadata, ...iteratees);
return _.sortBy(matchingMetadata, ...iteratees);
};
TelemetryMetadataManager.prototype.getFilterableValues = function () {

View File

@ -0,0 +1,46 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2020, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT 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.
*****************************************************************************/
/* Retired lodash methods */
// keyBy for array only
export const keyBy = (array, key) => (array || []).reduce((acc, curr) => {
return { ...acc, [curr[key]]: curr };
}, {});
// flattens array a single level deep.
export const flatten = array => array.reduce((acc, curr) => {
return acc.concat(curr);
}, []);
// recursively flatten deeper arrays
export const flattenDeep = array => {
return array.reduce((acc, curr) => {
return Array.isArray(curr) ? acc.concat(flattenDeep(curr)) : acc.concat(curr);
}, []);
};
// checks if value is an empty object or collection - does not support evaluating a Set or a Map
export const isEmpty = (obj => {
return [Object, Array].includes((obj || {}).constructor)
&& !Object.entries((obj || {})).length;
});

View File

@ -0,0 +1,131 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2020, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT 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 { keyBy, flatten, flattenDeep, isEmpty } from 'arrayUtils';
const getArrayDepth = (obj => {
if (Array.isArray(obj)) {
return 1 + Math.max(...obj.map(t => getArrayDepth(t)));
} else {
return 0;
}
});
describe("The keyBy method", function () {
const input = [
{
"key":"name",
"name":"Name",
"source":"name",
"hints":
{
"priority": 0
}
},
{
"key":"utc",
"name":"Timestamp",
"format":"utc",
"hints":
{
"domain": 1,
"priority": 1
},
"source":"utc"
},
{
"key":"message",
"name":"Message",
"format":"string",
"hints":
{
"range": 0,
"priority": 2
},
"source":"message"
}
];
const output = keyBy(input, 'key');
it('returns an object', () => {
expect(typeof output).toEqual('object');
});
describe("returns an object", function () {
it('with the input key values as key names', () => {
expect(Object.keys(output)).toEqual(input.map(obj => obj.key));
});
it('with the input array objects as as properties of the name keys', () => {
expect(Object.values(output)).toEqual(input);
});
});
});
describe("The flatten method", function () {
it('returns a flat array', () => {
expect(getArrayDepth(flatten([[1,2,3]]))).toEqual(1);
});
it('fails to return a flat array when passed an array deeper than two levels', () => {
expect(getArrayDepth(flatten([[[1,2,3]]]))).not.toEqual(1);
});
});
describe("The flattenDeep method", function () {
it('returns a flat array when passed an array deeper than two levels', () => {
expect(getArrayDepth(flattenDeep([[[1,[2,3]]]]))).toEqual(1);
});
});
describe("The isEmpty method", function () {
it('returns true when passed an empty array', () => {
expect(isEmpty([])).toBeTrue();
});
it('returns false when passed a non-empty array', () => {
expect(isEmpty([1,2,3])).not.toBeTrue();
});
it('returns true when passed an empty object', () => {
expect(isEmpty({})).toBeTrue();
});
it('returns false when passed a non-empty object', () => {
expect(isEmpty({1:1})).not.toBeTrue();
});
it('returns false when passed a Set', () => {
expect(isEmpty(new Set())).not.toBeTrue();
});
it('returns false when passed a Map', () => {
expect(isEmpty(new Map())).not.toBeTrue();
});
});

View File

@ -75,7 +75,7 @@ export default {
this.items.push(item);
},
removeItem(identifier) {
let index = _.findIndex(this.items, (item) => this.openmct.objects.makeKeyString(identifier) === item.key);
let index = this.items.findIndex(item => this.openmct.objects.makeKeyString(identifier) === item.key);
this.items.splice(index, 1);
},

View File

@ -102,7 +102,7 @@ export default {
this.compositions.push({composition, addCallback, removeCallback});
},
removePrimary(identifier) {
let index = _.findIndex(this.primaryTelemetryObjects, (primary) => this.openmct.objects.makeKeyString(identifier) === primary.key),
let index = this.primaryTelemetryObjects.findIndex(primary => this.openmct.objects.makeKeyString(identifier) === primary.key),
primary = this.primaryTelemetryObjects[index];
this.$set(this.secondaryTelemetryObjects, primary.key, undefined);
@ -130,7 +130,7 @@ export default {
removeSecondary(primary) {
return (identifier) => {
let array = this.secondaryTelemetryObjects[primary.key],
index = _.findIndex(array, (secondary) => this.openmct.objects.makeKeyString(identifier) === secondary.key);
index = array.findIndex(secondary => this.openmct.objects.makeKeyString(identifier) === secondary.key);
array.splice(index, 1);

View File

@ -197,7 +197,7 @@ export default {
this.$emit('telemetryUpdated', this.telemetryObjs);
},
removeTelemetryObject(identifier) {
let index = _.findIndex(this.telemetryObjs, (obj) => {
let index = this.telemetryObjs.findIndex(obj => {
let objId = this.openmct.objects.makeKeyString(obj.identifier);
let id = this.openmct.objects.makeKeyString(identifier);
return objId === id;

View File

@ -105,7 +105,8 @@ import ConditionDescription from "@/plugins/condition/components/ConditionDescri
import ConditionError from "@/plugins/condition/components/ConditionError.vue";
import Vue from 'vue';
import PreviewAction from "@/ui/preview/PreviewAction.js";
import {getApplicableStylesForItem} from "@/plugins/condition/utils/styleUtils";
import { getApplicableStylesForItem } from "@/plugins/condition/utils/styleUtils";
import { isEmpty } from 'arrayUtils';
export default {
name: 'ConditionalStylesView',
@ -273,7 +274,7 @@ export default {
delete domainObjectStyles[this.itemId].conditionSetIdentifier;
domainObjectStyles[this.itemId].styles = undefined;
delete domainObjectStyles[this.itemId].styles;
if (_.isEmpty(domainObjectStyles[this.itemId])) {
if (isEmpty(domainObjectStyles[this.itemId])) {
delete domainObjectStyles[this.itemId];
}
} else {
@ -282,7 +283,7 @@ export default {
domainObjectStyles.styles = undefined;
delete domainObjectStyles.styles;
}
if (_.isEmpty(domainObjectStyles)) {
if (isEmpty(domainObjectStyles)) {
domainObjectStyles = undefined;
}
@ -313,7 +314,7 @@ export default {
delete domainObjectStyles[this.itemId];
}
});
if (_.isEmpty(domainObjectStyles)) {
if (isEmpty(domainObjectStyles)) {
domainObjectStyles = undefined;
}
this.persist(domainObjectStyles);

View File

@ -50,6 +50,7 @@
import StyleEditor from "./StyleEditor.vue";
import PreviewAction from "@/ui/preview/PreviewAction.js";
import { getApplicableStylesForItem, getConsolidatedStyleValues, getConditionalStyleForItem } from "@/plugins/condition/utils/styleUtils";
import { isEmpty } from 'arrayUtils';
export default {
name: 'MultiSelectStylesView',
@ -178,7 +179,7 @@ export default {
domainObjectStyles[itemId] = undefined;
delete domainObjectStyles[this.itemId];
if (_.isEmpty(domainObjectStyles)) {
if (isEmpty(domainObjectStyles)) {
domainObjectStyles = undefined;
}
this.persist(this.domainObject, domainObjectStyles);
@ -239,7 +240,7 @@ export default {
if (this.isStaticAndConditionalStyles) {
this.removeConditionalStyles(domainObjectStyles, item.id);
}
if (_.isEmpty(itemStaticStyle)) {
if (isEmpty(itemStaticStyle)) {
itemStaticStyle = undefined;
domainObjectStyles[item.id] = undefined;
} else {

View File

@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
import { createOpenMct } from "testTools";
import { createOpenMct } from "testUtils";
import ConditionPlugin from "./plugin";
let openmct = createOpenMct();

View File

@ -20,8 +20,6 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
import _ from 'lodash';
const convertToNumbers = (input) => {
let numberInputs = [];
input.forEach(inputValue => numberInputs.push(Number(inputValue)));
@ -257,7 +255,7 @@ export const OPERATIONS = [
const lhsValue = input[0] !== undefined ? input[0].toString() : '';
if (input[1]) {
const values = input[1].split(',');
return values.find((value) => lhsValue === _.trim(value.toString()));
return values.find((value) => lhsValue === value.toString().trim());
}
return false;
},
@ -274,7 +272,7 @@ export const OPERATIONS = [
const lhsValue = input[0] !== undefined ? input[0].toString() : '';
if (input[1]) {
const values = input[1].split(',');
const found = values.find((value) => lhsValue === _.trim(value.toString()));
const found = values.find((value) => lhsValue === value.toString().trim());
return !found;
}
return false;

View File

@ -19,6 +19,8 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
import { isEmpty } from 'arrayUtils';
const NONE_VALUE = '__no_value';
const styleProps = {
@ -154,7 +156,7 @@ export const getApplicableStylesForItem = (domainObject, item) => {
};
export const getStylesWithoutNoneValue = (style) => {
if (_.isEmpty(style) || !style) {
if (isEmpty(style) || !style) {
return;
}
let styleObj = {};

View File

@ -20,7 +20,11 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
define(['lodash'], function (_) {
define([
'arrayUtils'
], function (
arrayUtils
) {
function DisplayLayoutToolbar(openmct) {
return {
name: "Display Layout Toolbar",
@ -559,7 +563,7 @@ define(['lodash'], function (_) {
});
let toolbarArray = Object.values(toolbar);
return _.flatten(toolbarArray.reduce((accumulator, group, index) => {
return arrayUtils.flatten(toolbarArray.reduce((accumulator, group, index) => {
group = group.filter(control => control !== undefined);
if (group.length > 0) {

View File

@ -76,6 +76,7 @@ import TextView from './TextView.vue'
import LineView from './LineView.vue'
import ImageView from './ImageView.vue'
import EditMarquee from './EditMarquee.vue'
import _ from 'lodash';
const ITEM_TYPE_VIEW_MAP = {
'subobject-view': SubobjectView,
@ -512,7 +513,7 @@ export default {
}
},
updateTelemetryFormat(item, format) {
let index = _.findIndex(this.layoutItems, item);
let index = this.layoutItems.findIndex(item);
item.format = format;
this.mutate(`configuration.items[${index}]`, item);
}

View File

@ -40,6 +40,7 @@
<script>
import LayoutDrag from './../LayoutDrag'
import _ from 'lodash'
export default {
inject: ['openmct'],

View File

@ -62,6 +62,7 @@
<script>
import conditionalStylesMixin from "../mixins/objectStyles-mixin";
import _ from 'lodash';
const START_HANDLE_QUADRANTS = {
1: 'c-frame-edit__handle--sw',

View File

@ -22,7 +22,7 @@
import Layout from './components/DisplayLayout.vue'
import Vue from 'vue'
import objectUtils from '../../api/objects/object-utils.js'
import objectUtils from 'objectUtils'
import DisplayLayoutType from './DisplayLayoutType.js'
import DisplayLayoutToolbar from './DisplayLayoutToolbar.js'
import AlphaNumericFormatViewProvider from './AlphanumericFormatViewProvider.js'

View File

@ -62,6 +62,7 @@
<script>
import FilterField from './FilterField.vue';
import ToggleSwitch from '../../../ui/components/ToggleSwitch.vue';
import { isEmpty } from 'arrayUtils';
export default {
inject: ['openmct'],
@ -102,7 +103,7 @@ export default {
hasActiveFilters() {
// Should be true when the user has entered any filter values.
return Object.values(this.persistedFilters).some(comparator => {
return (typeof(comparator) === 'object' && !_.isEmpty(comparator));
return (typeof(comparator) === 'object' && !isEmpty(comparator));
});
}
},

View File

@ -28,6 +28,8 @@
<script>
import FilterObject from './FilterObject.vue';
import GlobalFilters from './GlobalFilters.vue'
import { isEmpty } from 'arrayUtils';
import _ from 'lodash';
const FILTER_VIEW_TITLE = 'Filters applied';
const FILTER_VIEW_TITLE_MIXED = 'Mixed filters applied';
@ -58,7 +60,7 @@ export default {
// Should be true when the user has entered any filter values.
return Object.values(this.persistedFilters).some(filters => {
return Object.values(filters).some(comparator => {
return (typeof(comparator) === 'object' && !_.isEmpty(comparator));
return (typeof(comparator) === 'object' && !isEmpty(comparator));
});
});
},

View File

@ -64,6 +64,7 @@
<script>
import compositionLoader from './composition-loader';
import ListItem from './ListItem.vue';
import _ from 'lodash';
export default {
components: {ListItem},

View File

@ -220,7 +220,7 @@ export default {
return;
}
const index = _.sortedIndex(this.imageHistory, datum, this.timeFormat.format.bind(this.timeFormat));
const index = _.sortedIndexBy(this.imageHistory, datum, this.timeFormat.format.bind(this.timeFormat));
this.imageHistory.splice(index, 0, datum);
},
updateValues(datum) {

View File

@ -111,7 +111,7 @@ import SearchResults from './search-results.vue';
import Sidebar from './sidebar.vue';
import { clearDefaultNotebook, getDefaultNotebook, setDefaultNotebook, setDefaultNotebookSection, setDefaultNotebookPage } from '../utils/notebook-storage';
import { addNotebookEntry, createNewEmbed, getNotebookEntries } from '../utils/notebook-entries';
import { throttle } from 'lodash';
import _ from 'lodash';
const DEFAULT_CLASS = 'is-notebook-default';
@ -175,7 +175,7 @@ export default {
watch: {
},
beforeMount() {
this.throttledSearchItem = throttle(this.searchItem, 500);
this.throttledSearchItem = _.throttle(this.searchItem, 500);
},
mounted() {
this.unlisten = this.openmct.objects.observe(this.internalDomainObject, '*', this.updateInternalDomainObject);

View File

@ -30,8 +30,7 @@ define([
'./MCTChartPointSet',
'./MCTChartAlarmPointSet',
'../draw/DrawLoader',
'../lib/eventHelpers',
'lodash'
'../lib/eventHelpers'
],
function (
MCTChartLineLinear,
@ -39,8 +38,7 @@ function (
MCTChartPointSet,
MCTChartAlarmPointSet,
DrawLoader,
eventHelpers,
_
eventHelpers
) {
var MARKER_SIZE = 6.0,
@ -152,7 +150,7 @@ function (
MCTChartController.prototype.destroy = function () {
this.isDestroyed = true;
this.stopListening();
_.invoke(this.lines, 'destroy');
this.lines.forEach(line => line.destroy());
DrawLoader.releaseDrawAPI(this.drawAPI);
};

View File

@ -22,13 +22,11 @@
/*global define*/
define([
'lodash',
'EventEmitter',
'./Model',
'../lib/extend',
'../lib/eventHelpers'
], function (
_,
EventEmitter,
Model,
extend,
@ -44,7 +42,7 @@ define([
this.initialize(options);
}
_.extend(Collection.prototype, EventEmitter.prototype);
Object.assign(Collection.prototype, EventEmitter.prototype);
eventHelpers.extend(Collection.prototype);
Collection.extend = extend;
@ -105,12 +103,7 @@ define([
};
Collection.prototype.indexOf = function (model) {
return _.findIndex(
this.models,
function (m) {
return m === model;
}
);
return this.models.findIndex(m => m === model);
};
Collection.prototype.remove = function (model) {

View File

@ -49,7 +49,7 @@ define([
this.initialize(options);
}
_.extend(Model.prototype, EventEmitter.prototype);
Object.assign(Model.prototype, EventEmitter.prototype);
eventHelpers.extend(Model.prototype);
Model.extend = extend;

View File

@ -146,7 +146,7 @@ define([
strategy = 'minmax';
}
options = _.extend({}, { size: 1000, strategy, filters: this.filters }, options || {});
options = Object.assign({}, { size: 1000, strategy, filters: this.filters }, options || {});
if (!this.unsubscribe) {
this.unsubscribe = this.openmct
@ -270,7 +270,7 @@ define([
* @private
*/
sortedIndex: function (point) {
return _.sortedIndex(this.data, point, this.getXVal);
return _.sortedIndexBy(this.data, point, this.getXVal);
},
/**
* Update min/max stats for the series.

View File

@ -101,13 +101,10 @@ define([
var plotObject = this.plot.get('domainObject');
if (plotObject.type === 'telemetry.plot.overlay') {
var persistedIndex = _.findIndex(plotObject.configuration.series, function (s) {
return _.isEqual(identifier, s.identifier);
});
var persistedIndex = plotObject.configuration.series.findIndex(s => _.isEqual(identifier, s.identifier));
var configIndex = _.findIndex(this.models, function (m) {
return _.isEqual(m.domainObject.identifier, identifier);
});
var configIndex = this.models.findIndex(m => _.isEqual(m.domainObject.identifier, identifier));
/*
when cancelling out of edit mode, the config store and domain object are out of sync

View File

@ -22,11 +22,9 @@
define([
'lodash',
'EventEmitter',
'../lib/eventHelpers'
], function (
_,
EventEmitter,
eventHelpers
) {
@ -51,7 +49,7 @@ define([
}
}
_.extend(Draw2D.prototype, EventEmitter.prototype);
Object.assign(Draw2D.prototype, EventEmitter.prototype);
eventHelpers.extend(Draw2D.prototype);
// Convert from logical to physical x coordinates

View File

@ -22,11 +22,9 @@
define([
'lodash',
'EventEmitter',
'../lib/eventHelpers'
], function (
_,
EventEmitter,
eventHelpers
) {
@ -78,7 +76,7 @@ define([
this.listenTo(this.canvas, "webglcontextlost", this.onContextLost, this);
}
_.extend(DrawWebGL.prototype, EventEmitter.prototype);
Object.assign(DrawWebGL.prototype, EventEmitter.prototype);
eventHelpers.extend(DrawWebGL.prototype);
DrawWebGL.prototype.onContextLost = function (event) {

View File

@ -22,14 +22,10 @@
define([
'../configuration/configStore',
'../lib/eventHelpers',
'../../../../api/objects/object-utils',
'lodash'
'../lib/eventHelpers'
], function (
configStore,
eventHelpers,
objectUtils,
_
eventHelpers
) {
function PlotOptionsController($scope, openmct, $timeout) {

View File

@ -31,9 +31,7 @@ define([
function dynamicPathForKey(key) {
return function (object, model) {
var modelIdentifier = model.get('identifier');
var index = _.findIndex(object.configuration.series, function (s) {
return _.isEqual(s.identifier, modelIdentifier);
});
var index = object.configuration.series.findIndex(s => _.isEqual(s.identifier, modelIdentifier));
return 'configuration.series[' + index + '].' + key;
};
}

View File

@ -21,8 +21,7 @@
*****************************************************************************/
define([
'./PlotModelFormController',
'lodash'
'./PlotModelFormController'
], function (
PlotModelFormController,
_
@ -73,10 +72,10 @@ define([
if (range.max === '' || range.max === null || typeof range.max === 'undefined') {
return 'Must specify Maximum';
}
if (_.isNaN(Number(range.min))) {
if (Number.isNaN(range.min)) {
return 'Minimum must be a number.';
}
if (_.isNaN(Number(range.max))) {
if (Number.isNaN(range.max)) {
return 'Maximum must be a number.';
}
if (Number(range.min) > Number(range.max)) {

View File

@ -76,7 +76,7 @@ define([
if (childObj) {
var index = telemetryObjects.indexOf(childObj);
telemetryObjects.splice(index, 1);
$scope.$broadcast('plot:tickWidth', _.max(tickWidthMap));
$scope.$broadcast('plot:tickWidth', Math.max(...Object.values(tickWidthMap)));
}
}
@ -131,6 +131,7 @@ define([
}
tickWidthMap[plotId] = Math.max(width, tickWidthMap[plotId]);
var newTickWidth = _.max(tickWidthMap);
if (newTickWidth !== tickWidth || width !== tickWidth) {
tickWidth = newTickWidth;
$scope.$broadcast('plot:tickWidth', tickWidth);

View File

@ -1,5 +1,5 @@
define([
'../../api/objects/object-utils'
'objectUtils'
], function (
objectUtils
) {

View File

@ -1,12 +1,14 @@
define ([
'./ConditionEvaluator',
'../../../api/objects/object-utils',
'objectUtils',
'arrayUtils',
'EventEmitter',
'zepto',
'lodash'
], function (
ConditionEvaluator,
objectUtils,
arrayUtils,
EventEmitter,
$,
_
@ -250,7 +252,7 @@ define ([
delete this.subscriptions[objectId];
this.eventEmitter.emit('remove', identifier);
if (_.isEmpty(this.compositionObjs)) {
if (arrayUtils.isEmpty(this.compositionObjs)) {
$('.w-summary-widget').addClass('s-status-no-data');
}
};

View File

@ -5,8 +5,7 @@ define([
'./TestDataManager',
'./WidgetDnD',
'./eventHelpers',
'../../../api/objects/object-utils',
'lodash',
'objectUtils',
'zepto'
], function (
widgetTemplate,
@ -16,7 +15,6 @@ define([
WidgetDnD,
eventHelpers,
objectUtils,
_,
$
) {

View File

@ -1,6 +1,6 @@
define([
'./Select',
'../../../../api/objects/object-utils'
'objectUtils'
], function (
Select,
objectUtils

View File

@ -22,7 +22,7 @@
define([
'./SummaryWidgetEvaluator',
'../../../../api/objects/object-utils'
'objectUtils'
], function (
SummaryWidgetEvaluator,
objectUtils

View File

@ -23,7 +23,7 @@
define([
'./SummaryWidgetRule',
'../eventHelpers',
'../../../../api/objects/object-utils',
'objectUtils',
'lodash'
], function (
SummaryWidgetRule,
@ -154,7 +154,7 @@ define([
return _(this.baseState)
.values()
.map(_.clone)
.indexBy('id')
.keyBy('id')
.value();
}.bind(this));
};
@ -182,7 +182,7 @@ define([
* @private.
*/
SummaryWidgetEvaluator.prototype.updateObjectStateFromLAD = function (options, objectState) {
options = _.extend({}, options, {
options = Object.assign({}, options, {
strategy: 'latest',
size: 1
});

View File

@ -1,7 +1,7 @@
define([
'../SummaryWidget',
'./SummaryWidgetView',
'../../../../api/objects/object-utils'
'objectUtils'
], function (
SummaryWidgetEditView,
SummaryWidgetView,

View File

@ -22,7 +22,7 @@
/*jshint latedef: nofunc */
/*global console */
define([
'../../../api/objects/object-utils',
'objectUtils',
'./TelemetryAverager'
], function (objectUtils, TelemetryAverager) {

View File

@ -21,7 +21,7 @@
*****************************************************************************/
define([
'../../api/objects/object-utils',
'objectUtils',
'./components/table-configuration.vue',
'./TelemetryTableConfiguration',
'vue'

View File

@ -22,8 +22,10 @@
define([
'lodash',
'EventEmitter'
], function (_, EventEmitter) {
'EventEmitter',
'arrayUtils'
], function (_, EventEmitter, arrayUtils) {
class TelemetryTableConfiguration extends EventEmitter {
constructor(domainObject, openmct) {
@ -99,8 +101,8 @@ define([
}
hasColumnWithKey(columnKey) {
return _.flatten(Object.values(this.columns))
.findIndex(column => column.getKey() === columnKey) !== -1;
return arrayUtils.flatten(Object.values(this.columns))
.some(column => column.getKey() === columnKey);
}
getColumns() {
@ -108,7 +110,7 @@ define([
}
getAllHeaders() {
let flattenedColumns = _.flatten(Object.values(this.columns));
let flattenedColumns = arrayUtils.flatten(Object.values(this.columns));
let headers = _.uniq(flattenedColumns, false, column => column.getKey())
.reduce(fromColumnsToHeadersMap, {});

View File

@ -22,11 +22,9 @@
define(
[
'lodash',
'./SortedTableRowCollection'
],
function (
_,
SortedTableRowCollection
) {

View File

@ -93,7 +93,7 @@ define(
// same time stamp
let potentialDupes = this.rows.slice(startIx, endIx + 1);
// Search potential dupes for exact dupe
isDuplicate = _.findIndex(potentialDupes, _.isEqual.bind(undefined, row)) > -1;
isDuplicate = potentialDupes.some(_.isEqual.bind(undefined, row));
}
if (!isDuplicate) {
@ -120,7 +120,7 @@ define(
const firstValue = this.getValueForSortColumn(this.rows[0]);
const lastValue = this.getValueForSortColumn(this.rows[this.rows.length - 1]);
lodashFunction = lodashFunction || _.sortedIndex;
lodashFunction = lodashFunction || _.sortedIndexBy;
if (this.sortOptions.direction === 'asc') {
if (testRowValue > lastValue) {
@ -201,7 +201,7 @@ define(
sortBy(sortOptions) {
if (arguments.length > 0) {
this.sortOptions = sortOptions;
this.rows = _.sortByOrder(this.rows, (row) => row.getParsedValue(sortOptions.key) , sortOptions.direction);
this.rows = _.orderBy(this.rows, (row) => row.getParsedValue(sortOptions.key) , sortOptions.direction);
this.emit('sort');
}
// Return duplicate to avoid direct modification of underlying object

View File

@ -17,6 +17,9 @@
</template>
<script>
import _ from 'lodash';
import { flatten, isEmpty } from 'arrayUtils';
const FILTER_INDICATOR_LABEL = 'Filters:';
const FILTER_INDICATOR_LABEL_MIXED = 'Mixed Filters:';
const FILTER_INDICATOR_TITLE = 'Data filters are being applied to this view.';
@ -77,7 +80,7 @@ export default {
}
});
names = _.flatten(names);
names = flatten(names);
this.filterNames = names.length === 0 ? names : Array.from(new Set(names));
});
},
@ -86,7 +89,7 @@ export default {
filters = _.omit(filters, [USE_GLOBAL]);
Object.keys(filters).forEach(key => {
if (!_.isEmpty(filters[key])) {
if (!isEmpty(filters[key])) {
metadataValues.forEach(metadatum => {
if (key === metadatum.key) {
if (typeof metadatum.filters[0] === "object") {
@ -99,7 +102,7 @@ export default {
}
});
return _.flatten(filterNames);
return flatten(filterNames);
},
getFilterLabels(filterObject, metadatum,) {
let filterLabels = [];

View File

@ -260,8 +260,8 @@ import search from '../../../ui/components/search.vue';
import TableColumnHeader from './table-column-header.vue';
import TelemetryFilterIndicator from './TelemetryFilterIndicator.vue';
import CSVExporter from '../../../exporters/CSVExporter.js';
import _ from 'lodash';
import ToggleSwitch from '../../../ui/components/ToggleSwitch.vue';
import _ from 'lodash';
const VISIBLE_ROW_COUNT = 100;
const ROW_HEIGHT = 17;

View File

@ -24,7 +24,7 @@ import Vue from 'vue';
import {
createOpenMct,
createMouseEvent
} from 'testTools';
} from 'testUtils';
let openmct;
let tablePlugin;

View File

@ -3,9 +3,9 @@
</template>
<script>
import _ from "lodash"
import StyleRuleManager from "@/plugins/condition/StyleRuleManager";
import {STYLE_CONSTANTS} from "@/plugins/condition/utils/constants";
import _ from 'lodash';
export default {
inject: ["openmct"],

View File

@ -47,14 +47,12 @@ import Location from './Location.vue';
import Properties from './Properties.vue';
import ObjectName from './ObjectName.vue';
import InspectorViews from './InspectorViews.vue';
import _ from "lodash";
import StylesInspectorView from "./StylesInspectorView.vue";
export default {
inject: ['openmct'],
components: {
StylesInspectorView,
// StylesInspectorView,
multipane,
pane,
Elements,
@ -128,7 +126,7 @@ export default {
this.currentTabbedView = view;
},
isCurrent(view) {
return _.isEqual(this.currentTabbedView, view)
return JSON.stringify(this.currentTabbedView) === JSON.stringify(view)
}
}
}

View File

@ -39,7 +39,7 @@
<script>
import CreateAction from '../../../platform/commonUI/edit/src/creation/CreateAction';
import objectUtils from '../../api/objects/object-utils';
import objectUtils from 'objectUtils';
export default {
inject: ['openmct'],

View File

@ -20,7 +20,6 @@ import toolbarMenu from './components/toolbar-menu.vue';
import toolbarSelectMenu from './components/toolbar-select-menu.vue';
import toolbarSeparator from './components/toolbar-separator.vue';
import toolbarToggleButton from './components/toolbar-toggle-button.vue';
import _ from 'lodash';
export default {

View File

@ -42,7 +42,9 @@ const webpackConfig = {
"printj": path.join(__dirname, "node_modules/printj/dist/printj.min.js"),
"styles": path.join(__dirname, "src/styles"),
"MCT": path.join(__dirname, "src/MCT"),
"testTools": path.join(__dirname, "src/testTools.js")
"testUtils": path.join(__dirname, "src/test-utils.js"),
"objectUtils": path.join(__dirname, "src/api/objects/object-utils.js"),
"arrayUtils": path.join(__dirname, "src/api/utils/array-utils.js")
}
},
devtool: devMode ? 'eval-source-map' : 'source-map',