diff --git a/frontend/src/assets/layout.scss b/frontend/src/assets/layout.scss index 05e1945..308179c 100644 --- a/frontend/src/assets/layout.scss +++ b/frontend/src/assets/layout.scss @@ -2,23 +2,47 @@ display: flex; flex-direction: column; flex-wrap: nowrap; - justify-content: flex-start; - align-items: flex-start; align-content: flex-start; } -.gap_half { - gap: 0.5em; +.align-start { + align-items: flex-start; +} +.align-center { + align-items: center; +} +.align-end { + align-items: flex-end; +} + +.justify-start { + justify-content: flex-start; +} +.justify-center { + justify-content: center; +} +.justify-between { + justify-content: space-between; +} +.justify-end { + justify-content: flex-end; +} + +.gap-half { + gap: 0.0625em; +} +.gap-full { + gap: 0.125em; +} +.gap-wide { + gap: 0.25em; } .row { display: flex; flex-direction: row; flex-wrap: nowrap; - justify-content: flex-start; - align-items: flex-start; align-content: center; - gap: 1em; } .center { @@ -27,15 +51,6 @@ align-content: center; } -.screen { - min-height: 100vh; - flex-grow: 1; -} - -.screen.limited { - max-height: 100vh; -} - .content { padding: 20vh 10vw; } @@ -54,26 +69,6 @@ padding-bottom: 5vw; } -//.content { -// margin: 20vh 10vw; -// max-width: 1200px; -//} -// -//.content.full { -// margin: 5vh 5vw; -// max-width: none; -//} - -//.screen.content { -// width: calc(100% - 20vw); -// height: calc(100vh - 40vh); -//} - -//.screen.content.full { -// width: calc(100% - 10vw); -// height: calc(100vh - 10vh); -//} - .stretch { align-items: stretch; } @@ -105,3 +100,13 @@ .scroll { overflow: auto; } + +.grid { + display: grid; + grid-auto-flow: row; + grid-auto-rows: 1fr; + row-gap: 0.125em; + column-gap: 0.5em; + justify-items: stretch; + align-items: center; +} diff --git a/frontend/src/components/CopyableDynamicSpan.vue b/frontend/src/components/CopyableDynamicSpan.vue new file mode 100644 index 0000000..b27d287 --- /dev/null +++ b/frontend/src/components/CopyableDynamicSpan.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/frontend/src/components/NumericText.vue b/frontend/src/components/NumericText.vue index 30ec6d8..554b5f5 100644 --- a/frontend/src/components/NumericText.vue +++ b/frontend/src/components/NumericText.vue @@ -1,14 +1,20 @@ diff --git a/frontend/src/components/TelemetryValue.vue b/frontend/src/components/TelemetryValue.vue new file mode 100644 index 0000000..6164dfb --- /dev/null +++ b/frontend/src/components/TelemetryValue.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/frontend/src/components/layout/GridLayout.vue b/frontend/src/components/layout/GridLayout.vue new file mode 100644 index 0000000..f1605ab --- /dev/null +++ b/frontend/src/components/layout/GridLayout.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/frontend/src/components/layout/LinearLayout.vue b/frontend/src/components/layout/LinearLayout.vue new file mode 100644 index 0000000..f5eeaf9 --- /dev/null +++ b/frontend/src/components/layout/LinearLayout.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/frontend/src/components/layout/ScreenLayout.vue b/frontend/src/components/layout/ScreenLayout.vue new file mode 100644 index 0000000..dd019f5 --- /dev/null +++ b/frontend/src/components/layout/ScreenLayout.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/frontend/src/composables/Alignment.ts b/frontend/src/composables/Alignment.ts new file mode 100644 index 0000000..b021942 --- /dev/null +++ b/frontend/src/composables/Alignment.ts @@ -0,0 +1,5 @@ +export enum Alignment { + Start = 'align-start', + Center = 'align-center', + End = 'align-end', +} diff --git a/frontend/src/composables/Direction.ts b/frontend/src/composables/Direction.ts new file mode 100644 index 0000000..b7061a9 --- /dev/null +++ b/frontend/src/composables/Direction.ts @@ -0,0 +1,4 @@ +export enum Direction { + Row = 'row', + Column = 'column', +} diff --git a/frontend/src/composables/GapSize.ts b/frontend/src/composables/GapSize.ts new file mode 100644 index 0000000..690651a --- /dev/null +++ b/frontend/src/composables/GapSize.ts @@ -0,0 +1,6 @@ +export enum GapSize { + None = '', + Thin = 'gap-half', + Normal = 'gap-full', + Wide = 'gap-wide', +} diff --git a/frontend/src/composables/Justification.ts b/frontend/src/composables/Justification.ts new file mode 100644 index 0000000..af2da35 --- /dev/null +++ b/frontend/src/composables/Justification.ts @@ -0,0 +1,6 @@ +export enum Justification { + Start = 'justify-start', + Center = 'justify-center', + Between = 'justify-between', + End = 'justify-end', +} diff --git a/frontend/src/composables/ScreenType.ts b/frontend/src/composables/ScreenType.ts new file mode 100644 index 0000000..d5f6c64 --- /dev/null +++ b/frontend/src/composables/ScreenType.ts @@ -0,0 +1,7 @@ +export enum ScreenType { + Standard = '', + Page = 'page', + Wide = 'wide', + Tall = 'tall', + WideTall = 'wide tall', +} diff --git a/frontend/src/panels/panel.ts b/frontend/src/panels/panel.ts index 71f3fba..c1c69c3 100644 --- a/frontend/src/panels/panel.ts +++ b/frontend/src/panels/panel.ts @@ -43,6 +43,12 @@ export function getPanelHeirarchy(): PanelHeirarchyChildren { type: PanelHeirarchyType.LEAF, }); + result.push({ + name: 'Panel Test', + to: { name: 'panel_test' }, + type: PanelHeirarchyType.LEAF, + }); + return result; } diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 8bb7d60..a59f7e6 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -23,6 +23,11 @@ const router = createRouter({ name: 'chart', component: () => import('../views/ChartView.vue'), }, + { + path: '/panel_test', + name: 'panel_test', + component: () => import('../views/PanelTest.vue'), + }, ], }); diff --git a/frontend/src/views/ChartView.vue b/frontend/src/views/ChartView.vue index d51d682..518a1fe 100644 --- a/frontend/src/views/ChartView.vue +++ b/frontend/src/views/ChartView.vue @@ -4,6 +4,9 @@ import InlineIcon from '@/components/InlineIcon.vue'; import ChartDefinitionView from '@/views/ChartDefinitionView.vue'; import type { TelemetryDefinition } from '@/composables/telemetry.ts'; import ChartRenderView from '@/views/ChartRenderView.vue'; +import ScreenLayout from '@/components/layout/ScreenLayout.vue'; +import { Direction } from '@/composables/Direction.ts'; +import { ScreenType } from '@/composables/ScreenType.ts'; const settingsOpen = ref(true); const settings = ref([]); @@ -17,7 +20,7 @@ function closeSettings() { diff --git a/frontend/src/views/TelemetryListView.vue b/frontend/src/views/TelemetryListView.vue index dd1398f..672873d 100644 --- a/frontend/src/views/TelemetryListView.vue +++ b/frontend/src/views/TelemetryListView.vue @@ -5,6 +5,9 @@ import TelemetryList from '@/components/TelemetryList.vue'; import type { TelemetryDefinition } from '@/composables/telemetry'; import TelemetryInfo from '@/components/TelemetryInfo.vue'; import FlexDivider from '@/components/FlexDivider.vue'; +import ScreenLayout from '@/components/layout/ScreenLayout.vue'; +import { Direction } from '@/composables/Direction.ts'; +import { ScreenType } from '@/composables/ScreenType.ts'; const searchValue = ref(''); @@ -13,7 +16,7 @@ const mousedover = ref(null);