Only load annotations in fixed time mode or frozen (#6866)
* fix annotations load to not happen on start * remove range checking per annotated point * back to local variable * reduce tagging size to improve reliability of test * remove .only * remove .only * reduce hz rate for functional test and keep high frequency test in performance * remove console.debugs * this test runs pretty fast now * fix network request tests to match new behavior
This commit is contained in:
@@ -248,6 +248,7 @@ export default {
|
||||
highlights: [],
|
||||
annotatedPoints: [],
|
||||
annotationSelections: [],
|
||||
annotationsEverLoaded: false,
|
||||
lockHighlightPoint: false,
|
||||
yKeyOptions: [],
|
||||
yAxisLabel: '',
|
||||
@@ -394,7 +395,11 @@ export default {
|
||||
);
|
||||
|
||||
this.openmct.objectViews.on('clearData', this.clearData);
|
||||
this.$on('loadingComplete', this.loadAnnotations);
|
||||
this.$on('loadingComplete', () => {
|
||||
if (this.annotationViewingAndEditingAllowed) {
|
||||
this.loadAnnotations();
|
||||
}
|
||||
});
|
||||
this.openmct.selection.on('change', this.updateSelection);
|
||||
this.yAxisListWithRange = [this.config.yAxis, ...this.config.additionalYAxes];
|
||||
|
||||
@@ -636,6 +641,7 @@ export default {
|
||||
if (rawAnnotationsForPlot) {
|
||||
this.annotatedPoints = this.findAnnotationPoints(rawAnnotationsForPlot);
|
||||
}
|
||||
this.annotationsEverLoaded = true;
|
||||
},
|
||||
loadSeriesData(series) {
|
||||
//this check ensures that duplicate requests don't happen on load
|
||||
@@ -789,6 +795,7 @@ export default {
|
||||
};
|
||||
this.config.xAxis.set('range', newRange);
|
||||
if (!isTick) {
|
||||
this.annotatedPoints = [];
|
||||
this.clearPanZoomHistory();
|
||||
this.synchronizeIfBoundsMatch();
|
||||
this.loadMoreData(newRange, true);
|
||||
@@ -1785,6 +1792,9 @@ export default {
|
||||
});
|
||||
this.config.xAxis.set('frozen', true);
|
||||
this.setStatus();
|
||||
if (!this.annotationsEverLoaded) {
|
||||
this.loadAnnotations();
|
||||
}
|
||||
},
|
||||
|
||||
resumeRealtimeData() {
|
||||
|
||||
@@ -826,56 +826,32 @@ export default {
|
||||
);
|
||||
}
|
||||
},
|
||||
annotatedPointWithinRange(annotatedPoint, xRange, yRange) {
|
||||
if (!yRange) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const xValue = annotatedPoint.series.getXVal(annotatedPoint.point);
|
||||
const yValue = annotatedPoint.series.getYVal(annotatedPoint.point);
|
||||
|
||||
return (
|
||||
xValue > xRange.min && xValue < xRange.max && yValue > yRange.min && yValue < yRange.max
|
||||
);
|
||||
},
|
||||
drawAnnotatedPoints(yAxisId) {
|
||||
// we should do this by series, and then plot all the points at once instead
|
||||
// of doing it one by one
|
||||
if (this.annotatedPoints && this.annotatedPoints.length) {
|
||||
const uniquePointsToDraw = [];
|
||||
const xRange = this.config.xAxis.get('displayRange');
|
||||
let yRange;
|
||||
if (yAxisId === this.config.yAxis.get('id')) {
|
||||
yRange = this.config.yAxis.get('displayRange');
|
||||
} else if (this.config.additionalYAxes.length) {
|
||||
const yAxisForId = this.config.additionalYAxes.find(
|
||||
(yAxis) => yAxis.get('id') === yAxisId
|
||||
);
|
||||
yRange = yAxisForId.get('displayRange');
|
||||
}
|
||||
|
||||
const annotatedPoints = this.annotatedPoints.filter(
|
||||
this.matchByYAxisId.bind(this, yAxisId)
|
||||
);
|
||||
annotatedPoints.forEach((annotatedPoint) => {
|
||||
// if the annotation is outside the range, don't draw it
|
||||
if (this.annotatedPointWithinRange(annotatedPoint, xRange, yRange)) {
|
||||
const canvasXValue = this.offset[yAxisId].xVal(
|
||||
annotatedPoint.point,
|
||||
annotatedPoint.series
|
||||
);
|
||||
const canvasYValue = this.offset[yAxisId].yVal(
|
||||
annotatedPoint.point,
|
||||
annotatedPoint.series
|
||||
);
|
||||
const pointToDraw = new Float32Array([canvasXValue, canvasYValue]);
|
||||
const drawnPoint = uniquePointsToDraw.some((rawPoint) => {
|
||||
return rawPoint[0] === pointToDraw[0] && rawPoint[1] === pointToDraw[1];
|
||||
});
|
||||
if (!drawnPoint) {
|
||||
uniquePointsToDraw.push(pointToDraw);
|
||||
this.drawAnnotatedPoint(annotatedPoint, pointToDraw);
|
||||
}
|
||||
// annotation points are all within range (checked in MctPlot with FlatBush), so we don't need to check
|
||||
const canvasXValue = this.offset[yAxisId].xVal(
|
||||
annotatedPoint.point,
|
||||
annotatedPoint.series
|
||||
);
|
||||
const canvasYValue = this.offset[yAxisId].yVal(
|
||||
annotatedPoint.point,
|
||||
annotatedPoint.series
|
||||
);
|
||||
const pointToDraw = new Float32Array([canvasXValue, canvasYValue]);
|
||||
const drawnPoint = uniquePointsToDraw.some((rawPoint) => {
|
||||
return rawPoint[0] === pointToDraw[0] && rawPoint[1] === pointToDraw[1];
|
||||
});
|
||||
if (!drawnPoint) {
|
||||
uniquePointsToDraw.push(pointToDraw);
|
||||
this.drawAnnotatedPoint(annotatedPoint, pointToDraw);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user