refactor(vimp组件树): 提取默认展开逻辑为计算属性
统一告警树和摄像头树的展开行为,当搜索关键词不为空时自动展开所有节点,移除重复的内联计算代码,提升代码可维护性
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { NIcon, NTabPane, NTabs, NTree, type TreeOverrideNodeClickBehavior, type TreeProps } from 'naive-ui';
|
||||
import { h, type CSSProperties } from 'vue';
|
||||
import { computed, h, type CSSProperties } from 'vue';
|
||||
import { useAlarmStore, useResourcePanelStore } from '../stores';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { useChannelsQuery } from '../composables';
|
||||
@@ -99,6 +99,8 @@ const renderNodeSuffix: TreeProps['renderSuffix'] = ({ option }) => {
|
||||
const resourcePanelStore = useResourcePanelStore();
|
||||
const { searchPattern } = storeToRefs(resourcePanelStore);
|
||||
|
||||
const defaultExpandAll = computed(() => searchPattern.value.trim().length > 0);
|
||||
|
||||
const searchFilter: TreeProps['filter'] = (pattern, node) => {
|
||||
if (!isAlarmNode(node)) return false;
|
||||
return node.alarm.name.includes(pattern);
|
||||
@@ -119,7 +121,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
|
||||
:render-label="renderNodeLabel"
|
||||
:render-suffix="renderNodeSuffix"
|
||||
:override-default-node-click-behavior="overrideNodeClickBehavior"
|
||||
:default-expand-all="searchPattern.trim().length > 0"
|
||||
:default-expand-all="defaultExpandAll"
|
||||
:show-irrelevant-nodes="false"
|
||||
:data="lineTabPanes.at(0)?.alarmTree"
|
||||
:pattern="searchPattern"
|
||||
@@ -156,7 +158,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
|
||||
:render-label="renderNodeLabel"
|
||||
:render-suffix="renderNodeSuffix"
|
||||
:override-default-node-click-behavior="overrideNodeClickBehavior"
|
||||
:default-expand-all="false"
|
||||
:default-expand-all="defaultExpandAll"
|
||||
:show-irrelevant-nodes="false"
|
||||
:data="alarmTree"
|
||||
:pattern="searchPattern"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { NIcon, NTabPane, NTabs, NTree, type TreeOverrideNodeClickBehavior, type TreeProps } from 'naive-ui';
|
||||
import { h, type CSSProperties } from 'vue';
|
||||
import { computed, h, type CSSProperties } from 'vue';
|
||||
import { useCameraStore, useResourcePanelStore } from '../stores';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { useChannelsQuery } from '../composables';
|
||||
@@ -102,6 +102,8 @@ const renderNodeSuffix: TreeProps['renderSuffix'] = ({ option }) => {
|
||||
const resourcePanelStore = useResourcePanelStore();
|
||||
const { searchPattern } = storeToRefs(resourcePanelStore);
|
||||
|
||||
const defaultExpandAll = computed(() => searchPattern.value.trim().length > 0);
|
||||
|
||||
const searchFilter: TreeProps['filter'] = (pattern, node) => {
|
||||
if (!isCameraNode(node)) return false;
|
||||
return node.camera.name.includes(pattern);
|
||||
@@ -122,7 +124,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
|
||||
:render-label="renderNodeLabel"
|
||||
:render-suffix="renderNodeSuffix"
|
||||
:override-default-node-click-behavior="overrideNodeClickBehavior"
|
||||
:default-expand-all="searchPattern.trim().length > 0"
|
||||
:default-expand-all="defaultExpandAll"
|
||||
:show-irrelevant-nodes="false"
|
||||
:data="lineTabPanes.at(0)?.cameraTree"
|
||||
:pattern="searchPattern"
|
||||
@@ -159,7 +161,7 @@ const searchFilter: TreeProps['filter'] = (pattern, node) => {
|
||||
:render-label="renderNodeLabel"
|
||||
:render-suffix="renderNodeSuffix"
|
||||
:override-default-node-click-behavior="overrideNodeClickBehavior"
|
||||
:default-expand-all="false"
|
||||
:default-expand-all="defaultExpandAll"
|
||||
:show-irrelevant-nodes="false"
|
||||
:data="cameraTree"
|
||||
:pattern="searchPattern"
|
||||
|
||||
Reference in New Issue
Block a user