Browse Source

add dashboard version process

pull/288/head
yedf2 4 years ago
parent
commit
8e36721cfb
  1. 9
      dashboard/src/api/api_dtm.ts
  2. 18
      dashboard/src/layout/aside.vue
  3. 9
      dashboard/src/store/modules/layout.ts
  4. 11
      dashboard/src/type/store/layout.ts
  5. 2
      dtmsvr/api.go
  6. 3
      dtmsvr/api_http.go
  7. 13
      dtmsvr/entry/main.go

9
dashboard/src/api/api_dtm.ts

@ -6,10 +6,17 @@ export interface IListAllTransactionsReq {
position?: number position?: number
} }
export function listAllTransactions<T>(payload:IListAllTransactionsReq):Promise<AxiosResponse<T>> { export function listAllTransactions<T>(payload: IListAllTransactionsReq): Promise<AxiosResponse<T>> {
return request({ return request({
url: '/dtmsvr/all', url: '/dtmsvr/all',
method: 'get', method: 'get',
params: payload params: payload
}) })
} }
export function getDtmVersion(): Promise<AxiosResponse<any>> {
return request({
url: '/dtmsvr/version',
method: 'get',
})
}

18
dashboard/src/layout/aside.vue

@ -4,7 +4,7 @@
<Sidebar /> <Sidebar />
</a-layout-sider> </a-layout-sider>
<a-layout style="padding: 0 24px 24px"> <a-layout style="padding: 0 24px 24px">
<!-- <div style="color:#f00"> !!! local start mode, dashboard is served from en.dtm.pub. version may not match your dtm </div> --> <div v-if="layout.dtmVersion && layout.dtmVersion != dashVer" style="color:#f00"> !!! dashboard version: {{dashVer}} != dtm version: {{layout.dtmVersion}}. </div>
<a-breadcrumb style="margin: 16px 0"> <a-breadcrumb style="margin: 16px 0">
<a-breadcrumb-item>{{ mainNav }}</a-breadcrumb-item> <a-breadcrumb-item>{{ mainNav }}</a-breadcrumb-item>
<a-breadcrumb-item>{{ subNav }}</a-breadcrumb-item> <a-breadcrumb-item>{{ subNav }}</a-breadcrumb-item>
@ -27,18 +27,21 @@ import { useLayoutStore } from '../store/modules/layout'
import { IMenubarList } from '../type/store/layout' import { IMenubarList } from '../type/store/layout'
import { findCurrentMenubar } from '../utils/util' import { findCurrentMenubar } from '../utils/util'
import { computed, onMounted, ref } from 'vue' import { computed, onMounted, ref } from 'vue'
import { getDtmVersion } from '../api/api_dtm'
const dashVer = import.meta.env.VITE_DASHBOARD_VERSION
const route = useRoute() const route = useRoute()
const { getMenubar } = useLayoutStore() const layout = useLayoutStore()
const mainNav = computed(() => { const mainNav = computed(() => {
const currentMenubar = findCurrentMenubar(getMenubar.menuList, true) const currentMenubar = findCurrentMenubar(layout.getMenubar.menuList, true)
return currentMenubar?.meta.title return currentMenubar?.meta.title
}) })
const subNav = computed(() => { const subNav = computed(() => {
let subNav = '' let subNav = ''
const currentMenubar = findCurrentMenubar(getMenubar.menuList, true) const currentMenubar = findCurrentMenubar(layout.getMenubar.menuList, true)
currentMenubar.children?.forEach(v => { currentMenubar.children?.forEach(v => {
if (route.path.indexOf(v.path) !== -1) { if (route.path.indexOf(v.path) !== -1) {
subNav = v.meta.title subNav = v.meta.title
@ -50,7 +53,7 @@ const subNav = computed(() => {
const page = computed(() => { const page = computed(() => {
let page = '' let page = ''
const currentMenubar = findCurrentMenubar(getMenubar.menuList, true) const currentMenubar = findCurrentMenubar(layout.getMenubar.menuList, true)
currentMenubar.children?.forEach(v => { currentMenubar.children?.forEach(v => {
v.children?.forEach(vv => { v.children?.forEach(vv => {
if (route.path == vv.path) { if (route.path == vv.path) {
@ -61,6 +64,11 @@ const page = computed(() => {
return page return page
}) })
onMounted(() => {
layout.loadDtmVersion()
})
</script> </script>
<style lang="postcss" scoped> <style lang="postcss" scoped>

9
dashboard/src/store/modules/layout.ts

@ -1,16 +1,18 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { allowRouter } from '/@/router'; import { allowRouter } from '/@/router';
import { ILayout, IMenubar, IMenubarList, IStatus } from '/@/type/store/layout'; import { ILayout, IMenubar, IMenubarList, IStatus } from '/@/type/store/layout';
import { getDtmVersion } from '/@/api/api_dtm';
export const useLayoutStore = defineStore({ export const useLayoutStore = defineStore({
id: 'layout', id: 'layout',
state: ():ILayout => ({ state: (): ILayout => ({
menubar: { menubar: {
menuList: [] menuList: []
}, },
status: { status: {
isLoading: false isLoading: false
}, },
dtmVersion: "",
}), }),
getters: { getters: {
getMenubar(): IMenubar { getMenubar(): IMenubar {
@ -27,5 +29,10 @@ export const useLayoutStore = defineStore({
concatAllowRoutes(): void { concatAllowRoutes(): void {
allowRouter.reverse().forEach(v => this.menubar.menuList.unshift(v)) allowRouter.reverse().forEach(v => this.menubar.menuList.unshift(v))
}, },
async loadDtmVersion(): Promise<void> {
const { data: { version } } = await getDtmVersion()
this.dtmVersion = version
console.log("dtm version: ", this.dtmVersion)
}
} }
}) })

11
dashboard/src/type/store/layout.ts

@ -1,14 +1,15 @@
export interface IMenubar { export interface IMenubar {
menuList: Array<IMenubarList> menuList: Array<IMenubarList>
} }
export interface ILayout { export interface ILayout {
menubar: IMenubar menubar: IMenubar
status: IStatus status: IStatus
dtmVersion: string
} }
export interface IStatus { export interface IStatus {
isLoading: boolean isLoading: boolean
} }
export interface IMenubarList { export interface IMenubarList {
@ -16,7 +17,7 @@ export interface IMenubarList {
id?: number | string id?: number | string
name: string name: string
path: string path: string
redirect?: string redirect?: string
meta: { meta: {
icon?: string icon?: string
title: string title: string

2
dtmsvr/api.go

@ -15,6 +15,8 @@ import (
"github.com/dtm-labs/dtm/dtmsvr/storage" "github.com/dtm-labs/dtm/dtmsvr/storage"
) )
var Version = ""
func svcSubmit(t *TransGlobal) interface{} { func svcSubmit(t *TransGlobal) interface{} {
t.Status = dtmcli.StatusSubmitted t.Status = dtmcli.StatusSubmitted
branches, err := t.saveNew() branches, err := t.saveNew()

3
dtmsvr/api_http.go

@ -19,6 +19,9 @@ import (
) )
func addRoute(engine *gin.Engine) { func addRoute(engine *gin.Engine) {
engine.GET("/api/dtmsvr/version", dtmutil.WrapHandler2(func(c *gin.Context) interface{} {
return gin.H{"version": Version}
}))
engine.GET("/api/dtmsvr/newGid", dtmutil.WrapHandler2(newGid)) engine.GET("/api/dtmsvr/newGid", dtmutil.WrapHandler2(newGid))
engine.POST("/api/dtmsvr/prepare", dtmutil.WrapHandler2(prepare)) engine.POST("/api/dtmsvr/prepare", dtmutil.WrapHandler2(prepare))
engine.POST("/api/dtmsvr/submit", dtmutil.WrapHandler2(submit)) engine.POST("/api/dtmsvr/submit", dtmutil.WrapHandler2(submit))

13
dtmsvr/entry/main.go

@ -14,13 +14,6 @@ import (
"go.uber.org/automaxprocs/maxprocs" "go.uber.org/automaxprocs/maxprocs"
) )
func ver(version *string) {
if *version == "" {
*version = "v0.0.0-dev"
}
fmt.Printf("dtm version: %s\n", *version)
}
func usage() { func usage() {
cmd := filepath.Base(os.Args[0]) cmd := filepath.Base(os.Args[0])
s := "Usage: %s [options]\n\n" s := "Usage: %s [options]\n\n"
@ -37,11 +30,15 @@ var confFile = flag.String("c", "", "Path to the server configuration file.")
// Main is the entry point of dtm server. // Main is the entry point of dtm server.
func Main(version *string) *gin.Engine { func Main(version *string) *gin.Engine {
flag.Parse() flag.Parse()
if *version == "" {
*version = "v0.0.0-dev"
}
dtmsvr.Version = *version
if flag.NArg() > 0 || *isHelp { if flag.NArg() > 0 || *isHelp {
usage() usage()
return nil return nil
} else if *isVersion { } else if *isVersion {
ver(version) fmt.Printf("dtm version: %s\n", *version)
return nil return nil
} }
logger.Infof("dtm version is: %s", *version) logger.Infof("dtm version is: %s", *version)

Loading…
Cancel
Save