Skip to content

Commit f71f28f

Browse files
authored
Merge pull request #316 from fractal-analytics-platform/309-add-show-history-to-dataset-page
Add show-history button in dataset page (ref #309)
2 parents a366c6a + ad3bf42 commit f71f28f

File tree

3 files changed

+64
-3
lines changed

3 files changed

+64
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
# Unreleased
44

5+
* Added dataset history modal (\#316).
56
* Fixed bug with save/discard changes in workflow task (\#315).
67
* Fixed first-run redirects issue (\#315).
78

src/lib/types.d.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,19 @@ export type Resource = {
3232
dataset_id: number
3333
}
3434

35+
export type DatasetHistoryItem = {
36+
workflowtask: WorkflowTask
37+
status: string
38+
parallelization: object
39+
}
40+
3541
export type Dataset = {
3642
name: string
3743
type?: string
3844
meta: object
45+
history: Array<DatasetHistoryItem>
3946
read_only: boolean
4047
id: number
41-
resource_list: Resource[]
48+
resource_list: Array<Resource>
4249
project_id: number
43-
}
50+
}

src/routes/projects/[projectId]/datasets/[datasetId]/+page.svelte

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,31 @@
1313
onMount(async () => {
1414
dataset = await $page.data.dataset;
1515
});
16+
17+
/**
18+
* Returns the dataset history formatted in JSON hiding some values.
19+
*
20+
* @param {import('$lib/types').DatasetHistoryItem} historyItem
21+
* @returns {string}
22+
*/
23+
function formatDatasetHistory(historyItem) {
24+
return JSON.stringify(
25+
{
26+
...historyItem,
27+
workflowtask: {
28+
...historyItem.workflowtask,
29+
task: {
30+
...historyItem.workflowtask.task,
31+
args_schema: historyItem.workflowtask.task.args_schema ? '[HIDDEN]' : undefined,
32+
docs_info: historyItem.workflowtask.task.docs_info ? '[HIDDEN]' : undefined,
33+
docs_link: historyItem.workflowtask.task.docs_link ? '[HIDDEN]' : undefined
34+
}
35+
}
36+
},
37+
null,
38+
2
39+
);
40+
}
1641
</script>
1742

1843
<div class="d-flex justify-content-between align-items-center">
@@ -34,7 +59,11 @@
3459
{#if dataset}
3560
<button class="btn btn-light" data-bs-target="#datasetMetaModal" data-bs-toggle="modal">
3661
<i class="bi-arrow-up-right-square" />
37-
Show meta properties
62+
Show dataset metadata
63+
</button>
64+
<button class="btn btn-light" data-bs-target="#datasetHistoryModal" data-bs-toggle="modal">
65+
<i class="bi-arrow-up-right-square" />
66+
Show dataset history
3867
</button>
3968
{/if}
4069
</div>
@@ -135,10 +164,34 @@
135164
</ul>
136165
</svelte:fragment>
137166
</Modal>
167+
<Modal id="datasetHistoryModal" size="xl" centered={true} scrollable={true}>
168+
<svelte:fragment slot="header">
169+
<h5 class="modal-title">Dataset history</h5>
170+
</svelte:fragment>
171+
<svelte:fragment slot="body">
172+
<ul class="list-group">
173+
{#if dataset.history && Object.keys(dataset.history).length > 0}
174+
{#each Object.entries(dataset.history) as [key, value]}
175+
<li class="list-group-item text-bg-light">
176+
<span>
177+
Task "{value.workflowtask.task.name}", status "{value.status}"
178+
</span>
179+
</li>
180+
<li class="list-group-item text-break">
181+
<code><pre>{formatDatasetHistory(value)}</pre></code>
182+
</li>
183+
{/each}
184+
{:else}
185+
<p>No history</p>
186+
{/if}
187+
</ul>
188+
</svelte:fragment>
189+
</Modal>
138190
{/if}
139191

140192
<style type="text/css">
141193
pre {
194+
white-space: pre-wrap;
142195
display: inline;
143196
}
144197
</style>

0 commit comments

Comments
 (0)