diff --git a/apps/web/src/api-clients/cost-analysis/budget/schema/api-verbs/create.ts b/apps/web/src/api-clients/cost-analysis/budget/schema/api-verbs/create.ts index fcd2ec3583..1f4083e1ab 100644 --- a/apps/web/src/api-clients/cost-analysis/budget/schema/api-verbs/create.ts +++ b/apps/web/src/api-clients/cost-analysis/budget/schema/api-verbs/create.ts @@ -21,5 +21,4 @@ export interface BudgetCreateParameters { project_id?: string; service_account_id?: string; budget_manager_id?: string; - budget_year?: string; } diff --git a/apps/web/src/api-clients/cost-analysis/budget/schema/model.ts b/apps/web/src/api-clients/cost-analysis/budget/schema/model.ts index a1973e32ae..0914af4cf6 100644 --- a/apps/web/src/api-clients/cost-analysis/budget/schema/model.ts +++ b/apps/web/src/api-clients/cost-analysis/budget/schema/model.ts @@ -4,6 +4,7 @@ import type { ResourceGroupType } from '@/api-clients/_common/schema/type'; import type { BudgetNotification, BudgetPlannedLimit, + BudgetState, BudgetTimeUnit, } from '@/api-clients/cost-analysis/budget/schema/type'; @@ -29,7 +30,7 @@ export interface BudgetModel { domain_id: string; created_at: string; updated_at: string; - budget_year: string; notified_month: string; utilization_rate: number; + state: BudgetState; } diff --git a/apps/web/src/api-clients/cost-analysis/budget/schema/type.ts b/apps/web/src/api-clients/cost-analysis/budget/schema/type.ts index 7c2ad9e8ba..ad24146ebc 100644 --- a/apps/web/src/api-clients/cost-analysis/budget/schema/type.ts +++ b/apps/web/src/api-clients/cost-analysis/budget/schema/type.ts @@ -1,4 +1,5 @@ export type BudgetTimeUnit = 'MONTHLY' | 'TOTAL'; +export type BudgetState = 'ACTIVE' | 'SCHEDULED' | 'EXPIRED'; type BudgetNotificationUnit = 'PERCENT'; type BudgetNotificationState = 'ENABLED' | 'DISABLED'; diff --git a/apps/web/src/common/modules/user/UserSelectDropdown.vue b/apps/web/src/common/modules/user/UserSelectDropdown.vue index cb3faf3f51..0abee8f4d3 100644 --- a/apps/web/src/common/modules/user/UserSelectDropdown.vue +++ b/apps/web/src/common/modules/user/UserSelectDropdown.vue @@ -54,6 +54,7 @@ const props = withDefaults(defineProps<{ excludedSelectedIds?: string[]; size?: 'sm'|'md'; pageSize?: number; + showDeleteAllButton?: boolean; }>(), { selectedId: undefined, selectedIds: undefined, @@ -75,6 +76,7 @@ const props = withDefaults(defineProps<{ excludedSelectedIds: undefined, size: 'md', pageSize: 10, + showDeleteAllButton: true, }); const emit = defineEmits<{(event: 'update:selected-id', value?: string): void; @@ -273,7 +275,7 @@ watch([() => props.selectedId, () => props.selectedIds], ([newUserId, newUserIds { ...budgetPageState.budgetData?.notification, state: !props.budgetOnOffValue ? 'ENABLED' : 'DISABLED', }, - }); + }, 'budgetAlert'); } catch (error) { ErrorHandler.handleError(error); } diff --git a/apps/web/src/services/cost-explorer/components/BudgetCreateManagerSelect.vue b/apps/web/src/services/cost-explorer/components/BudgetCreateManagerSelect.vue index e91c20342e..1b75cffb2c 100644 --- a/apps/web/src/services/cost-explorer/components/BudgetCreateManagerSelect.vue +++ b/apps/web/src/services/cost-explorer/components/BudgetCreateManagerSelect.vue @@ -10,7 +10,7 @@ import type { ServiceAccountModel } from '@/api-clients/identity/service-account import ErrorHandler from '@/common/composables/error/errorHandler'; import UserSelectDropdown from '@/common/modules/user/UserSelectDropdown.vue'; -import { useBudgetCreatePageStore } from '../stores/budget-create-page-store'; +import { useBudgetCreatePageStore } from '@/services/cost-explorer/stores/budget-create-page-store'; const budgetCreatePageStore = useBudgetCreatePageStore(); const budgetCreatePageState = budgetCreatePageStore.state; @@ -53,6 +53,7 @@ watch(() => budgetCreatePageState.scope.serviceAccount, async () => { show-user-list :show-user-group-list="false" :selected-id="budgetCreatePageState.budgetManager" + :show-delete-all-button="false" @update:selected-id="handleSelectId" @formatted-selected-ids="handleFormatBudgetManager" /> diff --git a/apps/web/src/services/cost-explorer/components/BudgetCreateScopeSelect.vue b/apps/web/src/services/cost-explorer/components/BudgetCreateScopeSelect.vue index 5029d4b34f..39e6134bf9 100644 --- a/apps/web/src/services/cost-explorer/components/BudgetCreateScopeSelect.vue +++ b/apps/web/src/services/cost-explorer/components/BudgetCreateScopeSelect.vue @@ -20,7 +20,7 @@ import { useAllReferenceStore } from '@/store/reference/all-reference-store'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import { useBudgetCreatePageStore } from '../stores/budget-create-page-store'; +import { useBudgetCreatePageStore } from '@/services/cost-explorer/stores/budget-create-page-store'; const allReferenceStore = useAllReferenceStore(); const budgetCreatePageStore = useBudgetCreatePageStore(); @@ -39,7 +39,6 @@ const state = reactive({ serviceAccountList: [] as string[], existingServiceAccountIds: [], refinedServiceAccountList: computed(() => state.serviceAccountList - .filter((serviceAccountId) => state.existingServiceAccountIds?.length > 0 && !state.existingServiceAccountIds.includes(serviceAccountId)) .map((serviceAccountId) => ({ name: serviceAccountId, label: serviceAccount.value[serviceAccountId].label, diff --git a/apps/web/src/services/cost-explorer/components/BudgetCreateStep1.vue b/apps/web/src/services/cost-explorer/components/BudgetCreateStep1.vue index 0a4b6d5361..3b91cc8050 100644 --- a/apps/web/src/services/cost-explorer/components/BudgetCreateStep1.vue +++ b/apps/web/src/services/cost-explorer/components/BudgetCreateStep1.vue @@ -23,9 +23,9 @@ import type { ProjectReferenceMap } from '@/store/reference/project-reference-st import ErrorHandler from '@/common/composables/error/errorHandler'; import ProjectSelectDropdown from '@/common/modules/project/ProjectSelectDropdown.vue'; -import { useBudgetCreatePageStore } from '../stores/budget-create-page-store'; -import BudgetCreateManagerSelect from './BudgetCreateManagerSelect.vue'; -import BudgetCreateScopeSelect from './BudgetCreateScopeSelect.vue'; +import BudgetCreateManagerSelect from '@/services/cost-explorer/components/BudgetCreateManagerSelect.vue'; +import BudgetCreateScopeSelect from '@/services/cost-explorer/components/BudgetCreateScopeSelect.vue'; +import { useBudgetCreatePageStore } from '@/services/cost-explorer/stores/budget-create-page-store'; const budgetCreatePageStore = useBudgetCreatePageStore(); @@ -149,22 +149,6 @@ watch(() => budgetCreatePageState.project, async () => { watchEffect(async () => { await fetchBudget(); }); - -watch([ - () => state.budgetList, - () => budgetCreatePageState.project, - () => budgetCreatePageState.scope.serviceAccount, - () => budgetCreatePageState.scope.type, -], () => { - const filteredList = state.budgetList.filter((result) => { - if (budgetCreatePageState.scope.type === 'project') { - return result.project_id === budgetCreatePageState.project && !result.service_account_id; - } - return result.project_id === budgetCreatePageState.project - && result.service_account_id === budgetCreatePageState.scope.serviceAccount; - }); - budgetCreatePageState.alreadyExistingBudgetYear = filteredList.map((result) => result.budget_year); -}, { deep: true, immediate: true });