|
406 | 406 | }); |
407 | 407 | </script> |
408 | 408 |
|
409 | | -<Modal id="runWorkflowModal" centered={true} bind:this={modal} fullscreen={true} scrollable={true}> |
| 409 | +<Modal id="runWorkflowModal" centered={true} bind:this={modal} size="xl" scrollable={true}> |
410 | 410 | <svelte:fragment slot="header"> |
411 | 411 | <h5 class="modal-title"> |
412 | 412 | {#if mode === 'run'} |
|
481 | 481 | </span> |
482 | 482 | </div> |
483 | 483 | {/if} |
484 | | - <div class="mb-3 has-validation"> |
485 | | - <label for="firstTaskIndex" class="form-label"> |
486 | | - {#if mode === 'continue'} |
487 | | - First task (Required) |
488 | | - {:else} |
489 | | - First task (Optional) |
490 | | - {/if} |
491 | | - </label> |
492 | | - <select |
493 | | - name="firstTaskIndex" |
494 | | - id="firstTaskIndex" |
495 | | - class="form-select" |
496 | | - disabled={checkingConfiguration} |
497 | | - bind:value={firstTaskIndex} |
498 | | - on:change={firstTaskIndexChanged} |
499 | | - class:is-invalid={mode === 'continue' && firstTaskIndex === undefined} |
500 | | - > |
501 | | - <option value={undefined}>Select first task</option> |
502 | | - {#each workflow.task_list as wft} |
503 | | - <option value={wft.order}>{wft.task.name}</option> |
504 | | - {/each} |
505 | | - </select> |
506 | | - <span class="invalid-feedback"> The first task is required </span> |
507 | | - </div> |
508 | | - <div class="mb-3"> |
509 | | - <label for="lastTaskIndex" class="form-label">Last task (Optional)</label> |
510 | | - <select |
511 | | - name="lastTaskIndex" |
512 | | - id="lastTaskIndex" |
513 | | - class="form-select" |
514 | | - disabled={checkingConfiguration} |
515 | | - bind:value={lastTaskIndex} |
516 | | - > |
517 | | - <option value={undefined}>Select last task</option> |
518 | | - {#each workflow.task_list as wft} |
519 | | - {#if firstTaskIndex === undefined || wft.order >= firstTaskIndex} |
| 484 | + <div class="row mb-3"> |
| 485 | + <div class="col has-validation"> |
| 486 | + <label for="firstTaskIndex" class="form-label"> Start workflow at </label> |
| 487 | + <select |
| 488 | + name="firstTaskIndex" |
| 489 | + id="firstTaskIndex" |
| 490 | + class="form-select" |
| 491 | + disabled={checkingConfiguration} |
| 492 | + bind:value={firstTaskIndex} |
| 493 | + on:change={firstTaskIndexChanged} |
| 494 | + class:is-invalid={mode === 'continue' && firstTaskIndex === undefined} |
| 495 | + > |
| 496 | + <option value={undefined}>Select first task</option> |
| 497 | + {#each workflow.task_list as wft} |
520 | 498 | <option value={wft.order}>{wft.task.name}</option> |
521 | | - {/if} |
522 | | - {/each} |
523 | | - </select> |
524 | | - </div> |
525 | | - <div class="accordion" id="accordion-run-workflow"> |
526 | | - <div class="accordion-item"> |
527 | | - <h2 class="accordion-header"> |
528 | | - <button |
529 | | - class="accordion-button collapsed" |
530 | | - type="button" |
531 | | - data-bs-toggle="collapse" |
532 | | - data-bs-target="#collapse-workflow-advanced-options" |
533 | | - aria-expanded="false" |
534 | | - aria-controls="collapse-workflow-advanced-options" |
535 | | - > |
536 | | - Advanced options |
537 | | - </button> |
538 | | - </h2> |
539 | | - <div |
540 | | - id="collapse-workflow-advanced-options" |
541 | | - class="accordion-collapse collapse" |
542 | | - data-bs-parent="#accordion-run-workflow" |
| 499 | + {/each} |
| 500 | + </select> |
| 501 | + <span class="invalid-feedback"> The first task is required </span> |
| 502 | + </div> |
| 503 | + <div class="col"> |
| 504 | + <label for="lastTaskIndex" class="form-label">(Optional) Stop workflow early</label> |
| 505 | + <select |
| 506 | + name="lastTaskIndex" |
| 507 | + id="lastTaskIndex" |
| 508 | + class="form-select" |
| 509 | + disabled={checkingConfiguration} |
| 510 | + bind:value={lastTaskIndex} |
543 | 511 | > |
544 | | - <div class="accordion-body"> |
545 | | - <div class="mb-3"> |
546 | | - <label for="workerInit" class="form-label">Worker initialization (Optional)</label> |
547 | | - <textarea |
548 | | - name="workerInit" |
549 | | - id="workerInit" |
550 | | - class="form-control font-monospace" |
551 | | - rows="5" |
552 | | - disabled={checkingConfiguration} |
553 | | - bind:value={workerInitControl} |
554 | | - /> |
555 | | - </div> |
556 | | - {#if slurmAccounts.length > 0} |
557 | | - <div class="mb-3"> |
558 | | - <div class="form-check"> |
559 | | - <input |
560 | | - class="form-check-input" |
561 | | - type="checkbox" |
562 | | - id="setSlurmAccount" |
563 | | - bind:checked={setSlurmAccount} |
564 | | - /> |
565 | | - <label class="form-check-label" for="setSlurmAccount"> |
566 | | - Set SLURM account |
567 | | - </label> |
568 | | - </div> |
569 | | - </div> |
570 | | - {#if setSlurmAccount} |
571 | | - <div class="mb-3"> |
572 | | - <label for="slurmAccount" class="form-label">SLURM account</label> |
573 | | - <select |
574 | | - name="slurmAccount" |
575 | | - id="slurmAccount" |
576 | | - class="form-select" |
577 | | - disabled={checkingConfiguration} |
578 | | - bind:value={slurmAccount} |
579 | | - > |
580 | | - {#each slurmAccounts as account} |
581 | | - <option>{account}</option> |
582 | | - {/each} |
583 | | - </select> |
584 | | - </div> |
585 | | - {/if} |
| 512 | + <option value={undefined}>Select last task</option> |
| 513 | + {#each workflow.task_list as wft} |
| 514 | + {#if firstTaskIndex === undefined || wft.order >= firstTaskIndex} |
| 515 | + <option value={wft.order}>{wft.task.name}</option> |
586 | 516 | {/if} |
587 | | - </div> |
588 | | - </div> |
| 517 | + {/each} |
| 518 | + </select> |
589 | 519 | </div> |
| 520 | + </div> |
| 521 | + <div class="accordion mb-2" id="accordion-run-workflow"> |
590 | 522 | {#if imagePage && selectedDataset && showImageList} |
591 | 523 | <div class="accordion-item"> |
592 | 524 | <h2 class="accordion-header"> |
593 | 525 | <button |
594 | | - class="accordion-button collapsed" |
| 526 | + class="accordion-button" |
595 | 527 | type="button" |
596 | 528 | data-bs-toggle="collapse" |
597 | 529 | data-bs-target="#collapse-workflow-image-list" |
|
603 | 535 | </h2> |
604 | 536 | <div |
605 | 537 | id="collapse-workflow-image-list" |
606 | | - class="accordion-collapse collapse" |
| 538 | + class="accordion-collapse collapse show" |
607 | 539 | data-bs-parent="#accordion-run-workflow" |
608 | 540 | > |
609 | 541 | <div class="accordion-body"> |
|
642 | 574 | <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" /> |
643 | 575 | {/if} |
644 | 576 | </div> |
| 577 | + <div class="clearfix mb-1"> |
| 578 | + <button |
| 579 | + class="btn btn-light float-end" |
| 580 | + type="button" |
| 581 | + data-bs-toggle="collapse" |
| 582 | + data-bs-target="#collapseAdvancedOptions" |
| 583 | + aria-expanded="false" |
| 584 | + aria-controls="collapseAdvancedOptions" |
| 585 | + > |
| 586 | + Advanced options |
| 587 | + </button> |
| 588 | + </div> |
| 589 | + <div class="collapse clearfix" id="collapseAdvancedOptions"> |
| 590 | + <div class="card card-body"> |
| 591 | + <div class="mb-3"> |
| 592 | + <label for="workerInit" class="form-label">Worker initialization (Optional)</label> |
| 593 | + <textarea |
| 594 | + name="workerInit" |
| 595 | + id="workerInit" |
| 596 | + class="form-control font-monospace" |
| 597 | + rows="5" |
| 598 | + disabled={checkingConfiguration} |
| 599 | + bind:value={workerInitControl} |
| 600 | + /> |
| 601 | + </div> |
| 602 | + {#if slurmAccounts.length > 0} |
| 603 | + <div class="mb-3"> |
| 604 | + <div class="form-check"> |
| 605 | + <input |
| 606 | + class="form-check-input" |
| 607 | + type="checkbox" |
| 608 | + id="setSlurmAccount" |
| 609 | + bind:checked={setSlurmAccount} |
| 610 | + /> |
| 611 | + <label class="form-check-label" for="setSlurmAccount"> Set SLURM account </label> |
| 612 | + </div> |
| 613 | + </div> |
| 614 | + {#if setSlurmAccount} |
| 615 | + <div class="mb-3"> |
| 616 | + <label for="slurmAccount" class="form-label">SLURM account</label> |
| 617 | + <select |
| 618 | + name="slurmAccount" |
| 619 | + id="slurmAccount" |
| 620 | + class="form-select" |
| 621 | + disabled={checkingConfiguration} |
| 622 | + bind:value={slurmAccount} |
| 623 | + > |
| 624 | + {#each slurmAccounts as account} |
| 625 | + <option>{account}</option> |
| 626 | + {/each} |
| 627 | + </select> |
| 628 | + </div> |
| 629 | + {/if} |
| 630 | + {/if} |
| 631 | + </div> |
| 632 | + </div> |
645 | 633 | {#if checkingConfiguration} |
646 | 634 | <hr /> |
647 | 635 | <h6 class="mt-3">Applied filters</h6> |
|
0 commit comments