From aa5bd3173deb3c163cebaccf36fc57243b0a67bc Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 04:22:05 +0000 Subject: [PATCH 1/3] Fix: Entity filtering and permissions in the Lineage tab Co-Authored-By: Francisco Javier Arceo --- .../feature-views/FeatureViewLineageTab.tsx | 88 ++++++++++++++++--- 1 file changed, 78 insertions(+), 10 deletions(-) diff --git a/ui/src/pages/feature-views/FeatureViewLineageTab.tsx b/ui/src/pages/feature-views/FeatureViewLineageTab.tsx index 65c4b472f31..82073afda44 100644 --- a/ui/src/pages/feature-views/FeatureViewLineageTab.tsx +++ b/ui/src/pages/feature-views/FeatureViewLineageTab.tsx @@ -1,11 +1,20 @@ -import React, { useContext } from "react"; +import React, { useContext, useState } from "react"; import { useParams } from "react-router-dom"; -import { EuiEmptyPrompt, EuiLoadingSpinner } from "@elastic/eui"; +import { + EuiEmptyPrompt, + EuiLoadingSpinner, + EuiSpacer, + EuiSelect, + EuiFormRow, + EuiFlexGroup, + EuiFlexItem, +} from "@elastic/eui"; import { feast } from "../../protos"; import useLoadRegistry from "../../queries/useLoadRegistry"; import RegistryPathContext from "../../contexts/RegistryPathContext"; import RegistryVisualization from "../../components/RegistryVisualization"; import { FEAST_FCO_TYPES } from "../../parsers/types"; +import { filterPermissionsByAction } from "../../utils/permissionUtils"; interface FeatureViewLineageTabProps { data: feast.core.IFeatureView; @@ -20,10 +29,18 @@ const FeatureViewLineageTab = ({ data }: FeatureViewLineageTabProps) => { data: registryData, } = useLoadRegistry(registryUrl); const { featureViewName } = useParams(); + const [selectedEntityName, setSelectedEntityName] = useState(""); + const [selectedPermissionAction, setSelectedPermissionAction] = useState(""); + + const getEntityOptions = (objects: any) => { + return objects?.entities?.map((entity: any) => entity.spec?.name) || []; + }; const filterNode = { - type: FEAST_FCO_TYPES.featureView, - name: featureViewName || data.spec?.name || "", + type: selectedEntityName + ? FEAST_FCO_TYPES.entity + : FEAST_FCO_TYPES.featureView, + name: selectedEntityName || featureViewName || data.spec?.name || "", }; return ( @@ -47,12 +64,63 @@ const FeatureViewLineageTab = ({ data }: FeatureViewLineageTabProps) => { /> )} {isSuccess && registryData && ( - + <> + + + + + ({ + value: name, + text: name, + }), + ), + ]} + value={selectedEntityName} + onChange={(e) => setSelectedEntityName(e.target.value)} + aria-label="Filter by entity" + /> + + + + + setSelectedPermissionAction(e.target.value)} + aria-label="Filter by permissions" + /> + + + + + )} ); From d3b7a795e5a3ba4fd43dc8cdc2f3483d5a34c743 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 11:12:01 +0000 Subject: [PATCH 2/3] Update PR to clarify fix scope Co-Authored-By: Francisco Javier Arceo From 6eead662f88797c61a42400202c5744aa99ae141 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 4 May 2025 13:48:07 +0000 Subject: [PATCH 3/3] Remove entity filtering from Feature View Lineage tab Co-Authored-By: Francisco Javier Arceo --- .../feature-views/FeatureViewLineageTab.tsx | 29 ++----------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/ui/src/pages/feature-views/FeatureViewLineageTab.tsx b/ui/src/pages/feature-views/FeatureViewLineageTab.tsx index 82073afda44..39c31e17dbd 100644 --- a/ui/src/pages/feature-views/FeatureViewLineageTab.tsx +++ b/ui/src/pages/feature-views/FeatureViewLineageTab.tsx @@ -29,18 +29,11 @@ const FeatureViewLineageTab = ({ data }: FeatureViewLineageTabProps) => { data: registryData, } = useLoadRegistry(registryUrl); const { featureViewName } = useParams(); - const [selectedEntityName, setSelectedEntityName] = useState(""); const [selectedPermissionAction, setSelectedPermissionAction] = useState(""); - const getEntityOptions = (objects: any) => { - return objects?.entities?.map((entity: any) => entity.spec?.name) || []; - }; - const filterNode = { - type: selectedEntityName - ? FEAST_FCO_TYPES.entity - : FEAST_FCO_TYPES.featureView, - name: selectedEntityName || featureViewName || data.spec?.name || "", + type: FEAST_FCO_TYPES.featureView, + name: featureViewName || data.spec?.name || "", }; return ( @@ -67,24 +60,6 @@ const FeatureViewLineageTab = ({ data }: FeatureViewLineageTabProps) => { <> - - - ({ - value: name, - text: name, - }), - ), - ]} - value={selectedEntityName} - onChange={(e) => setSelectedEntityName(e.target.value)} - aria-label="Filter by entity" - /> - -