Skip to content

Commit 2e39920

Browse files
committed
feat: complete the basic feature to switch theme
1 parent a13c3a4 commit 2e39920

17 files changed

Lines changed: 429 additions & 589 deletions

File tree

cmd/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
292292
server.RegisterRunnerServer(s, remoteServer)
293293
server.RegisterMockServer(s, mockServerController)
294294
server.RegisterDataServerServer(s, remoteServer.(server.DataServerServer))
295+
server.RegisterThemeExtensionServer(s, remoteServer.(server.ThemeExtensionServer))
295296
serverLogger.Info("gRPC server listening at", "addr", lis.Addr())
296297
s.Serve(lis)
297298
}()
@@ -336,13 +337,15 @@ func (o *serverOption) runE(cmd *cobra.Command, args []string) (err error) {
336337
err = errors.Join(
337338
server.RegisterRunnerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
338339
server.RegisterMockHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
340+
server.RegisterThemeExtensionHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}),
339341
server.RegisterDataServerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, []grpc.DialOption{grpc.WithTransportCredentials(creds)}))
340342
} else {
341343
dialOption := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials()),
342344
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(math.MaxInt))}
343345
err = errors.Join(
344346
server.RegisterRunnerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, dialOption),
345347
server.RegisterMockHandlerFromEndpoint(ctx, mux, gRPCServerAddr, dialOption),
348+
server.RegisterThemeExtensionHandlerFromEndpoint(ctx, mux, gRPCServerAddr, dialOption),
346349
server.RegisterDataServerHandlerFromEndpoint(ctx, mux, gRPCServerAddr, dialOption))
347350
}
348351

console/atest-ui/src/App.vue

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
Guide,
1010
DataAnalysis
1111
} from '@element-plus/icons-vue'
12+
import { Setting } from '@element-plus/icons-vue'
1213
import { ref, watch } from 'vue'
1314
import { API } from './views/net'
1415
import { Cache } from './views/cache'
@@ -23,8 +24,9 @@ import { useI18n } from 'vue-i18n'
2324
2425
const { t, locale: i18nLocale } = useI18n()
2526
26-
import setAsDarkTheme from './theme'
27+
import { setAsDarkTheme, getThemes, setTheme, getTheme } from './theme'
2728
29+
const allThemes = ref(getThemes())
2830
const asDarkMode = ref(Cache.GetPreference().darkTheme)
2931
setAsDarkTheme(asDarkMode.value)
3032
watch(asDarkMode, Cache.WithDarkTheme)
@@ -87,6 +89,16 @@ const toHistoryPanel = ({ ID: selectID, panelName: historyPanelName }) => {
8789
panelName.value = historyPanelName;
8890
}
8991
92+
const settingDialogVisible = ref(false)
93+
watch(settingDialogVisible, (v: boolean) => {
94+
if (v) {
95+
allThemes.value = getThemes()
96+
}
97+
})
98+
const theme = ref(getTheme())
99+
watch(theme, (e: string) => {
100+
setTheme(e)
101+
})
90102
</script>
91103

92104
<template>
@@ -147,7 +159,7 @@ const toHistoryPanel = ({ ID: selectID, panelName: historyPanelName }) => {
147159
</el-dropdown-menu>
148160
</template>
149161
</el-dropdown>
150-
162+
<el-icon @click="settingDialogVisible=true"><Setting /></el-icon>
151163
<el-switch type="primary" data-intro="Switch light and dark modes" v-model="asDarkMode"/>
152164
</el-col>
153165
</div>
@@ -164,6 +176,17 @@ const toHistoryPanel = ({ ID: selectID, panelName: historyPanelName }) => {
164176
<a :href=appVersionLink target="_blank" rel="noopener">{{appVersion}}</a>
165177
</div>
166178
</el-container>
179+
180+
<el-dialog v-model="settingDialogVisible" title="Setting" width="50%" draggable destroy-on-close>
181+
<el-select v-model="theme" placeholder="Select a theme">
182+
<el-option
183+
v-for="item in allThemes"
184+
:key="item"
185+
:label="item"
186+
:value="item"
187+
/>
188+
</el-select>
189+
</el-dialog>
167190
</template>
168191

169192
<style>

0 commit comments

Comments
 (0)