Skip to content

Commit

Permalink
fix(ui)#12833: soft delete service and edit action restrictions after…
Browse files Browse the repository at this point in the history
… soft delete (#13824)

* Added soft delete option for services

* disabled edit actions for deleted entities
fixed code smells
code refactoring

* added loading icon in restore entity modal while API call is pending

* fixed code smells

* localization changes

* changes to make actions disabled for deleted entities

* fixed code smell

* changes to limit actions for soft deleted teams

* localization changes

* added deleted badge for soft deleted teams

* Fixed unit tests

* improved delete modal functionality
limited actions for deleted tables on profiler tab

* fixed failing unit tests

* added missing up vote and down vote functionality for search Index entities

* updated the logic to show display name if available in search suggestions

* fixed custom properties settings page bug
added soft delete limitations for container and search index custom property tab

* fixed unit tests

* fixed bugs on table details page and container details page

* Fixed bug on team details page

---------

Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com>
  • Loading branch information
aniketkatkar97 and chirag-madlani authored Nov 10, 2023
1 parent 204cffd commit ba35e1e
Show file tree
Hide file tree
Showing 64 changed files with 1,513 additions and 1,058 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { FilterOutlined } from '@ant-design/icons';
import { Tooltip, Typography } from 'antd';
import Table, { ColumnsType } from 'antd/lib/table';
import {
Expand All @@ -29,7 +28,6 @@ import { ModalWithMarkdownEditor } from '../../../components/Modals/ModalWithMar
import { ColumnFilter } from '../../../components/Table/ColumnFilter/ColumnFilter.component';
import TableDescription from '../../../components/TableDescription/TableDescription.component';
import TableTags from '../../../components/TableTags/TableTags.component';
import { PRIMERY_COLOR } from '../../../constants/constants';
import { TABLE_SCROLL_VALUE } from '../../../constants/Table.constants';
import { EntityType } from '../../../enums/entity.enum';
import { Column, TagLabel } from '../../../generated/entity/data/container';
Expand All @@ -43,7 +41,10 @@ import {
getAllTags,
searchTagInData,
} from '../../../utils/TableTags/TableTags.utils';
import { getTableExpandableConfig } from '../../../utils/TableUtils';
import {
getFilterIcon,
getTableExpandableConfig,
} from '../../../utils/TableUtils';
import { ContainerDataModelProps } from './ContainerDataModel.interface';

const ContainerDataModel: FC<ContainerDataModelProps> = ({
Expand Down Expand Up @@ -137,7 +138,7 @@ const ContainerDataModel: FC<ContainerDataModelProps> = ({
}}
title={toLower(dataTypeDisplay)}>
<Typography.Text ellipsis className="cursor-pointer">
{dataTypeDisplay || record.dataType}
{dataTypeDisplay ?? record.dataType}
</Typography.Text>
</Tooltip>
);
Expand Down Expand Up @@ -171,12 +172,7 @@ const ContainerDataModel: FC<ContainerDataModelProps> = ({
key: 'tags',
accessor: 'tags',
width: 300,
filterIcon: (filtered: boolean) => (
<FilterOutlined
data-testid="tag-filter"
style={{ color: filtered ? PRIMERY_COLOR : undefined }}
/>
),
filterIcon: getFilterIcon('tag-filter'),
filters: tagFilter.Classification,
filterDropdown: ColumnFilter,
onFilter: searchTagInData,
Expand All @@ -201,12 +197,7 @@ const ContainerDataModel: FC<ContainerDataModelProps> = ({
key: 'glossary',
accessor: 'tags',
width: 300,
filterIcon: (filtered: boolean) => (
<FilterOutlined
data-testid="glossary-filter"
style={{ color: filtered ? PRIMERY_COLOR : undefined }}
/>
),
filterIcon: getFilterIcon('glossary-filter'),
filters: tagFilter.Glossary,
filterDropdown: ColumnFilter,
onFilter: searchTagInData,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,9 @@ const ContainerVersion: React.FC<ContainerVersionProp> = ({
<Row gutter={[0, 16]}>
<Col span={24}>
<DescriptionV1
isVersionView
description={description}
entityType={EntityType.CONTAINER}
showActions={false}
/>
</Col>
<Col span={24}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
* limitations under the License.
*/

import { FilterOutlined } from '@ant-design/icons';
import { Col, Row, Space, Table, Tabs, Typography } from 'antd';
import { ColumnsType } from 'antd/lib/table';
import { AxiosError } from 'axios';
Expand All @@ -38,10 +37,7 @@ import TableTags from '../../components/TableTags/TableTags.component';
import TabsLabel from '../../components/TabsLabel/TabsLabel.component';
import TagsContainerV2 from '../../components/Tag/TagsContainerV2/TagsContainerV2';
import { DisplayType } from '../../components/Tag/TagsViewer/TagsViewer.interface';
import {
getDashboardDetailsPath,
PRIMERY_COLOR,
} from '../../constants/constants';
import { getDashboardDetailsPath } from '../../constants/constants';
import { EntityTabs, EntityType } from '../../enums/entity.enum';
import { Tag } from '../../generated/entity/classification/tag';
import { Dashboard } from '../../generated/entity/data/dashboard';
Expand All @@ -58,7 +54,11 @@ import {
getAllTags,
searchTagInData,
} from '../../utils/TableTags/TableTags.utils';
import { getTagsWithoutTier, getTierTags } from '../../utils/TableUtils';
import {
getFilterIcon,
getTagsWithoutTier,
getTierTags,
} from '../../utils/TableUtils';
import { createTagObject, updateTierTag } from '../../utils/TagsUtils';
import { showErrorToast, showSuccessToast } from '../../utils/ToastUtils';
import ActivityThreadPanel from '../ActivityFeed/ActivityThreadPanel/ActivityThreadPanel';
Expand Down Expand Up @@ -400,7 +400,7 @@ const DashboardDetails = ({

const afterDeleteAction = useCallback(
(isSoftDelete?: boolean) =>
isSoftDelete ? handleToggleDelete : history.push('/'),
isSoftDelete ? handleToggleDelete() : history.push('/'),
[]
);

Expand Down Expand Up @@ -482,12 +482,7 @@ const DashboardDetails = ({
key: 'tags',
accessor: 'tags',
width: 300,
filterIcon: (filtered: boolean) => (
<FilterOutlined
data-testid="tag-filter"
style={{ color: filtered ? PRIMERY_COLOR : undefined }}
/>
),
filterIcon: getFilterIcon('tag-filter'),
render: (tags: TagLabel[], record: ChartType, index: number) => {
return (
<TableTags<ChartType>
Expand All @@ -514,12 +509,7 @@ const DashboardDetails = ({
key: 'glossary',
accessor: 'tags',
width: 300,
filterIcon: (filtered: boolean) => (
<FilterOutlined
data-testid="glossary-filter"
style={{ color: filtered ? PRIMERY_COLOR : undefined }}
/>
),
filterIcon: getFilterIcon('glossary-filter'),
render: (tags: TagLabel[], record: ChartType, index: number) => (
<TableTags<ChartType>
entityFqn={decodedDashboardFQN}
Expand Down Expand Up @@ -550,6 +540,35 @@ const DashboardDetails = ({
]
);

const {
editTagsPermission,
editDescriptionPermission,
editCustomAttributePermission,
editAllPermission,
editLineagePermission,
viewAllPermission,
} = useMemo(
() => ({
editTagsPermission:
(dashboardPermissions.EditTags || dashboardPermissions.EditAll) &&
!deleted,
editDescriptionPermission:
(dashboardPermissions.EditDescription ||
dashboardPermissions.EditAll) &&
!deleted,
editCustomAttributePermission:
(dashboardPermissions.EditAll ||
dashboardPermissions.EditCustomFields) &&
!deleted,
editAllPermission: dashboardPermissions.EditAll && !deleted,
editLineagePermission:
(dashboardPermissions.EditAll || dashboardPermissions.EditLineage) &&
!deleted,
viewAllPermission: dashboardPermissions.ViewAll,
}),
[dashboardPermissions, deleted]
);

const tabs = useMemo(
() => [
{
Expand All @@ -566,13 +585,10 @@ const DashboardDetails = ({
entityFqn={decodedDashboardFQN}
entityName={entityName}
entityType={EntityType.DASHBOARD}
hasEditAccess={
dashboardPermissions.EditAll ||
dashboardPermissions.EditDescription
}
hasEditAccess={editDescriptionPermission}
isEdit={isEdit}
isReadOnly={dashboardDetails.deleted}
owner={dashboardDetails.owner}
showActions={!deleted}
onCancel={onCancel}
onDescriptionEdit={onDescriptionEdit}
onDescriptionUpdate={onDescriptionUpdate}
Expand Down Expand Up @@ -610,11 +626,7 @@ const DashboardDetails = ({
displayType={DisplayType.READ_MORE}
entityFqn={decodedDashboardFQN}
entityType={EntityType.DASHBOARD}
permission={
(dashboardPermissions.EditAll ||
dashboardPermissions.EditTags) &&
!dashboardDetails.deleted
}
permission={editTagsPermission}
selectedTags={dashboardTags}
tagType={TagSource.Classification}
onSelectionChange={handleTagSelection}
Expand All @@ -625,11 +637,7 @@ const DashboardDetails = ({
displayType={DisplayType.READ_MORE}
entityFqn={decodedDashboardFQN}
entityType={EntityType.DASHBOARD}
permission={
(dashboardPermissions.EditAll ||
dashboardPermissions.EditTags) &&
!dashboardDetails.deleted
}
permission={editTagsPermission}
selectedTags={dashboardTags}
tagType={TagSource.Glossary}
onSelectionChange={handleTagSelection}
Expand Down Expand Up @@ -664,11 +672,10 @@ const DashboardDetails = ({
key: EntityTabs.LINEAGE,
children: (
<EntityLineageComponent
deleted={deleted}
entity={dashboardDetails}
entityType={EntityType.DASHBOARD}
hasEditAccess={
dashboardPermissions.EditAll || dashboardPermissions.EditLineage
}
hasEditAccess={editLineagePermission}
/>
),
},
Expand All @@ -684,11 +691,8 @@ const DashboardDetails = ({
<CustomPropertyTable
entityType={EntityType.DASHBOARD}
handleExtensionUpdate={onExtensionUpdate}
hasEditAccess={
dashboardPermissions.EditAll ||
dashboardPermissions.EditCustomFields
}
hasPermission={dashboardPermissions.ViewAll}
hasEditAccess={editCustomAttributePermission}
hasPermission={viewAllPermission}
/>
),
},
Expand All @@ -700,22 +704,30 @@ const DashboardDetails = ({
tableColumn,
dashboardDetails,
charts,
deleted,
entityName,
dashboardPermissions,
dashboardTags,
getEntityFieldThreadCounts,
onCancel,
onDescriptionEdit,
onDescriptionUpdate,
onThreadLinkSelect,
handleTagSelection,
editTagsPermission,
editLineagePermission,
editDescriptionPermission,
editCustomAttributePermission,
editAllPermission,
viewAllPermission,
]
);

return (
<PageLayoutV1
className="bg-white"
pageTitle="Table details"
pageTitle={t('label.entity-detail-plural', {
entity: t('label.dashboard'),
})}
title="Table details">
<Row gutter={[0, 12]}>
<Col className="p-x-lg" span={24}>
Expand Down Expand Up @@ -753,7 +765,7 @@ const DashboardDetails = ({
placeholder={t('label.enter-field-description', {
field: t('label.chart'),
})}
value={editChart.chart.description || ''}
value={editChart.chart.description ?? ''}
visible={Boolean(editChart)}
onCancel={closeEditChartModal}
onSave={onChartUpdate}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,9 @@ const DashboardVersion: FC<DashboardVersionProp> = ({
<Row gutter={[0, 16]}>
<Col span={24}>
<DescriptionV1
isVersionView
description={description}
entityType={EntityType.DASHBOARD}
showActions={false}
/>
</Col>
<Col span={24}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ export const DataAssetsHeader = ({
/>
<Divider className="self-center m-x-sm" type="vertical" />
<TierCard currentTier={tier?.tagFQN} updateTier={onTierUpdate}>
<Space>
<Space data-testid="header-tier-container">
{tier ? (
<span className="font-medium text-xs" data-testid="Tier">
{getEntityName(tier)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,9 @@ const DataModelVersion: FC<DataModelVersionProp> = ({
<Row gutter={[0, 16]}>
<Col span={24}>
<DescriptionV1
isVersionView
description={description}
entityType={EntityType.DASHBOARD_DATA_MODEL}
showActions={false}
/>
</Col>
<Col span={24}>
Expand Down
Loading

0 comments on commit ba35e1e

Please sign in to comment.