|
13 | 13 | onMount(async () => { |
14 | 14 | dataset = await $page.data.dataset; |
15 | 15 | }); |
| 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 | + } |
16 | 41 | </script> |
17 | 42 |
|
18 | 43 | <div class="d-flex justify-content-between align-items-center"> |
|
34 | 59 | {#if dataset} |
35 | 60 | <button class="btn btn-light" data-bs-target="#datasetMetaModal" data-bs-toggle="modal"> |
36 | 61 | <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 |
38 | 67 | </button> |
39 | 68 | {/if} |
40 | 69 | </div> |
|
135 | 164 | </ul> |
136 | 165 | </svelte:fragment> |
137 | 166 | </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> |
138 | 190 | {/if} |
139 | 191 |
|
140 | 192 | <style type="text/css"> |
141 | 193 | pre { |
| 194 | + white-space: pre-wrap; |
142 | 195 | display: inline; |
143 | 196 | } |
144 | 197 | </style> |
0 commit comments