Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | 14x 1x 11x 9x 1x 2x 20x 25x 25x 25x 5x 1x 25x 28x 28x 25x 5x 1x 25x 22x 22x 2x 2x 2x 25x | import { defineStore } from 'pinia';
import { computed, ref } from 'vue';
import {
CurrentDataOverlayState,
DataOverlayType,
InitialDataOverlayState,
} from '@3cr/types-ts';
import { inflateInitialDataOverlayState } from '@/functions/modelHelper';
import { parseDataOverlayData } from '@/functions/parsers/parseDataOverlayData';
import { parseDataOverlayEvent } from '@/functions/parsers/parseDataOverlayEvent';
import {
DataOverlayAnnotation,
DataOverlayDataRaw,
DataOverlayEvent,
DataOverlayData,
DataOverlayMeasurement,
} from '@3cr/viewer-types-ts';
function isAnnotation(data: DataOverlayDataRaw): boolean {
return data.DataType === DataOverlayType.Annotation;
}
function toAnnotation(
data: DataOverlayDataRaw,
): DataOverlayData<DataOverlayAnnotation> {
return parseDataOverlayData<DataOverlayAnnotation>(data);
}
function toAnnotationEvent(
data: DataOverlayDataRaw,
): DataOverlayEvent<DataOverlayAnnotation> {
return parseDataOverlayEvent<DataOverlayAnnotation>(data);
}
function isMeasurement(data: DataOverlayDataRaw): boolean {
return (
data.DataType === DataOverlayType.Length ||
data.DataType === DataOverlayType.Polygon ||
data.DataType === DataOverlayType.Angle
);
}
function toMeasurement(
data: DataOverlayDataRaw,
): DataOverlayData<DataOverlayMeasurement> {
return parseDataOverlayData<DataOverlayMeasurement>(data);
}
function toMeasurementEvent(
data: DataOverlayDataRaw,
): DataOverlayEvent<DataOverlayMeasurement> {
return parseDataOverlayEvent<DataOverlayMeasurement>(data);
}
export const useDataOverlayStore = defineStore('data-overlay', () => {
const state = ref<InitialDataOverlayState>(inflateInitialDataOverlayState());
const event = ref<DataOverlayDataRaw | null>(null);
const annotations = computed(() => {
return state.value.DataOverlay.DataOverlay.filter(isAnnotation)
.map(toAnnotation)
.map((data) => data.Data);
});
const annotationEvent = computed(() => {
const value = event.value;
return value && isAnnotation(value) ? toAnnotationEvent(value) : null;
});
const measurements = computed(() => {
return state.value.DataOverlay.DataOverlay.filter(isMeasurement)
.map(toMeasurement)
.map((data) => data.Data);
});
const measurementEvent = computed(() => {
const value = event.value;
return value && isMeasurement(value) ? toMeasurementEvent(value) : null;
});
function setInitialDataOverlayState(message: string): void {
state.value = JSON.parse(message) as InitialDataOverlayState;
}
function setDataOverlayState(message: string): void {
state.value = {
Version: '1.1.0',
DataOverlay: JSON.parse(message) as CurrentDataOverlayState,
};
}
function setDataOverlayEvent(message: string): void {
event.value = JSON.parse(message) as DataOverlayDataRaw;
}
return {
state,
event,
annotations,
annotationEvent,
measurements,
measurementEvent,
setInitialDataOverlayState,
setDataOverlayState,
setDataOverlayEvent,
};
});
|