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 0da162e2 Add Measure IndexRule and IndexRuleBinding to Measure Page 
(#418)
0da162e2 is described below

commit 0da162e2f773ccb5a56a05542f8adc07b36f8518
Author: Sylvie-Wxr <129717259+sylvie-...@users.noreply.github.com>
AuthorDate: Sat Mar 16 05:45:10 2024 -0700

    Add Measure IndexRule and IndexRuleBinding to Measure Page (#418)
---
 ui/src/components/Aside/index.vue             | 82 +++++++++++----------------
 ui/src/components/IndexRule/Editor.vue        |  4 +-
 ui/src/components/IndexRuleBinding/Editor.vue |  4 +-
 ui/src/router/index.js                        | 50 ++++++++++++----
 4 files changed, 78 insertions(+), 62 deletions(-)

diff --git a/ui/src/components/Aside/index.vue 
b/ui/src/components/Aside/index.vue
index 18c6745f..00a05663 100644
--- a/ui/src/components/Aside/index.vue
+++ b/ui/src/components/Aside/index.vue
@@ -298,7 +298,7 @@ function getGroupLists() {
                             })
                     })
                 })
-                if (props.type == 'stream') {
+                if (props.type == 'stream' || props.type == 'measure') {
                     let promiseIndexRule = data.groupLists.map((item) => {
                         let name = item.metadata.name
                         return new Promise((resolve, reject) => {
@@ -442,15 +442,6 @@ function shrinkDown(e) {
 // right click menu
 function rightClickGroup(e, index) {
     data.rightMenuList = groupMenu
-    if (props.type == 'measure') {
-        const rightMenuList = JSON.parse(JSON.stringify(groupMenu))
-        rightMenuList.push({
-            icon: "el-icon-document",
-            name: "new resources",
-            id: "create resources"
-        })
-        data.rightMenuList = rightMenuList
-    }
     data.clickIndex = index
     data.rightClickType = 'group'
     openRightMenu(e)
@@ -462,36 +453,40 @@ function rightClickResources(e, index, childIndex) {
     data.rightClickType = 'resources'
     openRightMenu(e)
 }
-function rightClickStream(e, index) {
+function rightClickResourcesFolder(e, index) {
     data.rightMenuList = StreamMenu
     data.clickIndex = index
     data.rightClickType = 'group'
     openRightMenu(e)
 }
-function rightClickIndexRule(e, index) {
+function rightClickIndexRule(e, index, schema) {
     data.rightMenuList = indexRuleMenu
     data.clickIndex = index
     data.rightClickType = 'index-rule'
+    data.schema = schema
     openRightMenu(e)
 }
-function rightClickIndexRuleBinding(e, index) {
+function rightClickIndexRuleBinding(e, index, schema) {
     data.rightMenuList = indexRuleBindMenu
     data.clickIndex = index
     data.rightClickType = 'index-rule-binding'
+    data.schema = schema
     openRightMenu(e)
 }
-function rightClickIndexRuleItem(e, index, childIndex) {
+function rightClickIndexRuleItem(e, index, childIndex, schema) {
     data.rightMenuList = indexRuleItemMenu
     data.clickIndex = index
     data.clickChildIndex = childIndex
     data.rightClickType = 'index-rule'
+    data.schema = schema
     openRightMenu(e)
 }
-function rightClickIndexRuleBindingItem(e, index, childIndex) {
+function rightClickIndexRuleBindingItem(e, index, childIndex, schema) {
     data.rightMenuList = indexRuleBindingItemMenu
     data.clickIndex = index
     data.clickChildIndex = childIndex
     data.rightClickType = 'index-rule-binding'
+    data.schema = schema
     openRightMenu(e)
 }
 function openRightMenu(e) {
@@ -522,12 +517,12 @@ function stopPropagation(e) {
 // CRUD operator
 function openCreateIndexRuleOrIndexRuleBinding() {
     const route = {
-        name: `create-${data.rightClickType}`,
+        name: `${data.schema}-create-${data.rightClickType}`,
         params: {
             operator: 'create',
             group: data.groupLists[data.clickIndex].metadata.name,
-            name: '',
-            type: data.rightClickType
+            type: data.rightClickType,
+            schema: data.schema
         }
     }
     router.push(route)
@@ -546,14 +541,16 @@ function openEditIndexRuleOrIndexRuleBinding() {
         'index-rule-binding': 'indexRuleBinding'
     }
     const route = {
-        name: `edit-${data.rightClickType}`,
+        name: `${data.schema}-edit-${data.rightClickType}`,
         params: {
             operator: 'edit',
             group: data.groupLists[data.clickIndex].metadata.name,
             name: 
data.groupLists[data.clickIndex][typeFlag[data.rightClickType]][data.clickChildIndex].metadata.name,
-            type: data.rightClickType
+            type: data.rightClickType,
+            schema: data.schema
         }
     }
+    console.log(route)
     router.push(route)
     const add = {
         label: 
data.groupLists[data.clickIndex][typeFlag[data.rightClickType]][data.clickChildIndex].metadata.name,
@@ -562,7 +559,7 @@ function openEditIndexRuleOrIndexRuleBinding() {
     }
     $bus.emit('AddTabs', add)
 }
-function openIndexRuleOrIndexRuleBinding(index, childIndex, type) {
+function openIndexRuleOrIndexRuleBinding(index, childIndex, type, schema) {
     const typeFlag = {
         'indexRule': 'index-rule',
         'indexRuleBinding': 'index-rule-binding'
@@ -570,7 +567,7 @@ function openIndexRuleOrIndexRuleBinding(index, childIndex, 
type) {
     const group = data.groupLists[index][type][childIndex].metadata.group
     const name = data.groupLists[index][type][childIndex].metadata.name
     const route = {
-        name: `${typeFlag[type]}`,
+        name: `${schema}-${typeFlag[type]}`,
         params: {
             group: group,
             name: name,
@@ -905,8 +902,8 @@ initActiveMenu()
                                 {{ item.metadata.name }}
                             </span>
                         </template>
-                        <el-sub-menu v-if="props.type == 'stream'" 
:index="`${item.metadata.name}-${index}-index-rule`"
-                            @contextmenu.prevent="rightClickIndexRule($event, 
index)">
+                        <el-sub-menu 
:index="`${item.metadata.name}-${index}-index-rule`"
+                            @contextmenu.prevent="rightClickIndexRule($event, 
index, props.type)">
                             <template #title>
                                 <el-icon>
                                     <Folder />
@@ -916,8 +913,8 @@ initActiveMenu()
                                 </span>
                             </template>
                             <div v-for="(child, childIndex) in item.indexRule" 
:key="child.metadata.name">
-                                <div 
@contextmenu.prevent="rightClickIndexRuleItem($event, index, childIndex)">
-                                    <el-menu-item 
@click="openIndexRuleOrIndexRuleBinding(index, childIndex, 'indexRule')"
+                                <div 
@contextmenu.prevent="rightClickIndexRuleItem($event, index, childIndex, 
props.type)">
+                                    <el-menu-item 
@click="openIndexRuleOrIndexRuleBinding(index, childIndex, 'indexRule', 
props.type)"
                                         
:index="`${child.metadata.group}-${child.metadata.name}`">
                                         <template #title>
                                             <el-icon>
@@ -932,9 +929,9 @@ initActiveMenu()
                                 </div>
                             </div>
                         </el-sub-menu>
-                        <el-sub-menu v-if="props.type == 'stream'"
+                        <el-sub-menu
                             
:index="`${item.metadata.name}-${index}-index-rule-binding`"
-                            
@contextmenu.prevent="rightClickIndexRuleBinding($event, index)">
+                            
@contextmenu.prevent="rightClickIndexRuleBinding($event, index, props.type)">
                             <template #title>
                                 <el-icon>
                                     <Folder />
@@ -945,9 +942,9 @@ initActiveMenu()
                                 </span>
                             </template>
                             <div v-for="(child, childIndex) in 
item.indexRuleBinding" :key="child.metadata.name">
-                                <div 
@contextmenu.prevent="rightClickIndexRuleBindingItem($event, index, 
childIndex)">
+                                <div 
@contextmenu.prevent="rightClickIndexRuleBindingItem($event, index, childIndex, 
props.type)">
                                     <el-menu-item
-                                        
@click="openIndexRuleOrIndexRuleBinding(index, childIndex, 'indexRuleBinding')"
+                                        
@click="openIndexRuleOrIndexRuleBinding(index, childIndex, 'indexRuleBinding', 
props.type)"
                                         
:index="`${child.metadata.group}-${child.metadata.name}`">
                                         <template #title>
                                             <el-icon>
@@ -962,15 +959,18 @@ initActiveMenu()
                                 </div>
                             </div>
                         </el-sub-menu>
-                        <el-sub-menu v-if="props.type == 'stream'" 
@contextmenu.prevent="rightClickStream($event, index)"
+                        <el-sub-menu 
@contextmenu.prevent="rightClickResourcesFolder($event, index)"
                             :index="`${item.metadata.name}-${index}-stream`">
                             <template #title>
                                 <el-icon>
                                     <Folder />
                                 </el-icon>
-                                <span slot="title" title="Stream" 
style="width: 70%" class="text-overflow-hidden">
+                                <span v-if="props.type == 'stream'" 
slot="title" title="Stream" style="width: 70%" class="text-overflow-hidden">
                                     Stream
                                 </span>
+                                <span v-if="props.type == 'measure'" 
slot="title" title="Measure" style="width: 70%" class="text-overflow-hidden">
+                                    Measure
+                                </span>
                             </template>
                             <div v-for="(child, childIndex) in item.children" 
:key="child.metadata.name">
                                 <div 
@contextmenu.prevent="rightClickResources($event, index, childIndex)">
@@ -989,24 +989,6 @@ initActiveMenu()
                                 </div>
                             </div>
                         </el-sub-menu>
-                        <div v-if="props.type == 'measure'">
-                            <div v-for="(child, childIndex) in item.children" 
:key="child.metadata.name">
-                                <div 
@contextmenu.prevent="rightClickResources($event, index, childIndex)">
-                                    <el-menu-item 
:index="`${child.metadata.group}-${child.metadata.name}`"
-                                        @click="openResources(index, 
childIndex)">
-                                        <template #title>
-                                            <el-icon>
-                                                <Document />
-                                            </el-icon>
-                                            <span slot="title" 
:title="child.metadata.name" style="width: 90%"
-                                                class="text-overflow-hidden">
-                                                {{ child.metadata.name }}
-                                            </span>
-                                        </template>
-                                    </el-menu-item>
-                                </div>
-                            </div>
-                        </div>
                         <!-- <div v-if="props.type == 'property'">
                             <div v-for="(child, childIndex) in item.children" 
:key="child.metadata.id">
                                 <div 
@contextmenu.prevent="rightClickResources($event, index, childIndex)">
diff --git a/ui/src/components/IndexRule/Editor.vue 
b/ui/src/components/IndexRule/Editor.vue
index 5e0a575f..bb315ac4 100644
--- a/ui/src/components/IndexRule/Editor.vue
+++ b/ui/src/components/IndexRule/Editor.vue
@@ -114,6 +114,7 @@ const data = reactive({
   name: route.params.name,
   type: route.params.type,
   operator: route.params.operator,
+  schema: route.params.schema,
   form: {
     group: route.params.group,
     name: route.params.name || '',
@@ -138,6 +139,7 @@ watch(() => route, () => {
   data.name = route.params.name
   data.type = route.params.type
   data.operator = route.params.operator
+  data.schema = route.params.schema
   initData()
 }, {
   immediate: true,
@@ -215,7 +217,7 @@ const submit = async (formEl: FormInstance | undefined) => {
 
 function openIndexRule() {
   const route = {
-    name: data.type + '',
+    name: data.schema + '-' + data.type,
     params: {
       group: data.form.group,
       name: data.form.name,
diff --git a/ui/src/components/IndexRuleBinding/Editor.vue 
b/ui/src/components/IndexRuleBinding/Editor.vue
index b8ce515d..c1d1a8ad 100644
--- a/ui/src/components/IndexRuleBinding/Editor.vue
+++ b/ui/src/components/IndexRuleBinding/Editor.vue
@@ -53,6 +53,7 @@ const data = reactive({
   name: route.params.name,
   type: route.params.type,
   operator: route.params.operator,
+  schema: route.params.schema,
   form: {
     group: route.params.group,
     name: route.params.name || '',
@@ -75,6 +76,7 @@ watch(() => route, () => {
   data.name = route.params.name
   data.type = route.params.type
   data.operator = route.params.operator
+  data.schema = route.params.schema,
   initData()
 }, {
   immediate: true,
@@ -155,7 +157,7 @@ const submit = async (formEl: FormInstance | undefined) => {
 
 function openIndexRuleBinding() {
   const route = {
-    name: data.type + '',
+    name: data.schema + '-' + data.type,
     params: {
       group: data.form.group,
       name: data.form.name,
diff --git a/ui/src/router/index.js b/ui/src/router/index.js
index 490b4d02..3fe76665 100644
--- a/ui/src/router/index.js
+++ b/ui/src/router/index.js
@@ -72,32 +72,32 @@ const router = createRouter({
             },
             {
               path: 
'/banyandb/stream/index-rule/operator-read/:type/:operator/:group/:name',
-              name: 'index-rule',
+              name: 'stream-index-rule',
               component: () => import('@/components/IndexRule/index.vue')
             },
             {
-              path: 
'/banyandb/stream/index-rule/operator-create/:type/:operator/:group',
-              name: 'create-index-rule',
+              path: 
'/banyandb/:schema/index-rule/operator-create/:type/:operator/:group',
+              name: 'stream-create-index-rule',
               component: () => import('@/components/IndexRule/Editor.vue')
             },
             {
-              path: 
'/banyandb/stream/index-rule/operator-edit/:type/:operator/:group/:name',
-              name: 'edit-index-rule',
+              path: 
'/banyandb/:schema/index-rule/operator-edit/:type/:operator/:group/:name',
+              name: 'stream-edit-index-rule',
               component: () => import('@/components/IndexRule/Editor.vue')
             },
             {
               path: 
'/banyandb/stream/index-rule-binding/operator-read/:type/:operator/:group/:name',
-              name: 'index-rule-binding',
+              name: 'stream-index-rule-binding',
               component: () => 
import('@/components/IndexRuleBinding/index.vue')
             },
             {
-              path: 
'/banyandb/stream/index-rule-binding/operator-create/:type/:operator/:group',
-              name: 'create-index-rule-binding',
+              path: 
'/banyandb/:schema/index-rule-binding/operator-create/:type/:operator/:group',
+              name: 'stream-create-index-rule-binding',
               component: () => 
import('@/components/IndexRuleBinding/Editor.vue')
             },
             {
-              path: 
'/banyandb/stream/index-rule-binding/operator-edit/:type/:operator/:group/:name',
-              name: 'edit-index-rule-binding',
+              path: 
'/banyandb/:schema/index-rule-binding/operator-edit/:type/:operator/:group/:name',
+              name: 'stream-edit-index-rule-binding',
               component: () => 
import('@/components/IndexRuleBinding/Editor.vue')
             }
           ]
@@ -130,6 +130,36 @@ const router = createRouter({
               path: 
'/banyandb/measure/operator-edit/:type/:operator/:group/:name',
               name: 'edit-measure',
               component: () => import('@/views/Stream/createEdit.vue')
+            },
+            {
+              path: 
'/banyandb/measure/index-rule/operator-read/:type/:operator/:group/:name',
+              name: 'measure-index-rule',
+              component: () => import('@/components/IndexRule/index.vue')
+            },
+            {
+              path: 
'/banyandb/:schema/index-rule/operator-create/:type/:operator/:group',
+              name: 'measure-create-index-rule',
+              component: () => import('@/components/IndexRule/Editor.vue')
+            },
+            {
+              path: 
'/banyandb/:schema/index-rule/operator-edit/:type/:operator/:group/:name',
+              name: 'measure-edit-index-rule',
+              component: () => import('@/components/IndexRule/Editor.vue')
+            },
+            {
+              path: 
'/banyandb/measure/index-rule-binding/operator-read/:type/:operator/:group/:name',
+              name: 'measure-index-rule-binding',
+              component: () => 
import('@/components/IndexRuleBinding/index.vue')
+            },
+            {
+              path: 
'/banyandb/:schema/index-rule-binding/operator-create/:type/:operator/:group',
+              name: 'measure-create-index-rule-binding',
+              component: () => 
import('@/components/IndexRuleBinding/Editor.vue')
+            },
+            {
+              path: 
'/banyandb/:schema/index-rule-binding/operator-edit/:type/:operator/:group/:name',
+              name: 'measure-edit-index-rule-binding',
+              component: () => 
import('@/components/IndexRuleBinding/Editor.vue')
             }
           ]
         },

Reply via email to