From ac0f2379a71279180e30edd96a3ccf7a2774d41a Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Thu, 2 Mar 2023 22:41:04 +0700 Subject: [PATCH 1/3] fix: UI working behind base url Signed-off-by: Hai Nguyen --- sdk/python/feast/ui_server.py | 13 ++++--------- ui/src/FeastUISansProviders.tsx | 6 ++++-- ui/src/components/FeaturesInServiceDisplay.tsx | 4 ++-- ui/src/components/FeaturesListDisplay.tsx | 4 ++-- ui/src/components/ObjectsCountStats.tsx | 8 ++++---- ui/src/components/ProjectSelector.tsx | 2 +- ui/src/index.tsx | 7 +++++++ ui/src/pages/RootProjectSelectionPage.tsx | 6 +++--- ui/src/pages/Sidebar.tsx | 12 ++++++------ .../pages/data-sources/DataSourcesListingTable.tsx | 4 ++-- ui/src/pages/entities/EntitiesListingTable.tsx | 4 ++-- ui/src/pages/entities/FeatureViewEdgesList.tsx | 4 ++-- .../feature-services/FeatureServiceListingTable.tsx | 4 ++-- .../feature-services/FeatureServiceOverviewTab.tsx | 4 ++-- .../feature-views/ConsumingFeatureServicesList.tsx | 4 ++-- .../pages/feature-views/FeatureViewListingTable.tsx | 4 ++-- .../feature-views/RegularFeatureViewOverviewTab.tsx | 4 ++-- .../feature-views/StreamFeatureViewOverviewTab.tsx | 4 ++-- .../FeatureViewProjectionDisplayPanel.tsx | 4 ++-- .../components/RequestDataDisplayPanel.tsx | 4 ++-- ui/src/pages/features/FeatureOverviewTab.tsx | 4 ++-- .../pages/saved-data-sets/DatasetsListingTable.tsx | 4 ++-- 22 files changed, 59 insertions(+), 55 deletions(-) diff --git a/sdk/python/feast/ui_server.py b/sdk/python/feast/ui_server.py index 4971b5dfaee..f2591c2de79 100644 --- a/sdk/python/feast/ui_server.py +++ b/sdk/python/feast/ui_server.py @@ -13,11 +13,9 @@ def get_app( store: "feast.FeatureStore", - get_registry_dump: Callable, project_id: str, registry_ttl_secs: int, - host: str, - port: int, + root_path: str = "" ): app = FastAPI() @@ -62,7 +60,7 @@ def shutdown_event(): "name": "Project", "description": "Test project", "id": project_id, - "registryPath": "/registry", + "registryPath": f"{root_path}/registry", } ] } @@ -105,11 +103,8 @@ def start_server( ): app = get_app( store, - get_registry_dump, project_id, registry_ttl_sec, - host, - port, + root_path, ) - assert root_path is not None - uvicorn.run(app, host=host, port=port, root_path=root_path) + uvicorn.run(app, host=host, port=port) diff --git a/ui/src/FeastUISansProviders.tsx b/ui/src/FeastUISansProviders.tsx index 8a0e0b94db0..4c520555109 100644 --- a/ui/src/FeastUISansProviders.tsx +++ b/ui/src/FeastUISansProviders.tsx @@ -62,6 +62,8 @@ const FeastUISansProviders = ({ isCustom: true, } : { projectsListPromise: defaultProjectListPromise(), isCustom: false }; + + const BASE_URL = process.env.PUBLIC_URL return ( @@ -74,9 +76,9 @@ const FeastUISansProviders = ({ > - }> + }> } /> - }> + }> } /> } /> { render: (name: string) => { return ( {name} diff --git a/ui/src/components/FeaturesListDisplay.tsx b/ui/src/components/FeaturesListDisplay.tsx index a40730c6873..6e42f68fc62 100644 --- a/ui/src/components/FeaturesListDisplay.tsx +++ b/ui/src/components/FeaturesListDisplay.tsx @@ -21,8 +21,8 @@ const FeaturesList = ({ field: "name", render: (item: string) => ( {item} diff --git a/ui/src/components/ObjectsCountStats.tsx b/ui/src/components/ObjectsCountStats.tsx index bf1dd2dc9dd..9e93805d10a 100644 --- a/ui/src/components/ObjectsCountStats.tsx +++ b/ui/src/components/ObjectsCountStats.tsx @@ -55,7 +55,7 @@ const ObjectsCountStats = () => { navigate(`/p/${projectName}/feature-service`)} + onClick={() => navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-service`)} description="Feature Services→" title={data.featureServices} reverse @@ -65,7 +65,7 @@ const ObjectsCountStats = () => { navigate(`/p/${projectName}/feature-view`)} + onClick={() => navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-view`)} title={data.featureViews} reverse /> @@ -74,7 +74,7 @@ const ObjectsCountStats = () => { navigate(`/p/${projectName}/entity`)} + onClick={() => navigate(`${process.env.PUBLIC_URL}/p/${projectName}/entity`)} title={data.entities} reverse /> @@ -83,7 +83,7 @@ const ObjectsCountStats = () => { navigate(`/p/${projectName}/data-source`)} + onClick={() => navigate(`${process.env.PUBLIC_URL}/p/${projectName}/data-source`)} title={data.dataSources} reverse /> diff --git a/ui/src/components/ProjectSelector.tsx b/ui/src/components/ProjectSelector.tsx index 1bb7ebf85a7..cd7c12b58ab 100644 --- a/ui/src/components/ProjectSelector.tsx +++ b/ui/src/components/ProjectSelector.tsx @@ -22,7 +22,7 @@ const ProjectSelector = () => { const basicSelectId = useGeneratedHtmlId({ prefix: "basicSelect" }); const onChange = (e: React.ChangeEvent) => { - navigate(`/p/${e.target.value}`); + navigate(`${process.env.PUBLIC_URL}/p/${e.target.value}`); }; return ( diff --git a/ui/src/index.tsx b/ui/src/index.tsx index e38570929d4..7dd67cef8d7 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -97,6 +97,13 @@ ReactDOM.render( reactQueryClient={queryClient} feastUIConfigs={{ tabsRegistry: tabsRegistry, + projectListPromise: fetch(process.env.PUBLIC_URL + "/projects-list.json", { + headers: { + "Content-Type": "application/json", + }, + }).then((res) => { + return res.json(); + }) }} /> , diff --git a/ui/src/pages/RootProjectSelectionPage.tsx b/ui/src/pages/RootProjectSelectionPage.tsx index 424e93c85d9..e911ecc57f7 100644 --- a/ui/src/pages/RootProjectSelectionPage.tsx +++ b/ui/src/pages/RootProjectSelectionPage.tsx @@ -22,12 +22,12 @@ const RootProjectSelectionPage = () => { useEffect(() => { if (data && data.default) { // If a default is set, redirect there. - navigate(`/p/${data.default}`); + navigate(`${process.env.PUBLIC_URL}/p/${data.default}`); } if (data && data.projects.length === 1) { // If there is only one project, redirect there. - navigate(`/p/${data.projects[0].id}`); + navigate(`${process.env.PUBLIC_URL}/p/${data.projects[0].id}`); } }, [data, navigate]); @@ -39,7 +39,7 @@ const RootProjectSelectionPage = () => { title={`${item.name}`} description={item?.description || ""} onClick={() => { - navigate(`/p/${item.id}`); + navigate(`${process.env.PUBLIC_URL}/p/${item.id}`); }} /> diff --git a/ui/src/pages/Sidebar.tsx b/ui/src/pages/Sidebar.tsx index 9fc1a532f21..14694b282ba 100644 --- a/ui/src/pages/Sidebar.tsx +++ b/ui/src/pages/Sidebar.tsx @@ -60,7 +60,7 @@ const SideNav = () => { name: "Home", id: htmlIdGenerator("basicExample")(), onClick: () => { - navigate(`/p/${projectName}/`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/`); }, items: [ { @@ -68,7 +68,7 @@ const SideNav = () => { id: htmlIdGenerator("dataSources")(), icon: , onClick: () => { - navigate(`/p/${projectName}/data-source`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/data-source`); }, isSelected: useMatchSubpath("data-source"), }, @@ -77,7 +77,7 @@ const SideNav = () => { id: htmlIdGenerator("entities")(), icon: , onClick: () => { - navigate(`/p/${projectName}/entity`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/entity`); }, isSelected: useMatchSubpath("entity"), }, @@ -86,7 +86,7 @@ const SideNav = () => { id: htmlIdGenerator("featureView")(), icon: , onClick: () => { - navigate(`/p/${projectName}/feature-view`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-view`); }, isSelected: useMatchSubpath("feature-view"), }, @@ -95,7 +95,7 @@ const SideNav = () => { id: htmlIdGenerator("featureService")(), icon: , onClick: () => { - navigate(`/p/${projectName}/feature-service`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-service`); }, isSelected: useMatchSubpath("feature-service"), }, @@ -104,7 +104,7 @@ const SideNav = () => { id: htmlIdGenerator("savedDatasets")(), icon: , onClick: () => { - navigate(`/p/${projectName}/data-set`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/data-set`); }, isSelected: useMatchSubpath("data-set"), }, diff --git a/ui/src/pages/data-sources/DataSourcesListingTable.tsx b/ui/src/pages/data-sources/DataSourcesListingTable.tsx index ad549f991e0..539326b71f0 100644 --- a/ui/src/pages/data-sources/DataSourcesListingTable.tsx +++ b/ui/src/pages/data-sources/DataSourcesListingTable.tsx @@ -21,8 +21,8 @@ const DatasourcesListingTable = ({ render: (name: string) => { return ( {name} diff --git a/ui/src/pages/entities/EntitiesListingTable.tsx b/ui/src/pages/entities/EntitiesListingTable.tsx index 2a017b18aac..8822acce544 100644 --- a/ui/src/pages/entities/EntitiesListingTable.tsx +++ b/ui/src/pages/entities/EntitiesListingTable.tsx @@ -21,8 +21,8 @@ const EntitiesListingTable = ({ entities }: EntitiesListingTableProps) => { render: (name: string) => { return ( {name} diff --git a/ui/src/pages/entities/FeatureViewEdgesList.tsx b/ui/src/pages/entities/FeatureViewEdgesList.tsx index 95bc51c56d7..dfae3463c1d 100644 --- a/ui/src/pages/entities/FeatureViewEdgesList.tsx +++ b/ui/src/pages/entities/FeatureViewEdgesList.tsx @@ -54,8 +54,8 @@ const FeatureViewEdgesList = ({ fvNames }: FeatureViewEdgesListInterace) => { render: (name: string) => { return ( {name} diff --git a/ui/src/pages/feature-services/FeatureServiceListingTable.tsx b/ui/src/pages/feature-services/FeatureServiceListingTable.tsx index c81edeaeb58..5271ca42daa 100644 --- a/ui/src/pages/feature-services/FeatureServiceListingTable.tsx +++ b/ui/src/pages/feature-services/FeatureServiceListingTable.tsx @@ -31,8 +31,8 @@ const FeatureServiceListingTable = ({ render: (name: string) => { return ( {name} diff --git a/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx b/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx index 387320778ff..0cab2c1c84a 100644 --- a/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx +++ b/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx @@ -109,7 +109,7 @@ const FeatureServiceOverviewTab = () => { tags={data.spec.tags} createLink={(key, value) => { return ( - `/p/${projectName}/feature-service?` + + `${process.env.PUBLIC_URL}/p/${projectName}/feature-service?` + encodeSearchQueryString(`${key}:${value}`) ); }} @@ -133,7 +133,7 @@ const FeatureServiceOverviewTab = () => { color="primary" onClick={() => { navigate( - `/p/${projectName}/entity/${entity.name}` + `${process.env.PUBLIC_URL}/p/${projectName}/entity/${entity.name}` ); }} onClickAriaLabel={entity.name} diff --git a/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx b/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx index fc98fe8e5ea..e2d53d78a12 100644 --- a/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx +++ b/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx @@ -19,8 +19,8 @@ const ConsumingFeatureServicesList = ({ render: (name: string) => { return ( {name} diff --git a/ui/src/pages/feature-views/FeatureViewListingTable.tsx b/ui/src/pages/feature-views/FeatureViewListingTable.tsx index e4eccecc975..825d157b368 100644 --- a/ui/src/pages/feature-views/FeatureViewListingTable.tsx +++ b/ui/src/pages/feature-views/FeatureViewListingTable.tsx @@ -32,8 +32,8 @@ const FeatureViewListingTable = ({ render: (name: string, item: genericFVType) => { return ( {name} {(item.type === "ondemand" && ondemand) || (item.type === "stream" && stream)} diff --git a/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx b/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx index 3bbb906e05b..0bfd768f91d 100644 --- a/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx +++ b/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx @@ -96,7 +96,7 @@ const RegularFeatureViewOverviewTab = ({ { - navigate(`/p/${projectName}/entity/${entity}`); + navigate(`${process.env.PUBLIC_URL}/p/${projectName}/entity/${entity}`); }} onClickAriaLabel={entity} data-test-sub="testExample1" @@ -134,7 +134,7 @@ const RegularFeatureViewOverviewTab = ({ tags={data.spec.tags} createLink={(key, value) => { return ( - `/p/${projectName}/feature-view?` + + `${process.env.PUBLIC_URL}/p/${projectName}/feature-view?` + encodeSearchQueryString(`${key}:${value}`) ); }} diff --git a/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx b/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx index 3584cccdd82..4d09b119b3c 100644 --- a/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx +++ b/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx @@ -96,8 +96,8 @@ const StreamFeatureViewOverviewTab = ({ {inputGroup?.name} diff --git a/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx b/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx index 156f6db1ec6..36b91ea8248 100644 --- a/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx +++ b/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx @@ -31,8 +31,8 @@ const FeatureViewProjectionDisplayPanel = (featureViewProjection: RequestDataDis {featureViewProjection?.featureViewName} diff --git a/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx b/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx index e8e6854389a..5028ed396c8 100644 --- a/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx +++ b/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx @@ -38,8 +38,8 @@ const RequestDataDisplayPanel = ({ {requestDataSource?.name} diff --git a/ui/src/pages/features/FeatureOverviewTab.tsx b/ui/src/pages/features/FeatureOverviewTab.tsx index e339c30fc97..6032dd4eb55 100644 --- a/ui/src/pages/features/FeatureOverviewTab.tsx +++ b/ui/src/pages/features/FeatureOverviewTab.tsx @@ -63,8 +63,8 @@ const FeatureOverviewTab = () => { FeatureView + href={`${process.env.PUBLIC_URL}/p/${projectName}/feature-view/${FeatureViewName}`} + to={`${process.env.PUBLIC_URL}/p/${projectName}/feature-view/${FeatureViewName}`}> {FeatureViewName} diff --git a/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx b/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx index a1a97084171..edcceaad647 100644 --- a/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx +++ b/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx @@ -20,8 +20,8 @@ const DatasetsListingTable = ({ datasets }: DatasetsListingTableProps) => { render: (name: string) => { return ( {name} From f6af791c4da62edc3d06197be72e7b1b3b71574f Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 3 Mar 2023 12:13:49 +0700 Subject: [PATCH 2/3] fix: assign empty string as default value for PUBLIC URL Signed-off-by: Hai Nguyen --- ui/src/FeastUISansProviders.tsx | 2 +- ui/src/components/FeaturesInServiceDisplay.tsx | 4 ++-- ui/src/components/FeaturesListDisplay.tsx | 4 ++-- ui/src/components/ObjectsCountStats.tsx | 8 ++++---- ui/src/components/ProjectSelector.tsx | 2 +- ui/src/index.tsx | 2 +- ui/src/pages/RootProjectSelectionPage.tsx | 6 +++--- ui/src/pages/Sidebar.tsx | 12 ++++++------ .../pages/data-sources/DataSourcesListingTable.tsx | 4 ++-- ui/src/pages/entities/EntitiesListingTable.tsx | 4 ++-- ui/src/pages/entities/FeatureViewEdgesList.tsx | 4 ++-- .../feature-services/FeatureServiceListingTable.tsx | 4 ++-- .../feature-services/FeatureServiceOverviewTab.tsx | 4 ++-- .../feature-views/ConsumingFeatureServicesList.tsx | 4 ++-- .../pages/feature-views/FeatureViewListingTable.tsx | 4 ++-- .../feature-views/RegularFeatureViewOverviewTab.tsx | 4 ++-- .../feature-views/StreamFeatureViewOverviewTab.tsx | 4 ++-- .../components/FeatureViewProjectionDisplayPanel.tsx | 4 ++-- .../components/RequestDataDisplayPanel.tsx | 4 ++-- ui/src/pages/features/FeatureOverviewTab.tsx | 4 ++-- .../pages/saved-data-sets/DatasetsListingTable.tsx | 4 ++-- 21 files changed, 46 insertions(+), 46 deletions(-) diff --git a/ui/src/FeastUISansProviders.tsx b/ui/src/FeastUISansProviders.tsx index 4c520555109..8a12abdc39f 100644 --- a/ui/src/FeastUISansProviders.tsx +++ b/ui/src/FeastUISansProviders.tsx @@ -63,7 +63,7 @@ const FeastUISansProviders = ({ } : { projectsListPromise: defaultProjectListPromise(), isCustom: false }; - const BASE_URL = process.env.PUBLIC_URL + const BASE_URL = process.env.PUBLIC_URL || "" return ( diff --git a/ui/src/components/FeaturesInServiceDisplay.tsx b/ui/src/components/FeaturesInServiceDisplay.tsx index 34b788198fb..bec2550a5d3 100644 --- a/ui/src/components/FeaturesInServiceDisplay.tsx +++ b/ui/src/components/FeaturesInServiceDisplay.tsx @@ -29,8 +29,8 @@ const FeaturesInServiceList = ({ featureViews }: FeatureViewsListInterace) => { render: (name: string) => { return ( {name} diff --git a/ui/src/components/FeaturesListDisplay.tsx b/ui/src/components/FeaturesListDisplay.tsx index 6e42f68fc62..2a0628b0f56 100644 --- a/ui/src/components/FeaturesListDisplay.tsx +++ b/ui/src/components/FeaturesListDisplay.tsx @@ -21,8 +21,8 @@ const FeaturesList = ({ field: "name", render: (item: string) => ( {item} diff --git a/ui/src/components/ObjectsCountStats.tsx b/ui/src/components/ObjectsCountStats.tsx index 9e93805d10a..eff3f8a2ca7 100644 --- a/ui/src/components/ObjectsCountStats.tsx +++ b/ui/src/components/ObjectsCountStats.tsx @@ -55,7 +55,7 @@ const ObjectsCountStats = () => { navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-service`)} + onClick={() => navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-service`)} description="Feature Services→" title={data.featureServices} reverse @@ -65,7 +65,7 @@ const ObjectsCountStats = () => { navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-view`)} + onClick={() => navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-view`)} title={data.featureViews} reverse /> @@ -74,7 +74,7 @@ const ObjectsCountStats = () => { navigate(`${process.env.PUBLIC_URL}/p/${projectName}/entity`)} + onClick={() => navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/entity`)} title={data.entities} reverse /> @@ -83,7 +83,7 @@ const ObjectsCountStats = () => { navigate(`${process.env.PUBLIC_URL}/p/${projectName}/data-source`)} + onClick={() => navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/data-source`)} title={data.dataSources} reverse /> diff --git a/ui/src/components/ProjectSelector.tsx b/ui/src/components/ProjectSelector.tsx index cd7c12b58ab..edbcf9d98fe 100644 --- a/ui/src/components/ProjectSelector.tsx +++ b/ui/src/components/ProjectSelector.tsx @@ -22,7 +22,7 @@ const ProjectSelector = () => { const basicSelectId = useGeneratedHtmlId({ prefix: "basicSelect" }); const onChange = (e: React.ChangeEvent) => { - navigate(`${process.env.PUBLIC_URL}/p/${e.target.value}`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${e.target.value}`); }; return ( diff --git a/ui/src/index.tsx b/ui/src/index.tsx index 7dd67cef8d7..82c709d5d39 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -97,7 +97,7 @@ ReactDOM.render( reactQueryClient={queryClient} feastUIConfigs={{ tabsRegistry: tabsRegistry, - projectListPromise: fetch(process.env.PUBLIC_URL + "/projects-list.json", { + projectListPromise: fetch(process.env.PUBLIC_URL || "" + "/projects-list.json", { headers: { "Content-Type": "application/json", }, diff --git a/ui/src/pages/RootProjectSelectionPage.tsx b/ui/src/pages/RootProjectSelectionPage.tsx index e911ecc57f7..d287342055f 100644 --- a/ui/src/pages/RootProjectSelectionPage.tsx +++ b/ui/src/pages/RootProjectSelectionPage.tsx @@ -22,12 +22,12 @@ const RootProjectSelectionPage = () => { useEffect(() => { if (data && data.default) { // If a default is set, redirect there. - navigate(`${process.env.PUBLIC_URL}/p/${data.default}`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${data.default}`); } if (data && data.projects.length === 1) { // If there is only one project, redirect there. - navigate(`${process.env.PUBLIC_URL}/p/${data.projects[0].id}`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${data.projects[0].id}`); } }, [data, navigate]); @@ -39,7 +39,7 @@ const RootProjectSelectionPage = () => { title={`${item.name}`} description={item?.description || ""} onClick={() => { - navigate(`${process.env.PUBLIC_URL}/p/${item.id}`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${item.id}`); }} /> diff --git a/ui/src/pages/Sidebar.tsx b/ui/src/pages/Sidebar.tsx index 14694b282ba..2b652fc08dd 100644 --- a/ui/src/pages/Sidebar.tsx +++ b/ui/src/pages/Sidebar.tsx @@ -60,7 +60,7 @@ const SideNav = () => { name: "Home", id: htmlIdGenerator("basicExample")(), onClick: () => { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/`); }, items: [ { @@ -68,7 +68,7 @@ const SideNav = () => { id: htmlIdGenerator("dataSources")(), icon: , onClick: () => { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/data-source`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/data-source`); }, isSelected: useMatchSubpath("data-source"), }, @@ -77,7 +77,7 @@ const SideNav = () => { id: htmlIdGenerator("entities")(), icon: , onClick: () => { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/entity`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/entity`); }, isSelected: useMatchSubpath("entity"), }, @@ -86,7 +86,7 @@ const SideNav = () => { id: htmlIdGenerator("featureView")(), icon: , onClick: () => { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-view`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-view`); }, isSelected: useMatchSubpath("feature-view"), }, @@ -95,7 +95,7 @@ const SideNav = () => { id: htmlIdGenerator("featureService")(), icon: , onClick: () => { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/feature-service`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-service`); }, isSelected: useMatchSubpath("feature-service"), }, @@ -104,7 +104,7 @@ const SideNav = () => { id: htmlIdGenerator("savedDatasets")(), icon: , onClick: () => { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/data-set`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/data-set`); }, isSelected: useMatchSubpath("data-set"), }, diff --git a/ui/src/pages/data-sources/DataSourcesListingTable.tsx b/ui/src/pages/data-sources/DataSourcesListingTable.tsx index 539326b71f0..e4f06d6bd0a 100644 --- a/ui/src/pages/data-sources/DataSourcesListingTable.tsx +++ b/ui/src/pages/data-sources/DataSourcesListingTable.tsx @@ -21,8 +21,8 @@ const DatasourcesListingTable = ({ render: (name: string) => { return ( {name} diff --git a/ui/src/pages/entities/EntitiesListingTable.tsx b/ui/src/pages/entities/EntitiesListingTable.tsx index 8822acce544..baf4ddb8e47 100644 --- a/ui/src/pages/entities/EntitiesListingTable.tsx +++ b/ui/src/pages/entities/EntitiesListingTable.tsx @@ -21,8 +21,8 @@ const EntitiesListingTable = ({ entities }: EntitiesListingTableProps) => { render: (name: string) => { return ( {name} diff --git a/ui/src/pages/entities/FeatureViewEdgesList.tsx b/ui/src/pages/entities/FeatureViewEdgesList.tsx index dfae3463c1d..ab1fbfb6df6 100644 --- a/ui/src/pages/entities/FeatureViewEdgesList.tsx +++ b/ui/src/pages/entities/FeatureViewEdgesList.tsx @@ -54,8 +54,8 @@ const FeatureViewEdgesList = ({ fvNames }: FeatureViewEdgesListInterace) => { render: (name: string) => { return ( {name} diff --git a/ui/src/pages/feature-services/FeatureServiceListingTable.tsx b/ui/src/pages/feature-services/FeatureServiceListingTable.tsx index 5271ca42daa..13ffa764092 100644 --- a/ui/src/pages/feature-services/FeatureServiceListingTable.tsx +++ b/ui/src/pages/feature-services/FeatureServiceListingTable.tsx @@ -31,8 +31,8 @@ const FeatureServiceListingTable = ({ render: (name: string) => { return ( {name} diff --git a/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx b/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx index 0cab2c1c84a..f43a0cb68fa 100644 --- a/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx +++ b/ui/src/pages/feature-services/FeatureServiceOverviewTab.tsx @@ -109,7 +109,7 @@ const FeatureServiceOverviewTab = () => { tags={data.spec.tags} createLink={(key, value) => { return ( - `${process.env.PUBLIC_URL}/p/${projectName}/feature-service?` + + `${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-service?` + encodeSearchQueryString(`${key}:${value}`) ); }} @@ -133,7 +133,7 @@ const FeatureServiceOverviewTab = () => { color="primary" onClick={() => { navigate( - `${process.env.PUBLIC_URL}/p/${projectName}/entity/${entity.name}` + `${process.env.PUBLIC_URL || ""}/p/${projectName}/entity/${entity.name}` ); }} onClickAriaLabel={entity.name} diff --git a/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx b/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx index e2d53d78a12..44df7b5111a 100644 --- a/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx +++ b/ui/src/pages/feature-views/ConsumingFeatureServicesList.tsx @@ -19,8 +19,8 @@ const ConsumingFeatureServicesList = ({ render: (name: string) => { return ( {name} diff --git a/ui/src/pages/feature-views/FeatureViewListingTable.tsx b/ui/src/pages/feature-views/FeatureViewListingTable.tsx index 825d157b368..ff1a31c4162 100644 --- a/ui/src/pages/feature-views/FeatureViewListingTable.tsx +++ b/ui/src/pages/feature-views/FeatureViewListingTable.tsx @@ -32,8 +32,8 @@ const FeatureViewListingTable = ({ render: (name: string, item: genericFVType) => { return ( {name} {(item.type === "ondemand" && ondemand) || (item.type === "stream" && stream)} diff --git a/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx b/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx index 0bfd768f91d..cde4f46d4ed 100644 --- a/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx +++ b/ui/src/pages/feature-views/RegularFeatureViewOverviewTab.tsx @@ -96,7 +96,7 @@ const RegularFeatureViewOverviewTab = ({ { - navigate(`${process.env.PUBLIC_URL}/p/${projectName}/entity/${entity}`); + navigate(`${process.env.PUBLIC_URL || ""}/p/${projectName}/entity/${entity}`); }} onClickAriaLabel={entity} data-test-sub="testExample1" @@ -134,7 +134,7 @@ const RegularFeatureViewOverviewTab = ({ tags={data.spec.tags} createLink={(key, value) => { return ( - `${process.env.PUBLIC_URL}/p/${projectName}/feature-view?` + + `${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-view?` + encodeSearchQueryString(`${key}:${value}`) ); }} diff --git a/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx b/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx index 4d09b119b3c..99f82d3e74e 100644 --- a/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx +++ b/ui/src/pages/feature-views/StreamFeatureViewOverviewTab.tsx @@ -96,8 +96,8 @@ const StreamFeatureViewOverviewTab = ({ {inputGroup?.name} diff --git a/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx b/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx index 36b91ea8248..f6856471e0a 100644 --- a/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx +++ b/ui/src/pages/feature-views/components/FeatureViewProjectionDisplayPanel.tsx @@ -31,8 +31,8 @@ const FeatureViewProjectionDisplayPanel = (featureViewProjection: RequestDataDis {featureViewProjection?.featureViewName} diff --git a/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx b/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx index 5028ed396c8..f3adaa28f02 100644 --- a/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx +++ b/ui/src/pages/feature-views/components/RequestDataDisplayPanel.tsx @@ -38,8 +38,8 @@ const RequestDataDisplayPanel = ({ {requestDataSource?.name} diff --git a/ui/src/pages/features/FeatureOverviewTab.tsx b/ui/src/pages/features/FeatureOverviewTab.tsx index 6032dd4eb55..cc7879b0383 100644 --- a/ui/src/pages/features/FeatureOverviewTab.tsx +++ b/ui/src/pages/features/FeatureOverviewTab.tsx @@ -63,8 +63,8 @@ const FeatureOverviewTab = () => { FeatureView + href={`${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-view/${FeatureViewName}`} + to={`${process.env.PUBLIC_URL || ""}/p/${projectName}/feature-view/${FeatureViewName}`}> {FeatureViewName} diff --git a/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx b/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx index edcceaad647..af794a35f98 100644 --- a/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx +++ b/ui/src/pages/saved-data-sets/DatasetsListingTable.tsx @@ -20,8 +20,8 @@ const DatasetsListingTable = ({ datasets }: DatasetsListingTableProps) => { render: (name: string) => { return ( {name} From dc9230e000b753ad8db7431d577750e706b8b212 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Fri, 3 Mar 2023 12:23:36 +0700 Subject: [PATCH 3/3] fix: add comma due to linter Signed-off-by: Hai Nguyen --- sdk/python/feast/ui_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/feast/ui_server.py b/sdk/python/feast/ui_server.py index f2591c2de79..e750f280ad7 100644 --- a/sdk/python/feast/ui_server.py +++ b/sdk/python/feast/ui_server.py @@ -15,7 +15,7 @@ def get_app( store: "feast.FeatureStore", project_id: str, registry_ttl_secs: int, - root_path: str = "" + root_path: str = "", ): app = FastAPI()