aboutsummaryrefslogtreecommitdiff
path: root/src/components/BaseLine.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/BaseLine.vue')
-rw-r--r--src/components/BaseLine.vue38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/components/BaseLine.vue b/src/components/BaseLine.vue
new file mode 100644
index 0000000..f0008f9
--- /dev/null
+++ b/src/components/BaseLine.vue
@@ -0,0 +1,38 @@
+<template>
+<div class="bg-stone-900 text-stone-50 flex" :class="{'flex-col': vert}">
+ <div v-for="p in periods" :key="p.label" :style="periodStyles(p)">
+ <div :style="labelStyles">{{p.label}}</div>
+ </div>
+</div>
+</template>
+
+<script setup lang="ts">
+import {ref, computed, PropType} from 'vue';
+
+// Props
+const props = defineProps({
+ vert: {type: Boolean, required: true},
+ timelineData: {type: Object as PropType<number[][]>, required: true},
+});
+
+// Time periods to represent
+const periods = ref([
+ {label: 'One', len: 1},
+ {label: 'Two', len: 2},
+ {label: 'Three', len: 1},
+]);
+
+// Styles
+function periodStyles(period){
+ return {
+ outline: '1px solid gray',
+ flexGrow: period.len,
+ };
+}
+const labelStyles = computed(() => ({
+ transform: props.vert ? 'rotate(90deg) translate(50%, 0)' : 'none',
+ whiteSpace: 'nowrap',
+ width: props.vert ? '40px' : 'auto',
+ padding: props.vert ? '0' : '4px',
+}));
+</script>