From e6a52f971bd44c76b050e4e4905dbe44df930668 Mon Sep 17 00:00:00 2001 From: Sergey Savelyev Date: Wed, 4 Dec 2024 23:58:29 -0800 Subject: [PATCH] improved css --- frontend/bun.lockb | Bin 123456 -> 0 bytes frontend/src/assets/main.scss | 18 ++++--- frontend/src/assets/variables.scss | 19 +++++++ frontend/src/components/GraphAxis.vue | 36 ++++--------- frontend/src/components/SvgGraph.vue | 45 +++++++++++----- frontend/src/components/TelemetryLine.vue | 63 +++++++++++++++++++++- frontend/src/views/HomeView.vue | 2 +- 7 files changed, 134 insertions(+), 49 deletions(-) delete mode 100755 frontend/bun.lockb create mode 100644 frontend/src/assets/variables.scss diff --git a/frontend/bun.lockb b/frontend/bun.lockb deleted file mode 100755 index c2e3a1fe521bdccacb5abda111024f7e9d5631d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123456 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 diff --git a/frontend/src/assets/main.scss b/frontend/src/assets/main.scss index a697381..e349e28 100644 --- a/frontend/src/assets/main.scss +++ b/frontend/src/assets/main.scss @@ -1,12 +1,8 @@ -$light-gray: #d0d1d0; -$dark-gray: #303031; - -$text-color: $light-gray; -$background-color: $dark-gray; +@use '@/assets/variables'; body { - color: $text-color; - background-color: $background-color; + color: variables.$text-color; + background-color: variables.$background-color; display: flex; flex-direction: column; justify-content: center; @@ -14,3 +10,11 @@ body { align-content: center; min-height: 100vh; } + +* { + stroke-width: 0; +} + +polyline { + stroke-width: 1px; +} diff --git a/frontend/src/assets/variables.scss b/frontend/src/assets/variables.scss new file mode 100644 index 0000000..d3af187 --- /dev/null +++ b/frontend/src/assets/variables.scss @@ -0,0 +1,19 @@ +$white-1: oklch(90% 0 0); +$white-2: oklch(80% 0 0); +$gray-1: oklch(70% 0 0); +$gray-2: oklch(60% 0 0); +$gray-3: oklch(50% 0 0); +$gray-4: oklch(40% 0 0); +$gray-5: oklch(30% 0 0); +$black-1: oklch(20% 0 0); +$black-2: oklch(10% 0 0); + +$text-color: $white-1; +$background-color: $gray-5; + +$time-tick: $white-1; +$grid-line: $white-1; +$major-tick: $gray-2; +$minor-tick: $gray-3; + +$text-font: Helvetica, sans-serif; diff --git a/frontend/src/components/GraphAxis.vue b/frontend/src/components/GraphAxis.vue index d0f8f65..6d0ef8e 100644 --- a/frontend/src/components/GraphAxis.vue +++ b/frontend/src/components/GraphAxis.vue @@ -1,7 +1,6 @@ diff --git a/frontend/src/components/TelemetryLine.vue b/frontend/src/components/TelemetryLine.vue index adb1f4d..9dfbea9 100644 --- a/frontend/src/components/TelemetryLine.vue +++ b/frontend/src/components/TelemetryLine.vue @@ -7,6 +7,7 @@ import { shallowRef, type ShallowRef, toValue, + useTemplateRef, watch, } from 'vue'; import { @@ -24,6 +25,9 @@ const props = defineProps<{ const smoothing_distance = 0.15 * 1000; +const text_offset = computed(() => 10); +const background_offset = computed(() => 5); + const { data } = useTelemetry(() => props.data); const websocket = inject>(WEBSOCKET_SYMBOL)!; const value = websocket.value.listen_to_telemetry(data); @@ -106,6 +110,27 @@ const points = computed(() => { } return points; }); + +const labelRef = useTemplateRef('label-ref'); +const current_value = computed(() => { + const val = value.value; + if (val) { + return val.value[data.value!.data_type] as number; + } + return undefined; +}); + +const test = computed(() => { + if (labelRef.value) { + const boundingBox = labelRef.value.getBBox(); + return boundingBox.top; + } + return undefined; +}); + +watch([test], (x) => { + console.log(x); +}); - + diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue index 813bded..e231b91 100644 --- a/frontend/src/views/HomeView.vue +++ b/frontend/src/views/HomeView.vue @@ -15,7 +15,7 @@ provide(WEBSOCKET_SYMBOL, websocket); :width="1500" :height="800" :border_top_bottom="24" - :border_left_right="64" + :border_left_right="128" >