@malloy-publisher/sdk 0.0.196-dev → 0.0.198-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -77
- package/TREE_SHAKING.md +11 -11
- package/dist/{ServerProvider-CvZTC0sJ.es.js → ServerProvider-DDScRRDc.es.js} +1393 -1393
- package/dist/ServerProvider-IhQ4aYBm.cjs.js +1 -0
- package/dist/client/api.d.ts +674 -674
- package/dist/client/configuration.d.ts +1 -1
- package/dist/client/index.cjs.js +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.es.js +53 -53
- package/dist/components/Environment/Environment.d.ts +6 -0
- package/dist/components/Environment/index.d.ts +2 -0
- package/dist/components/Home/AddEnvironmentDialog.d.ts +1 -0
- package/dist/components/Home/DeleteEnvironmentDialog.d.ts +5 -0
- package/dist/components/Home/EditEnvironmentDialog.d.ts +7 -0
- package/dist/components/Home/Home.d.ts +2 -2
- package/dist/components/ServerProvider.d.ts +4 -4
- package/dist/components/index.d.ts +1 -1
- package/dist/{core-mP4paWtU.cjs.js → core-7-3Jcsb0.cjs.js} +1 -1
- package/dist/{core-BrfQApxh.es.js → core-w79IMXAG.es.js} +1 -1
- package/dist/hooks/useDimensionFiltersFromSpec.d.ts +3 -3
- package/dist/hooks/useDimensionFiltersQuery.d.ts +3 -3
- package/dist/hooks/useDimensionalFilterRangeData.d.ts +4 -4
- package/dist/{index-ClRkROAM.es.js → index-CN0_kZSF.es.js} +13067 -13033
- package/dist/{index-CW09s4Xx.cjs.js → index-Xo_ADux9.cjs.js} +34 -34
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +21 -21
- package/dist/utils/formatting.d.ts +1 -1
- package/dist/utils/parsing.d.ts +2 -2
- package/package.json +1 -1
- package/src/components/Connections/DeleteConnectionDialog.tsx +1 -0
- package/src/components/Connections/EditConnectionDialog.tsx +2 -0
- package/src/components/{Project → Environment}/About.tsx +8 -4
- package/src/components/{Project → Environment}/AddPackageDialog.tsx +5 -3
- package/src/components/{Project → Environment}/ConnectionExplorer.tsx +14 -14
- package/src/components/{Project → Environment}/DeletePackageDialog.tsx +2 -2
- package/src/components/{Project → Environment}/EditPackageDialog.tsx +18 -13
- package/src/components/{Project/Project.tsx → Environment/Environment.tsx} +6 -6
- package/src/components/{Project → Environment}/Packages.tsx +6 -5
- package/src/components/Environment/index.ts +2 -0
- package/src/components/Home/{AddProjectDialog.tsx → AddEnvironmentDialog.tsx} +21 -18
- package/src/components/Home/{DeleteProjectDialog.tsx → DeleteEnvironmentDialog.tsx} +14 -13
- package/src/components/Home/{EditProjectDialog.tsx → EditEnvironmentDialog.tsx} +32 -28
- package/src/components/Home/Home.tsx +39 -38
- package/src/components/Model/ModelCell.tsx +2 -2
- package/src/components/Model/SourcesExplorer.tsx +2 -2
- package/src/components/Model/useModelData.ts +3 -3
- package/src/components/Notebook/Notebook.tsx +7 -7
- package/src/components/Package/Config.tsx +4 -4
- package/src/components/Package/Connections.tsx +15 -15
- package/src/components/Package/Databases.tsx +4 -4
- package/src/components/Package/Models.tsx +4 -4
- package/src/components/Package/Notebooks.tsx +4 -4
- package/src/components/QueryResult/QueryResult.tsx +6 -6
- package/src/components/ServerProvider.tsx +5 -5
- package/src/components/Workbook/ModelPicker.tsx +4 -4
- package/src/components/Workbook/Workbook.tsx +4 -4
- package/src/components/index.ts +1 -1
- package/src/hooks/useDimensionFiltersFromSpec.ts +5 -5
- package/src/hooks/useDimensionFiltersQuery.ts +6 -6
- package/src/hooks/useDimensionalFilterRangeData.ts +7 -7
- package/src/hooks/useRawQueryData.ts +3 -3
- package/src/index.ts +1 -1
- package/src/utils/formatting.spec.ts +22 -21
- package/src/utils/formatting.ts +8 -7
- package/src/utils/parsing.spec.ts +23 -19
- package/src/utils/parsing.ts +8 -6
- package/dist/ServerProvider-BMsmCksc.cjs.js +0 -1
- package/dist/components/Home/AddProjectDialog.d.ts +0 -1
- package/dist/components/Home/DeleteProjectDialog.d.ts +0 -5
- package/dist/components/Home/EditProjectDialog.d.ts +0 -7
- package/dist/components/Project/Project.d.ts +0 -6
- package/dist/components/Project/index.d.ts +0 -2
- package/src/components/Project/index.ts +0 -2
- /package/dist/components/{Project → Environment}/About.d.ts +0 -0
- /package/dist/components/{Project → Environment}/AddPackageDialog.d.ts +0 -0
- /package/dist/components/{Project → Environment}/ConnectionExplorer.d.ts +0 -0
- /package/dist/components/{Project → Environment}/DeletePackageDialog.d.ts +0 -0
- /package/dist/components/{Project → Environment}/EditPackageDialog.d.ts +0 -0
- /package/dist/components/{Project → Environment}/Packages.d.ts +0 -0
|
@@ -9,24 +9,24 @@ import DialogTitle from "@mui/material/DialogTitle";
|
|
|
9
9
|
import { useState } from "react";
|
|
10
10
|
import { Edit } from "@mui/icons-material";
|
|
11
11
|
import { MenuItem, ListItemIcon, ListItemText, Snackbar } from "@mui/material";
|
|
12
|
-
import {
|
|
12
|
+
import { Environment } from "../../client";
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
generateEnvironmentReadme,
|
|
15
|
+
getEnvironmentDescription,
|
|
16
16
|
} from "../../utils/parsing";
|
|
17
17
|
import { useQueryClient } from "@tanstack/react-query";
|
|
18
18
|
import { useMutationWithApiError } from "../../hooks/useQueryWithApiError";
|
|
19
19
|
import { useServer } from "../ServerProvider";
|
|
20
20
|
|
|
21
|
-
interface
|
|
22
|
-
|
|
21
|
+
interface EditEnvironmentModalProps {
|
|
22
|
+
environment: Environment;
|
|
23
23
|
onCloseDialog: () => void;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export default function
|
|
27
|
-
|
|
26
|
+
export default function EditEnvironmentDialog({
|
|
27
|
+
environment,
|
|
28
28
|
onCloseDialog,
|
|
29
|
-
}:
|
|
29
|
+
}: EditEnvironmentModalProps) {
|
|
30
30
|
const [open, setOpen] = useState(false);
|
|
31
31
|
const { apiClients } = useServer();
|
|
32
32
|
const queryClient = useQueryClient();
|
|
@@ -41,14 +41,14 @@ export default function EditProjectDialog({
|
|
|
41
41
|
onCloseDialog();
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
const
|
|
44
|
+
const editEnvironment = useMutationWithApiError({
|
|
45
45
|
async mutationFn(variables: { description: string }) {
|
|
46
|
-
return apiClients.
|
|
47
|
-
name:
|
|
48
|
-
readme:
|
|
46
|
+
return apiClients.environments.updateEnvironment(environment.name, {
|
|
47
|
+
name: environment.name,
|
|
48
|
+
readme: generateEnvironmentReadme(
|
|
49
49
|
{
|
|
50
|
-
name:
|
|
51
|
-
readme:
|
|
50
|
+
name: environment.name,
|
|
51
|
+
readme: environment.readme,
|
|
52
52
|
},
|
|
53
53
|
variables.description,
|
|
54
54
|
),
|
|
@@ -56,8 +56,8 @@ export default function EditProjectDialog({
|
|
|
56
56
|
},
|
|
57
57
|
onSuccess() {
|
|
58
58
|
handleClose();
|
|
59
|
-
queryClient.invalidateQueries({ queryKey: ["
|
|
60
|
-
setNotificationMessage("
|
|
59
|
+
queryClient.invalidateQueries({ queryKey: ["environments"] });
|
|
60
|
+
setNotificationMessage("Environment updated successfully");
|
|
61
61
|
},
|
|
62
62
|
onError(error) {
|
|
63
63
|
setNotificationMessage(
|
|
@@ -72,7 +72,7 @@ export default function EditProjectDialog({
|
|
|
72
72
|
event.preventDefault();
|
|
73
73
|
const formData = new FormData(event.currentTarget);
|
|
74
74
|
const description = formData.get("description")?.toString();
|
|
75
|
-
|
|
75
|
+
editEnvironment.mutate({ description });
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
return (
|
|
@@ -85,46 +85,50 @@ export default function EditProjectDialog({
|
|
|
85
85
|
</MenuItem>
|
|
86
86
|
|
|
87
87
|
<Dialog open={open} onClose={handleClose}>
|
|
88
|
-
<DialogTitle>Edit
|
|
88
|
+
<DialogTitle>Edit Environment</DialogTitle>
|
|
89
89
|
<DialogContent>
|
|
90
90
|
<DialogContentText>
|
|
91
|
-
|
|
92
|
-
analyzing data.
|
|
91
|
+
Edit this environment's description.
|
|
93
92
|
</DialogContentText>
|
|
94
|
-
<form onSubmit={handleSubmit} id="
|
|
93
|
+
<form onSubmit={handleSubmit} id="environment-form">
|
|
95
94
|
<TextField
|
|
96
95
|
autoFocus
|
|
97
96
|
required
|
|
98
97
|
margin="dense"
|
|
99
98
|
id="name"
|
|
100
99
|
name="name"
|
|
101
|
-
label="
|
|
100
|
+
label="Environment Name"
|
|
102
101
|
disabled
|
|
103
102
|
type="text"
|
|
104
103
|
fullWidth
|
|
105
104
|
variant="standard"
|
|
106
|
-
defaultValue={
|
|
105
|
+
defaultValue={environment.name}
|
|
107
106
|
/>
|
|
108
107
|
<TextField
|
|
109
108
|
margin="dense"
|
|
110
109
|
id="description"
|
|
111
110
|
name="description"
|
|
112
|
-
label="
|
|
111
|
+
label="Environment Description"
|
|
113
112
|
type="text"
|
|
114
113
|
fullWidth
|
|
115
114
|
variant="standard"
|
|
116
|
-
defaultValue={
|
|
115
|
+
defaultValue={getEnvironmentDescription(
|
|
116
|
+
environment.readme,
|
|
117
|
+
)}
|
|
117
118
|
/>
|
|
118
119
|
</form>
|
|
119
120
|
</DialogContent>
|
|
120
121
|
<DialogActions>
|
|
121
|
-
<Button
|
|
122
|
+
<Button
|
|
123
|
+
disabled={editEnvironment.isPending}
|
|
124
|
+
onClick={handleClose}
|
|
125
|
+
>
|
|
122
126
|
Cancel
|
|
123
127
|
</Button>
|
|
124
128
|
<Button
|
|
125
129
|
type="submit"
|
|
126
|
-
form="
|
|
127
|
-
loading={
|
|
130
|
+
form="environment-form"
|
|
131
|
+
loading={editEnvironment.isPending}
|
|
128
132
|
>
|
|
129
133
|
Save Changes
|
|
130
134
|
</Button>
|
|
@@ -21,30 +21,30 @@ import {
|
|
|
21
21
|
Typography,
|
|
22
22
|
} from "@mui/material";
|
|
23
23
|
import { useState } from "react";
|
|
24
|
-
import {
|
|
24
|
+
import { Environment } from "../../client";
|
|
25
25
|
import { useQueryWithApiError } from "../../hooks/useQueryWithApiError";
|
|
26
|
-
import {
|
|
26
|
+
import { getEnvironmentDescription } from "../../utils/parsing";
|
|
27
27
|
import { ApiErrorDisplay } from "../ApiErrorDisplay";
|
|
28
28
|
import { Loading } from "../Loading";
|
|
29
29
|
import { useServer } from "../ServerProvider";
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import
|
|
30
|
+
import AddEnvironmentDialog from "./AddEnvironmentDialog";
|
|
31
|
+
import DeleteEnvironmentDialog from "./DeleteEnvironmentDialog";
|
|
32
|
+
import EditEnvironmentDialog from "./EditEnvironmentDialog";
|
|
33
33
|
|
|
34
34
|
interface HomeProps {
|
|
35
|
-
|
|
35
|
+
onClickEnvironment?: (to: string, event?: React.MouseEvent) => void;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export default function Home({
|
|
38
|
+
export default function Home({ onClickEnvironment }: HomeProps) {
|
|
39
39
|
const { apiClients, mutable } = useServer();
|
|
40
40
|
|
|
41
41
|
const { data, isSuccess, isError, error } = useQueryWithApiError({
|
|
42
|
-
queryKey: ["
|
|
43
|
-
queryFn: () => apiClients.
|
|
42
|
+
queryKey: ["environments"],
|
|
43
|
+
queryFn: () => apiClients.environments.listEnvironments(),
|
|
44
44
|
});
|
|
45
45
|
|
|
46
46
|
if (isError) {
|
|
47
|
-
return <ApiErrorDisplay error={error} context="
|
|
47
|
+
return <ApiErrorDisplay error={error} context="Environments List" />;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
if (isSuccess) {
|
|
@@ -247,7 +247,7 @@ export default function Home({ onClickProject }: HomeProps) {
|
|
|
247
247
|
|
|
248
248
|
<Divider sx={{ my: 4 }} />
|
|
249
249
|
|
|
250
|
-
{/*
|
|
250
|
+
{/* Environment Selection Section */}
|
|
251
251
|
{data.data.length > 0 ? (
|
|
252
252
|
<>
|
|
253
253
|
<Box sx={{ textAlign: "center", mb: 4 }}>
|
|
@@ -262,24 +262,24 @@ export default function Home({ onClickProject }: HomeProps) {
|
|
|
262
262
|
sx={{ color: "primary.main", fontSize: 24 }}
|
|
263
263
|
/>
|
|
264
264
|
<Typography variant="h4" fontWeight={600}>
|
|
265
|
-
Select
|
|
265
|
+
Select an Environment
|
|
266
266
|
</Typography>
|
|
267
267
|
</Stack>
|
|
268
268
|
<Typography variant="body1" color="text.secondary">
|
|
269
|
-
Choose
|
|
269
|
+
Choose an environment to explore its semantic models and
|
|
270
270
|
start analyzing your data
|
|
271
271
|
</Typography>
|
|
272
|
-
{mutable && <
|
|
272
|
+
{mutable && <AddEnvironmentDialog />}
|
|
273
273
|
</Box>
|
|
274
274
|
<Grid container spacing={3} justifyContent="center">
|
|
275
|
-
{data.data.map((
|
|
275
|
+
{data.data.map((environment) => (
|
|
276
276
|
<Grid
|
|
277
277
|
size={{ xs: 12, sm: 6, md: 4 }}
|
|
278
|
-
key={
|
|
278
|
+
key={environment.name}
|
|
279
279
|
>
|
|
280
|
-
<
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
<EnvironmentCard
|
|
281
|
+
environment={environment}
|
|
282
|
+
onClickEnvironment={onClickEnvironment}
|
|
283
283
|
/>
|
|
284
284
|
</Grid>
|
|
285
285
|
))}
|
|
@@ -306,12 +306,12 @@ export default function Home({ onClickProject }: HomeProps) {
|
|
|
306
306
|
color="text.secondary"
|
|
307
307
|
sx={{ mb: 3 }}
|
|
308
308
|
>
|
|
309
|
-
No
|
|
310
|
-
start exploring semantic models and building data
|
|
309
|
+
No environments found. Create your first Malloy environment
|
|
310
|
+
to start exploring semantic models and building data
|
|
311
311
|
experiences.
|
|
312
312
|
</Typography>
|
|
313
313
|
{mutable ? (
|
|
314
|
-
<
|
|
314
|
+
<AddEnvironmentDialog />
|
|
315
315
|
) : (
|
|
316
316
|
<Button
|
|
317
317
|
variant="contained"
|
|
@@ -359,15 +359,15 @@ export default function Home({ onClickProject }: HomeProps) {
|
|
|
359
359
|
</Container>
|
|
360
360
|
);
|
|
361
361
|
} else {
|
|
362
|
-
return <Loading text="Loading
|
|
362
|
+
return <Loading text="Loading environments..." />;
|
|
363
363
|
}
|
|
364
364
|
}
|
|
365
|
-
function
|
|
366
|
-
|
|
367
|
-
|
|
365
|
+
function EnvironmentCard({
|
|
366
|
+
environment,
|
|
367
|
+
onClickEnvironment,
|
|
368
368
|
}: {
|
|
369
|
-
|
|
370
|
-
|
|
369
|
+
environment: Environment;
|
|
370
|
+
onClickEnvironment: (to: string, event?: React.MouseEvent) => void;
|
|
371
371
|
}) {
|
|
372
372
|
const { mutable } = useServer();
|
|
373
373
|
const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null);
|
|
@@ -395,7 +395,8 @@ function ProjectCard({
|
|
|
395
395
|
{mutable && (
|
|
396
396
|
<>
|
|
397
397
|
<IconButton
|
|
398
|
-
aria-
|
|
398
|
+
aria-label={`Environment actions for ${environment.name}`}
|
|
399
|
+
aria-controls={isMenuOpen ? "environment-menu" : undefined}
|
|
399
400
|
aria-haspopup="true"
|
|
400
401
|
aria-expanded={isMenuOpen ? "true" : undefined}
|
|
401
402
|
onClick={openMenu}
|
|
@@ -404,7 +405,7 @@ function ProjectCard({
|
|
|
404
405
|
<MoreVert fontSize="small" />
|
|
405
406
|
</IconButton>
|
|
406
407
|
<Menu
|
|
407
|
-
id="
|
|
408
|
+
id="environment-menu"
|
|
408
409
|
aria-haspopup="true"
|
|
409
410
|
aria-expanded={isMenuOpen ? "true" : undefined}
|
|
410
411
|
open={isMenuOpen}
|
|
@@ -420,12 +421,12 @@ function ProjectCard({
|
|
|
420
421
|
horizontal: "right",
|
|
421
422
|
}}
|
|
422
423
|
>
|
|
423
|
-
<
|
|
424
|
-
|
|
424
|
+
<EditEnvironmentDialog
|
|
425
|
+
environment={environment}
|
|
425
426
|
onCloseDialog={closeMenu}
|
|
426
427
|
/>
|
|
427
|
-
<
|
|
428
|
-
|
|
428
|
+
<DeleteEnvironmentDialog
|
|
429
|
+
environment={environment}
|
|
429
430
|
onCloseDialog={closeMenu}
|
|
430
431
|
/>
|
|
431
432
|
</Menu>
|
|
@@ -440,14 +441,14 @@ function ProjectCard({
|
|
|
440
441
|
}}
|
|
441
442
|
/>
|
|
442
443
|
<Typography variant="h6" fontWeight={600} gutterBottom>
|
|
443
|
-
{
|
|
444
|
+
{environment.name}
|
|
444
445
|
</Typography>
|
|
445
446
|
<Typography
|
|
446
447
|
variant="body2"
|
|
447
448
|
color="text.secondary"
|
|
448
449
|
sx={{ mb: 2, minHeight: "60px" }}
|
|
449
450
|
>
|
|
450
|
-
{
|
|
451
|
+
{getEnvironmentDescription(environment.readme)}
|
|
451
452
|
</Typography>
|
|
452
453
|
<Button
|
|
453
454
|
variant="contained"
|
|
@@ -455,10 +456,10 @@ function ProjectCard({
|
|
|
455
456
|
endIcon={<ArrowForwardRoundedIcon />}
|
|
456
457
|
fullWidth
|
|
457
458
|
onClick={(event) =>
|
|
458
|
-
|
|
459
|
+
onClickEnvironment(`/${environment.name}/`, event)
|
|
459
460
|
}
|
|
460
461
|
>
|
|
461
|
-
Open
|
|
462
|
+
Open Environment
|
|
462
463
|
</Button>
|
|
463
464
|
</CardContent>
|
|
464
465
|
</Card>
|
|
@@ -32,7 +32,7 @@ export function ModelCell({
|
|
|
32
32
|
const [resultsDialogOpen, setResultsDialogOpen] = React.useState(false);
|
|
33
33
|
const [hasRun, setHasRun] = React.useState(false);
|
|
34
34
|
|
|
35
|
-
const { packageName,
|
|
35
|
+
const { packageName, environmentName, versionId, modelPath } =
|
|
36
36
|
parseResourceUri(resourceUri);
|
|
37
37
|
const { apiClients } = useServer();
|
|
38
38
|
|
|
@@ -44,7 +44,7 @@ export function ModelCell({
|
|
|
44
44
|
queryKey: ["namedQueryResult", resourceUri, queryName],
|
|
45
45
|
queryFn: () =>
|
|
46
46
|
apiClients.models.executeQueryModel(
|
|
47
|
-
|
|
47
|
+
environmentName,
|
|
48
48
|
packageName,
|
|
49
49
|
modelPath,
|
|
50
50
|
{
|
|
@@ -142,7 +142,7 @@ function SourceExplorerComponentInner({
|
|
|
142
142
|
}
|
|
143
143
|
}, [onChange, query]);
|
|
144
144
|
const {
|
|
145
|
-
|
|
145
|
+
environmentName: environmentName,
|
|
146
146
|
packageName: packageName,
|
|
147
147
|
versionId: versionId,
|
|
148
148
|
} = parseResourceUri(resourceUri);
|
|
@@ -178,7 +178,7 @@ function SourceExplorerComponentInner({
|
|
|
178
178
|
query: malloy,
|
|
179
179
|
});
|
|
180
180
|
return apiClients.models.executeQueryModel(
|
|
181
|
-
|
|
181
|
+
environmentName,
|
|
182
182
|
packageName,
|
|
183
183
|
sourceAndPath.modelPath,
|
|
184
184
|
{
|
|
@@ -8,15 +8,15 @@ import { useServer } from "../ServerProvider";
|
|
|
8
8
|
* useQueryWithApiError to fetch a compiled model.
|
|
9
9
|
*/
|
|
10
10
|
export function useModelData(resourceUri: string, enabled: boolean = true) {
|
|
11
|
-
const { modelPath,
|
|
11
|
+
const { modelPath, environmentName, packageName, versionId } =
|
|
12
12
|
parseResourceUri(resourceUri);
|
|
13
13
|
const { apiClients } = useServer();
|
|
14
14
|
|
|
15
15
|
return useQueryWithApiError<CompiledModel>({
|
|
16
|
-
queryKey: ["package",
|
|
16
|
+
queryKey: ["package", environmentName, packageName, modelPath, versionId],
|
|
17
17
|
queryFn: async () => {
|
|
18
18
|
const response = await apiClients.models.getModel(
|
|
19
|
-
|
|
19
|
+
environmentName,
|
|
20
20
|
packageName,
|
|
21
21
|
modelPath,
|
|
22
22
|
versionId,
|
|
@@ -45,7 +45,7 @@ export default function Notebook({
|
|
|
45
45
|
}: NotebookProps) {
|
|
46
46
|
const { apiClients } = useServer();
|
|
47
47
|
const {
|
|
48
|
-
|
|
48
|
+
environmentName,
|
|
49
49
|
packageName,
|
|
50
50
|
versionId,
|
|
51
51
|
modelPath: notebookPath,
|
|
@@ -61,7 +61,7 @@ export default function Notebook({
|
|
|
61
61
|
queryKey: [resourceUri],
|
|
62
62
|
queryFn: async () => {
|
|
63
63
|
const response = await apiClients.notebooks.getNotebook(
|
|
64
|
-
|
|
64
|
+
environmentName,
|
|
65
65
|
packageName,
|
|
66
66
|
notebookPath,
|
|
67
67
|
versionId,
|
|
@@ -232,7 +232,7 @@ export default function Notebook({
|
|
|
232
232
|
// current selection. Otherwise selecting "FORD" would hide every other
|
|
233
233
|
// manufacturer from the dropdown.
|
|
234
234
|
const { data: filterValuesData } = useDimensionalFilterRangeData({
|
|
235
|
-
|
|
235
|
+
environment: environmentName,
|
|
236
236
|
package: packageName,
|
|
237
237
|
dimensionSpecs,
|
|
238
238
|
versionId,
|
|
@@ -316,7 +316,7 @@ export default function Notebook({
|
|
|
316
316
|
// Use notebook cell execution API with optional filter_params
|
|
317
317
|
const response =
|
|
318
318
|
await apiClients.notebooks.executeNotebookCell(
|
|
319
|
-
|
|
319
|
+
environmentName,
|
|
320
320
|
packageName,
|
|
321
321
|
notebookPath,
|
|
322
322
|
cellIndex,
|
|
@@ -381,7 +381,7 @@ export default function Notebook({
|
|
|
381
381
|
notebook,
|
|
382
382
|
useServerFilters,
|
|
383
383
|
buildFilterParams,
|
|
384
|
-
|
|
384
|
+
environmentName,
|
|
385
385
|
packageName,
|
|
386
386
|
notebookPath,
|
|
387
387
|
versionId,
|
|
@@ -533,7 +533,7 @@ export default function Notebook({
|
|
|
533
533
|
{/* Error States */}
|
|
534
534
|
{isError && error.status === 404 && (
|
|
535
535
|
<Typography variant="body2" sx={{ color: "#666666" }}>
|
|
536
|
-
<code>{`${
|
|
536
|
+
<code>{`${environmentName} > ${packageName} > ${notebookPath}`}</code>{" "}
|
|
537
537
|
not found.
|
|
538
538
|
</Typography>
|
|
539
539
|
)}
|
|
@@ -541,7 +541,7 @@ export default function Notebook({
|
|
|
541
541
|
{isError && error.status !== 404 && (
|
|
542
542
|
<ApiErrorDisplay
|
|
543
543
|
error={error}
|
|
544
|
-
context={`${
|
|
544
|
+
context={`${environmentName} > ${packageName} > ${notebookPath}`}
|
|
545
545
|
/>
|
|
546
546
|
)}
|
|
547
547
|
|
|
@@ -18,16 +18,16 @@ type Props = {
|
|
|
18
18
|
export default function Config({ resourceUri }: Props) {
|
|
19
19
|
const { apiClients } = useServer();
|
|
20
20
|
const {
|
|
21
|
-
|
|
21
|
+
environmentName: environmentName,
|
|
22
22
|
packageName: packageName,
|
|
23
23
|
versionId: versionId,
|
|
24
24
|
} = parseResourceUri(resourceUri);
|
|
25
25
|
|
|
26
26
|
const { data, isSuccess, isError, error } = useQueryWithApiError({
|
|
27
|
-
queryKey: ["package",
|
|
27
|
+
queryKey: ["package", environmentName, packageName, versionId],
|
|
28
28
|
queryFn: () =>
|
|
29
29
|
apiClients.packages.getPackage(
|
|
30
|
-
|
|
30
|
+
environmentName,
|
|
31
31
|
packageName,
|
|
32
32
|
versionId,
|
|
33
33
|
false,
|
|
@@ -86,7 +86,7 @@ export default function Config({ resourceUri }: Props) {
|
|
|
86
86
|
{isError && (
|
|
87
87
|
<ApiErrorDisplay
|
|
88
88
|
error={error}
|
|
89
|
-
context={`${
|
|
89
|
+
context={`${environmentName} > ${packageName} > ${versionId}`}
|
|
90
90
|
/>
|
|
91
91
|
)}
|
|
92
92
|
</List>
|
|
@@ -24,7 +24,7 @@ import { ApiErrorDisplay } from "../ApiErrorDisplay";
|
|
|
24
24
|
import AddConnectionDialog from "../Connections/AddConnectionDialog";
|
|
25
25
|
import DeleteConnectionDialog from "../Connections/DeleteConnectionDialog";
|
|
26
26
|
import EditConnectionDialog from "../Connections/EditConnectionDialog";
|
|
27
|
-
import ConnectionExplorer from "../
|
|
27
|
+
import ConnectionExplorer from "../Environment/ConnectionExplorer";
|
|
28
28
|
import { useServer } from "../ServerProvider";
|
|
29
29
|
import {
|
|
30
30
|
PackageCard,
|
|
@@ -115,19 +115,19 @@ type ConnectionsProps = {
|
|
|
115
115
|
export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
116
116
|
const { apiClients, mutable } = useServer();
|
|
117
117
|
const queryClient = useQueryClient();
|
|
118
|
-
const {
|
|
118
|
+
const { environmentName: environmentName } = parseResourceUri(resourceUri);
|
|
119
119
|
const [notificationMessage, setNotificationMessage] = useState("");
|
|
120
120
|
const [selectedConnection, setSelectedConnection] = useState<string | null>(
|
|
121
121
|
null,
|
|
122
122
|
);
|
|
123
123
|
const selectedConnectionResourceUri = encodeResourceUri({
|
|
124
|
-
|
|
124
|
+
environmentName: environmentName,
|
|
125
125
|
connectionName: selectedConnection,
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
const { data, isSuccess, isError, error } = useQueryWithApiError({
|
|
129
|
-
queryKey: ["connections",
|
|
130
|
-
queryFn: () => apiClients.connections.listConnections(
|
|
129
|
+
queryKey: ["connections", environmentName],
|
|
130
|
+
queryFn: () => apiClients.connections.listConnections(environmentName),
|
|
131
131
|
});
|
|
132
132
|
|
|
133
133
|
const handleConnectionClick = (connectionName: string) => {
|
|
@@ -140,15 +140,15 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
|
140
140
|
|
|
141
141
|
const addConnection = useMutationWithApiError({
|
|
142
142
|
mutationFn: (payload: ApiConnection) => {
|
|
143
|
-
return apiClients.
|
|
144
|
-
name:
|
|
143
|
+
return apiClients.environments.updateEnvironment(environmentName, {
|
|
144
|
+
name: environmentName,
|
|
145
145
|
connections: [...data.data, payload],
|
|
146
146
|
});
|
|
147
147
|
},
|
|
148
148
|
onSuccess() {
|
|
149
149
|
setNotificationMessage("Connection added successfully");
|
|
150
150
|
queryClient.invalidateQueries({
|
|
151
|
-
queryKey: ["connections",
|
|
151
|
+
queryKey: ["connections", environmentName],
|
|
152
152
|
});
|
|
153
153
|
},
|
|
154
154
|
onError(error) {
|
|
@@ -158,8 +158,8 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
|
158
158
|
|
|
159
159
|
const updateConnection = useMutationWithApiError({
|
|
160
160
|
mutationFn: (payload: ApiConnection) => {
|
|
161
|
-
return apiClients.
|
|
162
|
-
name:
|
|
161
|
+
return apiClients.environments.updateEnvironment(environmentName, {
|
|
162
|
+
name: environmentName,
|
|
163
163
|
connections: data.data.map((conn) =>
|
|
164
164
|
conn.name === payload.name ? payload : conn,
|
|
165
165
|
),
|
|
@@ -170,7 +170,7 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
|
170
170
|
`Connection ${variables.name} updated successfully`,
|
|
171
171
|
);
|
|
172
172
|
queryClient.invalidateQueries({
|
|
173
|
-
queryKey: ["connections",
|
|
173
|
+
queryKey: ["connections", environmentName],
|
|
174
174
|
});
|
|
175
175
|
},
|
|
176
176
|
onError(error) {
|
|
@@ -180,8 +180,8 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
|
180
180
|
|
|
181
181
|
const deleteConnection = useMutationWithApiError({
|
|
182
182
|
mutationFn: (payload: ApiConnection) => {
|
|
183
|
-
return apiClients.
|
|
184
|
-
name:
|
|
183
|
+
return apiClients.environments.updateEnvironment(environmentName, {
|
|
184
|
+
name: environmentName,
|
|
185
185
|
connections: data.data.filter((conn) => conn.name !== payload.name),
|
|
186
186
|
});
|
|
187
187
|
},
|
|
@@ -190,7 +190,7 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
|
190
190
|
`Connection ${variables.name} deleted successfully`,
|
|
191
191
|
);
|
|
192
192
|
queryClient.invalidateQueries({
|
|
193
|
-
queryKey: ["connections",
|
|
193
|
+
queryKey: ["connections", environmentName],
|
|
194
194
|
});
|
|
195
195
|
},
|
|
196
196
|
onError(error) {
|
|
@@ -305,7 +305,7 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
|
|
|
305
305
|
{isError && (
|
|
306
306
|
<ApiErrorDisplay
|
|
307
307
|
error={error}
|
|
308
|
-
context={`${
|
|
308
|
+
context={`${environmentName} > Connections`}
|
|
309
309
|
/>
|
|
310
310
|
)}
|
|
311
311
|
</Box>
|
|
@@ -33,7 +33,7 @@ type Props = {
|
|
|
33
33
|
export default function Databases({ resourceUri }: Props) {
|
|
34
34
|
const { apiClients } = useServer();
|
|
35
35
|
const {
|
|
36
|
-
|
|
36
|
+
environmentName: environmentName,
|
|
37
37
|
packageName: packageName,
|
|
38
38
|
versionId: versionId,
|
|
39
39
|
} = parseResourceUri(resourceUri);
|
|
@@ -53,10 +53,10 @@ export default function Databases({ resourceUri }: Props) {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
const { data, isError, error, isSuccess } = useQueryWithApiError({
|
|
56
|
-
queryKey: ["databases",
|
|
56
|
+
queryKey: ["databases", environmentName, packageName, versionId],
|
|
57
57
|
queryFn: () =>
|
|
58
58
|
apiClients.databases.listDatabases(
|
|
59
|
-
|
|
59
|
+
environmentName,
|
|
60
60
|
packageName,
|
|
61
61
|
versionId,
|
|
62
62
|
),
|
|
@@ -89,7 +89,7 @@ export default function Databases({ resourceUri }: Props) {
|
|
|
89
89
|
{isError && (
|
|
90
90
|
<ApiErrorDisplay
|
|
91
91
|
error={error}
|
|
92
|
-
context={`${
|
|
92
|
+
context={`${environmentName} > ${packageName} > Databases`}
|
|
93
93
|
/>
|
|
94
94
|
)}
|
|
95
95
|
{isSuccess && data.data.length > 0 && (
|
|
@@ -20,16 +20,16 @@ interface ModelsProps {
|
|
|
20
20
|
|
|
21
21
|
export default function Models({ onClickModelFile, resourceUri }: ModelsProps) {
|
|
22
22
|
const {
|
|
23
|
-
|
|
23
|
+
environmentName: environmentName,
|
|
24
24
|
packageName: packageName,
|
|
25
25
|
versionId: versionId,
|
|
26
26
|
} = parseResourceUri(resourceUri);
|
|
27
27
|
const { apiClients } = useServer();
|
|
28
28
|
|
|
29
29
|
const { data, isError, error, isSuccess } = useQueryWithApiError({
|
|
30
|
-
queryKey: ["models",
|
|
30
|
+
queryKey: ["models", environmentName, packageName, versionId],
|
|
31
31
|
queryFn: () =>
|
|
32
|
-
apiClients.models.listModels(
|
|
32
|
+
apiClients.models.listModels(environmentName, packageName, versionId),
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
return (
|
|
@@ -46,7 +46,7 @@ export default function Models({ onClickModelFile, resourceUri }: ModelsProps) {
|
|
|
46
46
|
{isError && (
|
|
47
47
|
<ApiErrorDisplay
|
|
48
48
|
error={error}
|
|
49
|
-
context={`${
|
|
49
|
+
context={`${environmentName} > ${packageName} > Models`}
|
|
50
50
|
/>
|
|
51
51
|
)}
|
|
52
52
|
{isSuccess && data.data.length > 0 && (
|
|
@@ -24,16 +24,16 @@ export default function Notebooks({
|
|
|
24
24
|
}: NotebooksProps) {
|
|
25
25
|
const { apiClients } = useServer();
|
|
26
26
|
const {
|
|
27
|
-
|
|
27
|
+
environmentName: environmentName,
|
|
28
28
|
packageName: packageName,
|
|
29
29
|
versionId: versionId,
|
|
30
30
|
} = parseResourceUri(resourceUri);
|
|
31
31
|
|
|
32
32
|
const { data, isError, error, isSuccess } = useQueryWithApiError({
|
|
33
|
-
queryKey: ["notebooks",
|
|
33
|
+
queryKey: ["notebooks", environmentName, packageName, versionId],
|
|
34
34
|
queryFn: () =>
|
|
35
35
|
apiClients.notebooks.listNotebooks(
|
|
36
|
-
|
|
36
|
+
environmentName,
|
|
37
37
|
packageName,
|
|
38
38
|
versionId,
|
|
39
39
|
),
|
|
@@ -55,7 +55,7 @@ export default function Notebooks({
|
|
|
55
55
|
{isError && (
|
|
56
56
|
<ApiErrorDisplay
|
|
57
57
|
error={error}
|
|
58
|
-
context={`${
|
|
58
|
+
context={`${environmentName} > ${packageName} > Notebooks`}
|
|
59
59
|
/>
|
|
60
60
|
)}
|
|
61
61
|
{isSuccess && data.data.length > 0 && (
|