Hide inactive boards, keep source and target stack apart, make the interval configurable
Build package / php-lint (8.2) (push) Successful in 46s
Build package / php-lint (8.3) (push) Successful in 40s
Build package / php-lint (8.4) (push) Successful in 35s
Build package / xml-lint (push) Successful in 13s
Build package / unit-tests (push) Successful in 46s
Build package / package (push) Successful in 1m3s
Build package / php-lint (8.2) (push) Successful in 46s
Build package / php-lint (8.3) (push) Successful in 40s
Build package / php-lint (8.4) (push) Successful in 35s
Build package / xml-lint (push) Successful in 13s
Build package / unit-tests (push) Successful in 46s
Build package / package (push) Successful in 1m3s
- Boards: BoardService::getUserBoards() defaults to $includeArchived = true,
and that flag also gates the `deleted_at = 0` condition, so archived and
trashed boards showed up in the dropdown. Request the filtered query
instead, with a fallback to the no-arg call if the signature ever changes.
Stacks need nothing: StackMapper::findAll() always filters deleted_at.
- Each stack dropdown now hides whatever the other one holds, so source and
target can no longer be set to the same stack. The save-time check stays
as the backstop for rows stored before this rule.
- RunWorkflowsJob reads its interval from config.php
('workflow_deck_automation.interval', seconds, default 300, clamped to a
60s minimum). TimedJob re-reads the interval on every cron pass, so a
changed value takes effect without any occ command.
This commit is contained in:
@@ -74,7 +74,7 @@
|
||||
<NcSelect
|
||||
v-model="form.sourceStackId"
|
||||
input-label="Quell-Stapel"
|
||||
:options="stackOptions"
|
||||
:options="sourceStackOptions"
|
||||
:reduce="option => option.value"
|
||||
:disabled="!form.boardId"
|
||||
placeholder="Quell-Stapel wählen" />
|
||||
@@ -82,7 +82,7 @@
|
||||
<NcSelect
|
||||
v-model="form.targetStackId"
|
||||
input-label="Ziel-Stapel"
|
||||
:options="stackOptions"
|
||||
:options="targetStackOptions"
|
||||
:reduce="option => option.value"
|
||||
:disabled="!form.boardId"
|
||||
placeholder="Ziel-Stapel wählen" />
|
||||
@@ -167,6 +167,12 @@ const participantOptions = ref([])
|
||||
|
||||
const boardOptions = computed(() => boards.value.map((board) => ({ value: board.id, label: board.title })))
|
||||
|
||||
// Source and target must differ, so each dropdown hides what the other one
|
||||
// already holds — the error message on save stays as the backstop for
|
||||
// workflows stored before this rule existed.
|
||||
const sourceStackOptions = computed(() => stackOptions.value.filter((option) => option.value !== form.targetStackId))
|
||||
const targetStackOptions = computed(() => stackOptions.value.filter((option) => option.value !== form.sourceStackId))
|
||||
|
||||
const form = reactive(emptyForm())
|
||||
|
||||
function emptyForm() {
|
||||
|
||||
Reference in New Issue
Block a user