diff --git a/frontend/src/assets/img/none-dashboard.png b/frontend/src/assets/img/none-dashboard.png
new file mode 100644
index 00000000..1c3dc6ca
Binary files /dev/null and b/frontend/src/assets/img/none-dashboard.png differ
diff --git a/frontend/src/assets/img/none.png b/frontend/src/assets/img/none.png
index 358dfdd8..124f6804 100644
Binary files a/frontend/src/assets/img/none.png and b/frontend/src/assets/img/none.png differ
diff --git a/frontend/src/assets/svg/dv-sort-asc.svg b/frontend/src/assets/svg/dv-sort-asc.svg
new file mode 100644
index 00000000..253a3ce5
--- /dev/null
+++ b/frontend/src/assets/svg/dv-sort-asc.svg
@@ -0,0 +1,6 @@
+
diff --git a/frontend/src/assets/svg/dv-sort-desc.svg b/frontend/src/assets/svg/dv-sort-desc.svg
new file mode 100644
index 00000000..4b666610
--- /dev/null
+++ b/frontend/src/assets/svg/dv-sort-desc.svg
@@ -0,0 +1,6 @@
+
diff --git a/frontend/src/assets/svg/icon_dashboard.svg b/frontend/src/assets/svg/icon_dashboard.svg
index 1da45d61..7fd632b9 100644
--- a/frontend/src/assets/svg/icon_dashboard.svg
+++ b/frontend/src/assets/svg/icon_dashboard.svg
@@ -1,4 +1,6 @@
diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json
index a267e7d4..6ec465da 100644
--- a/frontend/src/i18n/en.json
+++ b/frontend/src/i18n/en.json
@@ -31,6 +31,16 @@
"password_reset_successful": "Password reset successful"
},
"dashboard": {
+ "rename_dashboard": "Rename Dashboard",
+ "dashboard_name": "Dashboard Name",
+ "select_dashboard_tips": "Please select a dashboard on the left",
+ "no_dashboard": "No Dashboards",
+ "no_dashboard_info": "No content yet, click the button below to add",
+ "search": "Search",
+ "time_asc": "Sort by Time (Ascending)",
+ "time_desc": "Sort by Time (Descending)",
+ "name_asc": "Sort by Name (Ascending)",
+ "name_desc": "Sort by Name (Descending)",
"select_dashboard": "Please Select Dashboard",
"view": "View",
"text": "Text",
@@ -336,4 +346,4 @@
"back_community": "Restore to Community Edition",
"confirm_tips": "Are you sure to restore to Community Edition?"
}
-}
\ No newline at end of file
+}
diff --git a/frontend/src/i18n/zh-CN.json b/frontend/src/i18n/zh-CN.json
index 66bb2feb..86fe0fbb 100644
--- a/frontend/src/i18n/zh-CN.json
+++ b/frontend/src/i18n/zh-CN.json
@@ -33,6 +33,16 @@
"password_reset_successful": "重置密码成功"
},
"dashboard": {
+ "rename_dashboard": "重命名仪表板",
+ "dashboard_name": "仪表板名称",
+ "select_dashboard_tips": "请在左侧选择仪表板",
+ "no_dashboard": "暂无仪表板",
+ "no_dashboard_info": "暂无内容,点击下列按钮进行添加",
+ "search": "搜索",
+ "time_asc": "按时间升序",
+ "time_desc": "按时间降序",
+ "name_asc": "按名称升序",
+ "name_desc": "按名称降序",
"select_dashboard": "请选择仪表板",
"name": "名称",
"view": "图表",
diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts
index 2df029b4..5607be38 100644
--- a/frontend/src/router/index.ts
+++ b/frontend/src/router/index.ts
@@ -1,5 +1,5 @@
import { createRouter, createWebHashHistory } from 'vue-router'
-
+// @ts-expect-error eslint-disable-next-line @typescript-eslint/ban-ts-comment
import Layout from '@/components/layout/index.vue'
import LayoutDsl from '@/components/layout/LayoutDsl.vue'
import SinglePage from '@/components/layout/SinglePage.vue'
@@ -11,7 +11,6 @@ import DashboardPreview from '@//views/dashboard/preview/SQPreviewSingle.vue'
import Dashboard from '@/views/dashboard/index.vue'
import Model from '@/views/system/model/Model.vue'
import assistant from '@/views/embedded/assistant.vue'
-// import User from "@/views/system/user/index.vue";
import User from '@/views/system/user/User.vue'
import Workspace from '@/views/system/workspace/index.vue'
import { watchRouter } from './watch'
@@ -63,7 +62,7 @@ const router = createRouter({
},
{
path: '/dashboard',
- component: Layout,
+ component: LayoutDsl,
redirect: '/dashboard/index',
children: [
{
diff --git a/frontend/src/views/dashboard/common/EmptyBackground.vue b/frontend/src/views/dashboard/common/EmptyBackground.vue
index f87aa97d..e6f894fd 100644
--- a/frontend/src/views/dashboard/common/EmptyBackground.vue
+++ b/frontend/src/views/dashboard/common/EmptyBackground.vue
@@ -3,6 +3,7 @@ import { type PropType } from 'vue'
import nothingInput from '@/assets/img/nothing-input.png'
import nothingSelect from '@/assets/img/nothing-select.png'
import nothingTable from '@/assets/img/nothing-table.png'
+import nothingSelectDashoard from '@/assets/img/none-dashboard.png'
import none from '@/assets/img/none.png'
import error from '@/assets/img/error.png'
import nothingTree from '@/assets/img/nothing-tree.png'
@@ -10,7 +11,7 @@ import nothingNone from '@/assets/img/nothing-none.png'
defineProps({
imgType: {
type: String as PropType<
- 'input' | 'select' | 'table' | 'none' | 'noneWhite' | 'tree' | 'error'
+ 'input' | 'select' | 'table' | 'none' | 'noneWhite' | 'tree' | 'error' | 'selectDashboard'
>,
default: 'table',
},
@@ -29,6 +30,7 @@ const getAssetsFile = {
table: nothingTable,
noneWhite: nothingNone,
tree: nothingTree,
+ selectDashboard: nothingSelectDashoard,
error,
none,
}
diff --git a/frontend/src/views/dashboard/common/ResourceGroupOpt.vue b/frontend/src/views/dashboard/common/ResourceGroupOpt.vue
index 91e971a9..ac988a1d 100644
--- a/frontend/src/views/dashboard/common/ResourceGroupOpt.vue
+++ b/frontend/src/views/dashboard/common/ResourceGroupOpt.vue
@@ -14,7 +14,7 @@ const state = reactive({
placeholder: '',
nodeType: 'folder',
parentSelect: false,
- resourceFormNameLabel: t('dashboard.name'),
+ resourceFormNameLabel: t('dashboard.dashboard_name'),
dialogTitle: '',
tData: [],
tDataSource: [],
@@ -30,7 +30,7 @@ const getTitle = (opt: string) => {
case 'newFolder':
return t('dashboard.new_folder')
case 'rename':
- return t('dashboard.rename')
+ return t('dashboard.rename_dashboard')
default:
return
}
diff --git a/frontend/src/views/dashboard/common/ResourceTree.vue b/frontend/src/views/dashboard/common/ResourceTree.vue
index 61d6b849..6a4c7c4e 100644
--- a/frontend/src/views/dashboard/common/ResourceTree.vue
+++ b/frontend/src/views/dashboard/common/ResourceTree.vue
@@ -1,15 +1,16 @@