Compare commits
	
		
			6 Commits
		
	
	
		
			plan-notes
			...
			V-R4.4.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					2f58dfbfe7 | ||
| 
						 | 
					166cb55945 | ||
| 
						 | 
					83116257fc | ||
| 
						 | 
					775f1048bc | ||
| 
						 | 
					71a8b377bb | ||
| 
						 | 
					c43d3fcfc9 | 
@@ -53,9 +53,9 @@
 | 
			
		||||
    "marked": "^0.3.5",
 | 
			
		||||
    "mini-css-extract-plugin": "^0.4.1",
 | 
			
		||||
    "minimist": "^1.1.1",
 | 
			
		||||
    "moment": "^2.11.1",
 | 
			
		||||
    "moment": "2.25.3",
 | 
			
		||||
    "moment-duration-format": "^2.2.2",
 | 
			
		||||
    "moment-timezone": "^0.5.21",
 | 
			
		||||
    "moment-timezone": "0.5.28",
 | 
			
		||||
    "node-bourbon": "^4.2.3",
 | 
			
		||||
    "node-sass": "^4.9.2",
 | 
			
		||||
    "painterro": "^0.2.65",
 | 
			
		||||
 
 | 
			
		||||
@@ -204,7 +204,7 @@ export default class ConditionClass extends EventEmitter {
 | 
			
		||||
        let latestTimestamp;
 | 
			
		||||
        let criteriaResults = {};
 | 
			
		||||
        const criteriaRequests = this.criteria
 | 
			
		||||
            .map(criterion => criterion.requestLAD({telemetryObjects: this.conditionManager.telemetryObjects}));
 | 
			
		||||
            .map(criterion => criterion.requestLAD(this.conditionManager.telemetryObjects));
 | 
			
		||||
 | 
			
		||||
        return Promise.all(criteriaRequests)
 | 
			
		||||
            .then(results => {
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@ export default class ConditionManager extends EventEmitter {
 | 
			
		||||
        this.telemetryObjects[id] = Object.assign({}, endpoint, {telemetryMetaData: this.openmct.telemetry.getMetadata(endpoint).valueMetadatas});
 | 
			
		||||
        this.subscriptions[id] = this.openmct.telemetry.subscribe(
 | 
			
		||||
            endpoint,
 | 
			
		||||
            this.telemetryReceived.bind(this, id)
 | 
			
		||||
            this.telemetryReceived.bind(this, endpoint)
 | 
			
		||||
        );
 | 
			
		||||
        this.updateConditionTelemetry();
 | 
			
		||||
    }
 | 
			
		||||
@@ -258,9 +258,13 @@ export default class ConditionManager extends EventEmitter {
 | 
			
		||||
                            this.openmct.time.timeSystem()
 | 
			
		||||
                        );
 | 
			
		||||
                    });
 | 
			
		||||
                    const currentCondition = this.getCurrentConditionLAD(conditionResults);
 | 
			
		||||
 | 
			
		||||
                    return Object.assign(
 | 
			
		||||
                    if (!Object.values(latestTimestamp).some(timeSystem => timeSystem)) {
 | 
			
		||||
                        return [];
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    const currentCondition = this.getCurrentConditionLAD(conditionResults);
 | 
			
		||||
                    const currentOutput = Object.assign(
 | 
			
		||||
                        {
 | 
			
		||||
                            output: currentCondition.configuration.output,
 | 
			
		||||
                            id: this.conditionSetDomainObject.identifier,
 | 
			
		||||
@@ -268,11 +272,15 @@ export default class ConditionManager extends EventEmitter {
 | 
			
		||||
                        },
 | 
			
		||||
                        latestTimestamp
 | 
			
		||||
                    );
 | 
			
		||||
 | 
			
		||||
                    return [currentOutput];
 | 
			
		||||
                });
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    isTelemetryUsed(id) {
 | 
			
		||||
    isTelemetryUsed(endpoint) {
 | 
			
		||||
        const id = this.openmct.objects.makeKeyString(endpoint.identifier);
 | 
			
		||||
 | 
			
		||||
        for(const condition of this.conditionClassCollection) {
 | 
			
		||||
            if (condition.isTelemetryUsed(id)) {
 | 
			
		||||
                return true;
 | 
			
		||||
@@ -282,12 +290,12 @@ export default class ConditionManager extends EventEmitter {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    telemetryReceived(id, datum) {
 | 
			
		||||
        if (!this.isTelemetryUsed(id)) {
 | 
			
		||||
    telemetryReceived(endpoint, datum) {
 | 
			
		||||
        if (!this.isTelemetryUsed(endpoint)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const normalizedDatum = this.createNormalizedDatum(datum, id);
 | 
			
		||||
        const normalizedDatum = this.createNormalizedDatum(datum, endpoint);
 | 
			
		||||
        const timeSystemKey = this.openmct.time.timeSystem().key;
 | 
			
		||||
        let timestamp = {};
 | 
			
		||||
        timestamp[timeSystemKey] = normalizedDatum[timeSystemKey];
 | 
			
		||||
@@ -321,8 +329,11 @@ export default class ConditionManager extends EventEmitter {
 | 
			
		||||
        return data;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    createNormalizedDatum(telemetryDatum, id) {
 | 
			
		||||
        const normalizedDatum = Object.values(this.telemetryObjects[id].telemetryMetaData).reduce((datum, metadatum) => {
 | 
			
		||||
    createNormalizedDatum(telemetryDatum, endpoint) {
 | 
			
		||||
        const id = this.openmct.objects.makeKeyString(endpoint.identifier);
 | 
			
		||||
        const metadata = this.openmct.telemetry.getMetadata(endpoint).valueMetadatas;
 | 
			
		||||
 | 
			
		||||
        const normalizedDatum = Object.values(metadata).reduce((datum, metadatum) => {
 | 
			
		||||
            const testValue = this.getTestData(metadatum);
 | 
			
		||||
            const formatter = this.openmct.telemetry.getValueFormatter(metadatum);
 | 
			
		||||
            datum[metadatum.key] = testValue !== undefined ?  formatter.parse(testValue) : formatter.parse(telemetryDatum[metadatum.source]);
 | 
			
		||||
 
 | 
			
		||||
@@ -54,13 +54,22 @@ export default class ConditionSetMetadataProvider {
 | 
			
		||||
        return {
 | 
			
		||||
            values: this.getDomains().concat([
 | 
			
		||||
                {
 | 
			
		||||
                    name: 'Output',
 | 
			
		||||
                    key: 'output',
 | 
			
		||||
                    format: 'enum',
 | 
			
		||||
                    key: "state",
 | 
			
		||||
                    source: "output",
 | 
			
		||||
                    name: "State",
 | 
			
		||||
                    format: "enum",
 | 
			
		||||
                    enumerations: enumerations,
 | 
			
		||||
                    hints: {
 | 
			
		||||
                        range: 1
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    key: "output",
 | 
			
		||||
                    name: "Value",
 | 
			
		||||
                    format: "string",
 | 
			
		||||
                    hints: {
 | 
			
		||||
                        range: 2
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            ])
 | 
			
		||||
        };
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@ export default class ConditionSetTelemetryProvider {
 | 
			
		||||
 | 
			
		||||
        return conditionManager.requestLADConditionSetOutput()
 | 
			
		||||
            .then(latestOutput => {
 | 
			
		||||
                return latestOutput ? [latestOutput] : [];
 | 
			
		||||
                return latestOutput;
 | 
			
		||||
            });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,7 @@
 | 
			
		||||
 | 
			
		||||
import TelemetryCriterion from './TelemetryCriterion';
 | 
			
		||||
import { evaluateResults } from "../utils/evaluator";
 | 
			
		||||
import { getLatestTimestamp } from '../utils/time';
 | 
			
		||||
 | 
			
		||||
export default class AllTelemetryCriterion extends TelemetryCriterion {
 | 
			
		||||
 | 
			
		||||
@@ -107,40 +108,53 @@ export default class AllTelemetryCriterion extends TelemetryCriterion {
 | 
			
		||||
        this.result = evaluateResults(Object.values(this.telemetryDataCache), this.telemetry);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    requestLAD(options) {
 | 
			
		||||
        options = Object.assign({},
 | 
			
		||||
            options,
 | 
			
		||||
            {
 | 
			
		||||
                strategy: 'latest',
 | 
			
		||||
                size: 1
 | 
			
		||||
            }
 | 
			
		||||
        );
 | 
			
		||||
    requestLAD(telemetryObjects) {
 | 
			
		||||
        const options = {
 | 
			
		||||
            strategy: 'latest',
 | 
			
		||||
            size: 1
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        if (!this.isValid()) {
 | 
			
		||||
            return this.formatData({}, options.telemetryObjects);
 | 
			
		||||
            return this.formatData({}, telemetryObjects);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let keys = Object.keys(Object.assign({}, options.telemetryObjects));
 | 
			
		||||
        let keys = Object.keys(Object.assign({}, telemetryObjects));
 | 
			
		||||
        const telemetryRequests = keys
 | 
			
		||||
            .map(key => this.openmct.telemetry.request(
 | 
			
		||||
                options.telemetryObjects[key],
 | 
			
		||||
                telemetryObjects[key],
 | 
			
		||||
                options
 | 
			
		||||
            ));
 | 
			
		||||
 | 
			
		||||
        let telemetryDataCache = {};
 | 
			
		||||
        return Promise.all(telemetryRequests)
 | 
			
		||||
            .then(telemetryRequestsResults => {
 | 
			
		||||
                let latestDatum;
 | 
			
		||||
                let latestTimestamp;
 | 
			
		||||
                const timeSystems = this.openmct.time.getAllTimeSystems();
 | 
			
		||||
                const timeSystem = this.openmct.time.timeSystem();
 | 
			
		||||
 | 
			
		||||
                telemetryRequestsResults.forEach((results, index) => {
 | 
			
		||||
                    latestDatum = results.length ? results[results.length - 1] : {};
 | 
			
		||||
                    if (index < telemetryRequestsResults.length-1) {
 | 
			
		||||
                        if (latestDatum) {
 | 
			
		||||
                            this.telemetryDataCache[latestDatum.id] = this.computeResult(latestDatum);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    const latestDatum = results.length ? results[results.length - 1] : {};
 | 
			
		||||
                    const datumId = keys[index];
 | 
			
		||||
                    const normalizedDatum = this.createNormalizedDatum(latestDatum, telemetryObjects[datumId]);
 | 
			
		||||
 | 
			
		||||
                    telemetryDataCache[datumId] = this.computeResult(normalizedDatum);
 | 
			
		||||
 | 
			
		||||
                    latestTimestamp = getLatestTimestamp(
 | 
			
		||||
                        latestTimestamp,
 | 
			
		||||
                        normalizedDatum,
 | 
			
		||||
                        timeSystems,
 | 
			
		||||
                        timeSystem
 | 
			
		||||
                    );
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                const datum = {
 | 
			
		||||
                    result: evaluateResults(Object.values(telemetryDataCache), this.telemetry),
 | 
			
		||||
                    ...latestTimestamp
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return {
 | 
			
		||||
                    id: this.id,
 | 
			
		||||
                    data: this.formatData(latestDatum, options.telemetryObjects)
 | 
			
		||||
                    data: datum
 | 
			
		||||
                };
 | 
			
		||||
            });
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,21 @@ export default class TelemetryCriterion extends EventEmitter {
 | 
			
		||||
        this.telemetryObject = telemetryObjects[this.telemetryObjectIdAsString];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    createNormalizedDatum(telemetryDatum, endpoint) {
 | 
			
		||||
        const id = this.openmct.objects.makeKeyString(endpoint.identifier);
 | 
			
		||||
        const metadata = this.openmct.telemetry.getMetadata(endpoint).valueMetadatas;
 | 
			
		||||
 | 
			
		||||
        const normalizedDatum = Object.values(metadata).reduce((datum, metadatum) => {
 | 
			
		||||
            const formatter = this.openmct.telemetry.getValueFormatter(metadatum);
 | 
			
		||||
            datum[metadatum.key] = formatter.parse(telemetryDatum[metadatum.source]);
 | 
			
		||||
            return datum;
 | 
			
		||||
        }, {});
 | 
			
		||||
 | 
			
		||||
        normalizedDatum.id = id;
 | 
			
		||||
 | 
			
		||||
        return normalizedDatum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    formatData(data) {
 | 
			
		||||
        const datum = {
 | 
			
		||||
            result: this.computeResult(data)
 | 
			
		||||
@@ -79,14 +94,11 @@ export default class TelemetryCriterion extends EventEmitter {
 | 
			
		||||
        this.result = this.computeResult(validatedData);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    requestLAD(options) {
 | 
			
		||||
        options = Object.assign({},
 | 
			
		||||
            options,
 | 
			
		||||
            {
 | 
			
		||||
                strategy: 'latest',
 | 
			
		||||
                size: 1
 | 
			
		||||
            }
 | 
			
		||||
        );
 | 
			
		||||
    requestLAD() {
 | 
			
		||||
        const options = {
 | 
			
		||||
            strategy: 'latest',
 | 
			
		||||
            size: 1
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        if (!this.isValid()) {
 | 
			
		||||
            return {
 | 
			
		||||
@@ -100,9 +112,11 @@ export default class TelemetryCriterion extends EventEmitter {
 | 
			
		||||
            options
 | 
			
		||||
        ).then(results => {
 | 
			
		||||
            const latestDatum = results.length ? results[results.length - 1] : {};
 | 
			
		||||
            const normalizedDatum = this.createNormalizedDatum(latestDatum, this.telemetryObject);
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                id: this.id,
 | 
			
		||||
                data: this.formatData(latestDatum)
 | 
			
		||||
                data: this.formatData(normalizedDatum)
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -108,7 +108,7 @@ export default {
 | 
			
		||||
                let object = selection[0][0].context.item;
 | 
			
		||||
                if (object) {
 | 
			
		||||
                    let type = this.openmct.types.get(object.type);
 | 
			
		||||
                    this.showStyles = (this.excludeObjectTypes.indexOf(object.type) < 0) && type.definition.creatable;
 | 
			
		||||
                    this.showStyles = this.isLayoutObject(selection[0], object.type) || this.isCreatableObject(object, type);
 | 
			
		||||
                }
 | 
			
		||||
                if (!this.currentTabbedView.key || (!this.showStyles && this.currentTabbedView.key === this.tabbedViews[1].key))
 | 
			
		||||
                {
 | 
			
		||||
@@ -116,6 +116,14 @@ export default {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        isLayoutObject(selection, objectType) {
 | 
			
		||||
            //we allow conditionSets to be styled if they're part of a layout
 | 
			
		||||
            return selection.length > 1 &&
 | 
			
		||||
                ((objectType === 'conditionSet') || (this.excludeObjectTypes.indexOf(objectType) < 0));
 | 
			
		||||
        },
 | 
			
		||||
        isCreatableObject(object, type) {
 | 
			
		||||
            return (this.excludeObjectTypes.indexOf(object.type) < 0) && type.definition.creatable;
 | 
			
		||||
        },
 | 
			
		||||
        updateCurrentTab(view) {
 | 
			
		||||
            this.currentTabbedView = view;
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user