diff options
Diffstat (limited to 'subprojects/frontend/src/theme/ThemeStore.ts')
-rw-r--r-- | subprojects/frontend/src/theme/ThemeStore.ts | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/subprojects/frontend/src/theme/ThemeStore.ts b/subprojects/frontend/src/theme/ThemeStore.ts index 7c657449..fa47d873 100644 --- a/subprojects/frontend/src/theme/ThemeStore.ts +++ b/subprojects/frontend/src/theme/ThemeStore.ts | |||
@@ -12,11 +12,19 @@ export enum ThemePreference { | |||
12 | PreferDark, | 12 | PreferDark, |
13 | } | 13 | } |
14 | 14 | ||
15 | export type SelectedPane = 'code' | 'graph' | 'table'; | ||
16 | |||
15 | export default class ThemeStore { | 17 | export default class ThemeStore { |
16 | preference = ThemePreference.System; | 18 | preference = ThemePreference.System; |
17 | 19 | ||
18 | systemDarkMode: boolean; | 20 | systemDarkMode: boolean; |
19 | 21 | ||
22 | showCode = true; | ||
23 | |||
24 | showGraph = true; | ||
25 | |||
26 | showTable = false; | ||
27 | |||
20 | constructor() { | 28 | constructor() { |
21 | const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); | 29 | const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); |
22 | this.systemDarkMode = mediaQuery.matches; | 30 | this.systemDarkMode = mediaQuery.matches; |
@@ -48,4 +56,44 @@ export default class ThemeStore { | |||
48 | : ThemePreference.PreferDark; | 56 | : ThemePreference.PreferDark; |
49 | } | 57 | } |
50 | } | 58 | } |
59 | |||
60 | toggleCode(): void { | ||
61 | if (!this.showGraph && !this.showTable) { | ||
62 | return; | ||
63 | } | ||
64 | this.showCode = !this.showCode; | ||
65 | } | ||
66 | |||
67 | toggleGraph(): void { | ||
68 | if (!this.showCode && !this.showTable) { | ||
69 | return; | ||
70 | } | ||
71 | this.showGraph = !this.showGraph; | ||
72 | } | ||
73 | |||
74 | toggleTable(): void { | ||
75 | if (!this.showCode && !this.showGraph) { | ||
76 | return; | ||
77 | } | ||
78 | this.showTable = !this.showTable; | ||
79 | } | ||
80 | |||
81 | get selectedPane(): SelectedPane { | ||
82 | if (this.showCode) { | ||
83 | return 'code'; | ||
84 | } | ||
85 | if (this.showGraph) { | ||
86 | return 'graph'; | ||
87 | } | ||
88 | if (this.showTable) { | ||
89 | return 'table'; | ||
90 | } | ||
91 | return 'code'; | ||
92 | } | ||
93 | |||
94 | setSelectedPane(pane: SelectedPane): void { | ||
95 | this.showCode = pane === 'code'; | ||
96 | this.showGraph = pane === 'graph'; | ||
97 | this.showTable = pane === 'table'; | ||
98 | } | ||
51 | } | 99 | } |