diff --git a/.cursor/rules/generate-new-api-clients.mdc b/.cursor/rules/generate-new-api-clients.mdc new file mode 100644 index 0000000000..7c96c427ac --- /dev/null +++ b/.cursor/rules/generate-new-api-clients.mdc @@ -0,0 +1,140 @@ +--- +description: +globs: +alwaysApply: false +--- + + +## Directory Structure +``` +api-clients/ +├── _common/ +│ ├── composables/ +│ │ └── use-api-query-key.ts +│ └── schema/ +│ ├── api-verbs/ +│ └── model.ts +└── {service-name}/ + ├── {resource}/ + │ ├── composables/ + │ │ └── use-{resource}-api.ts + │ └── schema/ + │ ├── api-verbs/ + │ │ ├── {verb}.ts + │ └── model.ts + └── index.ts +``` + +## API Client Composable Template +```typescript +// use-{resource}-api.ts template +import { SpaceConnector } from '@cloudforet/core-lib/space-connector'; + +import { useAPIQueryKey } from '@/api-clients/_common/composables/use-api-query-key'; +import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list'; +import type { {Resource}CreateParameters } from '@/api-clients/{service}/{resource}/schema/api-verbs/create'; +import type { {Resource}Model } from '@/api-clients/{service}/{resource}/schema/model'; + +export const use{Resource}Api = () => { + // Define API actions + const actions = { + create: SpaceConnector.clientV2.{service}.{resource}.create<{Resource}CreateParameters, {Resource}Model>, + list: SpaceConnector.clientV2.{service}.{resource}.list<{Resource}ListParameters, ListResponse<{Resource}Model>>, + // ... other actions + }; + + return { + {resource}QueryKey, + {resource}ListQueryKey, + {resource}API: actions, + }; +}; +``` + +## Schema Templates + +### Model Definition +```typescript +// model.ts template +export interface {Resource}Model { + // Define resource properties + resource_id: string; + name: string; + // ... other properties +} +``` + +### API Verb Parameters +```typescript +// create.ts template +export interface {Resource}CreateParameters { + // Define create operation parameters + name: string; + // ... other parameters +} + +// list.ts template +export interface {Resource}ListParameters { + query?: { + filter?: Array<{ + k: string; + v: any; + o: string; + }>; + // ... other query parameters + }; +} +``` + +## Usage Rules + +1. **Naming Conventions** + - Use PascalCase for interface names: `{Resource}Model`, `{Resource}{Verb}Parameters` + - Use camelCase for variables and functions: `use{Resource}Api` + - Follow existing naming patterns in the codebase + +2. **Type Safety** + - Always define proper TypeScript interfaces for all parameters and responses + - Use generics with SpaceConnector client methods + - Define all possible API parameters in schema files + +3. **Query Key Management** + - Use `useAPIQueryKey` for generating consistent query keys + - Create separate query keys for different operations + - Include contextual information in query keys when needed + +4. **Code Organization** + - Keep schema definitions separate from API logic + - Group related files in appropriate directories + - Follow the established directory structure + +5. **Documentation** + - Add JSDoc comments for public interfaces and functions + - Document any special behaviors or requirements + - Include examples for complex parameter structures + +## Example Usage in Components +```typescript +const { {resource}API } = use{Resource}Api(); + +const { key, params } = useServiceKey(service, resource, verb, { + params: ... +}) + +// In composables +const query = useScopedQuery({ + queryKey: {resource}QueryKey.value, + queryFn: () => {resource}API.{verb}(params.value), + // ... other options +}, ['WORKSPACE', 'ADMIN']); +``` + +## Notes +- Always check existing API clients for consistent patterns +- Consider reusability and maintainability +- Follow the service's API documentation for accurate parameter definitions +- Use appropriate error handling and loading states +- Consider implementing proper caching strategies +- Add comments only when it is really complex. (English only) + + diff --git a/.gitignore b/.gitignore index 49eba67df9..66fa09c87b 100755 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,10 @@ node_modules.nosync/ *.swp *.bak +## Cursor rules : Ignore all files in .cursor directory except specific file (rules) +.cursor/* +!.cursor/generate-new-api-clients.mdc + # Turborepo .turbo out/ diff --git a/apps/web/src/api-clients/_common/constants/api-doc-constant.ts b/apps/web/src/api-clients/_common/constants/api-doc-constant.ts index 91b5b092a1..503f2701bc 100644 --- a/apps/web/src/api-clients/_common/constants/api-doc-constant.ts +++ b/apps/web/src/api-clients/_common/constants/api-doc-constant.ts @@ -376,6 +376,11 @@ export const API_DOC = { 'list', ], }, + inventory: { + 'metric-data': [ + 'analyze', + ], + }, opsflow: { comment: [ 'create', diff --git a/apps/web/src/api-clients/cost-analysis/cost-report-config/composables/use-cost-report-config-api.ts b/apps/web/src/api-clients/cost-analysis/cost-report-config/composables/use-cost-report-config-api.ts index e69de29bb2..8f4839086a 100644 --- a/apps/web/src/api-clients/cost-analysis/cost-report-config/composables/use-cost-report-config-api.ts +++ b/apps/web/src/api-clients/cost-analysis/cost-report-config/composables/use-cost-report-config-api.ts @@ -0,0 +1,29 @@ +import { SpaceConnector } from '@cloudforet/core-lib/space-connector'; + +import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list'; +import type { CostReportConfigListParameters } from '@/api-clients/cost-analysis/cost-report-config/schema/api-verbs/list'; +import type { CostReportConfigUpdateParameters } from '@/api-clients/cost-analysis/cost-report-config/schema/api-verbs/update'; +import type { CostReportConfigModel } from '@/api-clients/cost-analysis/cost-report-config/schema/model'; + + +interface UseCostReportConfigApiReturn { + costReportConfigAPI: { + update: (params: CostReportConfigUpdateParameters) => Promise; + list: (params: CostReportConfigListParameters) => Promise>; + } +} + +export const useCostReportConfigApi = (): UseCostReportConfigApiReturn => { + const actions = { + async update(params: CostReportConfigUpdateParameters) { + return SpaceConnector.clientV2.costAnalysis.costReportConfig.update(params); + }, + async list(params: CostReportConfigListParameters) { + return SpaceConnector.clientV2.costAnalysis.costReportConfig.list>(params); + }, + }; + + return { + costReportConfigAPI: actions, + }; +}; diff --git a/apps/web/src/api-clients/cost-analysis/data-source/composables/use-data-source-api.ts b/apps/web/src/api-clients/cost-analysis/data-source/composables/use-data-source-api.ts index e69de29bb2..94eff42640 100644 --- a/apps/web/src/api-clients/cost-analysis/data-source/composables/use-data-source-api.ts +++ b/apps/web/src/api-clients/cost-analysis/data-source/composables/use-data-source-api.ts @@ -0,0 +1,38 @@ +import { SpaceConnector } from '@cloudforet/core-lib/space-connector'; + +import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list'; +import type { CostDataSourceGetParameters } from '@/api-clients/cost-analysis/data-source/schema/api-verbs/get'; +import type { CostDataSourceListParameters } from '@/api-clients/cost-analysis/data-source/schema/api-verbs/list'; +import type { CostDataSourceSyncParameters } from '@/api-clients/cost-analysis/data-source/schema/api-verbs/sync'; +import type { CostDataSourceUpdatePermissionsParameters } from '@/api-clients/cost-analysis/data-source/schema/api-verbs/update-permissions'; +import type { CostDataSourceModel } from '@/api-clients/cost-analysis/data-source/schema/model'; + +interface UseDataSourceApiReturn { + dataSourceAPI: { + get: (params: CostDataSourceGetParameters) => Promise; + list: (params: CostDataSourceListParameters) => Promise>; + sync: (params: CostDataSourceSyncParameters) => Promise; + updatePermissions: (params: CostDataSourceUpdatePermissionsParameters) => Promise; + } +} + +export const useDataSourceApi = (): UseDataSourceApiReturn => { + const actions = { + async get(params: CostDataSourceGetParameters) { + return SpaceConnector.clientV2.costAnalysis.dataSource.get(params); + }, + async list(params: CostDataSourceListParameters) { + return SpaceConnector.clientV2.costAnalysis.dataSource.list>(params); + }, + async sync(params: CostDataSourceSyncParameters) { + return SpaceConnector.clientV2.costAnalysis.dataSource.sync(params); + }, + async updatePermissions(params: CostDataSourceUpdatePermissionsParameters) { + return SpaceConnector.clientV2.costAnalysis.dataSource.updatePermissions(params); + }, + }; + + return { + dataSourceAPI: actions, + }; +}; diff --git a/apps/web/src/api-clients/cost-analysis/unified-cost/composables/use-unified-cost-api.ts b/apps/web/src/api-clients/cost-analysis/unified-cost/composables/use-unified-cost-api.ts index e69de29bb2..289e9d7da3 100644 --- a/apps/web/src/api-clients/cost-analysis/unified-cost/composables/use-unified-cost-api.ts +++ b/apps/web/src/api-clients/cost-analysis/unified-cost/composables/use-unified-cost-api.ts @@ -0,0 +1,20 @@ +import { SpaceConnector } from '@cloudforet/core-lib/space-connector'; + +import type { AnalyzeResponse } from '@/api-clients/_common/schema/api-verbs/analyze'; +import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list'; +import type { UnifiedCostAnalyzeParameters } from '@/api-clients/cost-analysis/unified-cost/schema/api-verbs/analyze'; +import type { UnifiedCostListParameters } from '@/api-clients/cost-analysis/unified-cost/schema/api-verbs/list'; +import type { UnifiedCostStatParameters } from '@/api-clients/cost-analysis/unified-cost/schema/api-verbs/stat'; +import type { UnifiedCostModel } from '@/api-clients/cost-analysis/unified-cost/schema/model'; + +export const useUnifiedCostApi = () => { + const actions = { + analyze: SpaceConnector.clientV2.costAnalysis.unifiedCost.analyze>, + list: SpaceConnector.clientV2.costAnalysis.unifiedCost.list>, + stat: SpaceConnector.clientV2.costAnalysis.unifiedCost.stat, + }; + + return { + unifiedCostAPI: actions, + }; +}; diff --git a/apps/web/src/api-clients/dashboard/_types/dashboard-global-variable-type.ts b/apps/web/src/api-clients/dashboard/_types/dashboard-global-variable-type.ts index ca49e1e6bd..5716aa7e17 100644 --- a/apps/web/src/api-clients/dashboard/_types/dashboard-global-variable-type.ts +++ b/apps/web/src/api-clients/dashboard/_types/dashboard-global-variable-type.ts @@ -1,6 +1,4 @@ // Base Model -import type { GLOBAL_VARIABLE_FILTER_TYPE_MAP } from '@/services/dashboards/constants/dashboard-global-variable'; - interface DashboardGlobalVariableBase { key: string; // new_variable name: string; // New Variable @@ -79,4 +77,3 @@ export type DashboardGlobalVariable = -export type GlobalVariableFilterType = keyof typeof GLOBAL_VARIABLE_FILTER_TYPE_MAP; diff --git a/apps/web/src/api-clients/dashboard/_types/dashboard-type.ts b/apps/web/src/api-clients/dashboard/_types/dashboard-type.ts index c3f990a0f2..2bef51f950 100644 --- a/apps/web/src/api-clients/dashboard/_types/dashboard-type.ts +++ b/apps/web/src/api-clients/dashboard/_types/dashboard-type.ts @@ -13,6 +13,7 @@ import type { PrivateDashboardGetParameters } from '@/api-clients/dashboard/priv import type { PrivateDashboardListParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/list'; import type { PrivateDashboardUpdateParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/update'; import type { PrivateDashboardModel } from '@/api-clients/dashboard/private-dashboard/schema/model'; +import type { PrivateFolderModel } from '@/api-clients/dashboard/private-folder/schema/model'; import type { PublicDashboardChangeFolderParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/change-folder'; import type { PublicDashboardCreateParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/create'; import type { PublicDashboardDeleteParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/delete'; @@ -20,16 +21,19 @@ import type { PublicDashboardGetParameters } from '@/api-clients/dashboard/publi import type { PublicDashboardListParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/list'; import type { PublicDashboardUpdateParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/update'; import type { PublicDashboardModel } from '@/api-clients/dashboard/public-dashboard/schema/model'; +import type { PublicFolderModel } from '@/api-clients/dashboard/public-folder/schema/model'; import type { VariableModelType } from '@/lib/variable-models'; import type { Value } from '@/lib/variable-models/_base/types'; + export type DashboardType = typeof DASHBOARD_TYPE[keyof typeof DASHBOARD_TYPE]; export type DashboardFolderType = 'PUBLIC'|'PRIVATE'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore export type DashboardModel = PublicDashboardModel | PrivateDashboardModel; +export type DashboardFolderModel = PublicFolderModel | PrivateFolderModel; export type DashboardCreateParams = PublicDashboardCreateParameters | PrivateDashboardCreateParameters; export type DashboardChangeFolderParams = PublicDashboardChangeFolderParameters | PrivateDashboardChangeFolderParameters; export type DashboardListParams = PublicDashboardListParameters | PrivateDashboardListParameters; diff --git a/apps/web/src/api-clients/dashboard/private-dashboard/composables/use-private-dashboard-api.ts b/apps/web/src/api-clients/dashboard/private-dashboard/composables/use-private-dashboard-api.ts index a924164b67..1fbd09dea9 100644 --- a/apps/web/src/api-clients/dashboard/private-dashboard/composables/use-private-dashboard-api.ts +++ b/apps/web/src/api-clients/dashboard/private-dashboard/composables/use-private-dashboard-api.ts @@ -9,37 +9,15 @@ import type { PrivateDashboardListParameters } from '@/api-clients/dashboard/pri import type { PrivateDashboardUpdateParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/update'; import type { PrivateDashboardModel } from '@/api-clients/dashboard/private-dashboard/schema/model'; -interface UsePrivateDashboardApiReturn { - privateDashboardAPI: { - create: (params: PrivateDashboardCreateParameters) => Promise; - update: (params: PrivateDashboardUpdateParameters) => Promise; - changeFolder: (params: PrivateDashboardChangeFolderParameters) => Promise; - delete: (params: PrivateDashboardDeleteParameters) => Promise; - get: (params: PrivateDashboardGetParameters) => Promise; - list: (params: PrivateDashboardListParameters) => Promise>; - } -} -export const usePrivateDashboardApi = (): UsePrivateDashboardApiReturn => { +export const usePrivateDashboardApi = () => { const actions = { - async create(params: PrivateDashboardCreateParameters) { - return SpaceConnector.clientV2.dashboard.privateDashboard.create(params); - }, - async update(params: PrivateDashboardUpdateParameters) { - return SpaceConnector.clientV2.dashboard.privateDashboard.update(params); - }, - async changeFolder(params: PrivateDashboardChangeFolderParameters) { - return SpaceConnector.clientV2.dashboard.privateDashboard.changeFolder(params); - }, - async delete(params: PrivateDashboardDeleteParameters) { - return SpaceConnector.clientV2.dashboard.privateDashboard.delete(params); - }, - async get(params: PrivateDashboardGetParameters) { - return SpaceConnector.clientV2.dashboard.privateDashboard.get(params); - }, - async list(params: PrivateDashboardListParameters) { - return SpaceConnector.clientV2.dashboard.privateDashboard.list>(params); - }, + create: SpaceConnector.clientV2.dashboard.privateDashboard.create, + update: SpaceConnector.clientV2.dashboard.privateDashboard.update, + changeFolder: SpaceConnector.clientV2.dashboard.privateDashboard.changeFolder, + delete: SpaceConnector.clientV2.dashboard.privateDashboard.delete, + get: SpaceConnector.clientV2.dashboard.privateDashboard.get, + list: SpaceConnector.clientV2.dashboard.privateDashboard.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/private-dashboard/schema/api-verbs/list.ts b/apps/web/src/api-clients/dashboard/private-dashboard/schema/api-verbs/list.ts index 2656ae2b91..ab0ab87fd6 100644 --- a/apps/web/src/api-clients/dashboard/private-dashboard/schema/api-verbs/list.ts +++ b/apps/web/src/api-clients/dashboard/private-dashboard/schema/api-verbs/list.ts @@ -5,4 +5,5 @@ export interface PrivateDashboardListParameters { query?: Query; dashboard_id?: string; name?: string; + folder_id?: string; } diff --git a/apps/web/src/api-clients/dashboard/private-data-table/composables/use-private-data-table-api.ts b/apps/web/src/api-clients/dashboard/private-data-table/composables/use-private-data-table-api.ts index e6ecac6eb5..7cb4d1b861 100644 --- a/apps/web/src/api-clients/dashboard/private-data-table/composables/use-private-data-table-api.ts +++ b/apps/web/src/api-clients/dashboard/private-data-table/composables/use-private-data-table-api.ts @@ -11,41 +11,15 @@ import type { DataTableLoadParameters } from '@/api-clients/dashboard/public-dat import type { DataTableTransformParameters } from '@/api-clients/dashboard/public-data-table/schema/api-verbs/transform'; import type { DataTableUpdateParameters } from '@/api-clients/dashboard/public-data-table/schema/api-verbs/update'; -interface UsePrivateDataTableApiReturn { - privateDataTableAPI: { - add: (params: DataTableAddParameters) => Promise; - transform: (params: DataTableTransformParameters) => Promise; - update: (params: DataTableUpdateParameters) => Promise; - delete: (params: DataTableDeleteParameters) => Promise; - load: (params: DataTableLoadParameters) => Promise; - get: (params: DataTableGetParameters) => Promise; - list: (params: DataTableListParameters) => Promise>; - } -} - -export const usePrivateDataTableApi = (): UsePrivateDataTableApiReturn => { +export const usePrivateDataTableApi = () => { const action = { - async add(params: DataTableAddParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.add(params); - }, - async transform(params: DataTableTransformParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.transform(params); - }, - async update(params: DataTableUpdateParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.update(params); - }, - async delete(params: DataTableDeleteParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.delete(params); - }, - async load(params: DataTableLoadParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.load(params); - }, - async get(params: DataTableGetParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.get(params); - }, - async list(params: DataTableListParameters) { - return SpaceConnector.clientV2.dashboard.privateDataTable.list>(params); - }, + add: SpaceConnector.clientV2.dashboard.privateDataTable.add, + transform: SpaceConnector.clientV2.dashboard.privateDataTable.transform, + update: SpaceConnector.clientV2.dashboard.privateDataTable.update, + delete: SpaceConnector.clientV2.dashboard.privateDataTable.delete, + load: SpaceConnector.clientV2.dashboard.privateDataTable.load, + get: SpaceConnector.clientV2.dashboard.privateDataTable.get, + list: SpaceConnector.clientV2.dashboard.privateDataTable.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/private-folder/composables/use-private-folder-api.ts b/apps/web/src/api-clients/dashboard/private-folder/composables/use-private-folder-api.ts index 8dd0ac5f62..b4ec08100a 100644 --- a/apps/web/src/api-clients/dashboard/private-folder/composables/use-private-folder-api.ts +++ b/apps/web/src/api-clients/dashboard/private-folder/composables/use-private-folder-api.ts @@ -8,33 +8,14 @@ import type { PrivateFolderListParameters } from '@/api-clients/dashboard/privat import type { PrivateFolderUpdateParameters } from '@/api-clients/dashboard/private-folder/schema/api-verbs/update'; import type { PrivateFolderModel } from '@/api-clients/dashboard/private-folder/schema/model'; -interface UsePrivateFolderApiReturn { - privateFolderAPI: { - create: (params: PrivateFolderCreateParameters) => Promise; - update: (params: PrivateFolderUpdateParameters) => Promise; - delete: (params: PrivateFolderDeleteParameters) => Promise; - get: (params: PrivateFolderGetParameters) => Promise; - list: (params: PrivateFolderListParameters) => Promise>; - }; -} -export const usePrivateFolderApi = (): UsePrivateFolderApiReturn => { +export const usePrivateFolderApi = () => { const action = { - async create(params: PrivateFolderCreateParameters) { - return SpaceConnector.clientV2.dashboard.privateFolder.create(params); - }, - async update(params: PrivateFolderUpdateParameters) { - return SpaceConnector.clientV2.dashboard.privateFolder.update(params); - }, - async delete(params: PrivateFolderDeleteParameters) { - return SpaceConnector.clientV2.dashboard.privateFolder.delete(params); - }, - async get(params: PrivateFolderGetParameters) { - return SpaceConnector.clientV2.dashboard.privateFolder.get(params); - }, - async list(params: PrivateFolderListParameters) { - return SpaceConnector.clientV2.dashboard.privateFolder.list>(params); - }, + create: SpaceConnector.clientV2.dashboard.privateFolder.create, + update: SpaceConnector.clientV2.dashboard.privateFolder.update, + delete: SpaceConnector.clientV2.dashboard.privateFolder.delete, + get: SpaceConnector.clientV2.dashboard.privateFolder.get, + list: SpaceConnector.clientV2.dashboard.privateFolder.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/private-widget/composables/use-private-widget-api.ts b/apps/web/src/api-clients/dashboard/private-widget/composables/use-private-widget-api.ts index 6b49c0b001..7889de09e7 100644 --- a/apps/web/src/api-clients/dashboard/private-widget/composables/use-private-widget-api.ts +++ b/apps/web/src/api-clients/dashboard/private-widget/composables/use-private-widget-api.ts @@ -11,41 +11,15 @@ import type { PrivateWidgetLoadSumParameters } from '@/api-clients/dashboard/pri import type { PrivateWidgetUpdateParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/update'; import type { PrivateWidgetModel } from '@/api-clients/dashboard/private-widget/schema/model'; -interface UsePrivateWidgetApiReturn { - privateWidgetAPI: { - create: (params: PrivateWidgetCreateParameters) => Promise; - update: (params: PrivateWidgetUpdateParameters) => Promise; - delete: (params: PrivateWidgetDeleteParameters) => Promise; - load: (params: PrivateWidgetLoadParameters) => Promise; - loadSum: (params: PrivateWidgetLoadSumParameters) => Promise; - get: (params: PrivateWidgetGetParameters) => Promise; - list: (params: PrivateWidgetListParameters) => Promise>; - } -} - -export const usePrivateWidgetApi = (): UsePrivateWidgetApiReturn => { +export const usePrivateWidgetApi = () => { const action = { - async create(params: PrivateWidgetCreateParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.create(params); - }, - async update(params: PrivateWidgetUpdateParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.update(params); - }, - async delete(params: PrivateWidgetDeleteParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.delete(params); - }, - async load(params: PrivateWidgetLoadParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.load(params); - }, - async loadSum(params: PrivateWidgetLoadSumParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.loadSum(params); - }, - async get(params: PrivateWidgetGetParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.get(params); - }, - async list(params: PrivateWidgetListParameters) { - return SpaceConnector.clientV2.dashboard.privateWidget.list>(params); - }, + create: SpaceConnector.clientV2.dashboard.privateWidget.create, + update: SpaceConnector.clientV2.dashboard.privateWidget.update, + delete: SpaceConnector.clientV2.dashboard.privateWidget.delete, + load: SpaceConnector.clientV2.dashboard.privateWidget.load, + loadSum: SpaceConnector.clientV2.dashboard.privateWidget.loadSum, + get: SpaceConnector.clientV2.dashboard.privateWidget.get, + list: SpaceConnector.clientV2.dashboard.privateWidget.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/public-dashboard/composables/use-public-dashboard-api.ts b/apps/web/src/api-clients/dashboard/public-dashboard/composables/use-public-dashboard-api.ts index 5523e97dd7..ed1d5e728e 100644 --- a/apps/web/src/api-clients/dashboard/public-dashboard/composables/use-public-dashboard-api.ts +++ b/apps/web/src/api-clients/dashboard/public-dashboard/composables/use-public-dashboard-api.ts @@ -11,45 +11,17 @@ import type { PublicDashboardUnshareParameters } from '@/api-clients/dashboard/p import type { PublicDashboardUpdateParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/update'; import type { PublicDashboardModel } from '@/api-clients/dashboard/public-dashboard/schema/model'; -interface UsePublicDashboardApiReturn { - publicDashboardAPI: { - create: (params: PublicDashboardCreateParameters) => Promise; - update: (params: PublicDashboardUpdateParameters) => Promise; - changeFolder: (params: PublicDashboardChangeFolderParameters) => Promise; - share: (params: PublicDashboardShareParameters) => Promise; - unshare: (params: PublicDashboardUnshareParameters) => Promise; - delete: (params: PublicDashboardDeleteParameters) => Promise; - get: (params: PublicDashboardGetParameters) => Promise; - list: (params: PublicDashboardListParameters) => Promise>; - } -} -export const usePublicDashboardApi = (): UsePublicDashboardApiReturn => { +export const usePublicDashboardApi = () => { const actions = { - async create(params: PublicDashboardCreateParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.create(params); - }, - async update(params: PublicDashboardUpdateParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.update(params); - }, - async changeFolder(params: PublicDashboardChangeFolderParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.changeFolder(params); - }, - async share(params: PublicDashboardShareParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.share(params); - }, - async unshare(params: PublicDashboardUnshareParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.unshare(params); - }, - async delete(params: PublicDashboardDeleteParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.delete(params); - }, - async get(params: PublicDashboardGetParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.get(params); - }, - async list(params: PublicDashboardListParameters) { - return SpaceConnector.clientV2.dashboard.publicDashboard.list>(params); - }, + create: SpaceConnector.clientV2.dashboard.publicDashboard.create, + update: SpaceConnector.clientV2.dashboard.publicDashboard.update, + changeFolder: SpaceConnector.clientV2.dashboard.publicDashboard.changeFolder, + share: SpaceConnector.clientV2.dashboard.publicDashboard.share, + unshare: SpaceConnector.clientV2.dashboard.publicDashboard.unshare, + delete: SpaceConnector.clientV2.dashboard.publicDashboard.delete, + get: SpaceConnector.clientV2.dashboard.publicDashboard.get, + list: SpaceConnector.clientV2.dashboard.publicDashboard.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/create.ts b/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/create.ts index fe5c4718e0..d615baf0a9 100644 --- a/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/create.ts +++ b/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/create.ts @@ -24,4 +24,5 @@ export interface PublicDashboardCreateParameters { workspace_id?: string; resource_group: Extract; project_id?: string; + project_group_id?: string; } diff --git a/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/list.ts b/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/list.ts index 02105bb824..8fe6638e86 100644 --- a/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/list.ts +++ b/apps/web/src/api-clients/dashboard/public-dashboard/schema/api-verbs/list.ts @@ -7,4 +7,6 @@ export interface PublicDashboardListParameters { name?: string; workspace_id?: string; project_id?: string; + project_group_id?: string; + folder_id?: string; } diff --git a/apps/web/src/api-clients/dashboard/public-dashboard/schema/model.ts b/apps/web/src/api-clients/dashboard/public-dashboard/schema/model.ts index 5ae600ff6d..dc48203ef7 100644 --- a/apps/web/src/api-clients/dashboard/public-dashboard/schema/model.ts +++ b/apps/web/src/api-clients/dashboard/public-dashboard/schema/model.ts @@ -30,6 +30,7 @@ export interface PublicDashboardModel { folder_id: string; resource_group: Extract; project_id: string; + project_group_id: string; workspace_id: string; domain_id: string; created_at: string; diff --git a/apps/web/src/api-clients/dashboard/public-data-table/composables/use-public-data-table-api.ts b/apps/web/src/api-clients/dashboard/public-data-table/composables/use-public-data-table-api.ts index adbd15e3dc..7f513c9625 100644 --- a/apps/web/src/api-clients/dashboard/public-data-table/composables/use-public-data-table-api.ts +++ b/apps/web/src/api-clients/dashboard/public-data-table/composables/use-public-data-table-api.ts @@ -12,41 +12,15 @@ import type { DataTableUpdateParameters } from '@/api-clients/dashboard/public-d import type { PublicDataTableModel } from '@/api-clients/dashboard/public-data-table/schema/model'; -interface UsePublicDataTableApiReturn { - publicDataTableAPI: { - add: (params: DataTableAddParameters) => Promise; - transform: (params: DataTableTransformParameters) => Promise; - update: (params: DataTableUpdateParameters) => Promise; - delete: (params: DataTableDeleteParameters) => Promise; - load: (params: DataTableLoadParameters) => Promise; - get: (params: DataTableGetParameters) => Promise; - list: (params: DataTableListParameters) => Promise>; - } -} - -export const usePublicDataTableApi = (): UsePublicDataTableApiReturn => { +export const usePublicDataTableApi = () => { const action = { - async add(params: DataTableAddParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.add(params); - }, - async transform(params: DataTableTransformParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.transform(params); - }, - async update(params: DataTableUpdateParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.update(params); - }, - async delete(params: DataTableDeleteParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.delete(params); - }, - async load(params: DataTableLoadParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.load(params); - }, - async get(params: DataTableGetParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.get(params); - }, - async list(params: DataTableListParameters) { - return SpaceConnector.clientV2.dashboard.publicDataTable.list>(params); - }, + add: SpaceConnector.clientV2.dashboard.publicDataTable.add, + transform: SpaceConnector.clientV2.dashboard.publicDataTable.transform, + update: SpaceConnector.clientV2.dashboard.publicDataTable.update, + delete: SpaceConnector.clientV2.dashboard.publicDataTable.delete, + load: SpaceConnector.clientV2.dashboard.publicDataTable.load, + get: SpaceConnector.clientV2.dashboard.publicDataTable.get, + list: SpaceConnector.clientV2.dashboard.publicDataTable.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/public-folder/composables/use-public-folder-api.ts b/apps/web/src/api-clients/dashboard/public-folder/composables/use-public-folder-api.ts index 1fbd43ec39..5ff1607081 100644 --- a/apps/web/src/api-clients/dashboard/public-folder/composables/use-public-folder-api.ts +++ b/apps/web/src/api-clients/dashboard/public-folder/composables/use-public-folder-api.ts @@ -10,41 +10,15 @@ import type { PublicFolderUnshareParameters } from '@/api-clients/dashboard/publ import type { PublicFolderUpdateParameters } from '@/api-clients/dashboard/public-folder/schema/api-verbs/update'; import type { PublicFolderModel } from '@/api-clients/dashboard/public-folder/schema/model'; -interface UsePublicFolderApiReturn { - publicFolderAPI: { - create: (params: PublicFolderCreateParameters) => Promise; - update: (params: PublicFolderUpdateParameters) => Promise; - share: (params: PublicFolderShareParameters) => Promise; - unshare: (params: PublicFolderUnshareParameters) => Promise; - delete: (params: PublicFolderDeleteParameters) => Promise; - get: (params: PublicFolderGetParameters) => Promise; - list: (params: PublicFolderListParameters) => Promise>; - } -} - -export const usePublicFolderApi = (): UsePublicFolderApiReturn => { +export const usePublicFolderApi = () => { const action = { - async create(params: PublicFolderCreateParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.create(params); - }, - async update(params: PublicFolderUpdateParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.update(params); - }, - async share(params: PublicFolderShareParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.share(params); - }, - async unshare(params: PublicFolderUnshareParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.unshare(params); - }, - async delete(params: PublicFolderDeleteParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.delete(params); - }, - async get(params: PublicFolderGetParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.get(params); - }, - async list(params: PublicFolderListParameters) { - return SpaceConnector.clientV2.dashboard.publicFolder.list>(params); - }, + create: SpaceConnector.clientV2.dashboard.publicFolder.create, + update: SpaceConnector.clientV2.dashboard.publicFolder.update, + share: SpaceConnector.clientV2.dashboard.publicFolder.share, + unshare: SpaceConnector.clientV2.dashboard.publicFolder.unshare, + delete: SpaceConnector.clientV2.dashboard.publicFolder.delete, + get: SpaceConnector.clientV2.dashboard.publicFolder.get, + list: SpaceConnector.clientV2.dashboard.publicFolder.list>, }; return { diff --git a/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/create.ts b/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/create.ts index 76d46dcf06..65848de62e 100644 --- a/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/create.ts +++ b/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/create.ts @@ -9,4 +9,5 @@ export interface PublicFolderCreateParameters { dashboards?: string[]; workspace_id?: string; project_id?: string; + project_group_id?: string; } diff --git a/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/list.ts b/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/list.ts index 5e48ae7302..69bf18aae1 100644 --- a/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/list.ts +++ b/apps/web/src/api-clients/dashboard/public-folder/schema/api-verbs/list.ts @@ -7,4 +7,5 @@ export interface PublicFolderListParameters { name?: string; workspace_id?: string; project_id?: string; + project_group_id?: string; } diff --git a/apps/web/src/api-clients/dashboard/public-folder/schema/model.ts b/apps/web/src/api-clients/dashboard/public-folder/schema/model.ts index 424b1471ea..97a58f9209 100644 --- a/apps/web/src/api-clients/dashboard/public-folder/schema/model.ts +++ b/apps/web/src/api-clients/dashboard/public-folder/schema/model.ts @@ -10,6 +10,7 @@ export interface PublicFolderModel { tags: Tags; resource_group: Extract; project_id: string; + project_group_id: string; workspace_id: string; domain_id: string; created_at: string; diff --git a/apps/web/src/api-clients/dashboard/public-widget/composables/use-public-widget-api.ts b/apps/web/src/api-clients/dashboard/public-widget/composables/use-public-widget-api.ts index 41640cb487..655cc8d533 100644 --- a/apps/web/src/api-clients/dashboard/public-widget/composables/use-public-widget-api.ts +++ b/apps/web/src/api-clients/dashboard/public-widget/composables/use-public-widget-api.ts @@ -11,41 +11,15 @@ import type { PublicWidgetLoadSumParameters } from '@/api-clients/dashboard/publ import type { PublicWidgetUpdateParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/update'; import type { PublicWidgetModel } from '@/api-clients/dashboard/public-widget/schema/model'; -interface UsePublicWidgetApiReturn { - publicWidgetAPI: { - create: (params: PublicWidgetCreateParameters) => Promise; - update: (params: PublicWidgetUpdateParameters) => Promise; - delete: (params: PublicWidgetDeleteParameters) => Promise; - load: (params: PublicWidgetLoadParameters) => Promise; - loadSum: (params: PublicWidgetLoadSumParameters) => Promise; - get: (params: PublicWidgetGetParameters) => Promise; - list: (params: PublicWidgetListParameters) => Promise>; - } -} - -export const usePublicWidgetApi = (): UsePublicWidgetApiReturn => { +export const usePublicWidgetApi = () => { const action = { - async create(params: PublicWidgetCreateParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.create(params); - }, - async update(params: PublicWidgetUpdateParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.update(params); - }, - async delete(params: PublicWidgetDeleteParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.delete(params); - }, - async load(params: PublicWidgetLoadParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.load(params); - }, - async loadSum(params: PublicWidgetLoadSumParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.loadSum(params); - }, - async get(params: PublicWidgetGetParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.get(params); - }, - async list(params: PublicWidgetListParameters) { - return SpaceConnector.clientV2.dashboard.publicWidget.list>(params); - }, + create: SpaceConnector.clientV2.dashboard.publicWidget.create, + update: SpaceConnector.clientV2.dashboard.publicWidget.update, + delete: SpaceConnector.clientV2.dashboard.publicWidget.delete, + load: SpaceConnector.clientV2.dashboard.publicWidget.load, + loadSum: SpaceConnector.clientV2.dashboard.publicWidget.loadSum, + get: SpaceConnector.clientV2.dashboard.publicWidget.get, + list: SpaceConnector.clientV2.dashboard.publicWidget.list>, }; return { diff --git a/apps/web/src/api-clients/inventory/metric-data/composables/use-metric-data-api.ts b/apps/web/src/api-clients/inventory/metric-data/composables/use-metric-data-api.ts new file mode 100644 index 0000000000..d23b8633d9 --- /dev/null +++ b/apps/web/src/api-clients/inventory/metric-data/composables/use-metric-data-api.ts @@ -0,0 +1,25 @@ +import { SpaceConnector } from '@cloudforet/core-lib/space-connector'; + +import type { AnalyzeResponse } from '@/api-clients/_common/schema/api-verbs/analyze'; +import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list'; +import type { MetricDataAnalyzeParameters } from '@/api-clients/inventory/metric-data/schema/api-verbs/analyze'; +import type { MetricDataListParameters } from '@/schema/inventory/metric-data/api-verbs/list'; +import type { MetricDataModel } from '@/schema/inventory/metric-data/model'; + + + + +export const useMetricDataApi = () => { + const actions = { + async list(params: MetricDataListParameters) { + return SpaceConnector.clientV2.inventory.metricData.list>(params); + }, + async analyze(params: MetricDataAnalyzeParameters) { + return SpaceConnector.clientV2.inventory.metricData.analyze>(params); + }, + }; + + return { + metricDataAPI: actions, + }; +}; diff --git a/apps/web/src/schema/inventory/metric-data/api-verbs/analyze.ts b/apps/web/src/api-clients/inventory/metric-data/schema/api-verbs/analyze.ts similarity index 100% rename from apps/web/src/schema/inventory/metric-data/api-verbs/analyze.ts rename to apps/web/src/api-clients/inventory/metric-data/schema/api-verbs/analyze.ts diff --git a/apps/web/src/common/composables/go-back/index.ts b/apps/web/src/common/composables/go-back/index.ts index 896c21213f..04f0455fa4 100644 --- a/apps/web/src/common/composables/go-back/index.ts +++ b/apps/web/src/common/composables/go-back/index.ts @@ -4,13 +4,17 @@ import type { Location } from 'vue-router'; // CAUTION: Do not change to useRouter() because useRouter is only available in script setup import { SpaceRouter } from '@/router'; -export const useGoBack = (mainRoute: Location) => { +export const useGoBack = (mainRoute?: Location) => { const pathFrom = ref(); const setPathFrom = (path: Location) => { pathFrom.value = path; }; const handleClickBackButton = () => { + if (!mainRoute) { + console.error('mainRoute is not provided'); + return; + } if (!pathFrom.value?.name) { // in case of direct access from the other site, go to the main page SpaceRouter.router.push(mainRoute).catch(() => {}); } else if (pathFrom.value.name === mainRoute.name) { // in case of access from the service main page in the same site, go to the previous page diff --git a/apps/web/src/common/modules/project/ProjectSelectDropdown.vue b/apps/web/src/common/modules/project/ProjectSelectDropdown.vue index f0d5e3d4d8..920c16b11a 100644 --- a/apps/web/src/common/modules/project/ProjectSelectDropdown.vue +++ b/apps/web/src/common/modules/project/ProjectSelectDropdown.vue @@ -1,5 +1,6 @@ + + diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataSourcePopover.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataSourcePopover.vue index 445cfc3958..c6d897c2c9 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataSourcePopover.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataSourcePopover.vue @@ -3,7 +3,6 @@ import { computed, reactive, watch, } from 'vue'; import type { TranslateResult } from 'vue-i18n'; -import { useRoute } from 'vue-router/composables'; import { useMutation, useQueryClient } from '@tanstack/vue-query'; @@ -13,6 +12,7 @@ import { import type { WidgetCreateParams, WidgetModel } from '@/api-clients/dashboard/_types/widget-type'; import type { DataTableAddParameters } from '@/api-clients/dashboard/public-data-table/schema/api-verbs/add'; +import { useServiceQueryKey } from '@/query/query-key/use-service-query-key'; import { i18n } from '@/translations'; import { useAllReferenceStore } from '@/store/reference/all-reference-store'; @@ -41,21 +41,22 @@ import { DATA_TABLE_TYPE, TRANSFORM_DATA_TABLE_DEFAULT_OPTIONS, } from '@/common/modules/widgets/_constants/data-table-constant'; import { getDuplicatedDataTableName } from '@/common/modules/widgets/_helpers/widget-data-table-helper'; +import { useWidgetContextStore } from '@/common/modules/widgets/_store/widget-context-store'; import { useWidgetGenerateStore } from '@/common/modules/widgets/_store/widget-generate-store'; import type { DataTableModel } from '@/common/modules/widgets/types/widget-data-table-type'; import type { DataTableDataType, DataTableSourceType, DataTableOperator, DataTableAddOptions, DataTableTransformOptions, } from '@/common/modules/widgets/types/widget-model'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import { useDashboardWidgetListQuery } from '@/services/dashboards/composables/use-dashboard-widget-list-query'; const widgetGenerateStore = useWidgetGenerateStore(); const widgetGenerateState = widgetGenerateStore.state; const allReferenceStore = useAllReferenceStore(); +const widgetContextStore = useWidgetContextStore(); +const widgetContextState = widgetContextStore.state; +const widgetContextGetters = widgetContextStore.getters; const userStore = useUserStore(); -const route = useRoute(); -const dashboardId = computed(() => route.params.dashboardId); +const dashboardId = computed(() => widgetContextGetters.dashboardId); const emit = defineEmits<{(e: 'scroll'): void;}>(); @@ -76,18 +77,6 @@ const { }); const queryClient = useQueryClient(); -const { - dashboard, -} = useDashboardGetQuery({ - dashboardId, -}); -const { - keys: widgetKeys, -} = useDashboardWidgetListQuery({ - dashboardId, -}); - - const storeState = reactive({ metrics: computed(() => allReferenceStore.getters.metric), costDataSources: computed(() => allReferenceStore.getters.costDataSource), @@ -204,22 +193,25 @@ const state = reactive({ }); /* Api */ +const { withSuffix: privateWidgetListWithSuffix } = useServiceQueryKey('dashboard', 'private-widget', 'list'); +const { withSuffix: publicWidgetListWithSuffix } = useServiceQueryKey('dashboard', 'public-widget', 'list'); + const widgetCreateFn = (params: WidgetCreateParams): Promise => { - if (dashboardId.value?.startsWith('private')) { + if (!params.dashboard_id) { + throw new Error('dashboardId is undefined'); + } + + if (params.dashboard_id.startsWith('private')) { return widgetApi.privateWidgetAPI.create(params); } return widgetApi.publicWidgetAPI.create(params); }; const { mutateAsync: createWidget, isPending: widgetCreateLoading } = useMutation({ mutationFn: widgetCreateFn, - onSuccess: (data) => { - const _isPrivate = dashboardId.value?.startsWith('private'); - const widgetListQueryKey = _isPrivate ? widgetKeys.privateWidgetListQueryKey : widgetKeys.publicWidgetListQueryKey; - queryClient.setQueryData(widgetListQueryKey.value, (oldData: ListResponse) => (oldData.results?.length ? { - ...oldData, results: [...oldData.results, data], - } : { - ...oldData, results: [data], - })); + onSuccess: (data, variables) => { + const _isPrivate = variables.dashboard_id.startsWith('private'); + const widgetListQueryKey = _isPrivate ? privateWidgetListWithSuffix(variables.dashboard_id) : publicWidgetListWithSuffix(variables.dashboard_id); + queryClient.invalidateQueries({ queryKey: widgetListQueryKey }); widgetGenerateStore.setWidgetFormInfo(data); }, onError: (e) => { @@ -227,7 +219,7 @@ const { mutateAsync: createWidget, isPending: widgetCreateLoading } = useMutatio }, }); const dataTableAddFn = (params: DataTableAddParameters): Promise => { - if (dashboardId.value?.startsWith('private')) { + if (params.widget_id.startsWith('private')) { return dataTableApi.privateDataTableAPI.add(params); } return dataTableApi.publicDataTableAPI.add(params); @@ -297,10 +289,13 @@ const handleSelectPopperCondition = (condition: DataTableDataType) => { state.selectedPopperCondition = condition; }; const handleConfirmDataSource = async () => { + if (!dashboardId.value) { + throw new Error('dashboardId is undefined'); + } // create widget if (widgetGenerateState.overlayType === 'ADD' && !widgetGenerateState.widgetId) { await createWidget({ - dashboard_id: dashboardId.value as string, + dashboard_id: dashboardId.value, tags: { created_by: userStore.state.userId }, widget_type: 'table', }); @@ -355,7 +350,7 @@ const handleConfirmDataSource = async () => { const mergedParams = { ...addParameters, - vars: dashboard.value?.vars || {}, + vars: widgetContextState.dashboard?.vars || {}, }; if (state.selectedDataSourceDomain === DATA_SOURCE_DOMAIN.COST) { mergedParams.options = costOptions; diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFiltersItem.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFiltersItem.vue index d95158238b..cd116532d6 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFiltersItem.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardFiltersItem.vue @@ -4,7 +4,6 @@ import { onClickOutside } from '@vueuse/core/index'; import { computed, onMounted, reactive, ref, } from 'vue'; -import { useRoute } from 'vue-router/composables'; import { isArray } from 'lodash'; @@ -22,12 +21,12 @@ import { KEYWORD_FILTER_DISABLED_KEYS, } from '@/common/modules/widgets/_constants/data-table-constant'; import { isGlobalVariableFormat } from '@/common/modules/widgets/_helpers/global-variable-helper'; +import { useWidgetContextStore } from '@/common/modules/widgets/_store/widget-context-store'; import type { DataTableQueryFilterForDropdown } from '@/common/modules/widgets/types/widget-data-table-type'; import { blue, gray } from '@/styles/colors'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import { getOrderedGlobalVariables } from '@/services/dashboards/helpers/dashboard-global-variables-helper'; +import { getOrderedGlobalVariables } from '@/services/_shared/dashboard/dashboard-detail/helpers/dashboard-global-variables-helper'; interface Props { @@ -39,16 +38,15 @@ interface Props { } const props = defineProps(); -const route = useRoute(); -const dashboardId = computed(() => route.params.dashboardId); const emit = defineEmits<{(e: 'delete'): void; (e: 'update:selected-filter', filter: DataTableQueryFilterForDropdown): void; }>(); + +const widgetContextStore = useWidgetContextStore(); +const widgetContextState = widgetContextStore.state; + const operatorButtonRef = ref(null); -const { dashboard } = useDashboardGetQuery({ - dashboardId, -}); const state = reactive({ visibleMenu: false, operatorMenu: computed(() => { @@ -102,7 +100,7 @@ const state = reactive({ selectedOperator: [] as MenuItem[], proxySelectedFilter: useProxyValue('selectedFilter', props, emit), globalVariableItems: computed(() => { - const _refinedProperties: DashboardGlobalVariable[] = Object.values(dashboard.value?.vars_schema?.properties ?? {}); + const _refinedProperties: DashboardGlobalVariable[] = Object.values(widgetContextState.dashboard?.vars_schema?.properties ?? {}); const _orderedVariables = getOrderedGlobalVariables(_refinedProperties); return _orderedVariables.map((variable) => ({ name: `{{ global.${variable.key} }}`, diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardHeaderTitle.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardHeaderTitle.vue index 50e17a7d08..08d4537ac0 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardHeaderTitle.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardHeaderTitle.vue @@ -214,10 +214,10 @@ const syncDataTableList = async (data: DataTableModel) => { height="1.25rem" />

- {{ storeState.currentDataTable.name }} + {{ storeState.currentDataTable?.name }}

(); -const route = useRoute(); -const dashboardId = computed(() => route.params.dashboardId); +const widgetContextStore = useWidgetContextStore(); +const widgetContextState = widgetContextStore.state; const widgetGenerateStore = useWidgetGenerateStore(); const widgetGenerateState = widgetGenerateStore.state; /* Querys */ -const { - dashboard, -} = useDashboardGetQuery({ - dashboardId, -}); const { widget, keys: widgetKeys, @@ -359,11 +350,14 @@ const updateDataTable = async (): Promise => { } }; if (firstUpdating) { + if (!widgetGenerateState.widgetId) { + throw new Error('Widget ID is required'); + } const createParams = { name: state.dataTableName, widget_id: widgetGenerateState.widgetId, operator: state.operator, - vars: dashboard.value?.vars || {}, + vars: widgetContextState.dashboard?.vars || {}, options: { [state.operator]: options() }, }; const dataTable = await transformDataTableFn(createParams); diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardTransformValueMapping.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardTransformValueMapping.vue index 3aa564b6dc..ec768d3f77 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardTransformValueMapping.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableCardTransformValueMapping.vue @@ -119,7 +119,7 @@ const getInvalidFieldNameText = (fieldName?: string): TranslateResult|undefined if (!isFieldNameValid(fieldName, storeState.currentDataTable)) return i18n.t('COMMON.WIDGETS.DATA_TABLE.FORM.DUPLICATED_FIELD_NAME'); return undefined; }; -const isFieldNameValid = (fieldName: string, dataTable?: PublicDataTableModel|PrivateDataTableModel): boolean => { +const isFieldNameValid = (fieldName: string, dataTable?: Partial): boolean => { if (!dataTable) return true; const _dataInfoKeys = Object.keys(dataTable.data_info || {}); return !_dataInfoKeys.includes(fieldName); diff --git a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableGlobalVariableViewButton.vue b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableGlobalVariableViewButton.vue index 7092613f88..5ba2d6f6aa 100644 --- a/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableGlobalVariableViewButton.vue +++ b/apps/web/src/common/modules/widgets/_components/WidgetFormDataTableGlobalVariableViewButton.vue @@ -1,26 +1,22 @@ + + diff --git a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateBlankBoardItem.vue b/apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateBlankBoardItem.vue similarity index 94% rename from apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateBlankBoardItem.vue rename to apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateBlankBoardItem.vue index f6754aded9..900fb43cce 100644 --- a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateBlankBoardItem.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateBlankBoardItem.vue @@ -4,8 +4,7 @@ import { } from '@cloudforet/mirinae'; import type { BoardSet } from '@cloudforet/mirinae/types/data-display/board/type'; -import { useDashboardCreatePageStore } from '@/services/dashboards/stores/dashboard-create-page-store'; - +import { useDashboardCreatePageStore } from '@/services/_shared/dashboard/dashboard-create/stores/dashboard-create-page-store'; interface Props { templateSets: BoardSet[]; diff --git a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateStep1SearchFilter.vue b/apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateStep1SearchFilter.vue similarity index 96% rename from apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateStep1SearchFilter.vue rename to apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateStep1SearchFilter.vue index acb1d5021b..c0d198eacd 100644 --- a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateStep1SearchFilter.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateStep1SearchFilter.vue @@ -8,11 +8,9 @@ import { } from '@cloudforet/mirinae'; import { useAllReferenceStore } from '@/store/reference/all-reference-store'; -import type { PluginItem } from '@/store/reference/plugin-reference-store'; -import type { ProviderReferenceMap } from '@/store/reference/provider-reference-store'; - -import { DASHBOARD_LABELS } from '@/services/dashboards/constants/dashboard-labels'; +import type { ProviderReferenceMap, PluginItem } from '@/store/reference/provider-reference-store'; +import { DASHBOARD_LABELS } from '@/services/_shared/dashboard/dashboard-create/constants/dashboard-labels'; export interface FilterLabelItem { label: string; diff --git a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateStep2.vue b/apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateStep2.vue similarity index 75% rename from apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateStep2.vue rename to apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateStep2.vue index 675ed5ebf6..a68af94764 100644 --- a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateStep2.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-create/components/DashboardCreateStep2.vue @@ -5,26 +5,29 @@ import { import { PButton } from '@cloudforet/mirinae'; -import { useAppContextStore } from '@/store/app-context/app-context-store'; +import type { DashboardFolderModel, DashboardModel } from '@/api-clients/dashboard/_types/dashboard-type'; import DashboardCreateStep2BundleCase - from '@/services/dashboards/components/dashboard-create/DashboardCreateStep2BundleCase.vue'; + from '@/services/_shared/dashboard/dashboard-create/contextual-components/DashboardCreateStep2BundleCase.vue'; import DashboardCreateStep2SingleCase - from '@/services/dashboards/components/dashboard-create/DashboardCreateStep2SingleCase.vue'; -import { useDashboardCreatePageStore } from '@/services/dashboards/stores/dashboard-create-page-store'; + from '@/services/_shared/dashboard/dashboard-create/contextual-components/DashboardCreateStep2SingleCase.vue'; +import { useDashboardCreatePageStore } from '@/services/_shared/dashboard/dashboard-create/stores/dashboard-create-page-store'; +interface Props { + dashboardItems: Array; + folderItems: Array; +} +const props = defineProps(); const singleCaseRef = ref(null); const bundleCaseRef = ref(null); -const appContextStore = useAppContextStore(); const dashboardCreatePageStore = useDashboardCreatePageStore(); const dashboardCreatePageState = dashboardCreatePageStore.state; const dashboardCreatePageGetters = dashboardCreatePageStore.getters; const state = reactive({ isSingleCreateValid: false, - isAdminMode: computed(() => appContextStore.getters.isAdminMode), disableCreateButton: computed(() => { if (dashboardCreatePageState.createType === 'SINGLE') { return !state.isSingleCreateValid; @@ -52,9 +55,12 @@ const handleCreateDashboard = async () => {
+// eslint-disable-next-line import/order,import/no-duplicates +import { defineComponent, type ComponentPublicInstance } from 'vue'; + +interface IInstance extends ComponentPublicInstance { + setPathFrom(from: any): void +} + +export default defineComponent({ + beforeRouteEnter(to, from, next) { + next((vm) => { + const instance = vm as unknown as IInstance; + instance.setPathFrom(from); + }); + }, +}); + + + + + + + diff --git a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateScopeForm.vue b/apps/web/src/services/_shared/dashboard/dashboard-create/contextual-components/DashboardCreateScopeForm.vue similarity index 86% rename from apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateScopeForm.vue rename to apps/web/src/services/_shared/dashboard/dashboard-create/contextual-components/DashboardCreateScopeForm.vue index c1d2b7a9ed..3b9d62f57d 100644 --- a/apps/web/src/services/dashboards/components/dashboard-create/DashboardCreateScopeForm.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-create/contextual-components/DashboardCreateScopeForm.vue @@ -18,8 +18,8 @@ import { useUserStore } from '@/store/user/user-store'; import WorkspaceLogoIcon from '@/common/modules/navigations/top-bar/modules/top-bar-header/WorkspaceLogoIcon.vue'; -import { useDashboardCreatePageStore } from '@/services/dashboards/stores/dashboard-create-page-store'; - +import { useDashboardSharedContext } from '@/services/_shared/dashboard/core/composables/_internal/use-dashboard-shared-context'; +import { useDashboardCreatePageStore } from '@/services/_shared/dashboard/dashboard-create/stores/dashboard-create-page-store'; interface BoardSet { @@ -39,6 +39,12 @@ const storeState = reactive({ isWorkspaceOwner: computed(() => userStore.state.currentRoleInfo?.roleType === ROLE_TYPE.WORKSPACE_OWNER), selectedWorkspace: computed(() => userWorkspaceState.getters.currentWorkspace), }); + +const { + isAdminMode, + entryPoint, +} = useDashboardSharedContext(); + const state = reactive({ dashboardScopeBoardSets: computed(() => { const boardSets: BoardSet[] = [ @@ -79,7 +85,9 @@ onMounted(() => { {{ $t('DASHBOARDS.CREATE.DASHBOARD_SCOPE') }} -
+
{
+
+ + + Only Public + {{ $t('(Everyone in this workspace)') }} + +
diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableImportModalTree.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardManageVariableImportModalTree.vue similarity index 100% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableImportModalTree.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardManageVariableImportModalTree.vue diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableOverlay.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardManageVariableOverlay.vue similarity index 90% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableOverlay.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardManageVariableOverlay.vue index bebb67c496..9a3f18bbed 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableOverlay.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardManageVariableOverlay.vue @@ -1,7 +1,7 @@ + + diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardRefreshDropdown.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardRefreshDropdown.vue similarity index 92% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardRefreshDropdown.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardRefreshDropdown.vue index 078f7f4356..2c8284948c 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardRefreshDropdown.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardRefreshDropdown.vue @@ -16,9 +16,9 @@ import type { PrivateDashboardModel } from '@/api-clients/dashboard/private-dash import type { PublicDashboardModel } from '@/api-clients/dashboard/public-dashboard/schema/model'; import { i18n } from '@/translations'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import { useDashboardManageable } from '@/services/dashboards/composables/use-dashboard-manageable'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; +import { useDashboardManageable } from '@/services/_shared/dashboard/core/composables/_internal/use-dashboard-manageable'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; const REFRESH_INTERVAL_OPTIONS = Object.keys(REFRESH_INTERVAL_OPTIONS_MAP); @@ -46,9 +46,8 @@ const { dashboardId: computed(() => props.dashboardId), }); const queryClient = useQueryClient(); -const { isManageable } = useDashboardManageable({ - dashboardId: computed(() => props.dashboardId), -}); +const { getDashboardManageable } = useDashboardManageable(); +const dashboardManageable = computed(() => getDashboardManageable(dashboard.value)); const state = reactive({ intervalOptionList: computed<{label: TranslateResult; value: RefreshIntervalOption}[]>(() => [ @@ -104,7 +103,7 @@ const handleSelectRefreshIntervalOption = (option) => { clearRefreshInterval(); executeRefreshInterval(); - if (isManageable.value) { + if (dashboardManageable.value) { mutate({ dashboard_id: props.dashboardId, options: { diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardReorderSidebar.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardReorderSidebar.vue similarity index 94% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardReorderSidebar.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardReorderSidebar.vue index e2c79f0ebf..e6b0dff036 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardReorderSidebar.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardReorderSidebar.vue @@ -3,7 +3,6 @@ import { computed, onUnmounted, reactive, watch, } from 'vue'; -import { useRoute } from 'vue-router/composables'; import draggable from 'vuedraggable'; import { useMutation, useQueryClient } from '@tanstack/vue-query'; @@ -22,13 +21,19 @@ import { useDisplayStore } from '@/store/display/display-store'; import { WIDGET_COMPONENT_ICON_MAP } from '@/common/modules/widgets/_constants/widget-components-constant'; import { getWidgetConfig } from '@/common/modules/widgets/_helpers/widget-config-helper'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import { useDashboardWidgetListQuery } from '@/services/dashboards/composables/use-dashboard-widget-list-query'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import { useDashboardWidgetListQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-widget-list-query'; + + type WidgetModel = PublicWidgetModel | PrivateWidgetModel; + +const props = defineProps<{ + dashboardId: string; +}>(); + const displayStore = useDisplayStore(); -const route = useRoute(); -const dashboardId = computed(() => route.params.dashboardId); +const dashboardId = computed(() => props.dashboardId); /* Query */ const { diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetDateCustomModal.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateCustomModal.vue similarity index 100% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetDateCustomModal.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateCustomModal.vue diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetDateDropdown.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateDropdown.vue similarity index 91% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetDateDropdown.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateDropdown.vue index bc61c8d69e..01e5afe2c5 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetDateDropdown.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateDropdown.vue @@ -18,10 +18,11 @@ import { i18n } from '@/translations'; import { useI18nDayjs } from '@/common/composables/i18n-dayjs'; -import DashboardToolsetDateCustomModal from '@/services/dashboards/components/dashboard-detail/DashboardToolsetDateCustomModal.vue'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import { useDashboardManageable } from '@/services/dashboards/composables/use-dashboard-manageable'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; +import { useDashboardManageable } from '@/services/_shared/dashboard/core/composables/_internal/use-dashboard-manageable'; +import DashboardToolsetDateCustomModal + from '@/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateCustomModal.vue'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; interface Props { dateRange?: DateRange; @@ -46,9 +47,8 @@ const { dashboardId, }); const queryClient = useQueryClient(); -const { isManageable } = useDashboardManageable({ - dashboardId, -}); +const { getDashboardManageable } = useDashboardManageable(); +const dashboardManageable = computed(() => getDashboardManageable(dashboard.value)); const state = reactive({ monthMenuItems: computed(() => { const monthData: MenuItem[] = []; @@ -115,7 +115,7 @@ const handleSelectMonthMenuItem = (selected: string) => { updateDashboardDateRange(state.selectedDateRange); } - if (isManageable.value && !props.widgetMode) { + if (dashboardManageable.value && !props.widgetMode) { mutate({ dashboard_id: dashboardId.value, options: { diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetScope.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetScope.vue similarity index 98% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetScope.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetScope.vue index 457dbb192e..59fedf905c 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardToolsetScope.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetScope.vue @@ -19,9 +19,9 @@ import type { WorkspaceReferenceMap } from '@/store/reference/workspace-referenc import ErrorHandler from '@/common/composables/error/errorHandler'; import WorkspaceLogoIcon from '@/common/modules/navigations/top-bar/modules/top-bar-header/WorkspaceLogoIcon.vue'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; import { workspaceStateFormatter } from '@/services/advanced/composables/refined-table-data'; import { WORKSPACE_STATE } from '@/services/advanced/constants/workspace-constant'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormDynamic.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormDynamic.vue similarity index 99% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormDynamic.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormDynamic.vue index da21e38ba0..a3a4cd5a3a 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormDynamic.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormDynamic.vue @@ -30,7 +30,7 @@ import { useProxyValue } from '@/common/composables/proxy-state'; import { DASHBOARD_GLOBAL_VARIABLES_PRESET_LIST, -} from '@/services/dashboards/constants/dashboard-global-variable-preset'; +} from '@/services/_shared/dashboard/dashboard-detail/constants/dashboard-global-variable-preset'; const SELECTION_TYPE = { MULTI_SELECT: 'multi', @@ -51,13 +51,11 @@ const emit = defineEmits<{(e: 'update:is-valid', isValid: boolean): void; (e: 'update:data', data: DynamicVariableData): void; }>(); -const appContextStore = useAppContextStore(); const allReferenceStore = useAllReferenceStore(); - +const appContextStore = useAppContextStore(); const { visibleContents } = useContentsAccessibility(MENU_ID.ASSET_INVENTORY); const storeState = reactive({ - isAdminMode: computed(() => appContextStore.getters.isAdminMode), namespaces: computed(() => allReferenceStore.getters.namespace), providers: computed(() => allReferenceStore.getters.provider), metrics: computed(() => allReferenceStore.getters.metric), @@ -201,7 +199,7 @@ const state = reactive({ selectedCostDataSourceMenuItem: computed(() => state.costDataSourceMenuItems.filter((d) => d.name === state.selectedCostDataSourceId)), }); const { allItems: costDataSourceFilterMenuItems } = useCostDataSourceFilterMenuItems({ - isAdminMode: computed(() => storeState.isAdminMode), + isAdminMode: computed(() => appContextStore.getters.isAdminMode), costDataSource: computed(() => storeState.costDataSources[state.selectedCostDataSourceId]), }); diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormManual.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormManual.vue similarity index 100% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormManual.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormManual.vue diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormModal.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormModal.vue similarity index 97% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormModal.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormModal.vue index ec22ea9c1b..6ee6d79d5c 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesFormModal.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/components/DashboardVariablesFormModal.vue @@ -1,6 +1,5 @@ + + + + diff --git a/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue new file mode 100644 index 0000000000..5f0d75d962 --- /dev/null +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardDetailHeader.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesV2.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardVariablesV2.vue similarity index 59% rename from apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesV2.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardVariablesV2.vue index 18877eb198..215622031a 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardVariablesV2.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-components/DashboardVariablesV2.vue @@ -1,5 +1,7 @@ diff --git a/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-composables/use-dashboard-refined-vars.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-composables/use-dashboard-refined-vars.ts new file mode 100644 index 0000000000..48eb20c59b --- /dev/null +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/contextual-composables/use-dashboard-refined-vars.ts @@ -0,0 +1,51 @@ +import type { ComputedRef } from 'vue'; +import { computed } from 'vue'; + +import { cloneDeep, isEmpty } from 'lodash'; + +import type { DashboardVars } from '@/api-clients/dashboard/_types/dashboard-type'; + +import WorkspaceVariableModel from '@/lib/variable-models/managed-model/resource-model/workspace-variable-model'; + +import { useDashboardSharedContext } from '@/services/_shared/dashboard/core/composables/_internal/use-dashboard-shared-context'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; +import { useDashboardVarsStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-vars-store'; + +export const useDashboardRefinedVars = (dashboardId: ComputedRef) => { + const dashboardVarsStore = useDashboardVarsStore(); + const dashboardVarsState = dashboardVarsStore.state; + const dashboardDetailStore = useDashboardDetailInfoStore(); + const dashboardDetailState = dashboardDetailStore.state; + + const { dashboard } = useDashboardGetQuery({ + dashboardId, + }); + const { projectContextType, projectGroupOrProjectId, isAdminMode } = useDashboardSharedContext(); + + const refinedVars = computed(() => { + let _vars: DashboardVars = cloneDeep(dashboard.value?.vars ?? {}); + const tempVars: DashboardVars = cloneDeep(dashboardVarsState.vars ?? {}); + if (!isEmpty(tempVars)) _vars = tempVars; + if (projectGroupOrProjectId.value) { + if (projectContextType.value === 'PROJECT') { + _vars.project_id = [projectGroupOrProjectId.value]; + } else if (projectContextType.value === 'PROJECT_GROUP') { + _vars.project_group_id = [projectGroupOrProjectId.value]; + } + } + + const selectedWorkspaceId = dashboardDetailState.selectedWorkspaceId; + if (isAdminMode.value) { + if (selectedWorkspaceId && selectedWorkspaceId !== 'all') { + _vars[WorkspaceVariableModel.meta.idKey] = [selectedWorkspaceId]; + } else { + delete _vars[WorkspaceVariableModel.meta.idKey]; + } + } else { + delete _vars[WorkspaceVariableModel.meta.idKey]; + } + return _vars; + }); + return { refinedVars }; +}; diff --git a/apps/web/src/services/dashboards/helpers/__tests__/widget-width-helper.md b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/__tests__/widget-width-helper.md similarity index 100% rename from apps/web/src/services/dashboards/helpers/__tests__/widget-width-helper.md rename to apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/__tests__/widget-width-helper.md diff --git a/apps/web/src/services/dashboards/helpers/__tests__/widget-width-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/__tests__/widget-width-helper.test.ts similarity index 95% rename from apps/web/src/services/dashboards/helpers/__tests__/widget-width-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/__tests__/widget-width-helper.test.ts index 10d587673e..84db9f26c7 100644 --- a/apps/web/src/services/dashboards/helpers/__tests__/widget-width-helper.test.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/__tests__/widget-width-helper.test.ts @@ -5,8 +5,8 @@ import type { WidgetSize } from '@/api-clients/dashboard/_types/widget-type'; import { WIDGET_CONTAINER_MAX_WIDTH, WIDGET_CONTAINER_MIN_WIDTH, -} from '@/services/dashboards/constants/widget-container-config'; -import { widgetWidthAssigner } from '@/services/dashboards/helpers/widget-width-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/constants/widget-container-config'; +import { widgetWidthAssigner } from '@/services/_shared/dashboard/dashboard-detail/helpers/widget-width-helper'; /** diff --git a/apps/web/src/services/dashboards/helpers/dashboard-global-variables-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/dashboard-global-variables-helper.ts similarity index 82% rename from apps/web/src/services/dashboards/helpers/dashboard-global-variables-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/dashboard-global-variables-helper.ts index d0464b125a..f97cec240a 100644 --- a/apps/web/src/services/dashboards/helpers/dashboard-global-variables-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/dashboard-global-variables-helper.ts @@ -2,7 +2,7 @@ import { orderBy } from 'lodash'; import type { DashboardGlobalVariable } from '@/api-clients/dashboard/_types/dashboard-global-variable-type'; -import { DASHBOARD_VARS_SCHEMA_PRESET } from '@/services/dashboards/constants/dashboard-vars-schema-preset'; +import { DASHBOARD_VARS_SCHEMA_PRESET } from '@/services/_shared/dashboard/dashboard-detail/constants/dashboard-vars-schema-preset'; export const getOrderedGlobalVariables = (variables: DashboardGlobalVariable[]): DashboardGlobalVariable[] => { const _presetKeys: string[] = Object.keys(DASHBOARD_VARS_SCHEMA_PRESET.properties); diff --git a/apps/web/src/services/dashboards/helpers/dashboard-widget-info-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper.ts similarity index 89% rename from apps/web/src/services/dashboards/helpers/dashboard-widget-info-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper.ts index a3a89fb5f3..3e4eb3378c 100644 --- a/apps/web/src/services/dashboards/helpers/dashboard-widget-info-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper.ts @@ -11,9 +11,9 @@ import type { import getRandomId from '@/lib/random-id-generator'; -import { getInheritingOptionKeys } from '@/services/dashboards/widgets/_helpers/widget-inherit-options-helper'; -import { getWidgetOptionKeyByVariableKey } from '@/services/dashboards/widgets/_helpers/widget-schema-helper'; -import type { UpdatableWidgetInfo } from '@/services/dashboards/widgets/_types/widget-type'; +import { getInheritingOptionKeys } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-inherit-options-helper'; +import { getWidgetOptionKeyByVariableKey } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper'; +import type { UpdatableWidgetInfo } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; /** * @description get updated widget info. if the property is not changed, it will be declared as undefined. diff --git a/apps/web/src/services/dashboards/helpers/widget-theme-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/widget-theme-helper.ts similarity index 84% rename from apps/web/src/services/dashboards/helpers/widget-theme-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/widget-theme-helper.ts index f842fa52e9..868dcf95eb 100644 --- a/apps/web/src/services/dashboards/helpers/widget-theme-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/widget-theme-helper.ts @@ -1,5 +1,5 @@ -import type { WidgetThemeOption, WidgetThemeAssignedList } from '@/services/dashboards/constants/widget-container-config'; -import { WIDGET_THEMES } from '@/services/dashboards/widgets/_types/widget-type'; +import type { WidgetThemeOption, WidgetThemeAssignedList } from '@/services/_shared/dashboard/dashboard-detail/constants/widget-container-config'; +import { WIDGET_THEMES } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; const WIDGET_THEME_LEN = WIDGET_THEMES.length; diff --git a/apps/web/src/services/dashboards/helpers/widget-width-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/widget-width-helper.ts similarity index 96% rename from apps/web/src/services/dashboards/helpers/widget-width-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/widget-width-helper.ts index 5a2e6a3bf3..a6ec224dc4 100644 --- a/apps/web/src/services/dashboards/helpers/widget-width-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/helpers/widget-width-helper.ts @@ -7,7 +7,7 @@ import { WIDGET_WIDTH_RANGE_LIST, WIDGET_GAP, WIDGET_WIDTH_CRITERIA, -} from '@/services/dashboards/constants/widget-container-config'; +} from '@/services/_shared/dashboard/dashboard-detail/constants/widget-container-config'; const isEveryWidthMax = (sizeRow: string[], widthRow: number[]): boolean => sizeRow.every((size, idx) => { diff --git a/apps/web/src/services/dashboards/components/legacy/DashboardManageVariableForm.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardManageVariableForm.vue similarity index 97% rename from apps/web/src/services/dashboards/components/legacy/DashboardManageVariableForm.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardManageVariableForm.vue index acd9bc3b1b..377bb8250a 100644 --- a/apps/web/src/services/dashboards/components/legacy/DashboardManageVariableForm.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardManageVariableForm.vue @@ -15,11 +15,11 @@ import getRandomId from '@/lib/random-id-generator'; import { useFormValidator } from '@/common/composables/form-validator'; import DashboardManageVariableOptionsField - from '@/services/dashboards/components/legacy/DashboardManageVariableOptionsField.vue'; + from '@/services/_shared/dashboard/dashboard-detail/legacy/DashboardManageVariableOptionsField.vue'; import type { ManageVariableFormOption, ManageVariableOverlayStatus, -} from '@/services/dashboards/types/manage-variable-type'; +} from '@/services/_shared/dashboard/dashboard-detail/types/manage-variable-type'; const CLONE_PREFIX = 'Copy - '; diff --git a/apps/web/src/services/dashboards/components/legacy/DashboardManageVariableOptionsField.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardManageVariableOptionsField.vue similarity index 100% rename from apps/web/src/services/dashboards/components/legacy/DashboardManageVariableOptionsField.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardManageVariableOptionsField.vue diff --git a/apps/web/src/services/dashboards/components/legacy/DashboardVariableDropdown.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariableDropdown.vue similarity index 98% rename from apps/web/src/services/dashboards/components/legacy/DashboardVariableDropdown.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariableDropdown.vue index e9d6446a08..0f365f0863 100644 --- a/apps/web/src/services/dashboards/components/legacy/DashboardVariableDropdown.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariableDropdown.vue @@ -27,8 +27,8 @@ import { getVariableModelMenuHandler } from '@/lib/variable-models/variable-mode import WorkspaceLogoIcon from '@/common/modules/navigations/top-bar/modules/top-bar-header/WorkspaceLogoIcon.vue'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; import { getWorkspaceInfo } from '@/services/advanced/composables/refined-table-data'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; interface Props { diff --git a/apps/web/src/services/dashboards/components/legacy/DashboardVariables.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariables.vue similarity index 93% rename from apps/web/src/services/dashboards/components/legacy/DashboardVariables.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariables.vue index 77f082a337..f430aeb83a 100644 --- a/apps/web/src/services/dashboards/components/legacy/DashboardVariables.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariables.vue @@ -10,10 +10,10 @@ import type { DashboardVariables, DashboardVariablesSchema } from '@/api-clients import ChangedMark from '@/common/components/marks/ChangedMark.vue'; -import DashboardVariableDropdown from '@/services/dashboards/components/legacy/DashboardVariableDropdown.vue'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import DashboardVariableDropdown from '@/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariableDropdown.vue'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; import { useAllReferenceTypeInfoStore } from '@/services/dashboards/stores/all-reference-type-info-store'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; interface Props { diff --git a/apps/web/src/services/dashboards/components/legacy/DashboardWidgetContainer.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardWidgetContainer.vue similarity index 88% rename from apps/web/src/services/dashboards/components/legacy/DashboardWidgetContainer.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardWidgetContainer.vue index ce66b7c0f2..e140f27c97 100644 --- a/apps/web/src/services/dashboards/components/legacy/DashboardWidgetContainer.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/DashboardWidgetContainer.vue @@ -11,25 +11,20 @@ import { PDataLoader } from '@cloudforet/mirinae'; import type { DashboardLayoutWidgetInfo } from '@/api-clients/dashboard/_types/dashboard-type'; -import WidgetFullModeModal from '@/services/dashboards/components/legacy/WidgetFullModeModal.vue'; -import { - useDashboardContainerWidth, -} from '@/services/dashboards/composables/use-dashboard-container-width'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import type { ReformedWidgetInfo } from '@/services/dashboards/composables/use-reformed-widget-info-list'; -import { - useReformedWidgetInfoList, -} from '@/services/dashboards/composables/use-reformed-widget-info-list'; -import { getDashboardWidgetInfoList } from '@/services/dashboards/helpers/dashboard-widget-info-helper'; +import { useDashboardContainerWidth } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-container-width'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import type { ReformedWidgetInfo } from '@/services/_shared/dashboard/dashboard-detail/composables/use-reformed-widget-info-list'; +import { useReformedWidgetInfoList } from '@/services/_shared/dashboard/dashboard-detail/composables/use-reformed-widget-info-list'; +import { getDashboardWidgetInfoList } from '@/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper'; +import type { WidgetFrameProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import type { WidgetExpose } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; import { useAllReferenceTypeInfoStore } from '@/services/dashboards/stores/all-reference-type-info-store'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; -import type { - WidgetExpose, WidgetProps, -} from '@/services/dashboards/widgets/_types/widget-type'; -type WidgetComponent = ComponentPublicInstance; + +type WidgetComponent = ComponentPublicInstance; const dashboardDetailStore = useDashboardDetailInfoStore(); const dashboardDetailGetters = dashboardDetailStore.getters; diff --git a/apps/web/src/services/dashboards/components/legacy/WidgetFullModeModal.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/WidgetFullModeModal.vue similarity index 90% rename from apps/web/src/services/dashboards/components/legacy/WidgetFullModeModal.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/WidgetFullModeModal.vue index 1bf3347ee2..d54a4981e2 100644 --- a/apps/web/src/services/dashboards/components/legacy/WidgetFullModeModal.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/WidgetFullModeModal.vue @@ -21,18 +21,18 @@ import type { WidgetSize } from '@/api-clients/dashboard/_types/widget-type'; import { gray } from '@/styles/colors'; -import DashboardToolsetDateDropdown from '@/services/dashboards/components/dashboard-detail/DashboardToolsetDateDropdown.vue'; -import DashboardVariables from '@/services/dashboards/components/legacy/DashboardVariables.vue'; -import { useDashboardGetQuery } from '@/services/dashboards/composables/use-dashboard-get-query'; -import { getDashboardWidgetInfoList } from '@/services/dashboards/helpers/dashboard-widget-info-helper'; -import { useAllReferenceTypeInfoStore } from '@/services/dashboards/stores/all-reference-type-info-store'; -import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; -import { useWidgetFormStore } from '@/services/dashboards/stores/widget-form-store'; -import { getWidgetComponent } from '@/services/dashboards/widgets/_helpers/widget-component-helper'; +import DashboardToolsetDateDropdown from '@/services/_shared/dashboard/dashboard-detail/components/DashboardToolsetDateDropdown.vue'; +import { useDashboardGetQuery } from '@/services/_shared/dashboard/dashboard-detail/composables/use-dashboard-get-query'; +import { getDashboardWidgetInfoList } from '@/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper'; +import DashboardVariables from '@/services/_shared/dashboard/dashboard-detail/legacy/DashboardVariables.vue'; +import { getWidgetComponent } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-component-helper'; import type { WidgetExpose, WidgetProps, WidgetTheme, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; +import { useWidgetFormStore } from '@/services/_shared/dashboard/dashboard-detail/stores/widget-form-store'; +import { useAllReferenceTypeInfoStore } from '@/services/dashboards/stores/all-reference-type-info-store'; +import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; interface WidgetFullModeModalProps { diff --git a/apps/web/src/services/dashboards/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue similarity index 91% rename from apps/web/src/services/dashboards/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue index 0efb27f99f..7cbbc25ae4 100644 --- a/apps/web/src/services/dashboards/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue @@ -22,17 +22,17 @@ import { useAmcharts5 } from '@/common/composables/amcharts5'; import { setXYSharedTooltipTextWithRate } from '@/common/composables/amcharts5/xy-chart-helper'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetChartNoDataOverlay from '@/services/dashboards/widgets/_components/WidgetChartNoDataOverlay.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { COMPLIANCE_STATUS_MAP } from '@/services/dashboards/widgets/_constants/compliance-constant'; +import WidgetChartNoDataOverlay from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetChartNoDataOverlay.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { COMPLIANCE_STATUS_MAP } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; import type { WidgetEmit, WidgetExpose, WidgetProps, Legend, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; import countOfPassAndFailFindingsWidgetConfig - from '@/services/dashboards/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config'; + from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config'; interface Data { diff --git a/apps/web/src/services/dashboards/widgets/_base-widgets/base-count-of-findings/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/widget-config.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_base-widgets/base-count-of-findings/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/widget-config.ts diff --git a/apps/web/src/services/dashboards/widgets/_base-widgets/base-pie/BasePieWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/BasePieWidget.vue similarity index 85% rename from apps/web/src/services/dashboards/widgets/_base-widgets/base-pie/BasePieWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/BasePieWidget.vue index be8fca16f8..f9aceffbe2 100644 --- a/apps/web/src/services/dashboards/widgets/_base-widgets/base-pie/BasePieWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/BasePieWidget.vue @@ -22,23 +22,23 @@ import ErrorHandler from '@/common/composables/error/errorHandler'; import { gray } from '@/styles/colors'; -import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getRefinedPieChartData } from '@/services/dashboards/widgets/_helpers/widget-chart-data-helper'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getRefinedPieChartData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper'; import { getPieChartLegends, -} from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import { getWidgetDataTableRowLocation } from '@/services/dashboards/widgets/_helpers/widget-location-helper'; -import { getReferenceTypeOfDataField } from '@/services/dashboards/widgets/_helpers/widget-table-helper'; -import type { Field, WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import { getWidgetDataTableRowLocation } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper'; +import { getReferenceTypeOfDataField } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper'; +import type { Field, WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetExpose, WidgetProps, WidgetEmit, Legend, CostAnalyzeResponse, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { ReferenceType } from '@/services/_shared/dashboard/dashboard-detail/stores/all-reference-type-info-store'; interface SubData { diff --git a/apps/web/src/services/dashboards/widgets/_base-widgets/base-pie/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/widget-config.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_base-widgets/base-pie/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/widget-config.ts diff --git a/apps/web/src/services/dashboards/widgets/_base-widgets/base-trend/BaseTrendWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/BaseTrendWidget.vue similarity index 91% rename from apps/web/src/services/dashboards/widgets/_base-widgets/base-trend/BaseTrendWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/BaseTrendWidget.vue index b503e4e5a5..12479cff5b 100644 --- a/apps/web/src/services/dashboards/widgets/_base-widgets/base-trend/BaseTrendWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/BaseTrendWidget.vue @@ -32,33 +32,33 @@ import { useAmcharts5 } from '@/common/composables/amcharts5'; import ErrorHandler from '@/common/composables/error/errorHandler'; import { useProperRouteLocation } from '@/common/composables/proper-route-location'; -import { DYNAMIC_COST_QUERY_SET_PARAMS } from '@/services/cost-explorer/constants/managed-cost-analysis-query-sets'; -import { COST_EXPLORER_ROUTE } from '@/services/cost-explorer/routes/route-constant'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getRefinedXYChartData } from '@/services/dashboards/widgets/_helpers/widget-chart-data-helper'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getRefinedXYChartData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper'; import { getDateAxisSettings, getXYChartLegends, -} from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; import { getWidgetDataTableRowLocation, getWidgetLocationFilters, -} from '@/services/dashboards/widgets/_helpers/widget-location-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper'; import { getRefinedDateTableData, getWidgetTableDateFields, -} from '@/services/dashboards/widgets/_helpers/widget-table-helper'; -import { getWidgetValueLabel } from '@/services/dashboards/widgets/_helpers/widget-value-label-helper'; -import type { Field, WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper'; +import { getWidgetValueLabel } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-value-label-helper'; +import type { Field, WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetExpose, WidgetProps, WidgetEmit, CostAnalyzeResponse, Legend, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import { DYNAMIC_COST_QUERY_SET_PARAMS } from '@/services/cost-explorer/constants/managed-cost-analysis-query-sets'; +import { COST_EXPLORER_ROUTE } from '@/services/cost-explorer/routes/route-constant'; interface SubData { date: string; value: number } diff --git a/apps/web/src/services/dashboards/widgets/_base-widgets/base-trend/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/widget-config.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_base-widgets/base-trend/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/widget-config.ts diff --git a/apps/web/src/services/dashboards/widgets/_components/WidgetChartNoDataOverlay.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetChartNoDataOverlay.vue similarity index 100% rename from apps/web/src/services/dashboards/widgets/_components/WidgetChartNoDataOverlay.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetChartNoDataOverlay.vue diff --git a/apps/web/src/services/dashboards/widgets/_components/WidgetDataTable.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue similarity index 98% rename from apps/web/src/services/dashboards/widgets/_components/WidgetDataTable.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue index b34f409e5e..2c7e285eb1 100644 --- a/apps/web/src/services/dashboards/widgets/_components/WidgetDataTable.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue @@ -24,11 +24,11 @@ import { useTextOverflowState } from '@/common/composables/text-overflow-state'; import { gray } from '@/styles/colors'; import { MASSIVE_CHART_COLORS, DISABLED_LEGEND_COLOR } from '@/styles/colorsets'; -import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; import type { Field, WidgetTableData, -} from '@/services/dashboards/widgets/_types/widget-data-table-type'; -import type { Legend } from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; +import type { Legend } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { AllReferenceTypeInfo } from '@/services/_shared/dashboard/dashboard-detail/stores/all-reference-type-info-store'; type TableSize = 'sm' | 'md'; diff --git a/apps/web/src/services/dashboards/widgets/_components/WidgetFrame.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue similarity index 99% rename from apps/web/src/services/dashboards/widgets/_components/WidgetFrame.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue index 4fb9a9ff1d..cc16b98745 100644 --- a/apps/web/src/services/dashboards/widgets/_components/WidgetFrame.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue @@ -26,7 +26,7 @@ import { useI18nDayjs } from '@/common/composables/i18n-dayjs'; import { red } from '@/styles/colors'; -import type { WidgetTheme } from '@/services/dashboards/widgets/_types/widget-type'; +import type { WidgetTheme } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; export interface WidgetFrameProps { diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget-color-set.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set.ts similarity index 88% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget-color-set.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set.ts index 059ae02a65..79de19a0ba 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget-color-set.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set.ts @@ -3,8 +3,8 @@ import { computed, reactive } from 'vue'; import { palette } from '@/styles/colors'; -import type { WidgetColorSetType, WidgetTheme } from '@/services/dashboards/widgets/_types/widget-type'; -import { WIDGET_THEMES } from '@/services/dashboards/widgets/_types/widget-type'; +import type { WidgetColorSetType, WidgetTheme } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import { WIDGET_THEMES } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; const getColorSet = (theme: WidgetTheme, colorSetType: WidgetColorSetType = 'basic'): string[] => { diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget-lifecycle.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle.ts similarity index 94% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget-lifecycle.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle.ts index c42d1335ae..e5d3055da3 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget-lifecycle.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle.ts @@ -19,13 +19,13 @@ import type { Currency } from '@/store/display/type'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import type { WidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; +import type { WidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; import { validateWidgetByVariablesSchemaUpdate, -} from '@/services/dashboards/widgets/_helpers/widget-validation-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-validation-helper'; import type { WidgetProps, WidgetEmit, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface UseWidgetLifecycleOptions { diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget-pagination.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination.ts similarity index 74% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget-pagination.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination.ts index 99aa78ccfa..c031dfcfac 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget-pagination.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination.ts @@ -1,7 +1,7 @@ import type { UnwrapRef } from 'vue'; import { computed, ref } from 'vue'; -import type { MergedBaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state'; +import type { MergedBaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state'; export const useWidgetPagination = (mergedState: UnwrapRef) => { const thisPage = ref(1); diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state.ts similarity index 87% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state.ts index d1ed9ca7ba..b311e9d7d0 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state.ts @@ -10,15 +10,15 @@ import type { } from '@/api-clients/dashboard/_types/dashboard-type'; import type { InheritOptions, WidgetConfig, WidgetOptions } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetConfig } from '@/services/dashboards/widgets/_helpers/widget-config-helper'; -import { getInitialWidgetInheritOptions } from '@/services/dashboards/widgets/_helpers/widget-inherit-options-helper'; +import { getWidgetConfig } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-config-helper'; +import { getInitialWidgetInheritOptions } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-inherit-options-helper'; import { getRefinedWidgetOptions, -} from '@/services/dashboards/widgets/_helpers/widget-options-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-helper'; import { getInitialSchemaProperties, getRefinedSchemaProperties, -} from '@/services/dashboards/widgets/_helpers/widget-schema-helper'; -import { getWidgetInheritOptionsErrorMap } from '@/services/dashboards/widgets/_helpers/widget-validation-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper'; +import { getWidgetInheritOptionsErrorMap } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-validation-helper'; export interface MergedBaseWidgetState { diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-base-widget-state.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state.ts similarity index 91% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/use-base-widget-state.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state.ts index aea1a05272..fb00c0a436 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-base-widget-state.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state.ts @@ -10,13 +10,13 @@ import type { import { CURRENCY } from '@/store/display/constant'; import type { Currency } from '@/store/display/type'; -import type { MergedBaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state'; +import type { MergedBaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state'; import { mergeBaseWidgetState, -} from '@/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state'; import type { WidgetProps, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; /** * @description It returns states which is among the data generated by widget info and widget config through combination, diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-console-filters.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-console-filters.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-console-filters.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-console-filters.ts index 51ada452c9..7872022b72 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-console-filters.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-console-filters.ts @@ -8,9 +8,9 @@ import type { ConsoleFilter } from '@cloudforet/core-lib/query/type'; import type { WidgetFiltersMap } from '@/api-clients/dashboard/_types/widget-type'; -import type { BaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-base-widget-state'; -import type { OverridableWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import type { WidgetProps } from '@/services/dashboards/widgets/_types/widget-type'; +import type { BaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state'; +import type { OverridableWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import type { WidgetProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; export const useWidgetConsoleFilters = (props: WidgetProps, widgetState: UnwrapRef, overrides: OverridableWidgetState = {}): ComputedRef => { const queryHelper = new QueryHelper(); diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-date-range.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-date-range.ts similarity index 71% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-date-range.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-date-range.ts index bfbf55324a..3079de6aed 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-date-range.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-date-range.ts @@ -7,9 +7,9 @@ import dayjs from 'dayjs'; import { GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { DateRange } from '@/api-clients/dashboard/_types/dashboard-type'; -import type { BaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-base-widget-state'; -import type { OverridableWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import type { WidgetProps } from '@/services/dashboards/widgets/_types/widget-type'; +import type { BaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state'; +import type { OverridableWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import type { WidgetProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; export const useWidgetDateRange = (props: WidgetProps, widgetState: UnwrapRef, overrides: OverridableWidgetState = {}): ComputedRef => { if (isRef(overrides.dateRange)) return overrides.dateRange; diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-frame.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-frame.ts similarity index 86% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-frame.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-frame.ts index ce84abae61..2b8376a45a 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-frame.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-frame.ts @@ -10,10 +10,10 @@ import type { Currency } from '@/store/display/type'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -import type { WidgetFrameProps } from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import type { WidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getNonInheritedWidgetOptionNamesAmongUsedVariables } from '@/services/dashboards/widgets/_helpers/widget-schema-helper'; -import type { WidgetEmit, WidgetProps } from '@/services/dashboards/widgets/_types/widget-type'; +import type { WidgetFrameProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import type { WidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getNonInheritedWidgetOptionNamesAmongUsedVariables } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper'; +import type { WidgetEmit, WidgetProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; export interface WidgetFrameOptions { dateRange?: DateRange|ComputedRef; diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-location.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-location.ts similarity index 91% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-location.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-location.ts index 20b7b9d67b..90ecc3fb39 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget-location.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-location.ts @@ -13,16 +13,16 @@ import { useAppContextStore } from '@/store/app-context/app-context-store'; import { arrayToQueryString, objectToQueryString, primitiveToQueryString } from '@/lib/router-query-string'; +import type { BaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state'; +import type { OverridableWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getWidgetLocationFilters } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper'; +import type { WidgetProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; import { ADMIN_ASSET_INVENTORY_ROUTE } from '@/services/asset-inventory/routes/admin/route-constant'; import { ASSET_INVENTORY_ROUTE } from '@/services/asset-inventory/routes/route-constant'; import type { CloudServiceDetailPageUrlQuery } from '@/services/asset-inventory/types/cloud-service-page-type'; import { DYNAMIC_COST_QUERY_SET_PARAMS } from '@/services/cost-explorer/constants/managed-cost-analysis-query-sets'; import { ADMIN_COST_EXPLORER_ROUTE } from '@/services/cost-explorer/routes/admin/route-constant'; import { COST_EXPLORER_ROUTE } from '@/services/cost-explorer/routes/route-constant'; -import type { BaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-base-widget-state'; -import type { OverridableWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getWidgetLocationFilters } from '@/services/dashboards/widgets/_helpers/widget-location-helper'; -import type { WidgetProps } from '@/services/dashboards/widgets/_types/widget-type'; export const useWidgetLocation = (props: WidgetProps, baseState: UnwrapRef, dateRange: ComputedRef, overrides: OverridableWidgetState = {}) => { diff --git a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget.ts similarity index 76% rename from apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget.ts index 1f054f6266..5357099eb5 100644 --- a/apps/web/src/services/dashboards/widgets/_composables/use-widget/use-widget.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget.ts @@ -14,13 +14,13 @@ import type { DateRange } from '@/api-clients/dashboard/_types/dashboard-type'; import type { BaseWidgetState, -} from '@/services/dashboards/widgets/_composables/use-widget/use-base-widget-state'; -import { useBaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/use-base-widget-state'; -import { useWidgetConsoleFilters } from '@/services/dashboards/widgets/_composables/use-widget/use-widget-console-filters'; -import { useWidgetDateRange } from '@/services/dashboards/widgets/_composables/use-widget/use-widget-date-range'; -import { useWidgetFrame } from '@/services/dashboards/widgets/_composables/use-widget/use-widget-frame'; -import { useWidgetLocation } from '@/services/dashboards/widgets/_composables/use-widget/use-widget-location'; -import type { WidgetEmit, WidgetProps } from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state'; +import { useBaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-base-widget-state'; +import { useWidgetConsoleFilters } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-console-filters'; +import { useWidgetDateRange } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-date-range'; +import { useWidgetFrame } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-frame'; +import { useWidgetLocation } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget-location'; +import type { WidgetEmit, WidgetProps } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; export interface OverridableWidgetState { dateRange?: DateRange|ComputedRef; // overrides dateRange diff --git a/apps/web/src/services/dashboards/widgets/_constants/compliance-constant.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_constants/compliance-constant.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant.ts diff --git a/apps/web/src/services/dashboards/widgets/_constants/managed-widget-options-schema.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/managed-widget-options-schema.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_constants/managed-widget-options-schema.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/managed-widget-options-schema.ts diff --git a/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-components-constant.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-components-constant.ts new file mode 100644 index 0000000000..3ac9252563 --- /dev/null +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-components-constant.ts @@ -0,0 +1,63 @@ +import type { AsyncComponent } from 'vue'; + +import type { BaseWidgetConfigKey, WidgetConfigKey } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-list-type'; + +const BASE_WIDGET_COMPONENTS: Record = { + baseTrend: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/BaseTrendWidget.vue'), + }), + basePie: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/BasePieWidget.vue'), + }), + baseCountOfFindings: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/BaseCountOfFindingsWidget.vue'), + }), +}; + +export const WIDGET_COMPONENTS: Record = { + monthlyCost: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue'), + }), + budgetUsageSummary: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue'), + }), + costMap: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/CostMapWidget.vue'), + }), + costTrend: BASE_WIDGET_COMPONENTS.baseTrend, + costTrendStacked: BASE_WIDGET_COMPONENTS.baseTrend, + costSummaryMultiFields: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue'), + }), + costPie: BASE_WIDGET_COMPONENTS.basePie, + costDonut: BASE_WIDGET_COMPONENTS.basePie, + costByRegion: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue'), + }), + costByRegionMultiFields: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue'), + }), + budgetStatus: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue'), + }), + budgetUsageByTarget: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue'), + }), + severityStatusByService: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue'), + }), + countOfFailFindings: BASE_WIDGET_COMPONENTS.baseCountOfFindings, + countOfPassAndFailFindings: BASE_WIDGET_COMPONENTS.baseCountOfFindings, + trendOfPassAndFailFindings: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue'), + }), + totalFailFindingsStatus: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue'), + }), + totalFailFindingsHistory: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue'), + }), + complianceStatus: () => ({ + component: import('@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue'), + }), +}; diff --git a/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-config-list-constant.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-config-list-constant.ts new file mode 100644 index 0000000000..36a1ff81b0 --- /dev/null +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-config-list-constant.ts @@ -0,0 +1,87 @@ +/* eslint-disable import/order */ +// base widgets +import baseCountOfFindings from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-count-of-findings/widget-config'; +import basePie from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-pie/widget-config'; +import baseTrend from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_base-widgets/base-trend/widget-config'; + +// console widgets +import complianceStatus from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/widget-config'; +import countOfFailFindings from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-fail-findings/widget-config'; +import countOfPassAndFailFindings from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config'; +import severityStatusByService from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/widget-config'; +import totalFailFindingsHistory from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/widget-config'; +import totalFailFindingsStatus from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/widget-config'; +import trendOfPassAndFailFindings from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config'; +import budgetStatus from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/widget-config'; +import budgetUsageByTarget from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/widget-config'; +import budgetUsageSummary from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/widget-config'; +import costByRegionMultiFields from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/widget-config'; +import costByRegion from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/widget-config'; +import costDonut from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-donut/widget-config'; +import costMap from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/widget-config'; +import costPie from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-pie/widget-config'; +import costSummaryMultiFields from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/widget-config'; +import costTrendStacked from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend-stacked/widget-config'; +import costTrend from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend/widget-config'; +import monthlyCost from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/widget-config'; + +import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; +import type { BaseWidgetConfigKey, WidgetConfigKey } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-list-type'; + +export const BASE_WIDGET_CONFIG_KEYS = [ + 'baseTrend', + 'basePie', + 'baseCountOfFindings', +] as const; +export const CONSOLE_WIDGET_CONFIG_KEYS = [ + 'monthlyCost', + 'budgetUsageSummary', + 'costMap', + 'costTrend', + 'costTrendStacked', + 'costSummaryMultiFields', + 'costPie', + 'costDonut', + 'costByRegion', + 'costByRegionMultiFields', + 'budgetStatus', + 'budgetUsageByTarget', + 'severityStatusByService', + 'countOfFailFindings', + 'countOfPassAndFailFindings', + 'trendOfPassAndFailFindings', + 'totalFailFindingsStatus', + 'totalFailFindingsHistory', + 'complianceStatus', +] as const; + + +export const CONSOLE_WIDGET_CONFIGS: Record> = { + // Cost Widgets + monthlyCost, + budgetUsageSummary, + costMap, + costTrend, + costTrendStacked, + costSummaryMultiFields, + costPie, + costDonut, + costByRegion, + costByRegionMultiFields, + budgetStatus, + budgetUsageByTarget, + // Asset Widgets + severityStatusByService, + countOfFailFindings, + countOfPassAndFailFindings, + trendOfPassAndFailFindings, + totalFailFindingsStatus, + totalFailFindingsHistory, + complianceStatus, +}; + +export const BASE_WIDGET_CONFIGS: Record> = { + baseTrend, + basePie, + baseCountOfFindings, +}; diff --git a/apps/web/src/services/dashboards/widgets/_constants/widget-constant.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-constant.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_constants/widget-constant.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-constant.ts diff --git a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-chart-data-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-chart-data-helper.test.ts similarity index 97% rename from apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-chart-data-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-chart-data-helper.test.ts index 9619e60bc5..51fa69001f 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-chart-data-helper.test.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-chart-data-helper.test.ts @@ -1,7 +1,7 @@ import { range } from 'lodash'; import { describe, it, expect } from 'vitest'; -import { getRefinedXYChartData } from '@/services/dashboards/widgets/_helpers/widget-chart-data-helper'; +import { getRefinedXYChartData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper'; interface SubData { date: string; diff --git a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-config-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-config-helper.test.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-config-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-config-helper.test.ts diff --git a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-inherit-options-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-inherit-options-helper.test.ts similarity index 99% rename from apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-inherit-options-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-inherit-options-helper.test.ts index b7f20f2a23..7d33b784d3 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-inherit-options-helper.test.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-inherit-options-helper.test.ts @@ -7,7 +7,7 @@ import type { InheritOptions, WidgetConfig, WidgetOptionsSchema } from '@/api-cl import { getInheritingOptionKeys, getInitialWidgetInheritOptions, -} from '@/services/dashboards/widgets/_helpers/widget-inherit-options-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-inherit-options-helper'; diff --git a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-options-filters-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-options-filters-helper.test.ts similarity index 93% rename from apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-options-filters-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-options-filters-helper.test.ts index 61d4f9a8a7..268f259ed6 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-options-filters-helper.test.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-options-filters-helper.test.ts @@ -1,6 +1,6 @@ import type { WidgetFilterKey, WidgetFiltersMap } from '@/api-clients/dashboard/_types/widget-type'; -import { setFilterAndGetWidgetFiltersMap } from '@/services/dashboards/widgets/_helpers/widget-options-filters-helper'; +import { setFilterAndGetWidgetFiltersMap } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-filters-helper'; describe('[Widget Options Filters Helper] setFilterAndGetWidgetFiltersMap', () => { diff --git a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-schema-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-schema-helper.test.ts similarity index 99% rename from apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-schema-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-schema-helper.test.ts index 611ed71954..3ae48a18fc 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-schema-helper.test.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-schema-helper.test.ts @@ -6,7 +6,7 @@ import type { InheritOptions, WidgetConfig, WidgetOptions } from '@/api-clients/ import { getInitialSchemaProperties, getNonInheritedWidgetOptionNamesAmongUsedVariables, getRefinedSchemaProperties, getWidgetOptionKeyByVariableKey, -} from '@/services/dashboards/widgets/_helpers/widget-schema-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper'; const DEFAULT_WIDGET_CONFIG = { widget_config_id: 'test', diff --git a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-value-label-helper.test.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-value-label-helper.test.ts similarity index 96% rename from apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-value-label-helper.test.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-value-label-helper.test.ts index 2f2235dbac..75a8942bab 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/__tests__/widget-value-label-helper.test.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/__tests__/widget-value-label-helper.test.ts @@ -1,7 +1,7 @@ import { describe } from 'vitest'; +import { getWidgetValueLabel } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-value-label-helper'; import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; -import { getWidgetValueLabel } from '@/services/dashboards/widgets/_helpers/widget-value-label-helper'; const mockAllReferenceTypeInfo: AllReferenceTypeInfo = { provider: { diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-chart-data-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-chart-data-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper.ts diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-chart-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper.ts similarity index 96% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-chart-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper.ts index 56b8c76c55..08c9729f96 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-chart-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper.ts @@ -6,10 +6,10 @@ import { COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_const import type { DateRange } from '@/api-clients/dashboard/_types/dashboard-type'; import type { Granularity } from '@/api-clients/dashboard/_types/widget-type'; -import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; import type { Legend, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; interface RawData { diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-component-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-component-helper.ts similarity index 66% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-component-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-component-helper.ts index 6b2d7c6b44..513e7339d2 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-component-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-component-helper.ts @@ -1,7 +1,7 @@ import type { AsyncComponent } from 'vue'; -import { WIDGET_COMPONENTS } from '@/services/dashboards/widgets/_constants/widget-components-constant'; -import { getWidgetConfig } from '@/services/dashboards/widgets/_helpers/widget-config-helper'; +import { WIDGET_COMPONENTS } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-components-constant'; +import { getWidgetConfig } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-config-helper'; export const getWidgetComponent = (widgetConfigId: string): AsyncComponent => { const config = getWidgetConfig(widgetConfigId); diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-config-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-config-helper.ts similarity index 95% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-config-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-config-helper.ts index 95382780f0..dba1a6129f 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-config-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-config-helper.ts @@ -2,7 +2,7 @@ import { mergeWith } from 'lodash'; import type { WidgetConfig, BaseConfigInfo } from '@/api-clients/dashboard/_types/widget-type'; -import { BASE_WIDGET_CONFIGS, CONSOLE_WIDGET_CONFIGS } from '@/services/dashboards/widgets/_constants/widget-config-list-constant'; +import { BASE_WIDGET_CONFIGS, CONSOLE_WIDGET_CONFIGS } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-config-list-constant'; const _mergeCustomizer = (val1, val2) => { if (Array.isArray(val1)) return [...new Set(val1.concat(val2))]; diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-inherit-options-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-inherit-options-helper.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-inherit-options-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-inherit-options-helper.ts diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-location-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper.ts similarity index 92% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-location-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper.ts index 33f483d994..57b1348ba0 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-location-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper.ts @@ -8,7 +8,7 @@ import type { WidgetFiltersMap } from '@/api-clients/dashboard/_types/widget-typ import { arrayToQueryString, queryStringToArray } from '@/lib/router-query-string'; -import type { WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +import type { WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-options-filters-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-filters-helper.ts similarity index 94% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-options-filters-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-filters-helper.ts index 7b3afd3aa5..7ba91a2460 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-options-filters-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-filters-helper.ts @@ -6,7 +6,7 @@ import type { WidgetFiltersMap, WidgetFilterKey } from '@/api-clients/dashboard/ import { MANAGED_VARIABLE_MODELS } from '@/lib/variable-models/managed-model-config/base-managed-model-config'; -import { MANAGED_WIDGET_FILTERS_SCHEMA_PROPERTIES } from '@/services/dashboards/widgets/_constants/managed-widget-options-schema'; +import { MANAGED_WIDGET_FILTERS_SCHEMA_PROPERTIES } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/managed-widget-options-schema'; /** diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-options-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-helper.ts similarity index 93% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-options-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-helper.ts index 693c64929f..fde6e150dd 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-options-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-helper.ts @@ -5,7 +5,7 @@ import type { InheritOptions, WidgetConfig, WidgetOptions, WidgetFilterKey, } from '@/api-clients/dashboard/_types/widget-type'; -import { setFilterAndGetWidgetFiltersMap } from '@/services/dashboards/widgets/_helpers/widget-options-filters-helper'; +import { setFilterAndGetWidgetFiltersMap } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-filters-helper'; export const getRefinedWidgetOptions = ( diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-options-schema-generator.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator.ts similarity index 94% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-options-schema-generator.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator.ts index 23bcb62a2d..33bd34f39c 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-options-schema-generator.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator.ts @@ -3,7 +3,7 @@ import type { WidgetOptionKey, WidgetOptionsSchema, WidgetOptionsSchemaProperty import { MANAGED_WIDGET_FILTERS_SCHEMA_PROPERTIES, MANAGED_WIDGET_OPTIONS_SCHEMA_PROPERTIES, -} from '@/services/dashboards/widgets/_constants/managed-widget-options-schema'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/managed-widget-options-schema'; type CustomOptionTuple = [WidgetOptionKey, Partial]; export const getWidgetOptionsSchema = (options: (WidgetOptionKey|CustomOptionTuple)[]): WidgetOptionsSchema => { diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-schema-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper.ts similarity index 95% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-schema-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper.ts index 72b4dad4b8..23d8c54af9 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-schema-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper.ts @@ -5,7 +5,10 @@ import type { InheritOptions, WidgetConfig, WidgetFilterOptionKey, WidgetOptions, WidgetOptionsSchema, } from '@/api-clients/dashboard/_types/widget-type'; -import { MANAGED_WIDGET_FILTERS_SCHEMA_PROPERTIES, MANAGED_WIDGET_OPTIONS_SCHEMA_PROPERTIES } from '@/services/dashboards/widgets/_constants/managed-widget-options-schema'; +import { + MANAGED_WIDGET_FILTERS_SCHEMA_PROPERTIES, + MANAGED_WIDGET_OPTIONS_SCHEMA_PROPERTIES, +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/managed-widget-options-schema'; const VAR_KEY_TO_OPTION_KEY_MAP = {}; Object.entries(MANAGED_WIDGET_FILTERS_SCHEMA_PROPERTIES).forEach(([optionKey, property]) => { diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-table-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper.ts similarity index 96% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-table-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper.ts index 52a580f5bd..f2c2407042 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-table-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper.ts @@ -8,8 +8,8 @@ import type { Granularity } from '@/api-clients/dashboard/_types/widget-type'; import type { ManagedVariableModelKey } from '@/lib/variable-models/managed-model-config/base-managed-model-config'; +import type { Field } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { AllReferenceTypeInfo } from '@/services/dashboards/stores/all-reference-type-info-store'; -import type { Field } from '@/services/dashboards/widgets/_types/widget-data-table-type'; /** * @name getWidgetTableDateFields diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-validation-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-validation-helper.ts similarity index 95% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-validation-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-validation-helper.ts index 75898b3090..409c752a09 100644 --- a/apps/web/src/services/dashboards/widgets/_helpers/widget-validation-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-validation-helper.ts @@ -10,12 +10,12 @@ import type { WidgetOptionsSchema, } from '@/api-clients/dashboard/_types/widget-type'; -import { getUpdatedWidgetInfo } from '@/services/dashboards/helpers/dashboard-widget-info-helper'; -import { getInheritingOptionKeys } from '@/services/dashboards/widgets/_helpers/widget-inherit-options-helper'; +import { getUpdatedWidgetInfo } from '@/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper'; +import { getInheritingOptionKeys } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-inherit-options-helper'; import { getWidgetOptionKeyByVariableKey, -} from '@/services/dashboards/widgets/_helpers/widget-schema-helper'; -import type { UpdatableWidgetInfo } from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-schema-helper'; +import type { UpdatableWidgetInfo } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; export const getWidgetInheritOptionsErrorMap = ( diff --git a/apps/web/src/services/dashboards/widgets/_helpers/widget-value-label-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-value-label-helper.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_helpers/widget-value-label-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-value-label-helper.ts diff --git a/apps/web/src/services/dashboards/widgets/_types/compliance-type.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type.ts similarity index 66% rename from apps/web/src/services/dashboards/widgets/_types/compliance-type.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type.ts index 481ca5530f..079f547a2c 100644 --- a/apps/web/src/services/dashboards/widgets/_types/compliance-type.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type.ts @@ -1,4 +1,4 @@ -import type { SEVERITY_STATUS_MAP, COMPLIANCE_STATUS_MAP } from '@/services/dashboards/widgets/_constants/compliance-constant'; +import type { SEVERITY_STATUS_MAP, COMPLIANCE_STATUS_MAP } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; export type Severity = keyof typeof SEVERITY_STATUS_MAP; export type ComplianceStatus = keyof typeof COMPLIANCE_STATUS_MAP; diff --git a/apps/web/src/services/dashboards/widgets/_types/widget-data-table-type.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_types/widget-data-table-type.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type.ts diff --git a/apps/web/src/services/dashboards/widgets/_types/widget-list-type.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-list-type.ts similarity index 66% rename from apps/web/src/services/dashboards/widgets/_types/widget-list-type.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-list-type.ts index a6c62b1fb7..428969f66f 100644 --- a/apps/web/src/services/dashboards/widgets/_types/widget-list-type.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-list-type.ts @@ -1,7 +1,7 @@ import type { BASE_WIDGET_CONFIG_KEYS, CONSOLE_WIDGET_CONFIG_KEYS, -} from '@/services/dashboards/widgets/_constants/widget-config-list-constant'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/widget-config-list-constant'; export type WidgetConfigKey = typeof CONSOLE_WIDGET_CONFIG_KEYS[number]; export type BaseWidgetConfigKey = typeof BASE_WIDGET_CONFIG_KEYS[number]; diff --git a/apps/web/src/services/dashboards/widgets/_types/widget-type.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/_types/widget-type.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type.ts diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue similarity index 95% rename from apps/web/src/services/dashboards/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue index 794e2785e6..b0c3a59845 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/ComplianceStatusWidget.vue @@ -19,14 +19,14 @@ import { i18n } from '@/translations'; import { useAmcharts5 } from '@/common/composables/amcharts5'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; import { COMPLIANCE_STATUS_MAP, SEVERITY_STATUS_MAP, -} from '@/services/dashboards/widgets/_constants/compliance-constant'; -import type { Severity } from '@/services/dashboards/widgets/_types/compliance-type'; -import type { WidgetExpose, WidgetProps, WidgetEmit } from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; +import type { Severity } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type'; +import type { WidgetExpose, WidgetProps, WidgetEmit } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface SubData { diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/compliance-status/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/widget-config.ts similarity index 86% rename from apps/web/src/services/dashboards/widgets/asset-widgets/compliance-status/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/widget-config.ts index 4ef09eecb0..487e2db243 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/compliance-status/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/compliance-status/widget-config.ts @@ -1,6 +1,6 @@ import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const complianceStatusWidgetConfig: WidgetConfig = { widget_config_id: 'complianceStatus', diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/count-of-fail-findings/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-fail-findings/widget-config.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/asset-widgets/count-of-fail-findings/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-fail-findings/widget-config.ts index 8a7ff243ff..0905aff62e 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/count-of-fail-findings/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-fail-findings/widget-config.ts @@ -1,7 +1,7 @@ import { ASSET_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const countOfFailFindingsWidgetConfig: WidgetConfig = { widget_config_id: 'countOfFailFindings', diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config.ts index 64ee6aaa85..c5b9d7b2e0 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/count-of-pass-and-fail-findings/widget-config.ts @@ -1,7 +1,7 @@ import { ASSET_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const countOfPassAndFailFindingsWidgetConfig: WidgetConfig = { widget_config_id: 'countOfPassAndFailFindings', diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue similarity index 91% rename from apps/web/src/services/dashboards/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue index 0b6184c8f7..0dc993125e 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/SeverityStatusByServiceWidget.vue @@ -14,12 +14,12 @@ import type { CloudServiceAnalyzeParameters } from '@/schema/inventory/cloud-ser import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { SEVERITY_STATUS_MAP } from '@/services/dashboards/widgets/_constants/compliance-constant'; -import type { ComplianceStatus, Severity } from '@/services/dashboards/widgets/_types/compliance-type'; -import type { WidgetExpose, WidgetProps, WidgetEmit } from '@/services/dashboards/widgets/_types/widget-type'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { SEVERITY_STATUS_MAP } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; +import type { ComplianceStatus, Severity } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type'; +import type { WidgetExpose, WidgetProps, WidgetEmit } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface Data { diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/severity-status-by-service/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/widget-config.ts similarity index 86% rename from apps/web/src/services/dashboards/widgets/asset-widgets/severity-status-by-service/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/widget-config.ts index 1906823970..4899639c69 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/severity-status-by-service/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/severity-status-by-service/widget-config.ts @@ -1,6 +1,6 @@ import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const severityStatusByServiceWidgetConfig: WidgetConfig = { widget_config_id: 'severityStatusByService', diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue similarity index 93% rename from apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue index 33f235ab7f..45be6fb71e 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/TotalFailFindingsHistoryWidget.vue @@ -25,14 +25,14 @@ import ErrorHandler from '@/common/composables/error/errorHandler'; import { red, green } from '@/styles/colors'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { SEVERITY_STATUS_MAP } from '@/services/dashboards/widgets/_constants/compliance-constant'; -import { getDateAxisSettings } from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import type { Severity } from '@/services/dashboards/widgets/_types/compliance-type'; -import type { WidgetProps, WidgetExpose, WidgetEmit } from '@/services/dashboards/widgets/_types/widget-type'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { SEVERITY_STATUS_MAP } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; +import { getDateAxisSettings } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import type { Severity } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type'; +import type { WidgetProps, WidgetExpose, WidgetEmit } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface XYChartData { date?: string; diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-history/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/widget-config.ts similarity index 88% rename from apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-history/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/widget-config.ts index 7002896ba8..1388986dc6 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-history/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-history/widget-config.ts @@ -1,7 +1,7 @@ import { GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const totalFailFindingsHistoryWidgetConfig: WidgetConfig = { widget_config_id: 'totalFailFindingsHistory', diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue similarity index 91% rename from apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue index 6efc9cb833..772a9fba8d 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/TotalFailFindingsStatusWidget.vue @@ -17,13 +17,13 @@ import type { CloudServiceAnalyzeParameters } from '@/schema/inventory/cloud-ser import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { SEVERITY_STATUS_MAP } from '@/services/dashboards/widgets/_constants/compliance-constant'; -import type { Severity } from '@/services/dashboards/widgets/_types/compliance-type'; -import type { WidgetProps, WidgetExpose, WidgetEmit } from '@/services/dashboards/widgets/_types/widget-type'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { SEVERITY_STATUS_MAP } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; +import type { Severity } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/compliance-type'; +import type { WidgetProps, WidgetExpose, WidgetEmit } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface SubData { diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-status/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/widget-config.ts similarity index 87% rename from apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-status/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/widget-config.ts index ec0db72670..39c92e5951 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/total-fail-findings-status/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/total-fail-findings-status/widget-config.ts @@ -1,6 +1,6 @@ import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const totalFailFindingsStatusWidgetConfig: WidgetConfig = { widget_config_id: 'totalFailFindingsStatus', diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue similarity index 90% rename from apps/web/src/services/dashboards/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue index cc7307a094..6ab85a3cc6 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/TrendOfPassAndFailFindingsWidget.vue @@ -19,27 +19,28 @@ import { useAmcharts5 } from '@/common/composables/amcharts5'; import { setXYSharedTooltipTextWithRate } from '@/common/composables/amcharts5/xy-chart-helper'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; -import WidgetChartNoDataOverlay from '@/services/dashboards/widgets/_components/WidgetChartNoDataOverlay.vue'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { COMPLIANCE_STATUS_MAP } from '@/services/dashboards/widgets/_constants/compliance-constant'; +import WidgetChartNoDataOverlay from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetChartNoDataOverlay.vue'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { COMPLIANCE_STATUS_MAP } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_constants/compliance-constant'; import { getDateAxisSettings, -} from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; import { getReferenceTypeOfDataField, getRefinedDateTableData, getWidgetTableDateFields, -} from '@/services/dashboards/widgets/_helpers/widget-table-helper'; -import type { Field } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper'; +import type { Field } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetExpose, WidgetProps, WidgetEmit, Legend, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; + interface ChartDataResult { diff --git a/apps/web/src/services/dashboards/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config.ts similarity index 89% rename from apps/web/src/services/dashboards/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config.ts index 2a34f114b7..2d5c3eed1c 100644 --- a/apps/web/src/services/dashboards/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/asset-widgets/trend-of-pass-and-fail-findings/widget-config.ts @@ -1,7 +1,7 @@ import { ASSET_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const trendOfPassAndFailFindingsWidgetConfig: WidgetConfig = { widget_config_id: 'trendOfPassAndFailFindings', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue similarity index 94% rename from apps/web/src/services/dashboards/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue index 1f21e5d04d..208df6eab9 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/BudgetStatusWidget.vue @@ -16,12 +16,12 @@ import ErrorHandler from '@/common/composables/error/errorHandler'; import { indigo, red, yellow } from '@/styles/colors'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; import type { WidgetEmit, WidgetExpose, WidgetProps, Legend, BudgetUsageAnalyzeResponse, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface Data { diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-status/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/widget-config.ts similarity index 87% rename from apps/web/src/services/dashboards/widgets/cost-widgets/budget-status/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/widget-config.ts index c188ba39d5..0de95d66ba 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-status/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-status/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const budgetStatusWidgetConfig: WidgetConfig = { diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue similarity index 88% rename from apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue index d473990261..c23dcec496 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/BudgetUsageByTargetWidget.vue @@ -16,15 +16,15 @@ import { COST_DATA_FIELD_MAP } from '@/api-clients/dashboard/_constants/widget-c import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import type { Field, WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import type { Field, WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetExpose, WidgetProps, WidgetEmit, BudgetUsageAnalyzeResponse, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface Data { diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-by-target/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/widget-config.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-by-target/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/widget-config.ts index 379de2dc4c..5a8abe1ee8 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-by-target/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-by-target/widget-config.ts @@ -1,7 +1,7 @@ import { COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const budgetUsageByTargetWidgetConfig: WidgetConfig = { widget_config_id: 'budgetUsageByTarget', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue similarity index 96% rename from apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue index a7d330bfac..11ed4159a4 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/BudgetUsageSummaryWidget.vue @@ -25,11 +25,11 @@ import ErrorHandler from '@/common/composables/error/errorHandler'; import { indigo, red, gray } from '@/styles/colors'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getDateAxisSettings } from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import type { WidgetExpose, WidgetProps, WidgetEmit } from '@/services/dashboards/widgets/_types/widget-type'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getDateAxisSettings } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import type { WidgetExpose, WidgetProps, WidgetEmit } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; interface Data { diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-summary/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/widget-config.ts similarity index 87% rename from apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-summary/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/widget-config.ts index 4ebab30add..a0f598a776 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/budget-usage-summary/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/budget-usage-summary/widget-config.ts @@ -1,7 +1,7 @@ import { GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const budgetUsageSummaryConfig: WidgetConfig = { widget_config_id: 'budgetUsageSummary', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue similarity index 89% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue index 4df3c8e510..ca49ae6c8c 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/CostByRegionMultiFieldsWidget.vue @@ -21,22 +21,23 @@ import type { RegionReferenceMap } from '@/store/reference/region-reference-stor import { useAmcharts5 } from '@/common/composables/amcharts5'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getPieChartLegends } from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import { getWidgetDataTableRowLocation } from '@/services/dashboards/widgets/_helpers/widget-location-helper'; -import { getReferenceTypeOfDataField } from '@/services/dashboards/widgets/_helpers/widget-table-helper'; -import { getWidgetValueLabel } from '@/services/dashboards/widgets/_helpers/widget-value-label-helper'; -import type { Field, WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getPieChartLegends } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import { getWidgetDataTableRowLocation } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper'; +import { getReferenceTypeOfDataField } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper'; +import { getWidgetValueLabel } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-value-label-helper'; +import type { Field, WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetExpose, WidgetProps, WidgetEmit, Legend, CostAnalyzeResponse, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; + interface SubData { diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region-multi-fields/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/widget-config.ts similarity index 92% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region-multi-fields/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/widget-config.ts index fb1343ae4d..4066348f2e 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region-multi-fields/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region-multi-fields/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costByRegionMultiFieldsWidgetConfig: WidgetConfig = { widget_config_id: 'costByRegionMultiFields', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue similarity index 88% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue index d4befb7752..89e5c43ed1 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/CostByRegionWidget.vue @@ -24,24 +24,24 @@ import type { RegionReferenceMap } from '@/store/reference/region-reference-stor import { useAmcharts5 } from '@/common/composables/amcharts5'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getXYChartLegends } from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import { getWidgetDataTableRowLocation } from '@/services/dashboards/widgets/_helpers/widget-location-helper'; -import type { Field, WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getXYChartLegends } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import { getWidgetDataTableRowLocation } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper'; +import type { Field, WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetExpose, WidgetProps, WidgetEmit, Legend, CostAnalyzeResponse, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; import type { Data, MapChartData, -} from '@/services/dashboards/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper'; import { getRefinedMapChartData, -} from '@/services/dashboards/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper'; type FullData = CostAnalyzeResponse; diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/cost-by-region-data-hleper.ts diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/widget-config.ts similarity index 91% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/widget-config.ts index d367986be0..6f67ca28f2 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-by-region/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-by-region/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costByRegionWidgetConfig: WidgetConfig = { widget_config_id: 'costByRegion', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-donut/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-donut/widget-config.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-donut/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-donut/widget-config.ts index b655413936..50c34f5467 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-donut/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-donut/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costDonutWidgetConfig: Partial = { widget_config_id: 'costDonut', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/CostMapWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/CostMapWidget.vue similarity index 92% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/CostMapWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/CostMapWidget.vue index 93e7831d79..ec6d379b3b 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/CostMapWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/CostMapWidget.vue @@ -17,12 +17,12 @@ import type { CostDataField } from '@/api-clients/dashboard/_types/widget-type'; import { useAmcharts5 } from '@/common/composables/amcharts5'; import ErrorHandler from '@/common/composables/error/errorHandler'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; import type { WidgetExpose, WidgetProps, WidgetEmit, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; import type { AnalyzeRawData, TreemapChartData, diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/costmap-chart-data-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/costmap-chart-data-helper.ts similarity index 100% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/costmap-chart-data-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/costmap-chart-data-helper.ts diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/costmap-draw-chart-helper.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/costmap-draw-chart-helper.ts similarity index 85% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/costmap-draw-chart-helper.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/costmap-draw-chart-helper.ts index 708871b383..c5ff1f0ca5 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/costmap-draw-chart-helper.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/costmap-draw-chart-helper.ts @@ -2,8 +2,8 @@ import { gray, palette, transparent, white, } from '@/styles/colors'; -import type { WidgetTheme } from '@/services/dashboards/widgets/_types/widget-type'; -import type { TreemapChartData } from '@/services/dashboards/widgets/cost-widgets/cost-map/costmap-chart-data-helper'; +import type { WidgetTheme } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { TreemapChartData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/costmap-chart-data-helper'; export const setThemeColorsToTreemapData = (treemapData: TreemapChartData['children'], theme?: WidgetTheme): TreemapChartData['children'] => { const themeColorName: WidgetTheme = theme || 'violet'; diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/widget-config.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/widget-config.ts index fb0c097418..e98321ec43 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-map/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-map/widget-config.ts @@ -1,7 +1,7 @@ import { COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costMapWidgetConfig: WidgetConfig = { widget_config_id: 'costMap', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-pie/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-pie/widget-config.ts similarity index 90% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-pie/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-pie/widget-config.ts index f1f9c85423..e256d05a78 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-pie/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-pie/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costPieWidgetConfig: Partial = { widget_config_id: 'costPie', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue similarity index 90% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue index e8a1f56e76..1b49123feb 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/CostSummaryMultiFieldsWidget.vue @@ -25,23 +25,23 @@ import ErrorHandler from '@/common/composables/error/errorHandler'; import { gray } from '@/styles/colors'; -import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; -import WidgetDataTable from '@/services/dashboards/widgets/_components/WidgetDataTable.vue'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidgetPagination } from '@/services/dashboards/widgets/_composables/use-widget-pagination'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getRefinedXYChartData } from '@/services/dashboards/widgets/_helpers/widget-chart-data-helper'; -import { getXYChartLegends } from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import { getWidgetDataTableRowLocation } from '@/services/dashboards/widgets/_helpers/widget-location-helper'; -import { getReferenceTypeOfDataField } from '@/services/dashboards/widgets/_helpers/widget-table-helper'; -import { getWidgetValueLabel } from '@/services/dashboards/widgets/_helpers/widget-value-label-helper'; -import type { Field, WidgetTableData } from '@/services/dashboards/widgets/_types/widget-data-table-type'; +import WidgetDataTable from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetDataTable.vue'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidgetPagination } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-pagination'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getRefinedXYChartData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper'; +import { getXYChartLegends } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import { getWidgetDataTableRowLocation } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-location-helper'; +import { getReferenceTypeOfDataField } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper'; +import { getWidgetValueLabel } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-value-label-helper'; +import type { Field, WidgetTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-data-table-type'; import type { WidgetEmit, WidgetExpose, WidgetProps, CostAnalyzeResponse, Legend, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import type { ReferenceType } from '@/services/dashboards/stores/all-reference-type-info-store'; interface SubData { diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-summary-multi-fields/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/widget-config.ts similarity index 93% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-summary-multi-fields/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/widget-config.ts index d5e77a4697..e65330d3ec 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-summary-multi-fields/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-summary-multi-fields/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costSummaryMultiFieldsWidgetConfig: WidgetConfig = { widget_config_id: 'costSummaryMultiFields', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-trend-stacked/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend-stacked/widget-config.ts similarity index 91% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-trend-stacked/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend-stacked/widget-config.ts index 3706a2a329..15fb5737f9 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-trend-stacked/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend-stacked/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costTrendStackedWidgetConfig: Partial = { widget_config_id: 'costTrendStacked', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-trend/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend/widget-config.ts similarity index 91% rename from apps/web/src/services/dashboards/widgets/cost-widgets/cost-trend/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend/widget-config.ts index 8ad71ca15f..3c38ed67dd 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/cost-trend/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/cost-trend/widget-config.ts @@ -1,7 +1,7 @@ import { CHART_TYPE, COST_DATA_FIELD_MAP, GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const costTrendWidgetConfig: Partial = { widget_config_id: 'costTrend', diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue similarity index 94% rename from apps/web/src/services/dashboards/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue index e08395e3f7..fc90d2fc82 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/MonthlyCostWidget.vue @@ -27,16 +27,16 @@ import ErrorHandler from '@/common/composables/error/errorHandler'; import { green, red, gray } from '@/styles/colors'; -import WidgetFrame from '@/services/dashboards/widgets/_components/WidgetFrame.vue'; -import { useWidgetColorSet } from '@/services/dashboards/widgets/_composables/use-widget-color-set'; -import { useWidgetLifecycle } from '@/services/dashboards/widgets/_composables/use-widget-lifecycle'; -import { useWidget } from '@/services/dashboards/widgets/_composables/use-widget/use-widget'; -import { getRefinedXYChartData } from '@/services/dashboards/widgets/_helpers/widget-chart-data-helper'; -import { getDateAxisSettings } from '@/services/dashboards/widgets/_helpers/widget-chart-helper'; -import { getRefinedDateTableData } from '@/services/dashboards/widgets/_helpers/widget-table-helper'; +import WidgetFrame from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_components/WidgetFrame.vue'; +import { useWidgetColorSet } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-color-set'; +import { useWidgetLifecycle } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget-lifecycle'; +import { useWidget } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/use-widget'; +import { getRefinedXYChartData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-data-helper'; +import { getDateAxisSettings } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-chart-helper'; +import { getRefinedDateTableData } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-table-helper'; import type { WidgetExpose, WidgetProps, WidgetEmit, CostAnalyzeResponse, -} from '@/services/dashboards/widgets/_types/widget-type'; +} from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; const chartContext = ref(null); diff --git a/apps/web/src/services/dashboards/widgets/cost-widgets/monthly-cost/widget-config.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/widget-config.ts similarity index 89% rename from apps/web/src/services/dashboards/widgets/cost-widgets/monthly-cost/widget-config.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/widget-config.ts index fcc061cc82..15f3c614f5 100644 --- a/apps/web/src/services/dashboards/widgets/cost-widgets/monthly-cost/widget-config.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/legacy/widgets/cost-widgets/monthly-cost/widget-config.ts @@ -1,7 +1,7 @@ import { GRANULARITY } from '@/api-clients/dashboard/_constants/widget-constant'; import type { WidgetConfig } from '@/api-clients/dashboard/_types/widget-type'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; const monthlyCostWidgetConfig: WidgetConfig = { diff --git a/apps/web/src/services/dashboards/stores/dashboard-detail-info-store.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store.ts similarity index 85% rename from apps/web/src/services/dashboards/stores/dashboard-detail-info-store.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store.ts index c02185ba05..9d4adc57c2 100644 --- a/apps/web/src/services/dashboards/stores/dashboard-detail-info-store.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store.ts @@ -12,22 +12,16 @@ import type { DashboardVariables, DashboardVariableSchemaProperty, DashboardVariablesSchema, - DashboardVars, DashboardGlobalVariablesSchema, } from '@/api-clients/dashboard/_types/dashboard-type'; import type { PrivateDashboardModel } from '@/api-clients/dashboard/private-dashboard/schema/model'; import type { PrivateWidgetModel } from '@/api-clients/dashboard/private-widget/schema/model'; import type { PublicDashboardModel } from '@/api-clients/dashboard/public-dashboard/schema/model'; import type { PublicWidgetModel } from '@/api-clients/dashboard/public-widget/schema/model'; -import { ROLE_TYPE } from '@/api-clients/identity/role/constant'; - -import { useAppContextStore } from '@/store/app-context/app-context-store'; -import { useUserStore } from '@/store/user/user-store'; import getRandomId from '@/lib/random-id-generator'; -import WorkspaceVariableModel from '@/lib/variable-models/managed-model/resource-model/workspace-variable-model'; -import { MANAGED_DASHBOARD_VARIABLES_SCHEMA } from '@/services/dashboards/constants/dashboard-managed-variables-schema'; +import { MANAGED_DASHBOARD_VARIABLES_SCHEMA } from '@/services/_shared/dashboard/dashboard-detail/constants/dashboard-managed-variables-schema'; // const DEFAULT_REFRESH_INTERVAL = '5m'; const DEFAULT_REFRESH_INTERVAL = 'off'; @@ -72,19 +66,14 @@ const refineProjectDashboardVariables = (variables: DashboardVariables, projectI }; export const useDashboardDetailInfoStore = defineStore('dashboard-detail-info', () => { - const appContextStore = useAppContextStore(); - const userStore = useUserStore(); - const storeState = reactive({ - isAdminMode: computed(() => appContextStore.getters.isAdminMode), - isWorkspaceOwner: computed(() => userStore.state.currentRoleInfo?.roleType === ROLE_TYPE.WORKSPACE_OWNER), - }); const state = reactive({ loadingDashboard: false, dashboardId: '' as string | undefined, dashboard: undefined as PublicDashboardModel|PrivateDashboardModel|undefined, projectId: undefined as string | undefined, + projectGroupId: undefined as string | undefined, options: DASHBOARD_DEFAULT.options as DashboardOptions, - vars: {} as DashboardVars, + variables: {} as DashboardVariables, variablesSchema: { properties: {}, @@ -95,6 +84,7 @@ export const useDashboardDetailInfoStore = defineStore('dashboard-detail-info', } as DashboardGlobalVariablesSchema, variablesInitMap: {} as Record, showDateRangeNotification: true, + variableImportModalVisible: false, // only for admin selectedWorkspaceId: undefined as string | undefined, // widget info states @@ -103,24 +93,6 @@ export const useDashboardDetailInfoStore = defineStore('dashboard-detail-info', }); const getters = reactive({ - refinedVars: computed(() => { - const isProjectSharedDashboard = !!state.projectId; - const _vars: DashboardVars = cloneDeep(state.vars); - if (isProjectSharedDashboard && !!state.projectId) { - _vars.project = [state.projectId]; - } - if (storeState.isAdminMode) { - if (state.selectedWorkspaceId && state.selectedWorkspaceId !== 'all') { - _vars[WorkspaceVariableModel.meta.idKey] = [state.selectedWorkspaceId]; - } else { - delete _vars[WorkspaceVariableModel.meta.idKey]; - } - } else { - delete _vars[WorkspaceVariableModel.meta.idKey]; - } - return _vars; - }), - // only for 1.0 legacy dashboard isAllVariablesInitialized: computed(() => Object.values(state.variablesInitMap).every((d) => d === true)), refinedVariablesSchema: computed(() => { @@ -159,26 +131,27 @@ export const useDashboardDetailInfoStore = defineStore('dashboard-detail-info', /* Mutations */ const setOptions = (options: DashboardOptions) => { state.options = options; }; - const setVars = (vars: DashboardVars) => { state.vars = vars; }; const setVariablesSchema = (variablesSchema: DashboardVariablesSchema) => { state.variablesSchema = variablesSchema; }; const setVariables = (variables: DashboardVariables) => { state.variables = variables; }; const setVariablesInitMap = (variablesInitMap: Record) => { state.variablesInitMap = variablesInitMap; }; const setDashboardWidgets = (dashboardWidgets: Array) => { state.dashboardWidgets = dashboardWidgets; }; const setLoadingWidgets = (loading: boolean) => { state.loadingWidgets = loading; }; const setProjectId = (projectId?: string) => { state.projectId = projectId; }; + const setProjectGroupId = (projectGroupId?: string) => { state.projectGroupId = projectGroupId; }; const setShowDateRangeNotification = (visible: boolean) => { state.showDateRangeNotification = visible; }; const setSelectedWorkspaceId = (workspaceId?: string) => { state.selectedWorkspaceId = workspaceId; }; + const setVariableImportModalVisible = (visible: boolean) => { state.variableImportModalVisible = visible; }; /* Actions */ const reset = () => { // set default value of all state state.loadingDashboard = false; state.dashboardId = undefined; setProjectId(''); + setProjectGroupId(''); setOptions(DASHBOARD_DEFAULT.options); setVariables({}); setVariablesSchema({ properties: {}, order: [] }); setVariablesInitMap({}); - setVars({}); setLoadingWidgets(false); state.showDateRangeNotification = true; state.selectedWorkspaceId = undefined; @@ -188,10 +161,8 @@ export const useDashboardDetailInfoStore = defineStore('dashboard-detail-info', console.error('setDashboardInfo failed', dashboardInfo); return; } - if (!!dashboardInfo.project_id && dashboardInfo.project_id !== '*' && dashboardInfo.project_id !== '-') { - state.projectId = dashboardInfo.project_id; - } - state.vars = dashboardInfo.vars ?? {}; + state.projectId = dashboardInfo.project_id; + state.projectGroupId = dashboardInfo.project_group_id; state.dashboard = dashboardInfo; const _dashboardInfo = cloneDeep(dashboardInfo); state.dashboardId = _dashboardInfo.dashboard_id; @@ -273,15 +244,16 @@ export const useDashboardDetailInfoStore = defineStore('dashboard-detail-info', const mutations = { setOptions, - setVars, setVariablesSchema, setVariables, setVariablesInitMap, setDashboardWidgets, setLoadingWidgets, setProjectId, + setProjectGroupId, setShowDateRangeNotification, setSelectedWorkspaceId, + setVariableImportModalVisible, }; const actions = { reset, diff --git a/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/dashboard-vars-store.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/dashboard-vars-store.ts new file mode 100644 index 0000000000..86927fba6b --- /dev/null +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/dashboard-vars-store.ts @@ -0,0 +1,32 @@ +import { reactive } from 'vue'; + +import { defineStore } from 'pinia'; + +import type { DashboardVars } from '@/api-clients/dashboard/_types/dashboard-type'; + +export const useDashboardVarsStore = defineStore('dashboard-vars', () => { + const state = reactive({ + vars: {} as DashboardVars|undefined, + }); + + const setVars = (vars?: DashboardVars) => { + state.vars = vars; + }; + const reset = () => { + setVars(); + }; + + const actions = { + reset, + }; + const mutations = { + setVars, + }; + + return { + state, + ...mutations, + ...actions, + }; +}); + diff --git a/apps/web/src/services/dashboards/stores/widget-form-store.ts b/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/widget-form-store.ts similarity index 90% rename from apps/web/src/services/dashboards/stores/widget-form-store.ts rename to apps/web/src/services/_shared/dashboard/dashboard-detail/stores/widget-form-store.ts index 171c49616c..1493417979 100644 --- a/apps/web/src/services/dashboards/stores/widget-form-store.ts +++ b/apps/web/src/services/_shared/dashboard/dashboard-detail/stores/widget-form-store.ts @@ -13,13 +13,13 @@ import type { import { useAppContextStore } from '@/store/app-context/app-context-store'; +import { getUpdatedWidgetInfo } from '@/services/_shared/dashboard/dashboard-detail/helpers/dashboard-widget-info-helper'; +import { mergeBaseWidgetState } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_composables/use-widget/merge-base-widget-state'; +import { getWidgetOptionsSchema } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_helpers/widget-options-schema-generator'; +import type { UpdatableWidgetInfo } from '@/services/_shared/dashboard/dashboard-detail/legacy/widgets/_types/widget-type'; +import { useDashboardDetailInfoStore } from '@/services/_shared/dashboard/dashboard-detail/stores/dashboard-detail-info-store'; import { useWidgetTitleInput } from '@/services/dashboards/composables/use-widget-title-input'; -import { getUpdatedWidgetInfo } from '@/services/dashboards/helpers/dashboard-widget-info-helper'; -import { useDashboardDetailInfoStore } from '@/services/dashboards/stores/dashboard-detail-info-store'; import type { MergedBaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state'; -import { mergeBaseWidgetState } from '@/services/dashboards/widgets/_composables/use-widget/merge-base-widget-state'; -import { getWidgetOptionsSchema } from '@/services/dashboards/widgets/_helpers/widget-options-schema-generator'; -import type { UpdatableWidgetInfo } from '@/services/dashboards/widgets/_types/widget-type'; /* Description diff --git a/apps/web/src/services/asset-inventory/components/MetricExplorerChart.vue b/apps/web/src/services/asset-inventory/components/MetricExplorerChart.vue index 842510cbdd..87783c7327 100644 --- a/apps/web/src/services/asset-inventory/components/MetricExplorerChart.vue +++ b/apps/web/src/services/asset-inventory/components/MetricExplorerChart.vue @@ -14,7 +14,7 @@ import { } from '@cloudforet/mirinae'; import type { AnalyzeResponse } from '@/api-clients/_common/schema/api-verbs/analyze'; -import type { MetricDataAnalyzeParameters } from '@/schema/inventory/metric-data/api-verbs/analyze'; +import type { MetricDataAnalyzeParameters } from '@/api-clients/inventory/metric-data/schema/api-verbs/analyze'; import MetricExplorerDonutChart from '@/services/asset-inventory/components/MetricExplorerDonutChart.vue'; import MetricExplorerHorizontalColumnChart diff --git a/apps/web/src/services/asset-inventory/components/MetricExplorerDataTable.vue b/apps/web/src/services/asset-inventory/components/MetricExplorerDataTable.vue index 9e6d17ad5d..08f523721c 100644 --- a/apps/web/src/services/asset-inventory/components/MetricExplorerDataTable.vue +++ b/apps/web/src/services/asset-inventory/components/MetricExplorerDataTable.vue @@ -19,7 +19,7 @@ import type { DataTableFieldType } from '@cloudforet/mirinae/types/data-display/ import { byteFormatter, numberFormatter } from '@cloudforet/utils'; import type { AnalyzeResponse } from '@/api-clients/_common/schema/api-verbs/analyze'; -import type { MetricDataAnalyzeParameters } from '@/schema/inventory/metric-data/api-verbs/analyze'; +import type { MetricDataAnalyzeParameters } from '@/api-clients/inventory/metric-data/schema/api-verbs/analyze'; import type { MetricLabelKey } from '@/schema/inventory/metric/type'; import { useAppContextStore } from '@/store/app-context/app-context-store'; diff --git a/apps/web/src/services/dashboards/components/DashboardDeleteModal.vue b/apps/web/src/services/dashboards/components/DashboardDeleteModal.vue index da243f1dce..6a1fe619ab 100644 --- a/apps/web/src/services/dashboards/components/DashboardDeleteModal.vue +++ b/apps/web/src/services/dashboards/components/DashboardDeleteModal.vue @@ -2,10 +2,8 @@ import { computed, reactive } from 'vue'; import { useRouter } from 'vue-router/composables'; -import { useMutation, useQueryClient } from '@tanstack/vue-query'; +import { useQueryClient } from '@tanstack/vue-query'; -import type { PrivateDashboardDeleteParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/delete'; -import type { PublicDashboardDeleteParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/delete'; import { i18n } from '@/translations'; import { useAppContextStore } from '@/store/app-context/app-context-store'; @@ -19,6 +17,7 @@ import { FAVORITE_TYPE } from '@/common/modules/favorites/favorite-button/type'; import { useRecentStore } from '@/common/modules/navigations/stores/recent-store'; import { RECENT_TYPE } from '@/common/modules/navigations/type'; +import { useDashboardDeleteMutation } from '@/services/_shared/dashboard/core/composables/mutations/use-dashboard-delete-mutation'; import { useDashboardQuery } from '@/services/dashboards/composables/use-dashboard-query'; import { ADMIN_DASHBOARDS_ROUTE } from '@/services/dashboards/routes/admin/route-constant'; import { DASHBOARDS_ROUTE } from '@/services/dashboards/routes/route-constant'; @@ -43,7 +42,6 @@ const appContextStore = useAppContextStore(); const router = useRouter(); /* Query */ const { - api, keys, } = useDashboardQuery(); const queryClient = useQueryClient(); @@ -68,44 +66,33 @@ const handleDeleteDashboardConfirm = async () => { }; /* Api */ -const deleteDashboardFn = (params: PublicDashboardDeleteParameters|PrivateDashboardDeleteParameters): Promise => { - const _isPrivate = params.dashboard_id.startsWith('private'); - if (_isPrivate) { - return api.privateDashboardAPI.delete(params as PrivateDashboardDeleteParameters); - } - return api.publicDashboardAPI.delete(params as PublicDashboardDeleteParameters); -}; - -const { mutate: deleteDashboard, isPending: loading } = useMutation( - { - mutationFn: deleteDashboardFn, - onSuccess: async (_, params) => { - const _isPrivate = params.dashboard_id.startsWith('private'); - const dashboardListQueryKey = _isPrivate ? keys.privateDashboardListQueryKey : keys.publicDashboardListQueryKey; - await queryClient.invalidateQueries({ queryKey: dashboardListQueryKey.value }); - await recentStore.deleteRecent({ - type: RECENT_TYPE.DASHBOARD, - itemId: props.dashboardId, +const { mutate: deleteDashboard, isPending: loading } = useDashboardDeleteMutation({ + onSuccess: async (_, params) => { + const _isPrivate = params.dashboard_id.startsWith('private'); + const dashboardListQueryKey = _isPrivate ? keys.privateDashboardListQueryKey : keys.publicDashboardListQueryKey; + await queryClient.invalidateQueries({ queryKey: dashboardListQueryKey.value }); + await recentStore.deleteRecent({ + type: RECENT_TYPE.DASHBOARD, + itemId: props.dashboardId, + }); + const isFavoriteItem = favoriteGetters.dashboardItems.find((item) => item.itemId === params.dashboard_id); + if (isFavoriteItem) { + await favoriteStore.deleteFavorite({ + itemType: FAVORITE_TYPE.DASHBOARD, + workspaceId: storeState.currentWorkspaceId || '', + itemId: params.dashboard_id, }); - const isFavoriteItem = favoriteGetters.dashboardItems.find((item) => item.itemId === params.dashboard_id); - if (isFavoriteItem) { - await favoriteStore.deleteFavorite({ - itemType: FAVORITE_TYPE.DASHBOARD, - workspaceId: storeState.currentWorkspaceId || '', - itemId: params.dashboard_id, - }); - } - state.proxyVisible = false; - const dashboardRouteName = storeState.isAdminMode - ? ADMIN_DASHBOARDS_ROUTE._NAME - : DASHBOARDS_ROUTE._NAME; - await router.replace({ name: dashboardRouteName }).catch(() => {}); - }, - onError(error) { - ErrorHandler.handleRequestError(error, i18n.t('DASHBOARDS.FORM.ALT_E_DELETE_DASHBOARD')); - }, + } + state.proxyVisible = false; + const dashboardRouteName = storeState.isAdminMode + ? ADMIN_DASHBOARDS_ROUTE._NAME + : DASHBOARDS_ROUTE._NAME; + await router.replace({ name: dashboardRouteName }).catch(() => {}); }, -); + onError: (error) => { + ErrorHandler.handleRequestError(error, i18n.t('DASHBOARDS.FORM.ALT_E_DELETE_DASHBOARD')); + }, +}); diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardCloneModal.vue b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardCloneModal.vue index af97f93af3..481d787e72 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardCloneModal.vue +++ b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardCloneModal.vue @@ -2,7 +2,7 @@ import { computed, reactive, watch } from 'vue'; import { useRouter } from 'vue-router/composables'; -import { useMutation, useQueryClient } from '@tanstack/vue-query'; +import { useQueryClient } from '@tanstack/vue-query'; import { PButtonModal, PFieldGroup, PTextInput, PToggleButton, @@ -11,27 +11,20 @@ import { getClonedName } from '@cloudforet/utils'; import { RESOURCE_GROUP } from '@/api-clients/_common/schema/constant'; import type { DashboardCreateParams, DashboardModel, DashboardType } from '@/api-clients/dashboard/_types/dashboard-type'; -import type { WidgetModel } from '@/api-clients/dashboard/_types/widget-type'; -import type { PrivateDashboardCreateParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/create'; -import { usePrivateWidgetApi } from '@/api-clients/dashboard/private-widget/composables/use-private-widget-api'; import type { PublicDashboardCreateParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/create'; -import { usePublicWidgetApi } from '@/api-clients/dashboard/public-widget/composables/use-public-widget-api'; import { ROLE_TYPE } from '@/api-clients/identity/role/constant'; import { i18n } from '@/translations'; import { useAppContextStore } from '@/store/app-context/app-context-store'; -import { useAllReferenceStore } from '@/store/reference/all-reference-store'; -import type { CostDataSourceReferenceMap } from '@/store/reference/cost-data-source-reference-store'; import { useUserStore } from '@/store/user/user-store'; import { showErrorMessage } from '@/lib/helper/notice-alert-helper'; -import ErrorHandler from '@/common/composables/error/errorHandler'; import { useFormValidator } from '@/common/composables/form-validator'; import { useProxyValue } from '@/common/composables/proxy-state'; +import { useDashboardCloneMutation } from '@/services/_shared/dashboard/core/composables/mutations/use-dashboard-clone-mutation'; import { useDashboardQuery } from '@/services/dashboards/composables/use-dashboard-query'; -import { getSharedDashboardLayouts } from '@/services/dashboards/helpers/dashboard-share-helper'; import { ADMIN_DASHBOARDS_ROUTE } from '@/services/dashboards/routes/admin/route-constant'; import { DASHBOARDS_ROUTE } from '@/services/dashboards/routes/route-constant'; @@ -47,21 +40,17 @@ const props = withDefaults(defineProps(), { }); const emit = defineEmits<{(e: 'update:visible', value: boolean): void; }>(); -const { privateWidgetAPI } = usePrivateWidgetApi(); -const { publicWidgetAPI } = usePublicWidgetApi(); /* Query */ const { publicDashboardList, privateDashboardList, keys, - api, } = useDashboardQuery(); const queryClient = useQueryClient(); const router = useRouter(); const appContextStore = useAppContextStore(); -const allReferenceStore = useAllReferenceStore(); const userStore = useUserStore(); const { forms: { @@ -87,7 +76,6 @@ const storeState = reactive({ isAdminMode: computed(() => appContextStore.getters.isAdminMode), isWorkspaceOwner: computed(() => userStore.state.currentRoleInfo?.roleType === ROLE_TYPE.WORKSPACE_OWNER), isWorkspaceMember: computed(() => userStore.state.currentRoleInfo?.roleType === ROLE_TYPE.WORKSPACE_MEMBER), - costDataSource: computed(() => allReferenceStore.getters.costDataSource), }); const state = reactive({ proxyVisible: useProxyValue('visible', props, emit), @@ -111,22 +99,6 @@ const state = reactive({ }), }); -/* Api */ -const listDashboardWidgets = async (dashboardId: string): Promise => { - try { - const isPrivate = dashboardId.startsWith('private'); - const fetcher = isPrivate - ? privateWidgetAPI.list - : publicWidgetAPI.list; - const res = await fetcher({ - dashboard_id: dashboardId, - }); - return res.results || []; - } catch (e) { - ErrorHandler.handleError(e); - return []; - } -}; const handleUpdateVisible = (visible) => { state.proxyVisible = visible; @@ -138,62 +110,50 @@ const handleChangePrivate = (val: boolean) => { }; const handleConfirm = async () => { if (!isAllValid) return; - const _dashboardWidgets = await listDashboardWidgets(props.dashboardId); - const _sharedLayouts = await getSharedDashboardLayouts(state.targetDashboard.layouts, _dashboardWidgets, storeState.costDataSource); const _sharedDashboard: DashboardCreateParams = { name: name.value, - layouts: _sharedLayouts, - options: state.targetDashboard.options || {}, - labels: state.targetDashboard.labels || [], - tags: { created_by: userStore.state.userId }, - vars: state.targetDashboard.vars, - vars_schema: state.targetDashboard.vars_schema, }; if (storeState.isWorkspaceMember) { state.isPrivate = true; } else if (storeState.isAdminMode) { state.isPrivate = false; - (_sharedDashboard as PublicDashboardCreateParameters).resource_group = RESOURCE_GROUP.DOMAIN; - } else if (!state.isPrivate) { - (_sharedDashboard as PublicDashboardCreateParameters).resource_group = state.targetDashboard?.resource_group || RESOURCE_GROUP.WORKSPACE; } - mutate(_sharedDashboard as PrivateDashboardCreateParameters); -}; - -const createDashboard = (params: DashboardCreateParams): Promise => { - if (state.isPrivate) { - return api.privateDashboardAPI.create(params as PrivateDashboardCreateParameters); + if (!state.isPrivate) { + if (storeState.isAdminMode) { + (_sharedDashboard as PublicDashboardCreateParameters).resource_group = RESOURCE_GROUP.DOMAIN; + } else { + (_sharedDashboard as PublicDashboardCreateParameters).resource_group = RESOURCE_GROUP.WORKSPACE; + } } - return api.publicDashboardAPI.create(params as PublicDashboardCreateParameters); + + cloneDashboard(_sharedDashboard as DashboardCreateParams, props.dashboardId); }; -const { mutate, isPending: dashboardCloneLoading } = useMutation( - { - mutationFn: createDashboard, - onSuccess: (dashboard: DashboardModel) => { - const isPrivate = dashboard.dashboard_id.startsWith('private'); - const dashboardListQueryKey = isPrivate ? keys.privateDashboardListQueryKey : keys.publicDashboardListQueryKey; - queryClient.invalidateQueries({ queryKey: dashboardListQueryKey.value }); - }, - onError: (e) => { - showErrorMessage(i18n.t('DASHBOARDS.FORM.ALT_E_CLONE_DASHBOARD'), e); - }, - onSettled(data) { - state.proxyVisible = false; - if (data?.dashboard_id) { - const dashboardDetailRouteName = storeState.isAdminMode - ? ADMIN_DASHBOARDS_ROUTE.DETAIL._NAME - : DASHBOARDS_ROUTE.DETAIL._NAME; - router.push({ - name: dashboardDetailRouteName, - params: { dashboardId: data.dashboard_id }, - }).catch(() => {}); - } - }, +const { mutate: cloneDashboard, isPending: dashboardCloneLoading } = useDashboardCloneMutation({ + isPrivate: computed(() => state.isPrivate), + onSuccess: (dashboard: DashboardModel) => { + const isPrivate = dashboard.dashboard_id.startsWith('private'); + const dashboardListQueryKey = isPrivate ? keys.privateDashboardListQueryKey : keys.publicDashboardListQueryKey; + queryClient.invalidateQueries({ queryKey: dashboardListQueryKey.value }); + }, + onError: (e) => { + showErrorMessage(i18n.t('DASHBOARDS.FORM.ALT_E_CLONE_DASHBOARD'), e); }, -); + onSettled(data) { + state.proxyVisible = false; + if (data?.dashboard_id) { + const dashboardDetailRouteName = storeState.isAdminMode + ? ADMIN_DASHBOARDS_ROUTE.DETAIL._NAME + : DASHBOARDS_ROUTE.DETAIL._NAME; + router.push({ + name: dashboardDetailRouteName, + params: { dashboardId: data.dashboard_id }, + }).catch(() => {}); + } + }, +}); watch(() => props.visible, (visible) => { if (visible) { diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardDetailHeader.vue b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardDetailHeader.vue deleted file mode 100644 index 1fc3712ea1..0000000000 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardDetailHeader.vue +++ /dev/null @@ -1,222 +0,0 @@ - - - - - diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardFolderSingleMoveModal.vue b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardFolderSingleMoveModal.vue index be1ebd481e..cd4d44671e 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardFolderSingleMoveModal.vue +++ b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardFolderSingleMoveModal.vue @@ -3,7 +3,7 @@ import { computed, reactive, watch, } from 'vue'; -import { useMutation, useQueryClient } from '@tanstack/vue-query'; +import { useQueryClient } from '@tanstack/vue-query'; import { PButtonModal, PFieldGroup, PI, PSelectDropdown, @@ -11,14 +11,6 @@ import { import type { SelectDropdownMenuItem } from '@cloudforet/mirinae/types/controls/dropdown/select-dropdown/type'; import type { DashboardChangeFolderParams } from '@/api-clients/dashboard/_types/dashboard-type'; -import type { - PrivateDashboardChangeFolderParameters, -} from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/change-folder'; -import type { PrivateFolderModel } from '@/api-clients/dashboard/private-folder/schema/model'; -import type { - PublicDashboardChangeFolderParameters, -} from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/change-folder'; -import type { PublicFolderModel } from '@/api-clients/dashboard/public-folder/schema/model'; import { i18n } from '@/translations'; import { useAppContextStore } from '@/store/app-context/app-context-store'; @@ -27,14 +19,12 @@ import { showErrorMessage, showSuccessMessage } from '@/lib/helper/notice-alert- import { useProxyValue } from '@/common/composables/proxy-state'; +import { useDashboardChangeFolderMutation } from '@/services/_shared/dashboard/core/composables/mutations/use-dashboard-change-folder-mutation'; import { useDashboardFolderQuery } from '@/services/dashboards/composables/use-dashboard-folder-query'; import { useDashboardQuery } from '@/services/dashboards/composables/use-dashboard-query'; import { useDashboardPageControlStore } from '@/services/dashboards/stores/dashboard-page-control-store'; - - -type DashboardModel = PrivateFolderModel | PublicFolderModel; interface Props { visible: boolean; dashboardId: string; @@ -52,7 +42,6 @@ const dashboardPageControlStore = useDashboardPageControlStore(); const queryClient = useQueryClient(); const { keys, - api, } = useDashboardQuery(); const { publicFolderList, @@ -95,30 +84,20 @@ const state = reactive({ }); /* Api */ -const changeFolderFn = (params: PrivateDashboardChangeFolderParameters | PublicDashboardChangeFolderParameters): Promise => { - const _isPrivate = props.dashboardId.startsWith('private'); - if (_isPrivate) { - return api.privateDashboardAPI.changeFolder(params as PrivateDashboardChangeFolderParameters); - } - return api.publicDashboardAPI.changeFolder(params as PublicDashboardChangeFolderParameters); -}; -const { mutate: changeFolder } = useMutation( - { - mutationFn: changeFolderFn, - onSuccess: () => { - showSuccessMessage(i18n.t('DASHBOARDS.DETAIL.ALT_S_MOVE_DASHBOARD'), ''); - const isPrivate = props.dashboardId.startsWith('private'); - const dashboardListQueryKey = isPrivate ? keys.privateDashboardListQueryKey : keys.publicDashboardListQueryKey; - queryClient.invalidateQueries({ queryKey: dashboardListQueryKey.value }); - }, - onError: (e) => { - showErrorMessage(i18n.t('DASHBOARDS.DETAIL.ALT_E_MOVE_DASHBOARD'), e); - }, - onSettled: () => { - state.proxyVisible = false; - }, +const { mutate: changeFolder } = useDashboardChangeFolderMutation({ + onSuccess: () => { + showSuccessMessage(i18n.t('DASHBOARDS.DETAIL.ALT_S_MOVE_DASHBOARD'), ''); + const isPrivate = props.dashboardId.startsWith('private'); + const dashboardListQueryKey = isPrivate ? keys.privateDashboardListQueryKey : keys.publicDashboardListQueryKey; + queryClient.invalidateQueries({ queryKey: dashboardListQueryKey.value }); }, -); + onError: (e) => { + showErrorMessage(i18n.t('DASHBOARDS.DETAIL.ALT_E_MOVE_DASHBOARD'), e); + }, + onSettled: () => { + state.proxyVisible = false; + }, +}); /* Event */ const handleFormConfirm = async () => { diff --git a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableImportModal.vue b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableImportModal.vue index a1abf649b3..d04b6a0553 100644 --- a/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableImportModal.vue +++ b/apps/web/src/services/dashboards/components/dashboard-detail/DashboardManageVariableImportModal.vue @@ -1,6 +1,5 @@ @@ -176,8 +119,8 @@ const handleDeleteConfirm = async () => { {