From 7070a39a2097ec3f30e048d0f2e51902c3d77a1d Mon Sep 17 00:00:00 2001 From: sulmo Date: Fri, 7 Feb 2025 15:07:54 +0900 Subject: [PATCH] fix: add task management tab to cloud service detail view - Introduced a new "task" tab in the single and multi-item views. - Integrated `BoardTaskTable` component for displaying tasks. - Utilized `useDisplayStore` and `useTaskManagementTemplateStore` for advanced services. Signed-off-by: sulmo --- .../components/CloudServiceDetailTabs.vue | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/apps/web/src/services/asset-inventory-v1/components/CloudServiceDetailTabs.vue b/apps/web/src/services/asset-inventory-v1/components/CloudServiceDetailTabs.vue index 768ff11ab4..777436dd77 100644 --- a/apps/web/src/services/asset-inventory-v1/components/CloudServiceDetailTabs.vue +++ b/apps/web/src/services/asset-inventory-v1/components/CloudServiceDetailTabs.vue @@ -6,7 +6,7 @@ import { get } from 'lodash'; import { SpaceConnector } from '@cloudforet/core-lib/space-connector'; import { - PDynamicLayout, PTab, PEmpty, PTextButton, PI, + PDynamicLayout, PTab, PEmpty, PTextButton, PI, PHeading, } from '@cloudforet/mirinae'; import type { DynamicLayoutFieldHandler } from '@cloudforet/mirinae/types/data-display/dynamic/dynamic-layout/type'; @@ -15,10 +15,12 @@ import type { CloudServiceGetParameters } from '@/schema/inventory/cloud-service import type { CloudServiceModel } from '@/schema/inventory/cloud-service/model'; import { i18n } from '@/translations'; +import { useDisplayStore } from '@/store/display/display-store'; import { useDomainStore } from '@/store/domain/domain-store'; import { useAllReferenceStore } from '@/store/reference/all-reference-store'; import config from '@/lib/config'; +import { MENU_ID } from '@/lib/menu/config'; import type { Reference } from '@/lib/reference/type'; @@ -40,6 +42,10 @@ import CloudServiceLogTab import CloudServiceTagsPanel from '@/services/asset-inventory-v1/components/CloudServiceTagsPanel.vue'; import { ASSET_INVENTORY_ROUTE_V1 } from '@/services/asset-inventory-v1/routes/route-constant'; +import BoardTaskTable from '@/services/ops-flow/components/BoardTaskTable.vue'; +import { + useTaskManagementTemplateStore, +} from '@/services/ops-flow/task-management-templates/stores/use-task-management-template-store'; import { PROJECT_ROUTE } from '@/services/project/routes/route-constant'; interface Props { @@ -59,6 +65,8 @@ const isAlertManagerVersionV2 = (config.get('ADVANCED_SERVICE')?.alert_manager_v const allReferenceStore = useAllReferenceStore(); const allReferenceGetters = allReferenceStore.getters; +const displayStore = useDisplayStore(); +const taskManagementTemplateStore = useTaskManagementTemplateStore(); const router = useRouter(); @@ -80,16 +88,25 @@ const singleItemTabState = reactive({ if (isAlertManagerVersionV2) { defaultTabs.push({ name: 'alerts', label: i18n.t('INVENTORY.CLOUD_SERVICE.PAGE.TAB_ALERTS') }); } + if (displayStore.getters.availableAdvancedServices[MENU_ID.OPS_FLOW]) { + defaultTabs.push({ name: 'task', label: taskManagementTemplateStore.templates.Task }); + } return defaultTabs; }), activeTab: 'detail', }); const multiItemTabState = reactive({ - tabs: computed(() => ([ - { name: 'data', label: i18n.t('INVENTORY.CLOUD_SERVICE.PAGE.TAB_SELECTED_DATA') }, - { name: 'monitoring', label: i18n.t('INVENTORY.CLOUD_SERVICE.PAGE.TAB_MONITORING') }, - ])), + tabs: computed(() => { + const defaultTabs = [ + { name: 'data', label: i18n.t('INVENTORY.CLOUD_SERVICE.PAGE.TAB_SELECTED_DATA') }, + { name: 'monitoring', label: i18n.t('INVENTORY.CLOUD_SERVICE.PAGE.TAB_MONITORING') }, + ]; + if (displayStore.getters.availableAdvancedServices[MENU_ID.OPS_FLOW]) { + defaultTabs.push({ name: 'task', label: taskManagementTemplateStore.templates.Task }); + } + return defaultTabs; + }), activeTab: 'data', }); @@ -176,6 +193,17 @@ const monitoringState: MonitoringProps = reactive({ :cloud-service-id="tableState.selectedCloudServiceIds[0]" /> + +