forked from feast-dev/feast
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFeastUISansProviders.tsx
More file actions
125 lines (115 loc) · 4.43 KB
/
FeastUISansProviders.tsx
File metadata and controls
125 lines (115 loc) · 4.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import React from "react";
import "@elastic/eui/dist/eui_theme_light.css";
import "./index.css";
import { Routes, Route } from "react-router-dom";
import { EuiProvider, EuiErrorBoundary } from "@elastic/eui";
import ProjectOverviewPage from "./pages/ProjectOverviewPage";
import Layout from "./pages/Layout";
import NoMatch from "./pages/NoMatch";
import DatasourceIndex from "./pages/data-sources/Index";
import DatasetIndex from "./pages/saved-data-sets/Index";
import EntityIndex from "./pages/entities/Index";
import EntityInstance from "./pages/entities/EntityInstance";
import FeatureServiceIndex from "./pages/feature-services/Index";
import FeatureViewIndex from "./pages/feature-views/Index";
import FeatureViewInstance from "./pages/feature-views/FeatureViewInstance";
import FeatureServiceInstance from "./pages/feature-services/FeatureServiceInstance";
import DataSourceInstance from "./pages/data-sources/DataSourceInstance";
import RootProjectSelectionPage from "./pages/RootProjectSelectionPage";
import DatasetInstance from "./pages/saved-data-sets/DatasetInstance";
import NoProjectGuard from "./components/NoProjectGuard";
import TabsRegistryContext, {
FeastTabsRegistryInterface,
} from "./custom-tabs/TabsRegistryContext";
import FeatureFlagsContext, {
FeatureFlags,
} from "./contexts/FeatureFlagsContext";
import {
ProjectListContext,
ProjectsListContextInterface,
} from "./contexts/ProjectListContext";
interface FeastUIConfigs {
tabsRegistry: FeastTabsRegistryInterface;
featureFlags?: FeatureFlags;
projectListPromise?: Promise<any>;
}
const defaultProjectListPromise = () => {
return fetch("/projects-list.json", {
headers: {
"Content-Type": "application/json",
},
}).then((res) => {
return res.json();
});
};
const FeastUISansProviders = ({
feastUIConfigs,
}: {
feastUIConfigs?: FeastUIConfigs;
}) => {
const projectListContext: ProjectsListContextInterface =
feastUIConfigs?.projectListPromise
? {
projectsListPromise: feastUIConfigs?.projectListPromise,
isCustom: true,
}
: { projectsListPromise: defaultProjectListPromise(), isCustom: false };
return (
<EuiProvider colorMode="light">
<EuiErrorBoundary>
<TabsRegistryContext.Provider
value={feastUIConfigs?.tabsRegistry || {}}
>
<FeatureFlagsContext.Provider
value={feastUIConfigs?.featureFlags || {}}
>
<ProjectListContext.Provider value={projectListContext}>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<RootProjectSelectionPage />} />
<Route path="/p/:projectName/*" element={<NoProjectGuard />}>
<Route index element={<ProjectOverviewPage />} />
<Route path="data-source/" element={<DatasourceIndex />} />
<Route
path="data-source/:dataSourceName/*"
element={<DataSourceInstance />}
/>
<Route
path="feature-view/"
element={<FeatureViewIndex />}
/>
<Route
path="feature-view/:featureViewName/*"
element={<FeatureViewInstance />}
/>
<Route
path="feature-service/"
element={<FeatureServiceIndex />}
/>
<Route
path="feature-service/:featureServiceName/*"
element={<FeatureServiceInstance />}
/>
<Route path="entity/" element={<EntityIndex />} />
<Route
path="entity/:entityName/*"
element={<EntityInstance />}
/>
<Route path="data-set/" element={<DatasetIndex />} />
<Route
path="data-set/:datasetName/*"
element={<DatasetInstance />}
/>
</Route>
</Route>
<Route path="*" element={<NoMatch />} />
</Routes>
</ProjectListContext.Provider>
</FeatureFlagsContext.Provider>
</TabsRegistryContext.Provider>
</EuiErrorBoundary>
</EuiProvider>
);
};
export default FeastUISansProviders;
export type { FeastUIConfigs };