141 Commits

Author SHA1 Message Date
Sybren A. Stüvel
744fabea78 OAPI: rename pkg/api/flamenco-manager.yaml to flamenco-openapi.yaml
Rename `pkg/api/flamenco-manager.yaml` to `flamenco-openapi.yaml`, to
distinguish the OpenAPI definition file from the Flamenco Manager
configuration file of the same name (but in a different directory).

No functional changes.
2022-05-19 15:22:37 +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
cc62cab1d6 Update code to handle the JobUpdate to SocketIOJobUpdate rename
No functional changes.
2022-05-19 15:18:06 +02:00
Sybren A. Stüvel
6f6e73e068 Web: show placeholder when there are no notifications yet 2022-05-19 15:01:10 +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
50fc1a1bbc Web: hide table header in notification popover 2022-05-19 13:00:42 +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
ddc3acd652 Web: add status filtering to task table 2022-05-17 15:37:29 +02:00
Sybren A. Stüvel
56eedbaddb Web: remove unused code 2022-05-17 15:37:14 +02:00
Sybren A. Stüvel
dc7729cfed Web: cleanup, remove unused parameter 2022-05-17 15:09:47 +02:00
Sybren A. Stüvel
01a81bb3dd Web: move Task tabulator options into the mounted() function
This basically mirrors what 8f27ea97 did for the jobs table.

No functional changes.
2022-05-17 15:09:25 +02:00
Sybren A. Stüvel
84ba3ec8b2 Web: cleanup, explain why commented-out code is kept 2022-05-17 15:05:25 +02:00
Sybren A. Stüvel
908953c8d4 Web: cleanup, remove some unused code 2022-05-17 15:05:17 +02:00
Sybren A. Stüvel
42c81e9900 Web: remove some debug logging, and convert one log into warning 2022-05-17 14:52:27 +02:00
Sybren A. Stüvel
163611ff19 Web: add filter bar for job status 2022-05-16 18:15:51 +02:00
Sybren A. Stüvel
9fd4d55fdb Web: move status indicator code into its own function
Status indicators are used in Tabulator cells, and it's unknown whether
we can use Vue components there. Moving the code to a central place makes
it a bit easier to reuse the function in various places.
2022-05-16 17:31:30 +02:00
Sybren A. Stüvel
32737ef17b Web: cleanup, add some trailing commas and remove unused code
No functional changes.
2022-05-16 15:36:39 +02:00
Sybren A. Stüvel
8f27ea9714 Web: move Tabulator options into mounted() function
Move the Tabulator options from the `data()` function to the `mounted()`
function. This allows upcoming changes to refer to the Vue component.
2022-05-16 15:36:20 +02:00
Sybren A. Stüvel
eb0bfe820b Web: allow filtering jobs by their status
This is a very simple approach, where clicking on a job's status dot
toggles filtering by that status. There is no visual indication that this
filtering is active.

The Tabulator support for filtering from the headers is a bit buggy, see
https://github.com/olifolkerd/tabulator/issues/3745 -- I'm getting this
error even without `multiselect: true`.
2022-05-16 15:02:38 +02:00
Pablo Vazquez
ae13ff6410 Web: Remove custom styling for tasks-list-container
Style comes from Tabulator, no need to set properties again.
2022-05-12 15:53:57 +02:00
Pablo Vazquez
d0d40c8e46 Web: Set a fixed height for Tabulator tables.
It's ugly but couldn't find a way to make it responsive and not break
the Virtual DOM.
2022-05-12 15:53:57 +02:00
Sybren A. Stüvel
4bdaeb73a6 Web: set fixed height for the task table
It looks rather ugly, and this should be addressed, but without the
`height` option of Tabulator it won't be using the Virtual DOM and result
in very slow browser performance.
2022-05-12 13:53:17 +02:00
Sybren A. Stüvel
47361cdc69 Web: show task activity in details view 2022-05-11 18:11:02 +02:00
Sybren A. Stüvel
1f76c3bc64 Web: remove job/task ID column from table 2022-05-11 15:03:40 +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
03b880fdb3 Web: also subscribe to current job when webapp starts 2022-05-11 14:59:14 +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
af39414a06 Web: introduce VueRouter and split up into more components
Most of the code moved from `App.vue` to `views/JobsView.vue`.
Notification bar has its own component, and there are placeholder
"views" for Workers and Settings pages.

There is still some clunky handling of updates via SocketIO, as those
are a mix of job-specific and global (like SocketIO reconnection
events). The advantage of the current approach is that SocketIO
connections are closed when you leave the Jobs page, and reopened when
you enter the Workers page. My gut feeling says this is nice because it
ensures that all SocketIO connection-specific things are cleaned up when
you navigate.
2022-05-06 16:50:20 +02:00
Sybren A. Stüvel
cfab4f5b76 Web: use title case in status indicator 2022-05-06 12:14:28 +02:00
Sybren A. Stüvel
1cf3cb3344 Web: remove check on tabulator.initialized
This check is no longer necessary now we wait with fetching the tasks/jobs
until the `tableBuilt` event is received.
2022-05-06 11:59:52 +02:00
Sybren A. Stüvel
7bda798009 Web: remove debug console.log() calls 2022-05-06 11:59:11 +02:00
Francesco Siddi
a70438ec4f Load table data on 'tableBuilt' event
Before this change, the tables would not get consistently populated
with the jobs or task data. Thanks Sybren for the fix!
2022-05-05 17:04:08 +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
Pablo Vazquez
79397a4ed3 Web: Style spinner
Forked from supahfunk's https://codepen.io/supah/pen/BjYLdW
2022-05-04 19:30:14 +02:00
Pablo Vazquez
8488d792bf Web: Add stauts indicator to Tasks table 2022-05-04 19:28:39 +02:00
Pablo Vazquez
56089bba99 Web: Remove ID cell from tables 2022-05-04 19:28:07 +02:00
Pablo Vazquez
fb774e2e45 Web: Replace status with indicator 2022-05-04 18:51:20 +02:00
Pablo Vazquez
14ea7fc0a5 Web: Set titles for dt elements in tables
Since the cell has a fixed width and can be cropped.
2022-05-04 15:32:29 +02:00
Pablo Vazquez
5dae53c1c5 Web: Adjust size of tables
* Do not set height of table manually.
* Set the width of ID cells as characters, instead of percentage.
2022-05-04 15:30:40 +02:00
Pablo Vazquez
c10b7f97c9 Web: Positive wording text for Job/Task Details
Also, do not mention left/right on labels since the position of sections
can vary (for example on smaller screens).
2022-05-04 15:25:29 +02:00
Pablo Vazquez
0c8def66aa Web: Use definition lists for Task and Job details 2022-05-04 12:56:30 +02:00
Pablo Vazquez
87b9bcee19 Cleanup: Remove unused classes and style 2022-05-03 19:26:43 +02:00
Pablo Vazquez
26adf0d700 Cleanup: Rename action-bar classes and buttons 2022-05-03 19:26:29 +02:00
Sybren A. Stüvel
0c79701bea Web: Don't remember selected task
If the selected task doesn't exist (because you selected another job),
Tabulator would select all tasks. That's not what I want.
2022-05-03 16:28:39 +02:00
Sybren A. Stüvel
73b122be84 Show task details for selected task
The task details are updated at real-time via SocketIO updates.
2022-05-03 13:05:30 +02:00
Sybren A. Stüvel
50c8cd39f2 Task update notifications via SocketIO
Manager now sends out task updates via SocketIO, and the web interface
handles those.

Note that there is a `BroadcastTaskUpdate()` function, but not a
`BroadcastNewTask`. The 'new job' broadcast is sent after the job's
tasks have been created, and thus there is no need for a separate
broadcast per task.
2022-05-03 11:26:24 +02:00
Sybren A. Stüvel
9b330280b7 Add SocketIO subscription system for job-related updates
SocketIO clients can now send a message with `/subscription` event type
in order to subscribe to or unsubscribe from job-related updates.

These job-related updates themselves aren't sent yet, so this is a change
that's impossible to really test. The socketIO code for joining/leaving
rooms is called, though.
2022-05-02 18:36:14 +02:00
Sybren A. Stüvel
c07d2e3249 Web: tweak webapp layout 2022-04-29 13:11:44 +02:00
Sybren A. Stüvel
4ebf4f31f9 Web: add task table 2022-04-29 13:11:19 +02:00