@@ -19,6 +19,7 @@ import SpeciesLayer from "./layers/speciesLayer";
1919import SpeciesSequenceLayer from " ./layers/speciesSequenceLayer" ;
2020import MeasureToolLayer from " ./layers/measureToolLayer" ;
2121import BoundingBoxLayer from " ./layers/boundingBoxLayer" ;
22+ import AxesLayer from " ./layers/axesLayer" ;
2223import { cloneDeep } from " lodash" ;
2324import useState from " @use/useState" ;
2425export default defineComponent ({
@@ -74,6 +75,7 @@ export default defineComponent({
7475 frequencyRulerY,
7576 drawingBoundingBox,
7677 boundingBoxError,
78+ fixedAxes,
7779 } = useState ();
7880 const selectedAnnotationId: Ref <null | number > = ref (null );
7981 const hoveredAnnotationId: Ref <null | number > = ref (null );
@@ -86,6 +88,7 @@ export default defineComponent({
8688 let sequenceAnnotationLayer: SequenceLayer ;
8789 let editAnnotationLayer: EditAnnotationLayer ;
8890 let legendLayer: LegendLayer ;
91+ let axesLayer: AxesLayer ;
8992 let timeLayer: TimeLayer ;
9093 let freqLayer: FreqLayer ;
9194 let speciesLayer: SpeciesLayer ;
@@ -358,12 +361,16 @@ export default defineComponent({
358361 sequenceAnnotationLayer .redraw ();
359362 }
360363 if (! props .thumbnail ) {
361- if (layerVisibility .value .includes (" grid" )) {
362- legendLayer .setGridEnabled (true );
363- } else {
364- legendLayer .setGridEnabled (false );
364+ if (legendLayer ) {
365+ if (layerVisibility .value .includes (" grid" )) {
366+ legendLayer .setGridEnabled (true );
367+ axesLayer .setGridEnabled (true );
368+ } else {
369+ legendLayer .setGridEnabled (false );
370+ axesLayer .setGridEnabled (false );
371+ }
372+ legendLayer .redraw ();
365373 }
366- legendLayer .redraw ();
367374 if (layerVisibility .value .includes (" time" ) || layerVisibility .value .includes (' duration' )) {
368375 if (layerVisibility .value .includes (" time" )) {
369376 timeLayer .displayDuration = false ;
@@ -470,6 +477,20 @@ export default defineComponent({
470477 speciesSequenceLayer .destroy ();
471478 }
472479 });
480+
481+ function setAxes() {
482+ if (! legendLayer || ! axesLayer ) {
483+ return ;
484+ }
485+ if (fixedAxes .value ) {
486+ legendLayer .disable ();
487+ axesLayer .enable ();
488+ } else {
489+ axesLayer .disable ();
490+ legendLayer .enable ();
491+ }
492+ }
493+
473494 const initLayers = () => {
474495 if (props .spectroInfo ) {
475496 if (! compressedOverlayLayer ) {
@@ -511,6 +532,14 @@ export default defineComponent({
511532 legendLayer .calcGridLines ();
512533 legendLayer .setScaledDimensions (props .scaledWidth , props .scaledHeight );
513534 legendLayer .onPan ();
535+ if (! axesLayer ) {
536+ axesLayer = new AxesLayer (props .geoViewerRef , event , props .spectroInfo );
537+ }
538+ axesLayer .setScaledDimensions (props .scaledWidth , props .scaledHeight );
539+ if (layerVisibility .value .includes (' grid' )) {
540+ legendLayer .setGridEnabled (true );
541+ axesLayer .setGridEnabled (true );
542+ }
514543 if (! timeLayer ) {
515544 timeLayer = new TimeLayer (props .geoViewerRef , event , props .spectroInfo );
516545 }
@@ -570,7 +599,9 @@ export default defineComponent({
570599 speciesLayer .formatData (localAnnotations .value );
571600 speciesSequenceLayer .formatData (localSequenceAnnotations .value );
572601
573- legendLayer .redraw ();
602+ if (legendLayer ) {
603+ legendLayer .redraw ();
604+ }
574605 if (layerVisibility .value .includes (' species' )) {
575606 speciesLayer .redraw ();
576607 speciesSequenceLayer .redraw ();
@@ -585,7 +616,7 @@ export default defineComponent({
585616 viewCompressedOverlay .value = false ;
586617 }
587618 }
588- triggerUpdate ();
619+ setAxes ();
589620 };
590621 onMounted (() => {
591622 initLayers ();
@@ -675,6 +706,7 @@ export default defineComponent({
675706 }
676707 // Triggers the Axis redraw when zoomed in and the axis is at the bottom/top
677708 legendLayer ?.onPan ();
709+ axesLayer ?.setScaledDimensions (props .scaledWidth , props .scaledHeight );
678710 });
679711 watch (viewCompressedOverlay , () => {
680712 if (viewCompressedOverlay .value && compressedOverlayLayer && props .spectroInfo ?.start_times && props .spectroInfo .end_times ) {
@@ -748,6 +780,9 @@ export default defineComponent({
748780
749781 watch ([backgroundColor , colorScheme ], updateColorFilter );
750782
783+
784+ watch (fixedAxes , setAxes );
785+
751786 return {
752787 annotationState ,
753788 localAnnotations ,
0 commit comments