From 50d63718c97dbbbe9f1d13bdb961609b4f6f7a8a Mon Sep 17 00:00:00 2001 From: Svetoslav Dekov Date: Tue, 7 Oct 2025 14:36:24 +0300 Subject: [PATCH] chore(editor): Rename data store to data table in FE files (no-changelog) (#20427) --- .../dismiss-banner-request.dto.test.ts | 4 +- .../src/schemas/banner-name.schema.ts | 4 +- .../frontend/@n8n/i18n/src/locales/en.json | 120 ++++---- .../editor-ui/src/components/NodeSettings.vue | 2 +- .../components/Projects/ProjectHeader.test.ts | 14 +- .../src/components/Projects/ProjectHeader.vue | 12 +- .../src/components/banners/BannerStack.vue | 12 +- ...e => DataTableStorageLimitErrorBanner.vue} | 10 +- ...=> DataTableStorageLimitWarningBanner.vue} | 10 +- .../useDataTableNavigationCommands.ts | 24 +- packages/frontend/editor-ui/src/constants.ts | 10 +- .../src/features/dataStore/dataStore.store.ts | 271 ------------------ .../src/features/dataStore/typeGuards.ts | 24 -- .../editor-ui/src/features/dataStore/types.ts | 21 -- .../DataTableDetailsView.test.ts} | 68 ++--- .../DataTableDetailsView.vue} | 64 ++--- .../DataTableView.test.ts} | 72 ++--- .../DataTableView.vue} | 52 ++-- .../components/AddDataTableModal.vue} | 52 ++-- .../components/DataTableActions.test.ts} | 94 +++--- .../components/DataTableActions.vue} | 46 +-- .../components/DataTableBreadcrumbs.test.ts} | 74 ++--- .../components/DataTableBreadcrumbs.vue} | 56 ++-- .../components/DataTableCard.test.ts} | 42 +-- .../components/DataTableCard.vue} | 58 ++-- .../components/NodeStorageLimitCallout.vue | 18 +- .../dataGrid/AddColumnButton.test.ts | 68 ++--- .../components/dataGrid/AddColumnButton.vue | 52 ++-- .../components/dataGrid/AddRowButton.vue | 2 +- .../components/dataGrid/ColumnHeader.test.ts | 6 +- .../components/dataGrid/ColumnHeader.vue | 30 +- .../dataGrid/DataTableTable.test.ts} | 56 ++-- .../components/dataGrid/DataTableTable.vue} | 124 ++++---- .../dataGrid/ElDatePickerCellEditor.vue | 12 +- .../dataGrid/ElDatePickerFilter.vue | 10 +- .../dataGrid/NullEmptyCellRenderer.vue | 0 .../components/dataGrid/n8nTheme.ts | 0 .../useDataTableColumnFilters.test.ts} | 14 +- .../__tests__/useDatePickerCommon.test.ts | 0 .../composables/useDataTableColumnFilters.ts} | 15 +- .../composables/useDataTableGridBase.ts} | 81 +++--- .../useDataTableOperations.test.ts} | 48 ++-- .../composables/useDataTableOperations.ts} | 114 ++++---- .../composables/useDataTablePagination.ts} | 4 +- .../useDataTableSelection.test.ts} | 12 +- .../composables/useDataTableSelection.ts} | 4 +- .../composables/useDataTableTypes.ts} | 26 +- .../composables/useDatePickerCommon.ts | 2 +- .../{dataStore => dataTable}/constants.ts | 22 +- .../dataTable.api.test.ts} | 14 +- .../dataTable.api.ts} | 98 ++++--- .../dataTable.store.test.ts} | 58 ++-- .../src/features/dataTable/dataTable.store.ts | 271 ++++++++++++++++++ .../dataTable.types.ts} | 18 +- .../module.descriptor.ts | 52 ++-- .../src/features/dataTable/typeGuards.ts | 24 ++ .../editor-ui/src/features/dataTable/types.ts | 21 ++ .../types/dataTableFilters.types.ts} | 0 .../{dataStore => dataTable}/utils.ts | 0 .../utils/columnUtils.ts | 62 ++-- .../utils/filterMappings.ts | 2 +- .../utils/filterProcessors.test.ts | 2 +- .../utils/filterProcessors.ts | 2 +- .../utils/typeUtils.test.ts | 2 +- .../utils/typeUtils.ts | 8 +- packages/frontend/editor-ui/src/init.ts | 12 +- .../moduleInitializer/moduleInitializer.ts | 2 +- .../editor-ui/src/stores/projects.store.ts | 4 +- .../editor-ui/src/stores/rbac.store.ts | 1 + 69 files changed, 1308 insertions(+), 1281 deletions(-) rename packages/frontend/editor-ui/src/components/banners/{DataStoreStorageLimitErrorBanner.vue => DataTableStorageLimitErrorBanner.vue} (53%) rename packages/frontend/editor-ui/src/components/banners/{DataStoreStorageLimitWarningBanner.vue => DataTableStorageLimitWarningBanner.vue} (54%) delete mode 100644 packages/frontend/editor-ui/src/features/dataStore/dataStore.store.ts delete mode 100644 packages/frontend/editor-ui/src/features/dataStore/typeGuards.ts delete mode 100644 packages/frontend/editor-ui/src/features/dataStore/types.ts rename packages/frontend/editor-ui/src/features/{dataStore/DataStoreDetailsView.test.ts => dataTable/DataTableDetailsView.test.ts} (66%) rename packages/frontend/editor-ui/src/features/{dataStore/DataStoreDetailsView.vue => dataTable/DataTableDetailsView.vue} (65%) rename packages/frontend/editor-ui/src/features/{dataStore/DataStoreView.test.ts => dataTable/DataTableView.test.ts} (75%) rename packages/frontend/editor-ui/src/features/{dataStore/DataStoreView.vue => dataTable/DataTableView.vue} (75%) rename packages/frontend/editor-ui/src/features/{dataStore/components/AddDataStoreModal.vue => dataTable/components/AddDataTableModal.vue} (65%) rename packages/frontend/editor-ui/src/features/{dataStore/components/DataStoreActions.test.ts => dataTable/components/DataTableActions.test.ts} (69%) rename packages/frontend/editor-ui/src/features/{dataStore/components/DataStoreActions.vue => dataTable/components/DataTableActions.vue} (65%) rename packages/frontend/editor-ui/src/features/{dataStore/components/DataStoreBreadcrumbs.test.ts => dataTable/components/DataTableBreadcrumbs.test.ts} (68%) rename packages/frontend/editor-ui/src/features/{dataStore/components/DataStoreBreadcrumbs.vue => dataTable/components/DataTableBreadcrumbs.vue} (70%) rename packages/frontend/editor-ui/src/features/{dataStore/components/DataStoreCard.test.ts => dataTable/components/DataTableCard.test.ts} (62%) rename packages/frontend/editor-ui/src/features/{dataStore/components/DataStoreCard.vue => dataTable/components/DataTableCard.vue} (66%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/NodeStorageLimitCallout.vue (59%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/AddColumnButton.test.ts (81%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/AddColumnButton.vue (80%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/AddRowButton.vue (84%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/ColumnHeader.test.ts (92%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/ColumnHeader.vue (87%) rename packages/frontend/editor-ui/src/features/{dataStore/components/dataGrid/DataStoreTable.test.ts => dataTable/components/dataGrid/DataTableTable.test.ts} (71%) rename packages/frontend/editor-ui/src/features/{dataStore/components/dataGrid/DataStoreTable.vue => dataTable/components/dataGrid/DataTableTable.vue} (73%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/ElDatePickerCellEditor.vue (86%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/ElDatePickerFilter.vue (86%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/NullEmptyCellRenderer.vue (100%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/components/dataGrid/n8nTheme.ts (100%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/__tests__/useDataStoreColumnFilters.test.ts => dataTable/composables/__tests__/useDataTableColumnFilters.test.ts} (86%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/composables/__tests__/useDatePickerCommon.test.ts (100%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreColumnFilters.ts => dataTable/composables/useDataTableColumnFilters.ts} (87%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreGridBase.ts => dataTable/composables/useDataTableGridBase.ts} (86%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreOperations.test.ts => dataTable/composables/useDataTableOperations.test.ts} (61%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreOperations.ts => dataTable/composables/useDataTableOperations.ts} (73%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStorePagination.ts => dataTable/composables/useDataTablePagination.ts} (92%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreSelection.test.ts => dataTable/composables/useDataTableSelection.test.ts} (87%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreSelection.ts => dataTable/composables/useDataTableSelection.ts} (91%) rename packages/frontend/editor-ui/src/features/{dataStore/composables/useDataStoreTypes.ts => dataTable/composables/useDataTableTypes.ts} (67%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/composables/useDatePickerCommon.ts (97%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/constants.ts (61%) rename packages/frontend/editor-ui/src/features/{dataStore/dataStore.api.test.ts => dataTable/dataTable.api.test.ts} (73%) rename packages/frontend/editor-ui/src/features/{dataStore/dataStore.api.ts => dataTable/dataTable.api.ts} (56%) rename packages/frontend/editor-ui/src/features/{dataStore/dataStore.store.test.ts => dataTable/dataTable.store.test.ts} (55%) create mode 100644 packages/frontend/editor-ui/src/features/dataTable/dataTable.store.ts rename packages/frontend/editor-ui/src/features/{dataStore/datastore.types.ts => dataTable/dataTable.types.ts} (59%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/module.descriptor.ts (55%) create mode 100644 packages/frontend/editor-ui/src/features/dataTable/typeGuards.ts create mode 100644 packages/frontend/editor-ui/src/features/dataTable/types.ts rename packages/frontend/editor-ui/src/features/{dataStore/types/dataStoreFilters.types.ts => dataTable/types/dataTableFilters.types.ts} (100%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils.ts (100%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils/columnUtils.ts (74%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils/filterMappings.ts (98%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils/filterProcessors.test.ts (99%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils/filterProcessors.ts (99%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils/typeUtils.test.ts (99%) rename packages/frontend/editor-ui/src/features/{dataStore => dataTable}/utils/typeUtils.ts (87%) diff --git a/packages/@n8n/api-types/src/dto/owner/__tests__/dismiss-banner-request.dto.test.ts b/packages/@n8n/api-types/src/dto/owner/__tests__/dismiss-banner-request.dto.test.ts index 337df042e89..3bc7186e207 100644 --- a/packages/@n8n/api-types/src/dto/owner/__tests__/dismiss-banner-request.dto.test.ts +++ b/packages/@n8n/api-types/src/dto/owner/__tests__/dismiss-banner-request.dto.test.ts @@ -56,8 +56,8 @@ describe('DismissBannerRequestDto', () => { 'TRIAL', 'NON_PRODUCTION_LICENSE', 'EMAIL_CONFIRMATION', - 'DATA_STORE_STORAGE_LIMIT_WARNING', - 'DATA_STORE_STORAGE_LIMIT_ERROR', + 'DATA_TABLE_STORAGE_LIMIT_WARNING', + 'DATA_TABLE_STORAGE_LIMIT_ERROR', ]; expect(bannerNameSchema.options).toEqual(expectedBanners); diff --git a/packages/@n8n/api-types/src/schemas/banner-name.schema.ts b/packages/@n8n/api-types/src/schemas/banner-name.schema.ts index b343cb8dc74..44f1b19ac8a 100644 --- a/packages/@n8n/api-types/src/schemas/banner-name.schema.ts +++ b/packages/@n8n/api-types/src/schemas/banner-name.schema.ts @@ -6,8 +6,8 @@ export const bannerNameSchema = z.enum([ 'TRIAL', 'NON_PRODUCTION_LICENSE', 'EMAIL_CONFIRMATION', - 'DATA_STORE_STORAGE_LIMIT_WARNING', - 'DATA_STORE_STORAGE_LIMIT_ERROR', + 'DATA_TABLE_STORAGE_LIMIT_WARNING', + 'DATA_TABLE_STORAGE_LIMIT_ERROR', ]); export type BannerName = z.infer; diff --git a/packages/frontend/@n8n/i18n/src/locales/en.json b/packages/frontend/@n8n/i18n/src/locales/en.json index e94b84b60ce..8903b88acdc 100644 --- a/packages/frontend/@n8n/i18n/src/locales/en.json +++ b/packages/frontend/@n8n/i18n/src/locales/en.json @@ -2925,69 +2925,63 @@ "contextual.users.settings.unavailable.button.cloud": "Upgrade now", "contextual.feature.unavailable.title": "Available on the Enterprise Plan", "contextual.feature.unavailable.title.cloud": "Available on the Pro Plan", - "dataStore.dataStores": "Data tables", - "dataStore.empty.label": "You don't have any data tables yet", - "dataStore.empty.description": "Use data tables to persist execution results, share data between workflows, and track metrics for evaluation.", - "dataStore.card.size": "{size}MB", - "dataStore.card.column.count": "{count} column | {count} columns", - "dataStore.card.row.count": "{count} record | {count} records", - "dataStore.sort.lastUpdated": "Sort by last updated", - "dataStore.sort.lastCreated": "Sort by last created", - "dataStore.sort.nameAsc": "Sort by name (A-Z)", - "dataStore.sort.nameDesc": "Sort by name (Z-A)", - "dataStore.search.placeholder": "Search", - "dataStore.error.fetching": "Error loading data tables", - "dataStore.add.title": "Create new Data table", - "dataStore.add.button.label": "Create Data table", - "dataStore.add.input.name.label": "Data table name", - "dataStore.add.input.name.placeholder": "Enter data table name", - "dataStore.add.error": "Error creating data table", - "dataStore.delete.confirm.title": "Delete Data table", - "dataStore.delete.confirm.message": "Are you sure you want to delete the data table '{name}'? This action cannot be undone.", - "dataStore.delete.error": "Error deleting data table", - "dataStore.rename.error": "Error renaming data table", - "dataStore.getDetails.error": "Error fetching data table details", - "dataStore.notFound": "Data table not found", - "dataStore.noColumns.heading": "No columns yet", - "dataStore.noColumns.description": "Add columns to start storing data in this data table.", - "dataStore.noColumns.button.label": "Add first column", - "dataStore.addColumn.label": "Add Column", - "dataStore.addColumn.nameInput.label": "@:_reusableBaseText.name", - "dataStore.addColumn.nameInput.placeholder": "Enter column name", - "dataStore.addColumn.typeInput.label": "@:_reusableBaseText.type", - "dataStore.addColumn.error": "Error adding column", - "dataStore.addColumn.alreadyExistsError": "This column already exists", - "dataStore.addColumn.alreadyExistsDescription": "Column name already exists, choose a different name", - "dataStore.addColumn.systemColumnDescription": "This is a system column, choose a different name", - "dataStore.addColumn.testingColumnDescription": "This column is used for testing, choose a different name", - "dataStore.moveColumn.error": "Error moving column", - "dataStore.deleteColumn.error": "Error deleting column", - "dataStore.deleteColumn.confirm.title": "Delete column", - "dataStore.deleteColumn.confirm.message": "Are you sure you want to delete the column '{name}'? This action cannot be undone.", - "dataStore.addColumn.invalidName.error": "Invalid column name", - "dataStore.addColumn.invalidName.description": "Column names must begin with a letter and can only include letters, numbers, or underscores", - "dataStore.fetchContent.error": "Error fetching data store content", - "dataStore.addRow.label": "Add Row", - "dataStore.addRow.error": "Error adding row", - "dataStore.updateRow.error": "Error updating row", - "dataStore.deleteRows.title": "Delete Rows", - "dataStore.deleteRows.confirmation": "Are you sure you want to delete {count} row? | Are you sure you want to delete {count} rows?", - "dataStore.deleteRows.error": "Error deleting rows", - "dataStore.banner.storageLimitWarning.message": "{usage} of Data tables storage used. Delete data to avoid errors", - "dataStore.banner.storageLimitError.message": "{usage} of Data tables storage used, operations may fail. Delete data to avoid errors", - "dataStore.error.tableNotInitialized": "Table not initialized", - "dataStore.noRows": "No rows", - "dataStore.filters.isNull": "Is null", - "dataStore.filters.isNotNull": "Is not null", - "dataStore.filters.isEmpty": "Is empty", - "dataStore.filters.isNotEmpty": "Is not empty", - "dataStore.filters.between": "Between", - "dataStore.filters.true": "True", - "dataStore.filters.false": "False", - "dataStore.filters.greaterThan": "Greater than", - "dataStore.filters.greaterThanOrEqual": "Greater than or equal", - "dataStore.filters.lessThan": "Less than", - "dataStore.filters.lessThanOrEqual": "Less than or equal", + "dataTable.dataTables": "Data tables", + "dataTable.empty.label": "You don't have any data tables yet", + "dataTable.empty.description": "Use data tables to persist execution results, share data between workflows, and track metrics for evaluation.", + "dataTable.card.size": "{size}MB", + "dataTable.card.column.count": "{count} column | {count} columns", + "dataTable.add.title": "Create new Data table", + "dataTable.add.button.label": "Create Data table", + "dataTable.add.input.name.label": "Data table name", + "dataTable.add.input.name.placeholder": "Enter data table name", + "dataTable.add.error": "Error creating data table", + "dataTable.delete.confirm.title": "Delete Data table", + "dataTable.delete.confirm.message": "Are you sure you want to delete the data table '{name}'? This action cannot be undone.", + "dataTable.delete.error": "Error deleting data table", + "dataTable.rename.error": "Error renaming data table", + "dataTable.getDetails.error": "Error fetching data table details", + "dataTable.notFound": "Data table not found", + "dataTable.noColumns.heading": "No columns yet", + "dataTable.noColumns.description": "Add columns to start storing data in this data table.", + "dataTable.noColumns.button.label": "Add first column", + "dataTable.addColumn.label": "Add Column", + "dataTable.addColumn.nameInput.label": "@:_reusableBaseText.name", + "dataTable.addColumn.nameInput.placeholder": "Enter column name", + "dataTable.addColumn.typeInput.label": "@:_reusableBaseText.type", + "dataTable.addColumn.error": "Error adding column", + "dataTable.addColumn.alreadyExistsError": "This column already exists", + "dataTable.addColumn.alreadyExistsDescription": "Column name already exisits, choose a different name", + "dataTable.moveColumn.error": "Error moving column", + "dataTable.deleteColumn.error": "Error deleting column", + "dataTable.deleteColumn.confirm.title": "Delete column", + "dataTable.deleteColumn.confirm.message": "Are you sure you want to delete the column '{name}'? This action cannot be undone.", + "dataTable.addColumn.invalidName.error": "Invalid column name", + "dataTable.addColumn.invalidName.description": "Column names must begin with a letter and can only include letters, numbers, or underscores", + "dataTable.fetchContent.error": "Error fetching data table content", + "dataTable.addRow.label": "Add Row", + "dataTable.addRow.error": "Error adding row", + "dataTable.updateRow.error": "Error updating row", + "dataTable.deleteRows.title": "Delete Rows", + "dataTable.deleteRows.confirmation": "Are you sure you want to delete {count} row? | Are you sure you want to delete {count} rows?", + "dataTable.deleteRows.error": "Error deleting rows", + "dataTable.banner.storageLimitWarning.message": "{usage} of Data tables storage used. Delete data to avoid errors", + "dataTable.banner.storageLimitError.message": "{usage} of Data tables storage used, operations may fail. Delete data to avoid errors", + "dataTable.error.tableNotInitialized": "Table not initialized", + "dataTable.noRows": "No rows", + "dataTable.filters.isNull": "Is null", + "dataTable.filters.isNotNull": "Is not null", + "dataTable.filters.isEmpty": "Is empty", + "dataTable.filters.isNotEmpty": "Is not empty", + "dataTable.filters.between": "Between", + "dataTable.filters.true": "True", + "dataTable.filters.false": "False", + "dataTable.filters.greaterThan": "Greater than", + "dataTable.filters.greaterThanOrEqual": "Greater than or equal", + "dataTable.filters.lessThan": "Less than", + "dataTable.filters.lessThanOrEqual": "Less than or equal", + "dataTable.addColumn.alreadyExistsDescription": "Column name already exists, choose a different name", + "dataTable.addColumn.systemColumnDescription": "This is a system column, choose a different name", + "dataTable.addColumn.testingColumnDescription": "This column is used for testing, choose a different name", "settings.ldap": "LDAP", "settings.ldap.note": "LDAP allows users to authenticate with their centralized account. It's compatible with services that provide an LDAP interface like Active Directory, Okta and Jumpcloud.", "settings.ldap.infoTip": "Learn more about LDAP in the Docs", diff --git a/packages/frontend/editor-ui/src/components/NodeSettings.vue b/packages/frontend/editor-ui/src/components/NodeSettings.vue index 3e626675a8d..414865407b5 100644 --- a/packages/frontend/editor-ui/src/components/NodeSettings.vue +++ b/packages/frontend/editor-ui/src/components/NodeSettings.vue @@ -35,7 +35,7 @@ import { useNodeHelpers } from '@/composables/useNodeHelpers'; import { useNodeSettingsParameters } from '@/composables/useNodeSettingsParameters'; import { useTelemetry } from '@/composables/useTelemetry'; import { importCurlEventBus, ndvEventBus } from '@/event-bus'; -import NodeStorageLimitCallout from '@/features/dataStore/components/NodeStorageLimitCallout.vue'; +import NodeStorageLimitCallout from '@/features/dataTable/components/NodeStorageLimitCallout.vue'; import NodeTitle from '@/components/NodeTitle.vue'; import { RenameNodeCommand } from '@/models/history'; import { useCredentialsStore } from '@/stores/credentials.store'; diff --git a/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.test.ts b/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.test.ts index 16d526f7a6d..7683a318508 100644 --- a/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.test.ts +++ b/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.test.ts @@ -197,7 +197,9 @@ describe('ProjectHeader', () => { it('should render ProjectTabs Settings if project is team project and user has update scope', () => { route.params.projectId = '123'; - projectsStore.currentProject = createTestProject({ scopes: ['project:update'] }); + projectsStore.currentProject = createTestProject({ + scopes: ['project:update'], + }); renderComponent(); expect(projectTabsSpy).toHaveBeenCalledWith( @@ -210,7 +212,9 @@ describe('ProjectHeader', () => { it('should render ProjectTabs without Settings if no project update permission', () => { route.params.projectId = '123'; - projectsStore.currentProject = createTestProject({ scopes: ['project:read'] }); + projectsStore.currentProject = createTestProject({ + scopes: ['project:read'], + }); renderComponent(); expect(projectTabsSpy).toHaveBeenCalledWith( @@ -281,7 +285,9 @@ describe('ProjectHeader', () => { }); it('should not render creation button in setting page', async () => { - projectsStore.currentProject = createTestProject({ type: ProjectTypes.Personal }); + projectsStore.currentProject = createTestProject({ + type: ProjectTypes.Personal, + }); vi.spyOn(router, 'useRoute').mockReturnValueOnce({ name: VIEWS.PROJECT_SETTINGS, } as RouteLocationNormalizedLoadedGeneric); @@ -467,7 +473,7 @@ describe('ProjectHeader', () => { expect(actionsContainer.children).toHaveLength(2); }); - it('should not render datastore menu item if data store feature is disabled', () => { + it('should not render dataTable menu item if data table feature is disabled', () => { settingsStore.isDataTableFeatureEnabled = false; const { getByTestId } = renderComponent(); const actionsContainer = getByTestId('add-resource-actions'); diff --git a/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.vue b/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.vue index 59714d9e901..269094c5353 100644 --- a/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.vue +++ b/packages/frontend/editor-ui/src/components/Projects/ProjectHeader.vue @@ -19,7 +19,7 @@ import { type IconName } from '@n8n/design-system/components/N8nIcon/icons'; import type { IUser } from 'n8n-workflow'; import { type IconOrEmoji, isIconOrEmoji } from '@n8n/design-system/components/N8nIconPicker/types'; import { useUIStore } from '@/stores/ui.store'; -import { PROJECT_DATA_STORES } from '@/features/dataStore/constants'; +import { PROJECT_DATA_TABLES } from '@/features/dataTable/constants'; import ReadyToRunV2Button from '@/experiments/readyToRunWorkflowsV2/components/ReadyToRunV2Button.vue'; import { N8nButton, N8nHeading, N8nText, N8nTooltip } from '@n8n/design-system'; @@ -113,7 +113,7 @@ const ACTION_TYPES = { WORKFLOW: 'workflow', CREDENTIAL: 'credential', FOLDER: 'folder', - DATA_STORE: 'dataStore', + DATA_TABLE: 'dataTable', } as const; type ActionTypes = (typeof ACTION_TYPES)[keyof typeof ACTION_TYPES]; @@ -150,8 +150,8 @@ const menu = computed(() => { if (settingsStore.isDataTableFeatureEnabled) { // TODO: this should probably be moved to the module descriptor as a setting items.push({ - value: ACTION_TYPES.DATA_STORE, - label: i18n.baseText('dataStore.add.button.label'), + value: ACTION_TYPES.DATA_TABLE, + label: i18n.baseText('dataTable.add.button.label'), disabled: sourceControlStore.preferences.branchReadOnly || !getResourcePermissions(homeProject.value?.scopes)?.dataStore?.create, @@ -224,9 +224,9 @@ const actions: Record void> = { [ACTION_TYPES.FOLDER]: () => { emit('createFolder'); }, - [ACTION_TYPES.DATA_STORE]: (projectId: string) => { + [ACTION_TYPES.DATA_TABLE]: (projectId: string) => { void router.push({ - name: PROJECT_DATA_STORES, + name: PROJECT_DATA_TABLES, params: { projectId, new: 'new' }, }); }, diff --git a/packages/frontend/editor-ui/src/components/banners/BannerStack.vue b/packages/frontend/editor-ui/src/components/banners/BannerStack.vue index 1b5b6b858b0..777cec04444 100644 --- a/packages/frontend/editor-ui/src/components/banners/BannerStack.vue +++ b/packages/frontend/editor-ui/src/components/banners/BannerStack.vue @@ -4,8 +4,8 @@ import TrialOverBanner from '@/components/banners/TrialOverBanner.vue'; import TrialBanner from '@/components/banners/TrialBanner.vue'; import V1Banner from '@/components/banners/V1Banner.vue'; import EmailConfirmationBanner from '@/components/banners/EmailConfirmationBanner.vue'; -import DataStoreStorageLimitWarningBanner from '@/components/banners/DataStoreStorageLimitWarningBanner.vue'; -import DataStoreStorageLimitErrorBanner from '@/components/banners/DataStoreStorageLimitErrorBanner.vue'; +import DataTableStorageLimitWarningBanner from '@/components/banners/DataTableStorageLimitWarningBanner.vue'; +import DataTableStorageLimitErrorBanner from '@/components/banners/DataTableStorageLimitErrorBanner.vue'; import type { Component } from 'vue'; import type { N8nBanners } from '@/Interface'; @@ -19,13 +19,13 @@ export const N8N_BANNERS: N8nBanners = { EMAIL_CONFIRMATION: { priority: 250, component: EmailConfirmationBanner as Component }, TRIAL: { priority: 150, component: TrialBanner as Component }, NON_PRODUCTION_LICENSE: { priority: 140, component: NonProductionLicenseBanner as Component }, - DATA_STORE_STORAGE_LIMIT_WARNING: { + DATA_TABLE_STORAGE_LIMIT_WARNING: { priority: 300, - component: DataStoreStorageLimitWarningBanner as Component, + component: DataTableStorageLimitWarningBanner as Component, }, - DATA_STORE_STORAGE_LIMIT_ERROR: { + DATA_TABLE_STORAGE_LIMIT_ERROR: { priority: 400, - component: DataStoreStorageLimitErrorBanner as Component, + component: DataTableStorageLimitErrorBanner as Component, }, }; diff --git a/packages/frontend/editor-ui/src/components/banners/DataStoreStorageLimitErrorBanner.vue b/packages/frontend/editor-ui/src/components/banners/DataTableStorageLimitErrorBanner.vue similarity index 53% rename from packages/frontend/editor-ui/src/components/banners/DataStoreStorageLimitErrorBanner.vue rename to packages/frontend/editor-ui/src/components/banners/DataTableStorageLimitErrorBanner.vue index 95253e04fcd..20ce7c5cdd5 100644 --- a/packages/frontend/editor-ui/src/components/banners/DataStoreStorageLimitErrorBanner.vue +++ b/packages/frontend/editor-ui/src/components/banners/DataTableStorageLimitErrorBanner.vue @@ -1,19 +1,19 @@