Enable independent time conductor for stacked plot and overlay plot and bar graphs (#4646)

* Enable independent time conductor for stacked plot and overlay plot.

* Lint fixes

* Fixes for #4503 and #4606
- Added `flex: 0 0 auto` to toggle switch when in ITC to prevent
element from being crunched when window or frame is very small;

* Add independent time conductor to bar graphs

* Add timeContext to bar graphs

Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
This commit is contained in:
Shefali Joshi 2022-01-07 10:17:20 -08:00 committed by GitHub
parent 22a7537974
commit f6934a43c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 6 deletions

View File

@ -62,12 +62,14 @@ export default {
} }
}, },
mounted() { mounted() {
this.refreshData = this.refreshData.bind(this);
this.setTimeContext();
this.loadComposition(); this.loadComposition();
this.openmct.time.on('bounds', this.refreshData);
}, },
beforeDestroy() { beforeDestroy() {
this.openmct.time.off('bounds', this.refreshData); this.stopFollowingTimeContext();
this.removeAllSubscriptions(); this.removeAllSubscriptions();
@ -79,6 +81,21 @@ export default {
this.composition.off('remove', this.removeTelemetryObject); this.composition.off('remove', this.removeTelemetryObject);
}, },
methods: { methods: {
setTimeContext() {
this.stopFollowingTimeContext();
this.timeContext = this.openmct.time.getContextForView(this.path);
this.followTimeContext();
},
followTimeContext() {
this.timeContext.on('bounds', this.refreshData);
},
stopFollowingTimeContext() {
if (this.timeContext) {
this.timeContext.off('bounds', this.refreshData);
}
},
addTelemetryObject(telemetryObject) { addTelemetryObject(telemetryObject) {
// grab information we need from the added telmetry object // grab information we need from the added telmetry object
const key = this.openmct.objects.makeKeyString(telemetryObject.identifier); const key = this.openmct.objects.makeKeyString(telemetryObject.identifier);
@ -147,7 +164,7 @@ export default {
}; };
}, },
getOptions() { getOptions() {
const { start, end } = this.openmct.time.bounds(); const { start, end } = this.timeContext.bounds();
return { return {
end, end,
@ -247,10 +264,10 @@ export default {
this.addTrace(trace, key); this.addTrace(trace, key);
}, },
isDataInTimeRange(datum, key) { isDataInTimeRange(datum, key) {
const timeSystemKey = this.openmct.time.timeSystem().key; const timeSystemKey = this.timeContext.timeSystem().key;
let currentTimestamp = this.parse(key, timeSystemKey, datum); let currentTimestamp = this.parse(key, timeSystemKey, datum);
return currentTimestamp && this.openmct.time.bounds().end >= currentTimestamp; return currentTimestamp && this.timeContext.bounds().end >= currentTimestamp;
}, },
format(telemetryObjectKey, metadataKey, data) { format(telemetryObjectKey, metadataKey, data) {
const formats = this.telemetryObjectFormats[telemetryObjectKey]; const formats = this.telemetryObjectFormats[telemetryObjectKey];

View File

@ -185,6 +185,11 @@
&__inputs, &__inputs,
&__time-bounds { &__time-bounds {
display: flex; display: flex;
.c-toggle-switch {
// Used in independent Time Conductor
flex: 0 0 auto;
}
} }
&__inputs { &__inputs {

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<div v-if="domainObject && domainObject.type === 'time-strip'" <div v-if="supportsIndependentTime"
class="c-conductor-holder--compact l-shell__main-independent-time-conductor" class="c-conductor-holder--compact l-shell__main-independent-time-conductor"
> >
<independent-time-conductor :domain-object="domainObject" <independent-time-conductor :domain-object="domainObject"
@ -20,6 +20,12 @@ import StyleRuleManager from "@/plugins/condition/StyleRuleManager";
import {STYLE_CONSTANTS} from "@/plugins/condition/utils/constants"; import {STYLE_CONSTANTS} from "@/plugins/condition/utils/constants";
import IndependentTimeConductor from '@/plugins/timeConductor/independent/IndependentTimeConductor.vue'; import IndependentTimeConductor from '@/plugins/timeConductor/independent/IndependentTimeConductor.vue';
const SupportedViewTypes = [
'plot-stacked',
'plot-overlay',
'bar-graph.view',
'time-strip.view'
];
export default { export default {
components: { components: {
IndependentTimeConductor IndependentTimeConductor
@ -64,6 +70,11 @@ export default {
}, },
font() { font() {
return this.objectFontStyle ? this.objectFontStyle.font : this.layoutFont; return this.objectFontStyle ? this.objectFontStyle.font : this.layoutFont;
},
supportsIndependentTime() {
const viewKey = this.getViewKey();
return this.domainObject && SupportedViewTypes.includes(viewKey);
} }
}, },
destroyed() { destroyed() {