Skip to content

Commit beb69c3

Browse files
committed
feat: multi-recording timeline view
1 parent 0ff1da9 commit beb69c3

File tree

5 files changed

+697
-14
lines changed

5 files changed

+697
-14
lines changed

ui/src/components/Sidebar.vue

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
<script setup lang="ts">
22
import { Camera, Map, Video, ListVideo, Clock, AlertTriangle, Users, Settings } from 'lucide-vue-next';
3+
import { useStreamStore } from '@/stores/stream';
4+
import { computed } from 'vue';
35
46
const version = import.meta.env.VERSION || 'Development';
7+
const streamStore = useStreamStore();
8+
9+
const firstCameraId = computed(() => {
10+
return streamStore.streams.length > 0 ? streamStore.streams[0].id : '';
11+
});
512
613
const props = defineProps<{
714
mobileOpen?: boolean;
@@ -51,18 +58,14 @@ const handleLinkClick = () => {
5158
<span class="text-xs uppercase font-medium">Live View</span>
5259
</RouterLink>
5360

54-
<!-- <div class="relative">
55-
<RouterLink
56-
to="/timeline"
57-
class="sidebar-link"
58-
>
59-
<Clock :size="20" />
60-
<span class="text-xs uppercase font-medium">Timeline</span>
61-
</RouterLink>
62-
<div class="absolute top-0 right-2 bg-yellow-500 text-black px-1.5 rounded-sm text-[10px] font-bold">
63-
BETA
64-
</div>
65-
</div> -->
61+
<RouterLink
62+
:to="{ name: 'camera-timeline', params: { streamId: firstCameraId || '-' } }"
63+
class="sidebar-link"
64+
@click="handleLinkClick"
65+
>
66+
<Clock :size="20" />
67+
<span class="text-xs uppercase font-medium">Timeline</span>
68+
</RouterLink>
6669

6770
<RouterLink
6871
to="/recordings"

ui/src/router/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { createRouter, createWebHistory } from 'vue-router'
22
import CamerasView from '@/views/CamerasView.vue'
33
import CameraView from '@/views/CameraView.vue'
4+
import CameraTimelineView from '@/views/CameraTimelineView.vue'
45
import RecordingsView from '@/views/RecordingsView.vue';
56
import RecordingView from '@/views/RecordingView.vue';
67
import LiveView from '@/views/LiveView.vue';
@@ -23,6 +24,12 @@ const router = createRouter({
2324
component: CameraView,
2425
props: true,
2526
},
27+
{
28+
path: '/cameras/:streamId/timeline',
29+
name: 'camera-timeline',
30+
component: CameraTimelineView,
31+
props: true,
32+
},
2633
{
2734
path: '/recordings',
2835
name: 'recordings',

0 commit comments

Comments
 (0)