@burdenoff/microfe-cosmicintersection 2026.704.1 → 2026.704.3
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/dist/cosmicintersection/CosmicIntersectionRoutes.js +45 -25
- package/dist/cosmicintersection/CosmicIntersectionRoutes.js.map +1 -1
- package/dist/cosmicintersection/api/cosmicApi.js +137 -66
- package/dist/cosmicintersection/api/cosmicApi.js.map +1 -1
- package/dist/cosmicintersection/components/ActivityFeedPanel.js +68 -0
- package/dist/cosmicintersection/components/ActivityFeedPanel.js.map +1 -0
- package/dist/cosmicintersection/components/DiscussionPanel.js +57 -0
- package/dist/cosmicintersection/components/DiscussionPanel.js.map +1 -0
- package/dist/cosmicintersection/components/FacetPanel.js +66 -0
- package/dist/cosmicintersection/components/FacetPanel.js.map +1 -0
- package/dist/cosmicintersection/components/LineageGraph.js +388 -0
- package/dist/cosmicintersection/components/LineageGraph.js.map +1 -0
- package/dist/cosmicintersection/components/ResultsChart.js +329 -0
- package/dist/cosmicintersection/components/ResultsChart.js.map +1 -0
- package/dist/cosmicintersection/components/StepDAG.js +104 -0
- package/dist/cosmicintersection/components/StepDAG.js.map +1 -0
- package/dist/cosmicintersection/components/index.js +5 -3
- package/dist/cosmicintersection/pages/access/AccessPage.js +220 -161
- package/dist/cosmicintersection/pages/access/AccessPage.js.map +1 -1
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js +332 -172
- package/dist/cosmicintersection/pages/analyses/AnalysesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js +167 -109
- package/dist/cosmicintersection/pages/collections/CollectionDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionFormPage.js +87 -61
- package/dist/cosmicintersection/pages/collections/CollectionFormPage.js.map +1 -1
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js +51 -42
- package/dist/cosmicintersection/pages/collections/CollectionsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js +31 -18
- package/dist/cosmicintersection/pages/dashboard/DashboardPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js +330 -184
- package/dist/cosmicintersection/pages/datasets/DatasetDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/datasets/DatasetFormPage.js +7 -7
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js +321 -163
- package/dist/cosmicintersection/pages/datasets/DatasetsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js +358 -0
- package/dist/cosmicintersection/pages/discovery/DiscoveryPage.js.map +1 -0
- package/dist/cosmicintersection/pages/lineage/LineagePage.js +171 -0
- package/dist/cosmicintersection/pages/lineage/LineagePage.js.map +1 -0
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js +339 -260
- package/dist/cosmicintersection/pages/notebooks/NotebookDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js +143 -82
- package/dist/cosmicintersection/pages/notebooks/NotebooksPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelineDetailPage.js +286 -142
- package/dist/cosmicintersection/pages/pipelines/PipelineDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelineFormPage.js +305 -103
- package/dist/cosmicintersection/pages/pipelines/PipelineFormPage.js.map +1 -1
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js +183 -79
- package/dist/cosmicintersection/pages/pipelines/PipelinesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js +346 -204
- package/dist/cosmicintersection/pages/releases/ReleasesPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js +184 -136
- package/dist/cosmicintersection/pages/runs/RunDetailPage.js.map +1 -1
- package/dist/cosmicintersection/pages/runs/RunsPage.js +182 -120
- package/dist/cosmicintersection/pages/runs/RunsPage.js.map +1 -1
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js +234 -0
- package/dist/cosmicintersection/pages/sources/SourceDetailPage.js.map +1 -0
- package/dist/cosmicintersection/pages/sources/SourcesPage.js +250 -133
- package/dist/cosmicintersection/pages/sources/SourcesPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import { useCosmicIntersection as e } from "../../context/CosmicIntersectionContext.js";
|
|
2
2
|
import { notify as t } from "../../lib/toast.js";
|
|
3
|
-
import { useCosAddSchemaFieldMutation as n,
|
|
4
|
-
import
|
|
3
|
+
import { useCosAddSchemaFieldMutation as n, useCosAnalysesQuery as r, useCosArchiveDatasetMutation as i, useCosDatasetQuery as ee, useCosNotebooksQuery as te, useCosPublishDatasetMutation as ne, useCosReleasesQuery as re, useCosRunsQuery as ie, useCosUpdateDatasetMutation as ae } from "../../api/cosmicApi.js";
|
|
4
|
+
import oe from "../../components/ActionMenu.js";
|
|
5
5
|
import a from "../../components/EmptyState.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
6
|
+
import se from "../../components/ErrorState.js";
|
|
7
|
+
import o from "../../components/LoadingState.js";
|
|
8
|
+
import ce from "../../components/ActivityFeedPanel.js";
|
|
9
|
+
import le from "../../components/DiscussionPanel.js";
|
|
10
|
+
import ue from "../../components/EntityTagsField.js";
|
|
11
|
+
import { useFileDownloadUrl as de } from "../../components/FileUploadField.js";
|
|
12
|
+
import s from "../../components/PageLayout.js";
|
|
12
13
|
import c, { formatEnumLabel as l } from "../../components/StatusBadge.js";
|
|
13
14
|
import "../../components/index.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
15
|
+
import fe, { buildDatasetLineage as pe } from "../../components/LineageGraph.js";
|
|
16
|
+
import { useMemo as me, useState as u } from "react";
|
|
17
|
+
import { Fragment as he, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
18
|
+
import { useParams as ge } from "react-router-dom";
|
|
19
|
+
import { ArrowRight as _e, Boxes as ve, Columns3 as p, Database as ye, Download as be, GitBranch as xe, History as Se, MessagesSquare as Ce, Pencil as we, Plus as Te, Radar as Ee, Share2 as De } from "lucide-react";
|
|
20
|
+
import { Badge as m, Button as h, Checkbox as Oe, Dialog as ke, DialogContent as Ae, DialogDescription as je, DialogFooter as Me, DialogHeader as Ne, DialogTitle as Pe, Input as g, Label as _, Select as Fe, SelectContent as Ie, SelectItem as Le, SelectTrigger as Re, SelectValue as ze, Table as Be, TableBody as Ve, TableCell as v, TableHead as y, TableHeader as He, TableRow as b, Textarea as Ue } from "@burdenoff/fe-libs/ui";
|
|
19
21
|
//#region src/cosmicintersection/pages/datasets/DatasetDetailPage.tsx
|
|
20
|
-
var
|
|
22
|
+
var We = [
|
|
21
23
|
"STRING",
|
|
22
24
|
"INTEGER",
|
|
23
25
|
"FLOAT",
|
|
@@ -29,7 +31,7 @@ var w = [
|
|
|
29
31
|
"IMAGE_REF",
|
|
30
32
|
"JSON"
|
|
31
33
|
];
|
|
32
|
-
function
|
|
34
|
+
function Ge(e) {
|
|
33
35
|
if (!e) return "—";
|
|
34
36
|
let t = Number(e);
|
|
35
37
|
if (!Number.isFinite(t) || t <= 0) return "—";
|
|
@@ -44,12 +46,12 @@ function T(e) {
|
|
|
44
46
|
for (; r >= 1024 && i < n.length - 1;) r /= 1024, i += 1;
|
|
45
47
|
return `${r >= 10 || i === 0 ? Math.round(r) : r.toFixed(1)} ${n[i]}`;
|
|
46
48
|
}
|
|
47
|
-
function
|
|
49
|
+
function x(e) {
|
|
48
50
|
if (!e) return "—";
|
|
49
51
|
let t = new Date(e);
|
|
50
52
|
return Number.isNaN(t.getTime()) ? "—" : t.toLocaleString();
|
|
51
53
|
}
|
|
52
|
-
function
|
|
54
|
+
function S({ label: e, value: t }) {
|
|
53
55
|
return /* @__PURE__ */ f("div", {
|
|
54
56
|
className: "rounded-card border border-border-default bg-bg-elevated p-4",
|
|
55
57
|
children: [/* @__PURE__ */ d("p", {
|
|
@@ -61,91 +63,125 @@ function D({ label: e, value: t }) {
|
|
|
61
63
|
})]
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
|
-
function
|
|
65
|
-
let { id:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
function C() {
|
|
67
|
+
let { id: C = "" } = ge(), { navigate: w } = e(), { data: T, loading: Ke, error: qe, refetch: E } = ee(C), D = T?.cosDataset ?? null, O = de(D?.file?.id).data?.getFileDownloadUrl ?? null, [Je, { loading: Ye }] = ne(), [Xe] = i(), [Ze, { loading: k }] = ae(), [Qe, { loading: A }] = n(), j = r({ datasetId: C }), M = ie({ pagination: {
|
|
68
|
+
limit: 100,
|
|
69
|
+
offset: 0
|
|
70
|
+
} }), N = te({ pagination: {
|
|
71
|
+
limit: 100,
|
|
72
|
+
offset: 0
|
|
73
|
+
} }), P = re({ pagination: {
|
|
74
|
+
limit: 100,
|
|
75
|
+
offset: 0
|
|
76
|
+
} }), F = T?.cosDataset ?? null, I = me(() => {
|
|
77
|
+
if (!F) return {
|
|
78
|
+
nodes: [],
|
|
79
|
+
edges: []
|
|
80
|
+
};
|
|
81
|
+
let e = /* @__PURE__ */ new Map();
|
|
82
|
+
F.source && e.set(F.source.id, F.source);
|
|
83
|
+
let t = /* @__PURE__ */ new Map();
|
|
84
|
+
F.collection && t.set(F.collection.id, F.collection);
|
|
85
|
+
let n = {
|
|
86
|
+
datasetsById: new Map([[F.id, F]]),
|
|
87
|
+
sourcesById: e,
|
|
88
|
+
collectionsById: t,
|
|
89
|
+
runs: (M.data?.cosListRuns?.items ?? []).filter((e) => e.datasetId === F.id),
|
|
90
|
+
notebooks: (N.data?.cosListNotebooks?.items ?? []).filter((e) => e.datasetIds.includes(F.id)),
|
|
91
|
+
analyses: j.data?.cosListAnalyses ?? [],
|
|
92
|
+
releases: (P.data?.cosListReleases?.items ?? []).filter((e) => e.datasetIds.includes(F.id))
|
|
93
|
+
};
|
|
94
|
+
return pe(F.id, n);
|
|
95
|
+
}, [
|
|
96
|
+
F,
|
|
97
|
+
M.data,
|
|
98
|
+
N.data,
|
|
99
|
+
j.data,
|
|
100
|
+
P.data
|
|
101
|
+
]), $e = M.loading || N.loading || j.loading || P.loading, [L, R] = u([]), [et, tt] = u(null), z = D ? `${D.id}:${D.updatedAt}` : null;
|
|
102
|
+
z && z !== et && (tt(z), R(D?.tags ?? []));
|
|
103
|
+
let nt = D != null && (L.length !== D.tags.length || L.some((e, t) => e !== D.tags[t])), [rt, it] = u(!1), [B, V] = u(""), [H, U] = u("STRING"), [W, G] = u(""), [K, q] = u(""), [J, Y] = u(""), [X, Z] = u(!0), at = () => {
|
|
104
|
+
V(""), U("STRING"), G(""), q(""), Y(""), Z(!0);
|
|
105
|
+
}, Q = (e) => {
|
|
106
|
+
it(e), e || at();
|
|
71
107
|
};
|
|
72
|
-
if (
|
|
108
|
+
if (Ke) return /* @__PURE__ */ d(s, {
|
|
73
109
|
title: "Dataset",
|
|
74
110
|
backPath: "datasets",
|
|
75
|
-
children: /* @__PURE__ */ d(
|
|
111
|
+
children: /* @__PURE__ */ d(o, { label: "Loading dataset…" })
|
|
76
112
|
});
|
|
77
|
-
if (
|
|
113
|
+
if (qe) return /* @__PURE__ */ d(s, {
|
|
78
114
|
title: "Dataset",
|
|
79
115
|
backPath: "datasets",
|
|
80
|
-
children: /* @__PURE__ */ d(
|
|
116
|
+
children: /* @__PURE__ */ d(se, {
|
|
81
117
|
message: "We could not load this dataset.",
|
|
82
|
-
onRetry: () => void
|
|
118
|
+
onRetry: () => void E()
|
|
83
119
|
})
|
|
84
120
|
});
|
|
85
|
-
if (!
|
|
121
|
+
if (!D) return /* @__PURE__ */ d(s, {
|
|
86
122
|
title: "Dataset",
|
|
87
123
|
backPath: "datasets",
|
|
88
124
|
children: /* @__PURE__ */ d(a, {
|
|
89
|
-
icon:
|
|
125
|
+
icon: ye,
|
|
90
126
|
title: "Dataset not found.",
|
|
91
127
|
description: "This dataset may have been removed or is outside your current scope.",
|
|
92
|
-
action: /* @__PURE__ */ d(
|
|
128
|
+
action: /* @__PURE__ */ d(h, {
|
|
93
129
|
type: "button",
|
|
94
|
-
onClick: () =>
|
|
130
|
+
onClick: () => w("datasets"),
|
|
95
131
|
children: "Back to datasets"
|
|
96
132
|
})
|
|
97
133
|
})
|
|
98
134
|
});
|
|
99
|
-
let
|
|
100
|
-
(await
|
|
101
|
-
},
|
|
102
|
-
let e = await
|
|
135
|
+
let $ = [...D.schemaFields ?? []].sort((e, t) => e.position - t.position), ot = D.status !== "AVAILABLE" && D.status !== "ARCHIVED", st = async () => {
|
|
136
|
+
(await Je({ variables: { id: D.id } })).data?.cosPublishDataset && (t.success("Dataset published", `“${D.name}” is now available.`), await E());
|
|
137
|
+
}, ct = async () => {
|
|
138
|
+
let e = await Xe({ variables: { id: D.id } });
|
|
103
139
|
if (e.error) throw Error(e.error.message);
|
|
104
140
|
if (!e.data?.cosArchiveDataset) throw t.error("Could not archive dataset", "The server did not confirm the change."), Error("Archive not confirmed");
|
|
105
|
-
t.success("Dataset archived"),
|
|
106
|
-
},
|
|
107
|
-
(await
|
|
108
|
-
id:
|
|
109
|
-
input: { tags:
|
|
110
|
-
} })).data?.cosUpdateDataset && (t.success("Tags updated"), await
|
|
111
|
-
},
|
|
112
|
-
if (!
|
|
141
|
+
t.success("Dataset archived"), w("datasets");
|
|
142
|
+
}, lt = async () => {
|
|
143
|
+
(await Ze({ variables: {
|
|
144
|
+
id: D.id,
|
|
145
|
+
input: { tags: L }
|
|
146
|
+
} })).data?.cosUpdateDataset && (t.success("Tags updated"), await E());
|
|
147
|
+
}, ut = async () => {
|
|
148
|
+
if (!B.trim()) {
|
|
113
149
|
t.error("Field name is required");
|
|
114
150
|
return;
|
|
115
151
|
}
|
|
116
|
-
(await
|
|
117
|
-
datasetId:
|
|
118
|
-
name:
|
|
119
|
-
fieldType:
|
|
120
|
-
unit:
|
|
121
|
-
description:
|
|
122
|
-
provenance:
|
|
123
|
-
nullable:
|
|
124
|
-
} } })).data?.cosAddSchemaField && (t.success("Schema field added"),
|
|
152
|
+
(await Qe({ variables: { input: {
|
|
153
|
+
datasetId: D.id,
|
|
154
|
+
name: B.trim(),
|
|
155
|
+
fieldType: H,
|
|
156
|
+
unit: W.trim() || void 0,
|
|
157
|
+
description: K.trim() || void 0,
|
|
158
|
+
provenance: J.trim() || void 0,
|
|
159
|
+
nullable: X
|
|
160
|
+
} } })).data?.cosAddSchemaField && (t.success("Schema field added"), Q(!1), await E());
|
|
125
161
|
};
|
|
126
|
-
return /* @__PURE__ */ f(
|
|
127
|
-
title:
|
|
128
|
-
description:
|
|
162
|
+
return /* @__PURE__ */ f(s, {
|
|
163
|
+
title: D.name,
|
|
164
|
+
description: D.description ?? void 0,
|
|
129
165
|
backPath: "datasets",
|
|
130
166
|
actions: /* @__PURE__ */ f("div", {
|
|
131
|
-
className: "flex items-center gap-2",
|
|
167
|
+
className: "flex flex-wrap items-center justify-end gap-2",
|
|
132
168
|
children: [
|
|
133
|
-
/* @__PURE__ */ f(
|
|
169
|
+
/* @__PURE__ */ f(h, {
|
|
134
170
|
type: "button",
|
|
135
171
|
variant: "outline",
|
|
136
|
-
onClick: () =>
|
|
137
|
-
children: [/* @__PURE__ */ d(
|
|
172
|
+
onClick: () => w(`datasets/${D.id}/edit`),
|
|
173
|
+
children: [/* @__PURE__ */ d(we, { className: "size-4" }), "Edit"]
|
|
138
174
|
}),
|
|
139
|
-
|
|
175
|
+
ot ? /* @__PURE__ */ d(h, {
|
|
140
176
|
type: "button",
|
|
141
|
-
onClick: () => void
|
|
142
|
-
disabled:
|
|
143
|
-
children:
|
|
177
|
+
onClick: () => void st(),
|
|
178
|
+
disabled: Ye,
|
|
179
|
+
children: Ye ? "Publishing…" : "Publish"
|
|
144
180
|
}) : null,
|
|
145
|
-
/* @__PURE__ */ d(
|
|
146
|
-
ariaLabel: `Actions for ${
|
|
147
|
-
entityName:
|
|
148
|
-
onDelete: () =>
|
|
181
|
+
/* @__PURE__ */ d(oe, {
|
|
182
|
+
ariaLabel: `Actions for ${D.name}`,
|
|
183
|
+
entityName: D.name,
|
|
184
|
+
onDelete: () => ct(),
|
|
149
185
|
deleteLabel: "Archive dataset"
|
|
150
186
|
})
|
|
151
187
|
]
|
|
@@ -156,93 +192,103 @@ function O() {
|
|
|
156
192
|
/* @__PURE__ */ f("div", {
|
|
157
193
|
className: "flex flex-wrap items-center gap-2",
|
|
158
194
|
children: [
|
|
159
|
-
/* @__PURE__ */ d(c, { status:
|
|
195
|
+
/* @__PURE__ */ d(c, { status: D.status }),
|
|
160
196
|
/* @__PURE__ */ d(c, {
|
|
161
|
-
status:
|
|
162
|
-
label: l(
|
|
197
|
+
status: D.accessLevel,
|
|
198
|
+
label: l(D.accessLevel)
|
|
163
199
|
}),
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
200
|
+
/* @__PURE__ */ f("span", {
|
|
201
|
+
className: "inline-flex items-center gap-1.5 rounded-full border border-border-default bg-bg-elevated px-2.5 py-0.5 text-xs font-medium",
|
|
202
|
+
title: "Current dataset version",
|
|
203
|
+
children: [
|
|
204
|
+
/* @__PURE__ */ d(xe, {
|
|
205
|
+
className: "size-3.5 text-text-tertiary",
|
|
206
|
+
"aria-hidden": "true"
|
|
207
|
+
}),
|
|
208
|
+
/* @__PURE__ */ f("span", {
|
|
209
|
+
className: "text-text-primary",
|
|
210
|
+
children: ["v", D.version]
|
|
211
|
+
}),
|
|
212
|
+
/* @__PURE__ */ d("span", {
|
|
213
|
+
className: "text-text-tertiary",
|
|
214
|
+
children: "· current"
|
|
215
|
+
})
|
|
216
|
+
]
|
|
171
217
|
})
|
|
172
218
|
]
|
|
173
219
|
}),
|
|
174
220
|
/* @__PURE__ */ f("div", {
|
|
175
221
|
className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4",
|
|
176
222
|
children: [
|
|
177
|
-
/* @__PURE__ */ d(
|
|
223
|
+
/* @__PURE__ */ d(S, {
|
|
178
224
|
label: "Source",
|
|
179
|
-
value:
|
|
225
|
+
value: D.source ? /* @__PURE__ */ f("button", {
|
|
180
226
|
type: "button",
|
|
181
|
-
onClick: () =>
|
|
227
|
+
onClick: () => w(`sources/${D.source?.id}`),
|
|
182
228
|
className: "inline-flex items-center gap-1.5 text-text-primary underline-offset-2 hover:underline",
|
|
183
|
-
children: [/* @__PURE__ */ d(
|
|
229
|
+
children: [/* @__PURE__ */ d(Ee, {
|
|
184
230
|
className: "size-4 text-text-secondary",
|
|
185
231
|
"aria-hidden": "true"
|
|
186
|
-
}),
|
|
232
|
+
}), D.source.name]
|
|
187
233
|
}) : /* @__PURE__ */ d("span", {
|
|
188
234
|
className: "text-text-secondary",
|
|
189
235
|
children: "Not linked"
|
|
190
236
|
})
|
|
191
237
|
}),
|
|
192
|
-
/* @__PURE__ */ d(
|
|
238
|
+
/* @__PURE__ */ d(S, {
|
|
193
239
|
label: "Collection",
|
|
194
|
-
value:
|
|
240
|
+
value: D.collection ? /* @__PURE__ */ f("button", {
|
|
195
241
|
type: "button",
|
|
196
|
-
onClick: () =>
|
|
242
|
+
onClick: () => w(`collections/${D.collection?.id}`),
|
|
197
243
|
className: "inline-flex items-center gap-1.5 text-text-primary underline-offset-2 hover:underline",
|
|
198
|
-
children: [/* @__PURE__ */ d(
|
|
244
|
+
children: [/* @__PURE__ */ d(ve, {
|
|
199
245
|
className: "size-4 text-text-secondary",
|
|
200
246
|
"aria-hidden": "true"
|
|
201
|
-
}),
|
|
247
|
+
}), D.collection.name]
|
|
202
248
|
}) : /* @__PURE__ */ d("span", {
|
|
203
249
|
className: "text-text-secondary",
|
|
204
250
|
children: "Not in a collection"
|
|
205
251
|
})
|
|
206
252
|
}),
|
|
207
|
-
/* @__PURE__ */ d(
|
|
253
|
+
/* @__PURE__ */ d(S, {
|
|
208
254
|
label: "Format",
|
|
209
|
-
value: /* @__PURE__ */ d("span", { children:
|
|
255
|
+
value: /* @__PURE__ */ d("span", { children: D.format || "Not specified" })
|
|
210
256
|
}),
|
|
211
|
-
/* @__PURE__ */ d(
|
|
257
|
+
/* @__PURE__ */ d(S, {
|
|
212
258
|
label: "Size",
|
|
213
259
|
value: /* @__PURE__ */ f("span", {
|
|
214
260
|
className: "tabular-nums",
|
|
215
|
-
children: [
|
|
261
|
+
children: [Ge(D.sizeBytes), Number(D.rowCount) > 0 ? /* @__PURE__ */ f("span", {
|
|
216
262
|
className: "text-text-secondary",
|
|
217
263
|
children: [
|
|
218
264
|
" ",
|
|
219
265
|
"· ",
|
|
220
|
-
Number(
|
|
266
|
+
Number(D.rowCount).toLocaleString(),
|
|
221
267
|
" rows"
|
|
222
268
|
]
|
|
223
269
|
}) : null]
|
|
224
270
|
})
|
|
225
271
|
}),
|
|
226
|
-
/* @__PURE__ */ d(
|
|
272
|
+
/* @__PURE__ */ d(S, {
|
|
227
273
|
label: "Ingested",
|
|
228
|
-
value: /* @__PURE__ */ d("span", { children:
|
|
274
|
+
value: /* @__PURE__ */ d("span", { children: x(D.ingestedAt) })
|
|
229
275
|
}),
|
|
230
|
-
/* @__PURE__ */ d(
|
|
276
|
+
/* @__PURE__ */ d(S, {
|
|
231
277
|
label: "Created",
|
|
232
|
-
value: /* @__PURE__ */ d("span", { children:
|
|
278
|
+
value: /* @__PURE__ */ d("span", { children: x(D.createdAt) })
|
|
233
279
|
}),
|
|
234
|
-
/* @__PURE__ */ d(
|
|
280
|
+
/* @__PURE__ */ d(S, {
|
|
235
281
|
label: "Updated",
|
|
236
|
-
value: /* @__PURE__ */ d("span", { children:
|
|
282
|
+
value: /* @__PURE__ */ d("span", { children: x(D.updatedAt) })
|
|
237
283
|
}),
|
|
238
|
-
/* @__PURE__ */ d(
|
|
284
|
+
/* @__PURE__ */ d(S, {
|
|
239
285
|
label: "Artifact",
|
|
240
|
-
value:
|
|
241
|
-
href:
|
|
286
|
+
value: D.file ? O ? /* @__PURE__ */ f("a", {
|
|
287
|
+
href: O,
|
|
242
288
|
target: "_blank",
|
|
243
289
|
rel: "noopener noreferrer",
|
|
244
290
|
className: "inline-flex items-center gap-1.5 text-text-primary underline-offset-2 hover:underline",
|
|
245
|
-
children: [/* @__PURE__ */ d(
|
|
291
|
+
children: [/* @__PURE__ */ d(be, {
|
|
246
292
|
className: "size-4",
|
|
247
293
|
"aria-hidden": "true"
|
|
248
294
|
}), "Download file"]
|
|
@@ -256,6 +302,37 @@ function O() {
|
|
|
256
302
|
})
|
|
257
303
|
]
|
|
258
304
|
}),
|
|
305
|
+
/* @__PURE__ */ f("section", {
|
|
306
|
+
className: "space-y-3",
|
|
307
|
+
children: [/* @__PURE__ */ f("div", {
|
|
308
|
+
className: "flex items-center justify-between gap-3",
|
|
309
|
+
children: [/* @__PURE__ */ f("div", {
|
|
310
|
+
className: "flex items-center gap-2",
|
|
311
|
+
children: [/* @__PURE__ */ d(De, {
|
|
312
|
+
className: "size-5 text-text-secondary",
|
|
313
|
+
"aria-hidden": "true"
|
|
314
|
+
}), /* @__PURE__ */ d("h2", {
|
|
315
|
+
className: "text-lg font-semibold text-text-primary",
|
|
316
|
+
children: "Lineage"
|
|
317
|
+
})]
|
|
318
|
+
}), /* @__PURE__ */ f("button", {
|
|
319
|
+
type: "button",
|
|
320
|
+
onClick: () => w(`lineage/${D.id}`),
|
|
321
|
+
className: "inline-flex items-center gap-1 rounded-button text-sm font-medium text-text-link underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-focus",
|
|
322
|
+
children: ["View full lineage", /* @__PURE__ */ d(_e, {
|
|
323
|
+
className: "size-4",
|
|
324
|
+
"aria-hidden": "true"
|
|
325
|
+
})]
|
|
326
|
+
})]
|
|
327
|
+
}), $e && I.nodes.length <= 1 ? /* @__PURE__ */ d(o, { label: "Building lineage…" }) : I.nodes.length <= 1 ? /* @__PURE__ */ d("div", {
|
|
328
|
+
className: "rounded-card border border-dashed border-border-default bg-bg-sunken p-6 text-sm text-text-secondary",
|
|
329
|
+
children: "No upstream or downstream provenance is linked to this dataset yet. Connect a source, run a pipeline, attach a notebook, or publish a release to build its lineage."
|
|
330
|
+
}) : /* @__PURE__ */ d(fe, {
|
|
331
|
+
model: I,
|
|
332
|
+
mode: "compact",
|
|
333
|
+
onNavigate: w
|
|
334
|
+
})]
|
|
335
|
+
}),
|
|
259
336
|
/* @__PURE__ */ f("section", {
|
|
260
337
|
className: "space-y-3",
|
|
261
338
|
children: [/* @__PURE__ */ f("div", {
|
|
@@ -269,92 +346,161 @@ function O() {
|
|
|
269
346
|
className: "text-lg font-semibold text-text-primary",
|
|
270
347
|
children: "Schema fields"
|
|
271
348
|
})]
|
|
272
|
-
}), /* @__PURE__ */ f(
|
|
349
|
+
}), /* @__PURE__ */ f(h, {
|
|
273
350
|
type: "button",
|
|
274
351
|
variant: "outline",
|
|
275
352
|
size: "sm",
|
|
276
|
-
onClick: () =>
|
|
277
|
-
children: [/* @__PURE__ */ d(
|
|
353
|
+
onClick: () => Q(!0),
|
|
354
|
+
children: [/* @__PURE__ */ d(Te, { className: "size-4" }), "Add field"]
|
|
278
355
|
})]
|
|
279
|
-
}),
|
|
356
|
+
}), $.length === 0 ? /* @__PURE__ */ d(a, {
|
|
280
357
|
icon: p,
|
|
281
358
|
title: "No schema fields yet.",
|
|
282
359
|
description: "Describe the columns in this dataset so consumers know what each field means."
|
|
283
|
-
}) : /* @__PURE__ */ d("div", {
|
|
284
|
-
className: "rounded-card border border-border-default bg-bg-elevated",
|
|
285
|
-
children: /* @__PURE__ */ f(
|
|
286
|
-
/* @__PURE__ */ d(
|
|
287
|
-
/* @__PURE__ */ d(
|
|
288
|
-
/* @__PURE__ */ d(
|
|
289
|
-
/* @__PURE__ */ d(
|
|
290
|
-
/* @__PURE__ */ d(
|
|
291
|
-
] }) }), /* @__PURE__ */ d(
|
|
292
|
-
/* @__PURE__ */ f(
|
|
360
|
+
}) : /* @__PURE__ */ f(he, { children: [/* @__PURE__ */ d("div", {
|
|
361
|
+
className: "hidden rounded-card border border-border-default bg-bg-elevated md:block",
|
|
362
|
+
children: /* @__PURE__ */ f(Be, { children: [/* @__PURE__ */ d(He, { children: /* @__PURE__ */ f(b, { children: [
|
|
363
|
+
/* @__PURE__ */ d(y, { children: "Name" }),
|
|
364
|
+
/* @__PURE__ */ d(y, { children: "Type" }),
|
|
365
|
+
/* @__PURE__ */ d(y, { children: "Unit" }),
|
|
366
|
+
/* @__PURE__ */ d(y, { children: "Nullable" }),
|
|
367
|
+
/* @__PURE__ */ d(y, { children: "Provenance" })
|
|
368
|
+
] }) }), /* @__PURE__ */ d(Ve, { children: $.map((e) => /* @__PURE__ */ f(b, { children: [
|
|
369
|
+
/* @__PURE__ */ f(v, { children: [/* @__PURE__ */ d("span", {
|
|
293
370
|
className: "font-medium text-text-primary",
|
|
294
371
|
children: e.name
|
|
295
372
|
}), e.description ? /* @__PURE__ */ d("p", {
|
|
296
373
|
className: "mt-0.5 line-clamp-1 max-w-xs text-xs text-text-secondary",
|
|
297
374
|
children: e.description
|
|
298
375
|
}) : null] }),
|
|
299
|
-
/* @__PURE__ */ d(
|
|
376
|
+
/* @__PURE__ */ d(v, { children: /* @__PURE__ */ d(m, {
|
|
300
377
|
variant: "secondary",
|
|
301
378
|
children: l(e.fieldType)
|
|
302
379
|
}) }),
|
|
303
|
-
/* @__PURE__ */ d(
|
|
380
|
+
/* @__PURE__ */ d(v, {
|
|
304
381
|
className: "text-sm text-text-secondary",
|
|
305
382
|
children: e.unit || "—"
|
|
306
383
|
}),
|
|
307
|
-
/* @__PURE__ */ d(
|
|
384
|
+
/* @__PURE__ */ d(v, {
|
|
308
385
|
className: "text-sm text-text-secondary",
|
|
309
386
|
children: e.nullable ? "Yes" : "No"
|
|
310
387
|
}),
|
|
311
|
-
/* @__PURE__ */ d(
|
|
388
|
+
/* @__PURE__ */ d(v, {
|
|
312
389
|
className: "text-sm text-text-secondary",
|
|
313
390
|
children: e.provenance || "—"
|
|
314
391
|
})
|
|
315
392
|
] }, e.id)) })] })
|
|
316
|
-
})
|
|
393
|
+
}), /* @__PURE__ */ d("div", {
|
|
394
|
+
className: "space-y-2 md:hidden",
|
|
395
|
+
children: $.map((e) => /* @__PURE__ */ f("div", {
|
|
396
|
+
className: "rounded-card border border-border-default bg-bg-elevated p-3",
|
|
397
|
+
children: [
|
|
398
|
+
/* @__PURE__ */ f("div", {
|
|
399
|
+
className: "flex items-start justify-between gap-2",
|
|
400
|
+
children: [/* @__PURE__ */ d("span", {
|
|
401
|
+
className: "font-medium text-text-primary",
|
|
402
|
+
children: e.name
|
|
403
|
+
}), /* @__PURE__ */ d(m, {
|
|
404
|
+
variant: "secondary",
|
|
405
|
+
children: l(e.fieldType)
|
|
406
|
+
})]
|
|
407
|
+
}),
|
|
408
|
+
e.description ? /* @__PURE__ */ d("p", {
|
|
409
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
410
|
+
children: e.description
|
|
411
|
+
}) : null,
|
|
412
|
+
/* @__PURE__ */ f("dl", {
|
|
413
|
+
className: "mt-2 grid grid-cols-2 gap-2 text-xs",
|
|
414
|
+
children: [
|
|
415
|
+
/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("dt", {
|
|
416
|
+
className: "text-text-tertiary",
|
|
417
|
+
children: "Unit"
|
|
418
|
+
}), /* @__PURE__ */ d("dd", {
|
|
419
|
+
className: "text-text-secondary",
|
|
420
|
+
children: e.unit || "—"
|
|
421
|
+
})] }),
|
|
422
|
+
/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("dt", {
|
|
423
|
+
className: "text-text-tertiary",
|
|
424
|
+
children: "Nullable"
|
|
425
|
+
}), /* @__PURE__ */ d("dd", {
|
|
426
|
+
className: "text-text-secondary",
|
|
427
|
+
children: e.nullable ? "Yes" : "No"
|
|
428
|
+
})] }),
|
|
429
|
+
/* @__PURE__ */ f("div", {
|
|
430
|
+
className: "col-span-2",
|
|
431
|
+
children: [/* @__PURE__ */ d("dt", {
|
|
432
|
+
className: "text-text-tertiary",
|
|
433
|
+
children: "Provenance"
|
|
434
|
+
}), /* @__PURE__ */ d("dd", {
|
|
435
|
+
className: "text-text-secondary",
|
|
436
|
+
children: e.provenance || "—"
|
|
437
|
+
})]
|
|
438
|
+
})
|
|
439
|
+
]
|
|
440
|
+
})
|
|
441
|
+
]
|
|
442
|
+
}, e.id))
|
|
443
|
+
})] })]
|
|
317
444
|
}),
|
|
318
445
|
/* @__PURE__ */ f("section", {
|
|
319
446
|
className: "space-y-3 rounded-card border border-border-default bg-bg-elevated p-5",
|
|
320
|
-
children: [/* @__PURE__ */ d(
|
|
321
|
-
value:
|
|
322
|
-
onChange:
|
|
447
|
+
children: [/* @__PURE__ */ d(ue, {
|
|
448
|
+
value: L,
|
|
449
|
+
onChange: R,
|
|
323
450
|
label: "Dataset tags"
|
|
324
|
-
}),
|
|
451
|
+
}), nt ? /* @__PURE__ */ d("div", {
|
|
325
452
|
className: "flex justify-end",
|
|
326
|
-
children: /* @__PURE__ */ d(
|
|
453
|
+
children: /* @__PURE__ */ d(h, {
|
|
327
454
|
type: "button",
|
|
328
455
|
size: "sm",
|
|
329
|
-
onClick: () => void
|
|
330
|
-
disabled:
|
|
331
|
-
children:
|
|
456
|
+
onClick: () => void lt(),
|
|
457
|
+
disabled: k,
|
|
458
|
+
children: k ? "Saving…" : "Save tags"
|
|
332
459
|
})
|
|
333
460
|
}) : null]
|
|
334
461
|
}),
|
|
335
|
-
/* @__PURE__ */ f("
|
|
336
|
-
className: "
|
|
337
|
-
children: [
|
|
338
|
-
|
|
339
|
-
|
|
462
|
+
/* @__PURE__ */ f("section", {
|
|
463
|
+
className: "space-y-3",
|
|
464
|
+
children: [/* @__PURE__ */ f("div", {
|
|
465
|
+
className: "flex items-center gap-2",
|
|
466
|
+
children: [/* @__PURE__ */ d(Se, {
|
|
467
|
+
className: "size-5 text-text-secondary",
|
|
340
468
|
"aria-hidden": "true"
|
|
341
|
-
}),
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
]
|
|
469
|
+
}), /* @__PURE__ */ d("h2", {
|
|
470
|
+
className: "text-lg font-semibold text-text-primary",
|
|
471
|
+
children: "Activity"
|
|
472
|
+
})]
|
|
473
|
+
}), /* @__PURE__ */ d(ce, {
|
|
474
|
+
resourceId: D.id,
|
|
475
|
+
resourceType: "cosmicintersection-dataset"
|
|
476
|
+
})]
|
|
477
|
+
}),
|
|
478
|
+
/* @__PURE__ */ f("section", {
|
|
479
|
+
className: "space-y-3",
|
|
480
|
+
children: [/* @__PURE__ */ f("div", {
|
|
481
|
+
className: "flex items-center gap-2",
|
|
482
|
+
children: [/* @__PURE__ */ d(Ce, {
|
|
483
|
+
className: "size-5 text-text-secondary",
|
|
484
|
+
"aria-hidden": "true"
|
|
485
|
+
}), /* @__PURE__ */ d("h2", {
|
|
486
|
+
className: "text-lg font-semibold text-text-primary",
|
|
487
|
+
children: "Discussion"
|
|
488
|
+
})]
|
|
489
|
+
}), /* @__PURE__ */ d(le, {
|
|
490
|
+
entityType: "cosmicintersection-dataset",
|
|
491
|
+
entityId: D.id,
|
|
492
|
+
title: D.name,
|
|
493
|
+
widgetKey: "dataset-discussion"
|
|
494
|
+
})]
|
|
349
495
|
})
|
|
350
496
|
]
|
|
351
|
-
}), /* @__PURE__ */ d(
|
|
352
|
-
open:
|
|
353
|
-
onOpenChange:
|
|
354
|
-
children: /* @__PURE__ */ f(
|
|
355
|
-
/* @__PURE__ */ f(
|
|
497
|
+
}), /* @__PURE__ */ d(ke, {
|
|
498
|
+
open: rt,
|
|
499
|
+
onOpenChange: Q,
|
|
500
|
+
children: /* @__PURE__ */ f(Ae, { children: [
|
|
501
|
+
/* @__PURE__ */ f(Ne, { children: [/* @__PURE__ */ d(Pe, { children: "Add schema field" }), /* @__PURE__ */ f(je, { children: [
|
|
356
502
|
"Document a column in “",
|
|
357
|
-
|
|
503
|
+
D.name,
|
|
358
504
|
"” — its type, unit and provenance."
|
|
359
505
|
] })] }),
|
|
360
506
|
/* @__PURE__ */ f("div", {
|
|
@@ -362,13 +508,13 @@ function O() {
|
|
|
362
508
|
children: [
|
|
363
509
|
/* @__PURE__ */ f("div", {
|
|
364
510
|
className: "space-y-1.5",
|
|
365
|
-
children: [/* @__PURE__ */ d(
|
|
511
|
+
children: [/* @__PURE__ */ d(_, {
|
|
366
512
|
htmlFor: "cos-field-name",
|
|
367
513
|
children: "Name"
|
|
368
|
-
}), /* @__PURE__ */ d(
|
|
514
|
+
}), /* @__PURE__ */ d(g, {
|
|
369
515
|
id: "cos-field-name",
|
|
370
|
-
value:
|
|
371
|
-
onChange: (e) =>
|
|
516
|
+
value: B,
|
|
517
|
+
onChange: (e) => V(e.target.value),
|
|
372
518
|
placeholder: "e.g. right_ascension",
|
|
373
519
|
required: !0
|
|
374
520
|
})]
|
|
@@ -377,84 +523,84 @@ function O() {
|
|
|
377
523
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2",
|
|
378
524
|
children: [/* @__PURE__ */ f("div", {
|
|
379
525
|
className: "space-y-1.5",
|
|
380
|
-
children: [/* @__PURE__ */ d(
|
|
526
|
+
children: [/* @__PURE__ */ d(_, {
|
|
381
527
|
htmlFor: "cos-field-type",
|
|
382
528
|
children: "Type"
|
|
383
|
-
}), /* @__PURE__ */ f(
|
|
384
|
-
value:
|
|
385
|
-
onValueChange: (e) =>
|
|
386
|
-
children: [/* @__PURE__ */ d(
|
|
529
|
+
}), /* @__PURE__ */ f(Fe, {
|
|
530
|
+
value: H,
|
|
531
|
+
onValueChange: (e) => U(e),
|
|
532
|
+
children: [/* @__PURE__ */ d(Re, {
|
|
387
533
|
id: "cos-field-type",
|
|
388
534
|
"aria-label": "Field type",
|
|
389
|
-
children: /* @__PURE__ */ d(
|
|
390
|
-
}), /* @__PURE__ */ d(
|
|
535
|
+
children: /* @__PURE__ */ d(ze, {})
|
|
536
|
+
}), /* @__PURE__ */ d(Ie, { children: We.map((e) => /* @__PURE__ */ d(Le, {
|
|
391
537
|
value: e,
|
|
392
538
|
children: l(e)
|
|
393
539
|
}, e)) })]
|
|
394
540
|
})]
|
|
395
541
|
}), /* @__PURE__ */ f("div", {
|
|
396
542
|
className: "space-y-1.5",
|
|
397
|
-
children: [/* @__PURE__ */ d(
|
|
543
|
+
children: [/* @__PURE__ */ d(_, {
|
|
398
544
|
htmlFor: "cos-field-unit",
|
|
399
545
|
children: "Unit"
|
|
400
|
-
}), /* @__PURE__ */ d(
|
|
546
|
+
}), /* @__PURE__ */ d(g, {
|
|
401
547
|
id: "cos-field-unit",
|
|
402
|
-
value:
|
|
403
|
-
onChange: (e) =>
|
|
548
|
+
value: W,
|
|
549
|
+
onChange: (e) => G(e.target.value),
|
|
404
550
|
placeholder: "e.g. deg, mag, Jy"
|
|
405
551
|
})]
|
|
406
552
|
})]
|
|
407
553
|
}),
|
|
408
554
|
/* @__PURE__ */ f("div", {
|
|
409
555
|
className: "space-y-1.5",
|
|
410
|
-
children: [/* @__PURE__ */ d(
|
|
556
|
+
children: [/* @__PURE__ */ d(_, {
|
|
411
557
|
htmlFor: "cos-field-desc",
|
|
412
558
|
children: "Description"
|
|
413
|
-
}), /* @__PURE__ */ d(
|
|
559
|
+
}), /* @__PURE__ */ d(Ue, {
|
|
414
560
|
id: "cos-field-desc",
|
|
415
|
-
value:
|
|
416
|
-
onChange: (e) =>
|
|
561
|
+
value: K,
|
|
562
|
+
onChange: (e) => q(e.target.value),
|
|
417
563
|
rows: 2
|
|
418
564
|
})]
|
|
419
565
|
}),
|
|
420
566
|
/* @__PURE__ */ f("div", {
|
|
421
567
|
className: "space-y-1.5",
|
|
422
|
-
children: [/* @__PURE__ */ d(
|
|
568
|
+
children: [/* @__PURE__ */ d(_, {
|
|
423
569
|
htmlFor: "cos-field-prov",
|
|
424
570
|
children: "Provenance"
|
|
425
|
-
}), /* @__PURE__ */ d(
|
|
571
|
+
}), /* @__PURE__ */ d(g, {
|
|
426
572
|
id: "cos-field-prov",
|
|
427
|
-
value:
|
|
428
|
-
onChange: (e) =>
|
|
573
|
+
value: J,
|
|
574
|
+
onChange: (e) => Y(e.target.value),
|
|
429
575
|
placeholder: "Where this field comes from"
|
|
430
576
|
})]
|
|
431
577
|
}),
|
|
432
578
|
/* @__PURE__ */ f("label", {
|
|
433
579
|
className: "flex items-center gap-2 text-sm text-text-primary",
|
|
434
|
-
children: [/* @__PURE__ */ d(
|
|
435
|
-
checked:
|
|
436
|
-
onCheckedChange: (e) =>
|
|
580
|
+
children: [/* @__PURE__ */ d(Oe, {
|
|
581
|
+
checked: X,
|
|
582
|
+
onCheckedChange: (e) => Z(e === !0)
|
|
437
583
|
}), "Nullable (may contain empty values)"]
|
|
438
584
|
})
|
|
439
585
|
]
|
|
440
586
|
}),
|
|
441
|
-
/* @__PURE__ */ f(
|
|
587
|
+
/* @__PURE__ */ f(Me, { children: [/* @__PURE__ */ d(h, {
|
|
442
588
|
type: "button",
|
|
443
589
|
variant: "outline",
|
|
444
|
-
onClick: () =>
|
|
445
|
-
disabled:
|
|
590
|
+
onClick: () => Q(!1),
|
|
591
|
+
disabled: A,
|
|
446
592
|
children: "Cancel"
|
|
447
|
-
}), /* @__PURE__ */ d(
|
|
593
|
+
}), /* @__PURE__ */ d(h, {
|
|
448
594
|
type: "button",
|
|
449
|
-
onClick: () => void
|
|
450
|
-
disabled:
|
|
451
|
-
children:
|
|
595
|
+
onClick: () => void ut(),
|
|
596
|
+
disabled: A,
|
|
597
|
+
children: A ? "Adding…" : "Add field"
|
|
452
598
|
})] })
|
|
453
599
|
] })
|
|
454
600
|
})]
|
|
455
601
|
});
|
|
456
602
|
}
|
|
457
603
|
//#endregion
|
|
458
|
-
export {
|
|
604
|
+
export { C as default };
|
|
459
605
|
|
|
460
606
|
//# sourceMappingURL=DatasetDetailPage.js.map
|