241 Commits

Author SHA1 Message Date
Sybren A. Stüvel
ef726da17b SocketIO broadcasting for worker tags CUD operations
Broadcast create/update/delete operations on worker tags via SocketIO.

Ref: #104204
2023-08-23 13:54:02 +00:00
Michael Cook
86cf30e44e Webapp: Clarification of Worker Maintenance section (#104229)
- fix spelling of 'adviced' for 'advised'
- fixed readability of sentence in error state.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104229
2023-08-23 15:23:50 +02:00
Sybren A. Stüvel
089bae5bf9 Webapp: import notifications on job details component
Errors getting worker tags were logged in the notifications area, but the
notifications Piña store weren't actually imported, causing a JS error.
2023-08-17 16:29:08 +02:00
Sybren A. Stüvel
3e72391cbf Restartable workers
When the worker is started with `-restart-exit-code 47` or has
`restart_exit_code=47` in `flamenco-worker.yaml`, it's marked as
'restartable'. This will enable two worker actions 'Restart
(immediately)' and 'Restart (after task is finished)' in the Manager web
interface. When a worker is asked to restart, it will exit with exit
code `47`. Of course any positive exit code can be used here.
2023-08-14 16:00:09 +02:00
Sybren A. Stüvel
100e8e404e Rename add-on to flamenco-addon.zip
Rename the add-on from `flamenco3-addon.zip` to `flamenco-addon.zip`.

It still contains the same files as before, and in Blender the name of
the add-on has not changed.
2023-08-01 13:05:02 +02:00
Eveline Anderson
830c3fe794 Rename worker 'clusters' to 'tags'
As it was decided that the name "tags" would be better for the clarity
of the feature, all files and code named "cluster" or "worker cluster"
have been removed and replaced with "tag" and "worker tag". This is only
a name change, no other features were touched.

This addresses part of #104204.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104223

As a note to anyone who already ran a pre-release version of Flamenco
and configured some worker clusters, with the help of an SQLite client
you can migrate the clusters to tags. First build Flamenco Manager and
start it, to create the new database schema. Then run these SQL queries
via an sqlite commandline client:

```sql
insert into worker_tags
    (id, created_at, updated_at, uuid, name, description)
  select id, created_at, updated_at, uuid, name, description
  from worker_clusters;

insert into worker_tag_membership (worker_tag_id, worker_id)
  select worker_cluster_id, worker_id from worker_cluster_membership;
```
2023-07-10 11:11:03 +02:00
Sybren A. Stüvel
a36c4cd4e4 Web: clarify the cluster assignment result in the worker details view
Now the hint is no longer generically explaining things, but is dynamic
and specific for the current assignment of the worker's clusters.
2023-04-04 13:21:59 +02:00
Sybren A. Stüvel
d75962c817 Web: hide 'clusters' list when there are none
Due to the proxying behaviour of VueJS, `workers.clusters` is always
considered `true`, even when empty. Explicitly test for the length.
2023-04-04 12:32:32 +02:00
Sybren A. Stüvel
3306c7fc8d Web: add support for worker clusters
The support is still fairly minimal. Clusters cannot be managed via the
webapp yet, so the API has to be used directly for that. Workers can be
assigned to clusters via the webapp though.
2023-04-04 12:19:14 +02:00
Sybren A. Stüvel
72a78cd929 Webapp: remove some console.log calls
No functional changes, except for a slightly less noisy JS debug console.
2023-02-21 11:10:20 +01:00
Sybren A. Stüvel
1add6bfc8a Webapp: avoid browser JS errors about forbidden 'User-Agent' header
Brave (and maybe other browseres) refuse to set the 'User-Agent' header
in XMLHTTPRequests, and are vocal about this in the debug log. Since the
OpenAPI code generator always outputs a custom 'User-Agent' header, I've
added some JS code to strip that off when constructing an API client.
2023-02-21 11:08:48 +01:00
Sybren A. Stüvel
12f4d9b5ce Tabulator: avoid setting height if already at the correct height
Setting the height of a Tabulator can trigger all kinds of things,
including some buggy behaviour where all the jobs would disappear from
screen. Just don't do it unless it's necessary.
2023-02-21 10:38:07 +01:00
Sybren A. Stüvel
ef3cab9745 Webapp: handle job deletions properly
- Add a little confirmation overlay before deleting a job. This overlay
  also shows information about whether the Shaman checkout directory
  will be deleted or not.
- Send job updates to the web frontend when jobs are marked for
  deletion, and when they are actually deleted.
- Respond to those updates, and handle some corner cases where job info
  is missing (because it just got deleted).

This closes T99401.
2023-02-03 16:59:15 +01:00
Sybren A. Stüvel
3a16456d5b Web app: add job deletion button to job action bar
WARNING: There is no confirmation popup yet, it'll immediately schedule
the job for deletion.
2023-01-08 13:53:55 +01:00
Sybren A. Stüvel
a97a4e6e67 Manager: show delete-requested jobs in the web interface
Show jobs that have been marked for deletion with a red strike-through
line in the jobs table, and show the deletion-request timestamp in the
job details.
2023-01-08 13:52:27 +01:00
Sybren A. Stüvel
ce23810705 Cleanup: move JS code close to HTML
Move the JavaScript code in `PopoverEditableJobPriority.vue` up so it sits
next to the HTML.
2022-10-18 10:50:26 +02:00
Sybren A. Stüvel
1e28ba4fee Cleanup: reformat PopoverEditableJobPriority.vue
Remove commented-out elements & apply auto-formatter.
2022-10-18 10:49:49 +02:00
Pablo Vazquez
080a63df6a Job Details: Style UI for setting job priority 2022-10-17 13:08:14 +02:00
Francesco Siddi
4389b60197 Webapp: UI to update Job priority 2022-10-16 18:51:44 +02:00
Sybren A. Stüvel
0a7b7d9cf6 Webapp: remove assumption from SocketIO job updates
Remove the assumption that a SocketIO job update without "previous state"
set is always an indication that it's about a new job. Soon job priority
will be changeable, and then this assumption will no longer hold.
2022-09-30 16:26:26 +02:00
Sybren A. Stüvel
50ec5f4f36 Manager: make the worker IP address a click-to-copy field
Now you can click on the worker's IP to copy it to the clipboard.
2022-09-27 12:27:18 +02:00
Sybren A. Stüvel
9d828e5d08 Webapp: make Job and Task ID fields click-to-copy
Click on a job or task ID to copy it to the clipboard.
2022-08-25 13:59:31 +02:00
Sybren A. Stüvel
e0395e73bf Web: fix worker status filter not updating
Fix the status filter dots not updating when a worker changes status.
2022-08-12 11:29:12 -07:00
Sybren A. Stüvel
6de5c9e7fa Web: add worker removal
Add "remove worker" button to the worker details panel. It will
show a little warning when the worker is still running, and also has an
explanation of what removing a worker actually means.
2022-08-12 10:30:27 -07:00
Sybren A. Stüvel
b4194e32e9 Web: respond to worker updates that indicate a worker was removed
The code isn't the prettiest, but it works ;-)
2022-08-11 17:45:12 -07:00
Sybren A. Stüvel
6122f14cbc Web: Copy worker UUID on click 2022-08-11 17:38:56 -07:00
Sybren A. Stüvel
2d6475a7e1 Web: make the "get the add-on" button actually do something
The button is now a link that leads to the add-on ZIP.
2022-08-02 11:04:11 +02:00
Sybren A. Stüvel
f3693b88f4 Web: show feedback when clicking the backend URL to copy it
The URL now briefly flashes in the primary color, to show that the click
was acted upon.
2022-08-02 11:03:39 +02:00
Sybren A. Stüvel
72b994db7d Web: show a "get the addon" call to action if there are no jobs
If there are no jobs in the database yet, show a "get the addon" call to
action. This includes the current API URL, which can be copied by clicking
on it.

There is no feedback yet that the copy took place, though.
2022-08-02 10:43:08 +02:00
Sybren A. Stüvel
06d0c3133f Cleanup: reformatting of Vue components
Reformat Vue files with the "Vue.volar" formatter.
2022-08-02 09:34:18 +02:00
Sybren A. Stüvel
38501bac7c Cleanup: web, remove lang="js" from <script> tags
Everything is JavaScript.
2022-08-02 09:32:54 +02:00
Sybren A. Stüvel
375c5ac3ac Web: fix scrollbar showing in task list column
The blocklist component also needs to wait two ticks before emitting the
"reshuffled" event (which triggers a resize of the tasks table).
2022-08-01 22:49:31 +02:00
Sybren A. Stüvel
e3e0968d88 Web: show task type in the task details
The task type was intended to be always shown, but a mistake in the field
name + a misunderstanding caused them to be always hidden.
2022-08-01 22:30:51 +02:00
Sybren A. Stüvel
b3370cdf0d Web: prevent error in task details when task is unassigned to worker 2022-08-01 22:29:43 +02:00
Sybren A. Stüvel
404dbc5be8 Web: allow removal of blocklist entries 2022-08-01 18:55:52 +02:00
Sybren A. Stüvel
023d392560 Web: resize the Tasks table after loading the job blocklist
Emit a 'reshuffled' event to let the job view resize the tasks table.
2022-08-01 18:44:50 +02:00
Sybren A. Stüvel
9d65f6f4de Web: use small font for job blocklist 2022-08-01 18:25:17 +02:00
Sybren A. Stüvel
b6d8882b8e Web: show job blocklist
The blocklist is now shown in the job details, in its own tab. The list
is only fetched when the tab is visible, and doesn't get dynamically
updated yet.
2022-08-01 18:24:01 +02:00
Sybren A. Stüvel
37477fc6bd Web: remove console.log calls
Remove a whole lot of `console.log()` calls. They were useful during
development, but not really suitable for production environments. Because
they also include (potentially large) objects, they can even slow down
the webapp itself.
2022-08-01 17:11:45 +02:00
Francesco Siddi
35591b174b Web: Sleep schedule UX updates 2022-07-26 16:51:51 +02:00
Pablo Vazquez
85eb17e434 Web: Layout adjustments to sleep schedule 2022-07-26 16:51:51 +02:00
Pablo Vazquez
f0a592a9ba Web: Style and layout to Sleep Schedule management
* Use full-width form
  Fitting an input inside a <dl> makes it jump around
* Add button to toggle schedule on/off
* Add button to cancel editing the schedule
* Use time type inputs for Start/End Time fields
* Add help text to "Days of Week" to explain it's only the first 2 letters
2022-07-26 16:51:51 +02:00
Francesco Siddi
3b719dca77 Web: UI for Worker schedule editing 2022-07-26 16:51:51 +02:00
Francesco Siddi
d6f419a683 Web: Rename link components
No functional change, just name the components with their type first,
so that all 'link' related components are more discoverable and next
to each other.
2022-07-26 16:33:05 +02:00
Francesco Siddi
36e0a6052f Web: Let WorkerTaskLink support undefined tasks
Fixes an error when the component is passed an undefined or missing
workerTask property.
2022-07-26 11:22:32 +02:00
Sybren A. Stüvel
736ca103c3 Manager: show current/last task in worker details
The Task details component already linked to the Worker it was assigned
to last, and now the Worker links back to the task.

There's only one task shown in the Worker details. If the Worker is
actively working on a task, that one's shown. Otherwise it's the
last-updated task that was assigned to the worker.
2022-07-26 10:36:02 +02:00
Pablo Vazquez
038eb678e8 Setup Assistant: Use larger buttons for back/next 2022-07-22 14:57:11 +02:00
Francesco Siddi
08f52993ad Setup Screen: Overall UI/UX tweaks
- Added initial description and illustration
- Swap "Check" button for fields with a debounced @input event
- Turn Blender's list into a radio selector
- Tweak wording when paths are not found
- Add microtip library for tooltips
- Make navigation steps clickable, according to the state
2022-07-22 14:57:11 +02:00
Pablo Vazquez
2741f900b9 Setup Screen: Style tweak to current and done steps
Based on idea by Francesco.
2022-07-22 14:57:11 +02:00
Francesco Siddi
8b02085c5b Setup Screen: Use StepsWrapper
Similar to TabsWrapper, with Previous/Next navigation capabilities.
2022-07-22 14:57:11 +02:00