Skip to content

Commit 3172d43

Browse files
committed
Preserve measure tool between un/compressed views
1 parent f341c42 commit 3172d43

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

client/src/components/geoJS/LayerManager.vue

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export default defineComponent({
6565
colorScheme,
6666
backgroundColor,
6767
measuring,
68+
frequencyRulerY,
6869
} = useState();
6970
const selectedAnnotationId: Ref<null | number> = ref(null);
7071
const hoveredAnnotationId: Ref<null | number> = ref(null);
@@ -287,6 +288,10 @@ export default defineComponent({
287288
}
288289
}
289290
}
291+
if (type === "measure:dragged") {
292+
const { yValue } = data;
293+
frequencyRulerY.value = yValue || 0;
294+
}
290295
};
291296
292297
const getDataForLayers = () => {
@@ -514,7 +519,13 @@ export default defineComponent({
514519
speciesLayer.setScaledDimensions(props.scaledWidth, props.scaledHeight);
515520
516521
if (!measureToolLayer) {
517-
measureToolLayer = new MeasureToolLayer(props.geoViewerRef, event, props.spectroInfo, measuring.value);
522+
measureToolLayer = new MeasureToolLayer(
523+
props.geoViewerRef,
524+
event,
525+
props.spectroInfo,
526+
measuring.value,
527+
frequencyRulerY.value
528+
);
518529
measureToolLayer.setScaledDimensions(props.scaledWidth, props.scaledHeight);
519530
}
520531
measureToolLayer.redraw();

client/src/components/geoJS/layers/measureToolLayer.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ export default class MeasureToolLayer extends BaseTextLayer<TextData> {
3434
// eslint-disable-next-line @typescript-eslint/no-explicit-any
3535
event: (name: string, data: any) => void,
3636
spectroInfo: SpectroInfo,
37-
measuring?: boolean
37+
measuring?: boolean,
38+
yValue?: number
3839
) {
3940
super(geoViewerRef, event, spectroInfo);
4041

@@ -58,7 +59,7 @@ export default class MeasureToolLayer extends BaseTextLayer<TextData> {
5859
this.pointAnnotation= null;
5960
this.lineAnnotation = null;
6061
this.dragging = false;
61-
this.yValue = 0;
62+
this.yValue = yValue || 0;
6263
this.color = 'white';
6364
this.hovering = false;
6465

@@ -71,7 +72,7 @@ export default class MeasureToolLayer extends BaseTextLayer<TextData> {
7172
this.moveHandler = (e: GeoEvent) => {
7273
if (e && this.dragging) {
7374
this.updateRuler(e.mouse.geo.y);
74-
}
75+
}
7576
};
7677
this.hoverHandler = (e: GeoEvent) => {
7778
if (e) {
@@ -145,6 +146,7 @@ export default class MeasureToolLayer extends BaseTextLayer<TextData> {
145146
if (newY < 0) {
146147
return;
147148
}
149+
this.event("measure:dragged", { yValue: newY });
148150
this.yValue = newY;
149151
const spectroWidth = this.compressedView ? this.scaledWidth : this.spectroInfo.width;
150152
this.lineAnnotation
@@ -186,10 +188,10 @@ export default class MeasureToolLayer extends BaseTextLayer<TextData> {
186188
}
187189

188190
clearRulerLayer() {
189-
this.pointAnnotation.data([]);
190-
this.lineAnnotation.data([]);
191-
this.textLayer.data([]).draw();
192-
this.frequencyRulerLayer.draw();
191+
this.pointAnnotation?.data([]);
192+
this.lineAnnotation?.data([]);
193+
this.textLayer?.data([]).draw();
194+
this.frequencyRulerLayer?.draw();
193195
}
194196

195197
destroy() {
@@ -200,6 +202,15 @@ export default class MeasureToolLayer extends BaseTextLayer<TextData> {
200202
}
201203
}
202204

205+
setScaledDimensions(width: number, height: number) {
206+
super.setScaledDimensions(width, height);
207+
this.clearRulerLayer();
208+
if (this.rulerOn) {
209+
this.enableDrawing();
210+
this.updateRuler(this.yValue);
211+
}
212+
}
213+
203214
redraw() {
204215
if (this.rulerOn) {
205216
this.updateRuler(this.yValue);

client/src/use/useState.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const configuration: Ref<Configuration> = ref({
6262
const scaledWidth = ref(0);
6363
const scaledHeight = ref(0);
6464
const measuring: Ref<boolean> = ref(false);
65+
const frequencyRulerY: Ref<number> = ref(0);
6566
const toggleMeasureMode = () => {
6667
measuring.value = !measuring.value;
6768
};
@@ -146,6 +147,7 @@ export default function useState() {
146147
colorScale,
147148
measuring,
148149
toggleMeasureMode,
150+
frequencyRulerY,
149151
colorSchemes,
150152
colorScheme,
151153
backgroundColor,

0 commit comments

Comments
 (0)