Compare commits
	
		
			5 Commits
		
	
	
		
			stackplots
			...
			vista-r4.4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 166cb55945 | ||
|   | 83116257fc | ||
|   | 775f1048bc | ||
|   | 71a8b377bb | ||
|   | c43d3fcfc9 | 
| @@ -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