Skip to content

Commit 0d05701

Browse files
fix: Fix lineage entity filtering (feast-dev#5321)
* Fix: Entity filtering and permissions in the Lineage tab Co-Authored-By: Francisco Javier Arceo <[email protected]> * Update PR to clarify fix scope Co-Authored-By: Francisco Javier Arceo <[email protected]> * Remove entity filtering from Feature View Lineage tab Co-Authored-By: Francisco Javier Arceo <[email protected]> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 6f1b0cc commit 0d05701

File tree

1 file changed

+51
-8
lines changed

1 file changed

+51
-8
lines changed

ui/src/pages/feature-views/FeatureViewLineageTab.tsx

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
1-
import React, { useContext } from "react";
1+
import React, { useContext, useState } from "react";
22
import { useParams } from "react-router-dom";
3-
import { EuiEmptyPrompt, EuiLoadingSpinner } from "@elastic/eui";
3+
import {
4+
EuiEmptyPrompt,
5+
EuiLoadingSpinner,
6+
EuiSpacer,
7+
EuiSelect,
8+
EuiFormRow,
9+
EuiFlexGroup,
10+
EuiFlexItem,
11+
} from "@elastic/eui";
412
import { feast } from "../../protos";
513
import useLoadRegistry from "../../queries/useLoadRegistry";
614
import RegistryPathContext from "../../contexts/RegistryPathContext";
715
import RegistryVisualization from "../../components/RegistryVisualization";
816
import { FEAST_FCO_TYPES } from "../../parsers/types";
17+
import { filterPermissionsByAction } from "../../utils/permissionUtils";
918

1019
interface FeatureViewLineageTabProps {
1120
data: feast.core.IFeatureView;
@@ -20,6 +29,7 @@ const FeatureViewLineageTab = ({ data }: FeatureViewLineageTabProps) => {
2029
data: registryData,
2130
} = useLoadRegistry(registryUrl);
2231
const { featureViewName } = useParams();
32+
const [selectedPermissionAction, setSelectedPermissionAction] = useState("");
2333

2434
const filterNode = {
2535
type: FEAST_FCO_TYPES.featureView,
@@ -47,12 +57,45 @@ const FeatureViewLineageTab = ({ data }: FeatureViewLineageTabProps) => {
4757
/>
4858
)}
4959
{isSuccess && registryData && (
50-
<RegistryVisualization
51-
registryData={registryData.objects}
52-
relationships={registryData.relationships}
53-
indirectRelationships={registryData.indirectRelationships}
54-
filterNode={filterNode}
55-
/>
60+
<>
61+
<EuiSpacer size="l" />
62+
<EuiFlexGroup style={{ marginBottom: 16 }}>
63+
<EuiFlexItem grow={false} style={{ width: 300 }}>
64+
<EuiFormRow label="Filter by permissions">
65+
<EuiSelect
66+
options={[
67+
{ value: "", text: "All" },
68+
{ value: "CREATE", text: "CREATE" },
69+
{ value: "DESCRIBE", text: "DESCRIBE" },
70+
{ value: "UPDATE", text: "UPDATE" },
71+
{ value: "DELETE", text: "DELETE" },
72+
{ value: "READ_ONLINE", text: "READ_ONLINE" },
73+
{ value: "READ_OFFLINE", text: "READ_OFFLINE" },
74+
{ value: "WRITE_ONLINE", text: "WRITE_ONLINE" },
75+
{ value: "WRITE_OFFLINE", text: "WRITE_OFFLINE" },
76+
]}
77+
value={selectedPermissionAction}
78+
onChange={(e) => setSelectedPermissionAction(e.target.value)}
79+
aria-label="Filter by permissions"
80+
/>
81+
</EuiFormRow>
82+
</EuiFlexItem>
83+
</EuiFlexGroup>
84+
<RegistryVisualization
85+
registryData={registryData.objects}
86+
relationships={registryData.relationships}
87+
indirectRelationships={registryData.indirectRelationships}
88+
permissions={
89+
selectedPermissionAction
90+
? filterPermissionsByAction(
91+
registryData.permissions,
92+
selectedPermissionAction,
93+
)
94+
: registryData.permissions
95+
}
96+
filterNode={filterNode}
97+
/>
98+
</>
5699
)}
57100
</>
58101
);

0 commit comments

Comments
 (0)