Compare commits
3 Commits
docs-relea
...
lad-conduc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f62010fb99 | ||
|
|
9026099fd2 | ||
|
|
295ccea195 |
@@ -1,6 +1,6 @@
|
||||
|
||||
/*****************************************************************************
|
||||
* Open MCT, Copyright (c) 2014-2018, United States Government
|
||||
* Open MCT, Copyright (c) 2014-2020, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
@@ -62,6 +62,7 @@ export default {
|
||||
this.metadata = this.openmct.telemetry.getMetadata(this.domainObject);
|
||||
this.formats = this.openmct.telemetry.getFormatMap(this.metadata);
|
||||
this.keyString = this.openmct.objects.makeKeyString(this.domainObject.identifier);
|
||||
this.bounds = this.openmct.time.bounds();
|
||||
|
||||
this.limitEvaluator = this.openmct
|
||||
.telemetry
|
||||
@@ -76,6 +77,7 @@ export default {
|
||||
);
|
||||
|
||||
this.openmct.time.on('timeSystem', this.updateTimeSystem);
|
||||
this.openmct.time.on('bounds', this.updateBounds);
|
||||
|
||||
this.timestampKey = this.openmct.time.timeSystem().key;
|
||||
|
||||
@@ -89,43 +91,80 @@ export default {
|
||||
.telemetry
|
||||
.subscribe(this.domainObject, this.updateValues);
|
||||
|
||||
this.openmct
|
||||
.telemetry
|
||||
.request(this.domainObject, {strategy: 'latest'})
|
||||
.then((array) => this.updateValues(array[array.length - 1]));
|
||||
this.requestHistory();
|
||||
},
|
||||
destroyed() {
|
||||
this.stopWatchingMutation();
|
||||
this.unsubscribe();
|
||||
this.openmct.off('timeSystem', this.updateTimeSystem);
|
||||
this.openmct.time.off('timeSystem', this.updateTimeSystem);
|
||||
this.openmct.time.off('bounds', this.updateBounds);
|
||||
},
|
||||
methods: {
|
||||
updateValues(datum) {
|
||||
this.timestamp = this.formats[this.timestampKey].format(datum);
|
||||
this.value = this.formats[this.valueKey].format(datum);
|
||||
let newTimestamp = this.formats[this.timestampKey].parse(datum),
|
||||
update = false, limit;
|
||||
|
||||
var limit = this.limitEvaluator.evaluate(datum, this.valueMetadata);
|
||||
if(this.inBounds(newTimestamp)) {
|
||||
|
||||
// if timestamp is set, need tocheck, else update
|
||||
if(this.timestamp !== '---') {
|
||||
let existingTimestamp = this.formats[this.timestampKey].parse(this.timestamp);
|
||||
|
||||
// if existing is in bounds, need to check, if not update
|
||||
if(this.inBounds(existingTimestamp)) {
|
||||
|
||||
// race condition check
|
||||
if(newTimestamp >= existingTimestamp) {
|
||||
update = true;
|
||||
}
|
||||
} else {
|
||||
update = true;
|
||||
}
|
||||
} else {
|
||||
update = true;
|
||||
}
|
||||
|
||||
if(update) {
|
||||
this.timestamp = this.formats[this.timestampKey].format(datum);
|
||||
this.value = this.formats[this.valueKey].format(datum);
|
||||
limit = this.limitEvaluator.evaluate(datum, this.valueMetadata);
|
||||
|
||||
if (limit) {
|
||||
this.valueClass = limit.cssClass;
|
||||
} else {
|
||||
this.valueClass = '';
|
||||
}
|
||||
}
|
||||
|
||||
if (limit) {
|
||||
this.valueClass = limit.cssClass;
|
||||
} else {
|
||||
this.valueClass = '';
|
||||
}
|
||||
},
|
||||
requestHistory() {
|
||||
this.openmct
|
||||
.telemetry
|
||||
.request(this.domainObject, {
|
||||
start: this.bounds.start,
|
||||
end: this.bounds.end,
|
||||
strategy: 'latest'
|
||||
})
|
||||
.then((array) => this.updateValues(array[array.length - 1]));
|
||||
},
|
||||
updateName(name) {
|
||||
this.name = name;
|
||||
},
|
||||
updateBounds(bounds, isTick) {
|
||||
this.bounds = bounds;
|
||||
if(!isTick) {
|
||||
this.requestHistory();
|
||||
}
|
||||
},
|
||||
inBounds(timestamp) {
|
||||
return timestamp >= this.bounds.start && timestamp <= this.bounds.end;
|
||||
},
|
||||
updateTimeSystem(timeSystem) {
|
||||
this.value = '---';
|
||||
this.timestamp = '---';
|
||||
this.valueClass = '';
|
||||
this.timestampKey = timeSystem.key;
|
||||
|
||||
this.openmct
|
||||
.telemetry
|
||||
.request(this.domainObject, {strategy: 'latest'})
|
||||
.then((array) => this.updateValues(array[array.length - 1]));
|
||||
|
||||
},
|
||||
showContextMenu(event) {
|
||||
this.openmct.contextMenu._showContextMenuForObjectPath(this.currentObjectPath, event.x, event.y, CONTEXT_MENU_ACTIONS);
|
||||
|
||||
@@ -66,7 +66,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
autoScroll: true,
|
||||
date: '',
|
||||
bounds: {},
|
||||
filters : {
|
||||
brightness: 100,
|
||||
contrast: 100
|
||||
@@ -78,19 +78,37 @@ export default {
|
||||
imageHistory: [],
|
||||
imageUrl: '',
|
||||
isPaused: false,
|
||||
metadata: {},
|
||||
requestCount: 0,
|
||||
timeFormat: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// set
|
||||
this.keystring = this.openmct.objects.makeKeyString(this.domainObject.identifier);
|
||||
this.subscribe(this.domainObject);
|
||||
this.metadata = this.openmct.telemetry.getMetadata(this.domainObject);
|
||||
this.imageFormat = this.openmct.telemetry.getValueFormatter(this.metadata.valuesForHints(['image'])[0]);
|
||||
// initialize
|
||||
this.bounds = this.openmct.time.bounds();
|
||||
this.timeKey = this.openmct.time.timeSystem().key;
|
||||
this.timeFormat = this.getTimeFormat();
|
||||
// listen
|
||||
this.openmct.time.on('bounds', this.boundsChange);
|
||||
this.openmct.time.on('timeSystem', this.timeSystemChange);
|
||||
// kickoff
|
||||
this.subscribe();
|
||||
this.requestHistory(false);
|
||||
},
|
||||
updated() {
|
||||
this.scrollToRight();
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.stopListening();
|
||||
if (this.unsubscribe) {
|
||||
this.unsubscribe();
|
||||
delete this.unsubscribe;
|
||||
}
|
||||
this.openmct.time.off('bounds', this.boundsChange);
|
||||
this.openmct.time.off('timeSystem', this.timeSystemChange);
|
||||
},
|
||||
methods: {
|
||||
datumMatchesMostRecent(datum) {
|
||||
@@ -115,6 +133,15 @@ export default {
|
||||
this.timeFormat.format(datum) :
|
||||
this.time;
|
||||
},
|
||||
getTimeFormat() {
|
||||
let tf = false;
|
||||
try {
|
||||
tf = this.openmct.telemetry.getValueFormatter(this.metadata.value(this.timeKey));
|
||||
} catch(e) {
|
||||
alert('Issue receiving time format.');
|
||||
}
|
||||
return tf;
|
||||
},
|
||||
handleScroll() {
|
||||
const thumbsWrapper = this.$refs.thumbsWrapper
|
||||
if (!thumbsWrapper) {
|
||||
@@ -147,21 +174,6 @@ export default {
|
||||
|
||||
return this.isPaused;
|
||||
},
|
||||
requestHistory(bounds) {
|
||||
this.requestCount++;
|
||||
this.imageHistory = [];
|
||||
const requestId = this.requestCount;
|
||||
this.openmct.telemetry
|
||||
.request(this.domainObject, bounds)
|
||||
.then((values = []) => {
|
||||
if (this.requestCount > requestId) {
|
||||
return Promise.resolve('Stale request');
|
||||
}
|
||||
|
||||
values.forEach(this.updateHistory);
|
||||
this.updateValues(values[values.length - 1]);
|
||||
});
|
||||
},
|
||||
scrollToRight() {
|
||||
if (this.isPaused || !this.$refs.thumbsWrapper || !this.autoScroll) {
|
||||
return;
|
||||
@@ -188,28 +200,44 @@ export default {
|
||||
image.selected = true;
|
||||
}
|
||||
},
|
||||
stopListening() {
|
||||
if (this.unsubscribe) {
|
||||
this.unsubscribe();
|
||||
delete this.unsubscribe;
|
||||
boundsChange(bounds, isTick) {
|
||||
this.bounds = bounds;
|
||||
this.requestHistory(isTick);
|
||||
},
|
||||
requestHistory(isTick) {
|
||||
if(!isTick) {
|
||||
this.requestCount++;
|
||||
const requestId = this.requestCount;
|
||||
this.imageHistory = [];
|
||||
this.openmct.telemetry
|
||||
.request(this.domainObject, this.bounds)
|
||||
.then((values = []) => {
|
||||
if (this.requestCount > requestId) {
|
||||
return Promise.resolve('Stale request');
|
||||
}
|
||||
|
||||
if(this.timeFormat) {
|
||||
values.forEach(this.updateHistory);
|
||||
this.updateValues(values[values.length - 1]);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
subscribe(domainObject) {
|
||||
this.date = ''
|
||||
this.imageUrl = '';
|
||||
this.openmct.objects.get(this.keystring)
|
||||
.then((object) => {
|
||||
const metadata = this.openmct.telemetry.getMetadata(this.domainObject);
|
||||
this.timeKey = this.openmct.time.timeSystem().key;
|
||||
this.timeFormat = this.openmct.telemetry.getValueFormatter(metadata.value(this.timeKey));
|
||||
this.imageFormat = this.openmct.telemetry.getValueFormatter(metadata.valuesForHints(['image'])[0]);
|
||||
this.unsubscribe = this.openmct.telemetry
|
||||
.subscribe(this.domainObject, (datum) => {
|
||||
timeSystemChange(system) {
|
||||
// reset timesystem dependent variables
|
||||
this.timeKey = system.key;
|
||||
this.timeFormat = this.getTimeFormat();
|
||||
},
|
||||
subscribe() {
|
||||
this.unsubscribe = this.openmct.telemetry
|
||||
.subscribe(this.domainObject, (datum) => {
|
||||
if(this.timeFormat) {
|
||||
let parsedTimestamp = this.timeFormat.parse(datum[this.timeKey]);
|
||||
if(parsedTimestamp >= this.bounds.start && parsedTimestamp <= this.bounds.end) {
|
||||
this.updateHistory(datum);
|
||||
this.updateValues(datum);
|
||||
});
|
||||
|
||||
this.requestHistory(this.openmct.time.bounds());
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
unselectAllImages() {
|
||||
|
||||
Reference in New Issue
Block a user