Skip to content

Commit ba84b08

Browse files
committed
convert / sync time zone,
1 parent b4798e0 commit ba84b08

3 files changed

Lines changed: 24 additions & 5 deletions

File tree

monitor-ui/src/components/AppTopBar.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
import { ref, computed, onMounted, onBeforeUnmount } from 'vue'
33
import { useTheme } from '../composables/useTheme'
44
import { useSidebar } from '../composables/useSidebar'
5+
import { useDisplayTimezone } from '../composables/useDisplayTimezone'
56
import { Sun, Moon, Menu } from 'lucide-vue-next'
67
78
const { dark, toggle } = useTheme()
89
const { toggle: toggleSidebar } = useSidebar()
10+
const { setDisplayTimezone } = useDisplayTimezone()
911
1012
const ZONES = [
1113
{ city: 'Stockholm', flag: '🇸🇪', iana: 'Europe/Stockholm' },
@@ -59,6 +61,7 @@ const formattedDateTime = computed(() => {
5961
6062
function selectZone(zone: typeof ZONES[number]) {
6163
selectedZone.value = zone
64+
setDisplayTimezone(zone.iana)
6265
showDropdown.value = false
6366
}
6467
</script>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { ref } from 'vue'
2+
3+
// Module-level singleton — shared across all components
4+
const selectedIana = ref('Europe/Stockholm')
5+
6+
export function useDisplayTimezone() {
7+
function setDisplayTimezone(iana: string) {
8+
selectedIana.value = iana
9+
}
10+
11+
return { selectedIana, setDisplayTimezone }
12+
}

monitor-ui/src/views/DashboardView.vue

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import { Plus, LoaderCircle, X } from 'lucide-vue-next'
55
import { registerServer } from '../api/servers'
66
import type { RegisterServerBody } from '../api/servers'
77
import { useServers } from '../composables/useServers'
8+
import { useDisplayTimezone } from '../composables/useDisplayTimezone'
89
910
const router = useRouter()
1011
1112
// Shared server state
1213
const { servers, loading, error: fetchError, fetch: fetchServers, ensureLoaded } = useServers()
14+
const { selectedIana } = useDisplayTimezone()
1315
1416
onMounted(ensureLoaded)
1517
@@ -19,15 +21,17 @@ function formatBytes(bytes: number): string {
1921
}
2022
2123
function formatDate(iso: string): string {
22-
const d = new Date(iso)
23-
const dd = String(d.getDate()).padStart(2, '0')
24-
const mm = String(d.getMonth() + 1).padStart(2, '0')
25-
const yy = String(d.getFullYear()).slice(2)
26-
return `${dd}/${mm}/${yy}`
24+
return new Date(iso).toLocaleDateString('en-GB', {
25+
timeZone: selectedIana.value,
26+
day: '2-digit',
27+
month: '2-digit',
28+
year: '2-digit',
29+
})
2730
}
2831
2932
function formatTime(iso: string): string {
3033
return new Date(iso).toLocaleTimeString('en-GB', {
34+
timeZone: selectedIana.value,
3135
hour: '2-digit',
3236
minute: '2-digit',
3337
second: '2-digit',

0 commit comments

Comments
 (0)