diff --git a/src/libs/ajax/data-table-providers/DataTableProvider.ts b/src/libs/ajax/data-table-providers/DataTableProvider.ts index 7b7f8e1f14..e0b409dcde 100644 --- a/src/libs/ajax/data-table-providers/DataTableProvider.ts +++ b/src/libs/ajax/data-table-providers/DataTableProvider.ts @@ -112,6 +112,11 @@ export interface DataTableFeatures { supportsTsvAjaxDownload: boolean; supportsTypeDeletion: boolean; supportsTypeRenaming: boolean; + supportsEntityRenaming: boolean; + supportsEntityUpdating: boolean; + supportsAttributeRenaming: boolean; + supportsAttributeDeleting: boolean; + supportsAttributeClearing: boolean; supportsExport: boolean; supportsPointCorrection: boolean; supportsFiltering: boolean; diff --git a/src/libs/ajax/data-table-providers/EntityServiceDataTableProvider.ts b/src/libs/ajax/data-table-providers/EntityServiceDataTableProvider.ts index a85ec2f8fa..23dc73cc87 100644 --- a/src/libs/ajax/data-table-providers/EntityServiceDataTableProvider.ts +++ b/src/libs/ajax/data-table-providers/EntityServiceDataTableProvider.ts @@ -33,6 +33,11 @@ export class EntityServiceDataTableProvider implements DataTableProvider { supportsTsvAjaxDownload: false, supportsTypeDeletion: true, supportsTypeRenaming: true, + supportsEntityRenaming: true, + supportsEntityUpdating: true, + supportsAttributeRenaming: true, + supportsAttributeDeleting: true, + supportsAttributeClearing: true, supportsExport: true, supportsPointCorrection: true, supportsFiltering: true, diff --git a/src/libs/ajax/data-table-providers/WdsDataTableProvider.ts b/src/libs/ajax/data-table-providers/WdsDataTableProvider.ts index ad528defe1..d449bf1696 100644 --- a/src/libs/ajax/data-table-providers/WdsDataTableProvider.ts +++ b/src/libs/ajax/data-table-providers/WdsDataTableProvider.ts @@ -145,6 +145,11 @@ export class WdsDataTableProvider implements DataTableProvider { supportsTsvAjaxDownload: true, supportsTypeDeletion: true, supportsTypeRenaming: false, + supportsEntityRenaming: false, + supportsEntityUpdating: false, // TODO: enable as part of AJ-594 + supportsAttributeRenaming: false, // TODO: enable as part of AJ-1278, requires `edit.renameAttribute` capability + supportsAttributeDeleting: false, // TODO: enable as part of AJ-1275, requires `edit.deleteAttribute` capability + supportsAttributeClearing: false, supportsExport: false, supportsPointCorrection: false, supportsFiltering: false, diff --git a/src/workspace-data/data-table/shared/DataTable.js b/src/workspace-data/data-table/shared/DataTable.js index a08d7ae9cb..4b3f7a4b42 100644 --- a/src/workspace-data/data-table/shared/DataTable.js +++ b/src/workspace-data/data-table/shared/DataTable.js @@ -522,6 +522,7 @@ const DataTable = (props) => { text: entityName, }), editable && + dataProvider.features.supportsEntityRenaming && h(EditDataLink, { 'aria-label': `Rename ${entityType} ${entityName}`, onClick: () => setRenamingEntity(entityName), @@ -553,25 +554,31 @@ const DataTable = (props) => { searchByColumn: (v) => searchByColumn(attributeName, v), extraActions: _.concat( editable - ? [ - // settimeout 0 is needed to delay opening the modaals until after the popup menu closes. + ? _.compact([ + // settimeout 0 is needed to delay opening the modals until after the popup menu closes. // Without this, autofocus doesn't work in the modals. - { - label: 'Rename Column', - ...actionProps, - onClick: () => setTimeout(() => setRenamingColumn(attributeName), 0), - }, - { - label: 'Delete Column', - ...actionProps, - onClick: () => setTimeout(() => setDeletingColumn(attributeName), 0), - }, - { - label: 'Clear Column', - ...actionProps, - onClick: () => setTimeout(() => setClearingColumn(attributeName), 0), - }, - ] + dataProvider.features.supportsAttributeRenaming + ? { + label: 'Rename Column', + ...actionProps, + onClick: () => setTimeout(() => setRenamingColumn(attributeName), 0), + } + : null, + dataProvider.features.supportsAttributeDeleting + ? { + label: 'Delete Column', + ...actionProps, + onClick: () => setTimeout(() => setDeletingColumn(attributeName), 0), + } + : null, + dataProvider.features.supportsAttributeClearing + ? { + label: 'Clear Column', + ...actionProps, + onClick: () => setTimeout(() => setClearingColumn(attributeName), 0), + } + : null, + ]) : [], extraColumnActions ? extraColumnActions(attributeName) : [] ), @@ -602,6 +609,7 @@ const DataTable = (props) => { }); const editLink = editable && + dataProvider.features.supportsEntityUpdating && h(EditDataLink, { 'aria-label': `Edit attribute ${attributeName} of ${entityType} ${entityName}`, 'aria-haspopup': 'dialog',