Skip to content

Commit 9077943

Browse files
committed
Displayed input/output task type in type tab on workflow page
1 parent 5998146 commit 9077943

File tree

6 files changed

+49
-7
lines changed

6 files changed

+49
-7
lines changed

src/lib/components/v2/workflow/InputFiltersTab.svelte

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import InputFiltersTypesForm from '../projects/datasets/InputFiltersTypesForm.svelte';
44
import { displayStandardErrorAlert, getAlertErrorFromResponse } from '$lib/common/errors';
55
import Modal from '$lib/components/common/Modal.svelte';
6+
import BooleanIcon from 'fractal-components/common/BooleanIcon.svelte';
67
78
/** @type {import("fractal-components/types/api").WorkflowV2} */
89
export let workflow;
@@ -193,3 +194,40 @@
193194
</svelte:fragment>
194195
</Modal>
195196
</div>
197+
198+
<ul class="list-group p-3">
199+
<li class="list-group-item list-group-item-light fw-bold">Input Types</li>
200+
<li class="list-group-item">
201+
{#if Object.keys(workflowTask.task.input_types).length === 0}
202+
-
203+
{:else}
204+
<table class="table table-borderless mb-0">
205+
<tbody>
206+
{#each Object.keys(workflowTask.task.input_types) as key}
207+
<tr class="d-flex">
208+
<td><code>{key}</code></td>
209+
<td class="flex-grow"><BooleanIcon value={workflowTask.task.input_types[key]} /></td>
210+
</tr>
211+
{/each}
212+
</tbody>
213+
</table>
214+
{/if}
215+
</li>
216+
<li class="list-group-item list-group-item-light fw-bold">Output Types</li>
217+
<li class="list-group-item">
218+
{#if Object.keys(workflowTask.task.output_types).length === 0}
219+
-
220+
{:else}
221+
<table class="table table-borderless mb-0">
222+
<tbody>
223+
{#each Object.keys(workflowTask.task.output_types) as key}
224+
<tr class="d-flex">
225+
<td><code>{key}</code></td>
226+
<td class="flex-grow"><BooleanIcon value={workflowTask.task.output_types[key]} /></td>
227+
</tr>
228+
{/each}
229+
</tbody>
230+
</table>
231+
{/if}
232+
</li>
233+
</ul>

src/routes/v2/projects/[projectId]/workflows/[workflowId]/+page.svelte

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,9 @@
475475
console.error('Error retrieving workflow jobs', await response.json());
476476
return;
477477
}
478-
const jobs = /** @type {import('fractal-components/types/api').ApplyWorkflowV2[]} */ (await response.json());
478+
const jobs = /** @type {import('fractal-components/types/api').ApplyWorkflowV2[]} */ (
479+
await response.json()
480+
);
479481
const failedJobs = jobs
480482
.filter((j) => j.dataset_id === selectedDatasetId && j.status === 'failed')
481483
.sort((j1, j2) => (j1.start_timestamp < j2.start_timestamp ? 1 : -1));
@@ -792,7 +794,8 @@
792794
class="nav-link {workflowTabContextId === 3 ? 'active' : ''}"
793795
on:click={() => setWorkflowTabContextId(3)}
794796
aria-current={workflowTabContextId === 3}
795-
>Input Filters
797+
>
798+
Types
796799
</button>
797800
</li>
798801
<li class="nav-item">

tests/v2/run_workflow_image_list_visibility.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ test('Image list visibility in run workflow modal', async ({ page, workflow }) =
4545
await expect(page.getByText(/Total results: 2/)).toBeVisible();
4646
await selectSlimSelect(page, page.getByLabel('Selector for attribute a1'), 'v1');
4747
await page.getByRole('button', { name: 'Apply' }).click();
48+
await expect(page.getByRole('button', { name: 'Apply' })).toBeDisabled();
4849
await selectSlimSelect(page, page.getByLabel('Selector for attribute a2'), 'v2');
4950
await page.getByRole('button', { name: 'Apply' }).click();
5051
await expect(page.getByText(/Total results: 0/)).toBeVisible();

tests/v2/run_workflow_images.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ test('View images in run workflow modal', async ({ page, workflow }) => {
9696

9797
await test.step('Add input filter', async () => {
9898
await workflow.selectTask('generic_task');
99-
await page.getByText('Input Filters').click();
99+
await page.getByText('Types').click();
100100
await page.getByRole('button', { name: 'Add type filter' }).click();
101101
await page.getByPlaceholder('Key').last().fill('t1');
102102
await page.getByRole('switch').click();

tests/v2/task_version_update.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ test('Task version update [v2]', async ({ page, workflow }) => {
148148
});
149149

150150
await test.step('Add Input Filters', async () => {
151-
await page.getByText('Input Filters').click();
151+
await page.getByText('Types').click();
152152
await page.getByRole('button', { name: 'Add type filter', exact: true }).click();
153153
await page.getByPlaceholder('Key').fill('key2');
154154
await page.getByRole('button', { name: 'Save' }).click();
@@ -174,7 +174,7 @@ test('Task version update [v2]', async ({ page, workflow }) => {
174174
});
175175

176176
await test.step('Verify that input filters have been preserved', async () => {
177-
await page.getByText('Input Filters').click();
177+
await page.getByText('Types').click();
178178
await expect(page.getByPlaceholder('Key')).toHaveValue('key2');
179179
});
180180

tests/v2/workflow_task_input_filters.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ test('Workflow task input filters [v2]', async ({ page, workflow }) => {
7373
});
7474

7575
await test.step('Open Input Filters tab', async () => {
76-
await page.getByText('Input Filters').click();
76+
await page.getByText('Types').click();
7777
});
7878

7979
await test.step('Add empty attribute filter and trigger validation', async () => {
@@ -91,7 +91,7 @@ test('Workflow task input filters [v2]', async ({ page, workflow }) => {
9191
await test.step('Reload the page and check saved filters', async () => {
9292
await page.reload();
9393
await workflow.selectTask(taskName1);
94-
await page.getByText('Input Filters').click();
94+
await page.getByText('Types').click();
9595
await expect(page.getByPlaceholder('Key')).toHaveValue('key2');
9696
});
9797

0 commit comments

Comments
 (0)