This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git


The following commit(s) were added to refs/heads/main by this push:
     new dac1e28c Fix: Highlight the current node in groups tree (#573)
dac1e28c is described below

commit dac1e28c0716365cb3224a55c92c11598b8a0e5e
Author: Fine0830 <fanxue0...@gmail.com>
AuthorDate: Mon Dec 16 17:49:25 2024 +0800

    Fix: Highlight the current node in groups tree (#573)
---
 ui/src/components/GroupTree/index.vue         | 37 ++++++++++-----------------
 ui/src/components/IndexRule/Editor.vue        |  2 +-
 ui/src/components/IndexRule/index.vue         |  2 +-
 ui/src/components/IndexRuleBinding/Editor.vue |  2 +-
 ui/src/components/IndexRuleBinding/index.vue  |  2 +-
 ui/src/components/TopNAggregation/Editor.vue  |  2 +-
 ui/src/components/TopNAggregation/index.vue   |  2 +-
 ui/src/styles/elementPlus.scss                |  8 +++---
 8 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/ui/src/components/GroupTree/index.vue 
b/ui/src/components/GroupTree/index.vue
index 1995d640..e4b741bb 100644
--- a/ui/src/components/GroupTree/index.vue
+++ b/ui/src/components/GroupTree/index.vue
@@ -58,7 +58,7 @@ const data = reactive({
         ttlUnit: "UNIT_DAY",
         ttlNum: 3
     },
-    activeMenu: '',
+    activeNode: '',
     formLabelWidth: "170px"
 })
 
@@ -235,6 +235,7 @@ function getGroupLists() {
                 }
                 Promise.all(promise).then(() => {
                     data.groupLists = processGroupTree()
+                    initActiveNode()
                 }).catch((err) => {
                     ElMessage({
                         message: 'An error occurred while obtaining group 
data. Please refresh and try again. Error: ' + err,
@@ -259,9 +260,8 @@ function processGroupTree() {
             catalog: group.catalog,
             type: TargetTypes.Group,
             key: group.metadata.name,
-            icon: `el-icon-folder`
         }
-        const keys = Object.keys(TypeMap);
+        const keys = Object.keys(TypeMap)
         for (const key of keys) {
             if (group[key]) {
                 const n = key === 'children' ? props.type : key
@@ -269,14 +269,14 @@ function processGroupTree() {
                     name: n.charAt(0).toUpperCase() + n.slice(1),
                     children: [],
                     type: n,
-                    key: `${group.metadata.name}_${n}`,
+                    key: `${group.metadata.name}_${TypeMap[n] || n}`,
                     group: group.metadata.name,
                 }
                 for (const item of group[key]) {
                     list.children.push({
                         ...item.metadata,
                         type: TargetTypes.Resources,
-                        key: 
`${group.metadata.name}_${n}_${item.metadata.name}`,
+                        key: `${group.metadata.name}_${TypeMap[n] || 
n}_${item.metadata.name}`,
                         parent: TypeMap[n] || n,
                         catalog: group.catalog,
                         resourceOpts: group.resourceOpts
@@ -315,7 +315,6 @@ function viewResources(node) {
             type: `Read-${parent}`,
             route
         }
-        data.activeMenu = `${group}-${name}` 
         return $bus.emit('AddTabs', add)
     }
     if (props.type == 'property') {
@@ -351,7 +350,6 @@ function viewResources(node) {
         type: 'Read',
         route
     }
-    data.activeMenu = `${group}-${name}`
     $bus.emit('AddTabs', add)
 }
 
@@ -662,12 +660,11 @@ function clearGroupForm() {
         ttlNum: 3
     }
 }
-function initActiveMenu() {
-    const group = route.params.group
-    const name = route.params.name
-    if (group && name) {
+function initActiveNode() {
+    const {group, name, type} = route.params
 
-        data.activeMenu = `${group}-${name}`
+    if (group && name && type) {
+        data.activeNode = `${group}_${type}_${name}`
     }
 }
 const filterNode = (value, data) => {
@@ -699,16 +696,7 @@ function onMouseUp(e) {
     document.removeEventListener('mouseup', onMouseUp);
 }
 
-// Eventbus, change isCollapse
-$bus.on('resetAside', () => {
-    data.activeMenu = ''
-    router.push({
-        name: `${props.type}Start`
-    })
-})
-
 getGroupLists()
-initActiveMenu()
 
 watch(filterText, (val) => {
   treeRef.value?.filter(val)
@@ -718,7 +706,7 @@ watch(filterText, (val) => {
 <template>
     <div :style="{display: 'flex', flexDirection: 'column', width: 
`${data.treeWidth}`, height: `100%`}" ref="resizable" >
         <div style="display: flex; flex-direction: row; width: 100%; height: 
100%; justify-content: space-between;">
-            <div class="size flex" style="display: flex; flex-direction: 
column; width: calc(100% - 10px); overflow: auto;">
+            <div class="size flex" style="display: flex; flex-direction: 
column; width: calc(100% - 6px); overflow: auto;">
                 <el-input v-if="props.type !== 'stream'" class="group-search" 
v-model="filterText"
                     placeholder="Search" :prefix-icon="Search" clearable />
                 <el-tree
@@ -730,7 +718,10 @@ watch(filterText, (val) => {
                     @node-click="viewResources"
                     @node-contextmenu="openOperationMenus"
                     class="group-tree"
-                    icon=""
+                    node-key="key"
+                    :default-expanded-keys="[data.activeNode]"
+                    :current-node-key="data.activeNode"
+                    highlight-current
                 >
                     <template #default="{ _, data }">
                         <div class="node-icon">
diff --git a/ui/src/components/IndexRule/Editor.vue 
b/ui/src/components/IndexRule/Editor.vue
index c27aa892..451caa43 100644
--- a/ui/src/components/IndexRule/Editor.vue
+++ b/ui/src/components/IndexRule/Editor.vue
@@ -267,7 +267,7 @@ function initData() {
           </el-select>
         </el-form-item>
         <el-form-item label="Tags" prop="tags">
-          <el-select v-model="data.form.tags" allow-create filterable 
default-first-option placeholder="Input Tags"
+          <el-select class="tags-and-rules" v-model="data.form.tags" 
allow-create filterable default-first-option placeholder="Input Tags"
             style="width: 100%;" clearable multiple></el-select>
         </el-form-item>
         <el-form-item label="Type" prop="type">
diff --git a/ui/src/components/IndexRule/index.vue 
b/ui/src/components/IndexRule/index.vue
index 79c09011..506f4f82 100644
--- a/ui/src/components/IndexRule/index.vue
+++ b/ui/src/components/IndexRule/index.vue
@@ -79,7 +79,7 @@ async function initData() {
           <el-input v-model="data.indexRule.analyzer" 
:disabled="true"></el-input>
         </el-form-item>
         <el-form-item label="Tags">
-          <el-select v-model="data.indexRule.tags" style="width: 100%;" 
:disabled="true" multiple></el-select>
+          <el-select class="tags-and-rules" v-model="data.indexRule.tags" 
style="width: 100%;" :disabled="true" multiple></el-select>
         </el-form-item>
         <el-form-item label="Type">
           <el-input v-model="data.indexRule.type" disabled></el-input>
diff --git a/ui/src/components/IndexRuleBinding/Editor.vue 
b/ui/src/components/IndexRuleBinding/Editor.vue
index d7cd27ed..bcce7714 100644
--- a/ui/src/components/IndexRuleBinding/Editor.vue
+++ b/ui/src/components/IndexRuleBinding/Editor.vue
@@ -240,7 +240,7 @@ function initData() {
             clearable></el-date-picker>
         </el-form-item>
         <el-form-item label="Rules" prop="rules">
-          <el-select v-model="data.form.rules" allow-create filterable 
default-first-option placeholder="Input Rules"
+          <el-select class="tags-and-rules" v-model="data.form.rules" 
allow-create filterable default-first-option placeholder="Input Rules"
             style="width: 100%;" clearable multiple></el-select>
         </el-form-item>
       </el-form>
diff --git a/ui/src/components/IndexRuleBinding/index.vue 
b/ui/src/components/IndexRuleBinding/index.vue
index a7556b19..7c14aaf9 100644
--- a/ui/src/components/IndexRuleBinding/index.vue
+++ b/ui/src/components/IndexRuleBinding/index.vue
@@ -85,7 +85,7 @@ function initData() {
           <el-date-picker v-model="data.indexRuleBinding.expireAt" 
:disabled="true" type="datetime" style="width: 100%;"></el-date-picker>
         </el-form-item>
         <el-form-item label="Rules">
-          <el-select v-model="data.indexRuleBinding.rules" style="width: 
100%;" :disabled="true" multiple></el-select>
+          <el-select class="tags-and-rules" 
v-model="data.indexRuleBinding.rules" style="width: 100%;" :disabled="true" 
multiple></el-select>
         </el-form-item>
       </el-form>
     </el-card>
diff --git a/ui/src/components/TopNAggregation/Editor.vue 
b/ui/src/components/TopNAggregation/Editor.vue
index 1cd56b8e..de8f2de8 100644
--- a/ui/src/components/TopNAggregation/Editor.vue
+++ b/ui/src/components/TopNAggregation/Editor.vue
@@ -307,7 +307,7 @@ function initData() {
           </el-select>
         </el-form-item>
         <el-form-item label="Group By Tag Names" prop="groupByTagNames" 
label-width="150px">
-          <el-select v-model="data.form.groupByTagNames" allow-create 
filterable default-first-option placeholder="Input Group By Tag Names"
+          <el-select class="tags-and-rules" 
v-model="data.form.groupByTagNames" allow-create filterable 
default-first-option placeholder="Input Group By Tag Names"
             style="width: 100%;" clearable multiple></el-select>
         </el-form-item>
         <el-form-item label="Counters Number" prop="countersNumber" 
label-width="150px">
diff --git a/ui/src/components/TopNAggregation/index.vue 
b/ui/src/components/TopNAggregation/index.vue
index 0853b762..340a10dc 100644
--- a/ui/src/components/TopNAggregation/index.vue
+++ b/ui/src/components/TopNAggregation/index.vue
@@ -92,7 +92,7 @@ function initData() {
           <el-select v-model="data.topNAggregation.fieldValueSort" 
style="width: 100%;" :disabled="true"></el-select>
         </el-form-item>
         <el-form-item label="Group By Tag Names">
-          <el-select v-model="data.topNAggregation.groupByTagNames" 
style="width: 100%;" :disabled="true" multiple></el-select>
+          <el-select class="tags-and-rules" 
v-model="data.topNAggregation.groupByTagNames" style="width: 100%;" 
:disabled="true" multiple></el-select>
         </el-form-item>
         <el-form-item label="Counters Number">
           <el-input v-model="data.topNAggregation.countersNumber" 
:disabled="true"></el-input>
diff --git a/ui/src/styles/elementPlus.scss b/ui/src/styles/elementPlus.scss
index b94d8d17..3d0de355 100644
--- a/ui/src/styles/elementPlus.scss
+++ b/ui/src/styles/elementPlus.scss
@@ -120,10 +120,12 @@
     padding: 0px !important;
     --el-icon-size: 20px !important;
 }
+.tags-and-rules .el-select__selection {
+    display: block;
+}
 
-.el-tag__content {
-    height: 100%;
-    width: 95%;
+.tags-and-rules .el-select__selected-item {
+    margin-bottom: 5px;
 }
 
 .el-select__tags .el-tag {

Reply via email to