Skip to content

Commit 7ec570e

Browse files
authored
Migrated new table in relationships tabs view (#5795)
1 parent 366199d commit 7ec570e

33 files changed

+857
-478
lines changed

frontend/app/src/entities/nodes/api/getObjectRelationshipDetails.ts

Lines changed: 0 additions & 98 deletions
This file was deleted.

frontend/app/src/entities/nodes/object-item-details/action-buttons/relationships-buttons.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Permission } from "@/entities/permission/types";
44
import { genericsState, schemaState } from "@/entities/schema/stores/schema.atom";
55
import graphqlClient from "@/shared/api/graphql/graphqlClientApollo";
66
import { useMutation } from "@/shared/api/graphql/useQuery";
7+
import { queryClient } from "@/shared/api/rest/client";
78
import { ButtonWithTooltip } from "@/shared/components/buttons/button-primitive";
89
import SlideOver, { SlideOverTitle } from "@/shared/components/display/slide-over";
910
import DynamicForm from "@/shared/components/form/dynamic-form";
@@ -77,6 +78,9 @@ export function RelationshipsButtons({ permission }: RelationshipsButtonsProps)
7778
await graphqlClient.refetchQueries({
7879
include: [objectKind!, `GetObjectRelationships_${objectKind}`],
7980
});
81+
queryClient.invalidateQueries({
82+
predicate: (query) => query.queryKey.includes("objects"),
83+
});
8084

8185
toast(
8286
<Alert

frontend/app/src/entities/nodes/object-item-details/object-item-details-paginated.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
getObjectTabs,
1010
getTabs,
1111
} from "@/entities/nodes/object-items/getSchemaObjectColumns";
12+
import { ObjectRelationshipsManager } from "@/entities/nodes/relationships/ui/object-relationships-manager";
1213
import { showMetaEditState } from "@/entities/nodes/stores/metaEditFieldDetails.atom";
1314
import { metaEditFieldDetailsState } from "@/entities/nodes/stores/showMetaEdit.atom";
1415
import { Permission } from "@/entities/permission/types";
@@ -36,7 +37,6 @@ import { NodeEvents } from "../../events/ui/node-events";
3637
import { ActionButtons } from "./action-buttons";
3738
import { ObjectAttributeRow } from "./object-attribute-row";
3839
import RelationshipDetails from "./relationship-details-paginated";
39-
import { RelationshipsDetails } from "./relationships-details-paginated";
4040

4141
type ObjectDetailsProps = {
4242
schema: IModelSchema;
@@ -219,11 +219,10 @@ export default function ObjectItemDetails({
219219
)}
220220

221221
{qspTab && qspTab !== TASK_TAB && (
222-
<RelationshipsDetails
223-
parentNode={objectDetailsData}
224-
parentSchema={schema}
225-
refetchObjectDetails={() => graphqlClient.refetchQueries({ include: [schema.kind!] })}
226-
ref={refetchRef}
222+
<ObjectRelationshipsManager
223+
parentNodeSchema={schema}
224+
parentNodeId={objectDetailsData.id}
225+
relationshipName={qspTab}
227226
/>
228227
)}
229228

frontend/app/src/entities/nodes/object-item-details/relationships-details-paginated.tsx

Lines changed: 0 additions & 127 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { cellHeaderStyle, cellsStyle } from "@/shared/components/table/style";
2+
import { classNames } from "@/shared/utils/common";
3+
4+
export function ActionsHeaderCell() {
5+
return (
6+
<div
7+
className={classNames(
8+
cellsStyle,
9+
cellHeaderStyle,
10+
"right-0 z-10 border-l size-10 -ml-px hover:bg-white"
11+
)}
12+
/>
13+
);
14+
}

frontend/app/src/entities/nodes/object/ui/object-table/cells/generics/kind-header-cell.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/shared/components/ui/
99
import useFilters from "@/shared/hooks/useFilters";
1010
import { classNames } from "@/shared/utils/common";
1111
import { Icon } from "@iconify-icon/react";
12+
import { PopoverTriggerProps } from "@radix-ui/react-popover";
1213
import { useState } from "react";
1314

14-
export function KindHeaderCell({ schema }: { schema: iGenericSchema }) {
15+
export interface KindHeaderCellProps extends PopoverTriggerProps {
16+
schema: iGenericSchema;
17+
}
18+
19+
export function KindHeaderCell({ schema, ...props }: KindHeaderCellProps) {
1520
const [filters, setFilters] = useFilters();
1621
const [showFilters, setShowFilters] = useState(false);
1722
const currentKindFilters = filters.find((filter) => filter.name === "kind__value");
@@ -25,7 +30,7 @@ export function KindHeaderCell({ schema }: { schema: iGenericSchema }) {
2530

2631
return (
2732
<Popover open={showFilters} onOpenChange={setShowFilters}>
28-
<PopoverTrigger className={classNames(cellsStyle, cellHeaderStyle)}>
33+
<PopoverTrigger className={classNames(cellsStyle, cellHeaderStyle)} {...props}>
2934
<Icon icon="mdi:code-json" className="text-stone-400" />
3035
<span className="truncate mr-2">Kind</span>
3136
<Icon

frontend/app/src/entities/nodes/object/ui/object-table/cells/actions-cell.tsx renamed to frontend/app/src/entities/nodes/object/ui/object-table/cells/object-actions-cell.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ export interface ActionsCellProps {
2626
objectLabel: string;
2727
}
2828

29-
export function ActionsCell({ objectKind, objectId, objectLabel, permission }: ActionsCellProps) {
29+
export function ObjectActionsCell({
30+
objectKind,
31+
objectId,
32+
objectLabel,
33+
permission,
34+
}: ActionsCellProps) {
3035
const [showDeleteModal, setShowDeleteModal] = useState(false);
3136
const [showEditForm, setShowEditForm] = useState(false);
3237
const { schema } = useSchema(objectKind);

frontend/app/src/entities/nodes/object/ui/object-table/cells/table-column-header.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/shared/components/ui/
99
import useFilters from "@/shared/hooks/useFilters";
1010
import { classNames } from "@/shared/utils/common";
1111
import { Icon } from "@iconify-icon/react";
12+
import { PopoverTriggerProps } from "@radix-ui/react-popover";
1213
import { useState } from "react";
1314

14-
export interface TableColumnHeaderProps {
15+
export interface TableColumnHeaderProps extends PopoverTriggerProps {
1516
schema: IModelSchema;
1617
columnSchema: AttributeSchema | RelationshipSchema;
1718
}
1819

19-
export function TableColumnHeader({ schema, columnSchema }: TableColumnHeaderProps) {
20+
export function TableColumnHeader({ schema, columnSchema, ...props }: TableColumnHeaderProps) {
2021
const [filters] = useFilters();
2122
const [showFilters, setShowFilters] = useState(false);
2223
const filtersAsObjectData = getObjectFromFilters(schema, filters);
@@ -28,7 +29,7 @@ export function TableColumnHeader({ schema, columnSchema }: TableColumnHeaderPro
2829

2930
return (
3031
<Popover open={showFilters} onOpenChange={setShowFilters}>
31-
<PopoverTrigger className={classNames(cellsStyle, cellHeaderStyle)}>
32+
<PopoverTrigger className={classNames(cellsStyle, cellHeaderStyle)} {...props}>
3233
<TableColumnHeaderIcon fieldSchema={columnSchema} />
3334

3435
<span className="truncate mr-2">{columnSchema.label ?? columnSchema.name}</span>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { ActionsHeaderCell } from "@/entities/nodes/object/ui/object-table/cells/actions-header-cell";
2+
import { ObjectActionsCell } from "@/entities/nodes/object/ui/object-table/cells/object-actions-cell";
3+
import { NodeObject } from "@/entities/nodes/types";
4+
import { Permission } from "@/entities/permission/types";
5+
import { ColumnDef } from "@tanstack/react-table";
6+
7+
export function getObjectActionsColumn(permission: Permission): ColumnDef<NodeObject> {
8+
return {
9+
id: "actions",
10+
header: () => <ActionsHeaderCell />,
11+
cell: ({ row }) => {
12+
return (
13+
<ObjectActionsCell
14+
permission={permission}
15+
objectKind={row.original.__typename as string}
16+
objectLabel={row.getValue("id") as string}
17+
objectId={row.original.id as string}
18+
/>
19+
);
20+
},
21+
};
22+
}

0 commit comments

Comments
 (0)