30 Commits

Author SHA1 Message Date
Sybren A. Stüvel
aa9837b5f0 First incarnation of the first-time wizard
This adds a `-wizard` CLI option to the Manager, which opens a webbrowser
and shows the First-Time Wizard to aid in configuration of Flamenco.

This is work in progress. The wizard is just one page, and doesn't save
anything yet to the configuration.
2022-07-14 11:17:03 +02:00
Sybren A. Stüvel
375a6666c2 Web: move Worker status change requests to drop-down
This basically copies the drop-down approach from Flamenco Manager 2.
2022-06-03 13:01:47 +02:00
Sybren A. Stüvel
3818d4df83 Web: add simple worker action bar
UI/UX needs improvements, but there now are some buttons to manage Workers.
They request forced status changes, so nothing lazy yet. Still have to
consider how to include that in the UI. Could probably follow the
Flamenco 2 Manager design.
2022-06-02 18:42:34 +02:00
Sybren A. Stüvel
2e11c1c240 Manager: Implement SocketIO worker updates 2022-05-31 15:19:12 +02:00
Sybren A. Stüvel
ce07a46455 Fix error fetching non-existing log tail
A task can exist in the database but not have any log stored on disk yet.
This is now returned as `204 No Content` instead of an internal server
error.

The web interface is also adjusted to cope with this.
2022-05-30 19:23:10 +02:00
Sybren A. Stüvel
88346d8244 Web: first implementation of Workers overview
Show workers with their status, and allow clicking on a worker to activate
it and show its details (which currently is limited to just its ID). Does
include Vue Router handling of the active worker ID and CSS classes for
worker statuses.

This basically copies the `JobsTable` component to `workers/WorkersTable`.
The intention is that all the jobs-specific components will move into a
`jobs` subdirectory at some point.
2022-05-30 18:52:02 +02:00
Sybren A. Stüvel
3e5f681321 Task log broadcasting via SocketIO
Implement task log broadcasting via SocketIO. The logs aren't shown in the
web interface yet, but do arrive there in a Pinia store. That store is
capped at 1000 lines to keep memory requirements low-ish.
2022-05-20 13:03:41 +02:00
Sybren A. Stüvel
adc8738e5b Web: log SocketIO connection status in notifications history 2022-05-20 11:22:59 +02:00
Sybren A. Stüvel
7b664475ca Rename job status requeued to requeueing 2022-05-19 17:25:53 +02:00
Sybren A. Stüvel
0242f2d217 Web: show job updates in the notifications popover 2022-05-19 15:18:19 +02:00
Sybren A. Stüvel
4602ef2523 Web: show task status changes in the notifications
This of course only shows notifications about tasks of the active job,
as otherwise things would get messy.
2022-05-19 14:28:37 +02:00
Sybren A. Stüvel
034d75a9b8 Web: prevent error when notification popover is empty 2022-05-19 14:06:50 +02:00
Sybren A. Stüvel
40bed3db5e Web: add notification history pop-over
Add a notification pop-over, which can be opened by clicking the footer
bar.
2022-05-19 12:57:00 +02:00
Sybren A. Stüvel
07576f3225 Web: ensure switching active jobs doesn't retain previous job data
Pinia's `$patch()` function will merge the given state with the current
state, instead of doing a replacement. As a result, going from an active
job with metadata fields `A` and `B`, to a job with metadata fields `B`
and `C` would actually have fields `A`, `B`, and `C` in the Pinia store.

This is resolved by replacing the `$patch(object)` with `$patch(function)`
and having that function replace the entire job.
2022-05-12 10:55:42 +02:00
Sybren A. Stüvel
0c8fce7b42 Web: hide notifications after a few seconds
The notifications (like "job requeued" after pushing the "requeue" button)
are now hidden after 5 seconds.
2022-05-11 15:11:17 +02:00
Sybren A. Stüvel
cc10d3e4bb Web: also let Vue Router track the active task
This basically does the same as 63ac7287321a101c3f601eeb151be73154ef7720
but then for tasks.
2022-05-11 15:02:02 +02:00
Sybren A. Stüvel
6b9d7dba6d Web: extra safety check in Jobs Pinia store function 2022-05-11 15:00:25 +02:00
Sybren A. Stüvel
e9e1cd8be8 Web: show SocketIO connection status 2022-05-11 13:09:01 +02:00
Sybren A. Stüvel
63ac728732 Web: remove concept of "selected jobs" and replace with "active job"
The selection mechanism of Tabulator was getting in the way of having nice
navigation, as it would deselect (i.e. nav to "/") before selecting the
next job (i.e. nav to "/jobs/{job-id}").

The active job is now determined by the URL and thus handled by Vue Router.
Clicking on a job simply navigates to its URL, which causes the reactive
system to load & display it.

It is still intended to get job selection for "mass actions", but that's
only possible after normal navigation is working well.
2022-05-11 12:13:25 +02:00
Sybren A. Stüvel
ba34652cd1 Implement task status changes from web interface
This also reworks some of the logic due to the recently-removed
`cancel-requested` task status.
2022-05-05 16:44:09 +02:00
Sybren A. Stüvel
4ebf4f31f9 Web: add task table 2022-04-29 13:11:19 +02:00
Sybren A. Stüvel
54587348e3 Web: remove unused import 2022-04-25 17:06:25 +02:00
Sybren A. Stüvel
4129ed11bb Web: use wrapper for the OpenAPI client to track requests
A wrapper for the generated `ApiClient` class tracks the number of running
queries. This makes it much simpler to show the "API calls pending" UI
element, regardless of which part of the webapp performs the queries.
2022-04-22 11:46:33 +02:00
Sybren A. Stüvel
eeb8305de0 Web: add button to requeue jobs 2022-04-21 19:06:18 +02:00
Sybren A. Stüvel
698db0bf7c Web: Cleanup, abstract some code away into separate functions
No functional changes, just preparation for adding similar job actions.
2022-04-21 19:06:18 +02:00
Sybren A. Stüvel
2e2184df62 Web: allow cancelling a job also after it failed
For task scheduling this doesn't matter, but for human workflow it can be
useful to differentiate between "failed" (and should be retried) and
"cancelled" (no longer relevant).
2022-04-21 19:06:18 +02:00
Sybren A. Stüvel
d84efb8c9a Web: implement 'Cancel Job' button
The button calls the 'setJobStatus' API endpoint to set the job status to
`cancel-requested`.
2022-04-21 19:06:18 +02:00
Sybren A. Stüvel
2bc6b2bdba Web: start of notification bar
Use Pinia store for notifications. WIP, only the last one is shown in
the footer.
2022-04-19 16:27:05 +02:00
Sybren A. Stüvel
7b38aa4faf Web: add Job Actions Bar for action buttons
Add a bar for "job actions", i.e. buttons that do something with the
selected job(s).

Just has one button, and it doesn't do much either, but at least the
framework for these things is here.
2022-04-19 16:27:05 +02:00
Sybren A. Stüvel
27fb9d05db Web: use Pinia for storage of selected & current Job
Using the concept of 'selected' and 'active' similar to Blender.

Not all components have been altered to use the Pinia store yet.
2022-04-19 16:27:05 +02:00