From 91e26b101ed0b6e237a5fdc83ed44bf8e5211336 Mon Sep 17 00:00:00 2001 From: Vivian Leung Date: Thu, 21 Aug 2025 11:15:53 +0200 Subject: [PATCH] Webapp: Configuration Editor (#104399) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a new "Settings" view, to edit the Flamenco Manager configuration via the web interface. Saving the form will write directly to `flamenco-manager.yaml`. Depending on how they are used internally by Flamenco Manager, some settings take effect immediately; most require a restart of the Manager process, though. Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104399 Reviewed-by: Sybren A. Stüvel --- web/app/src/App.vue | 3 + web/app/src/assets/base.css | 1 + .../components/settings/DropdownSelect.vue | 29 + .../components/settings/FormInputNumber.vue | 96 ++ .../settings/FormInputSwitchCheckbox.vue | 147 +++ .../src/components/settings/FormInputText.vue | 77 ++ web/app/src/router/index.js | 5 + web/app/src/views/SettingsView.vue | 845 ++++++++++++++++++ 8 files changed, 1203 insertions(+) create mode 100644 web/app/src/components/settings/DropdownSelect.vue create mode 100644 web/app/src/components/settings/FormInputNumber.vue create mode 100644 web/app/src/components/settings/FormInputSwitchCheckbox.vue create mode 100644 web/app/src/components/settings/FormInputText.vue create mode 100644 web/app/src/views/SettingsView.vue diff --git a/web/app/src/App.vue b/web/app/src/App.vue index 0e716118..74067e36 100644 --- a/web/app/src/App.vue +++ b/web/app/src/App.vue @@ -15,6 +15,9 @@
  • Last Rendered
  • +
  • + Settings +
  • diff --git a/web/app/src/assets/base.css b/web/app/src/assets/base.css index 592c18a5..015e83aa 100644 --- a/web/app/src/assets/base.css +++ b/web/app/src/assets/base.css @@ -41,6 +41,7 @@ --table-color-border: var(--color-border); + --input-height: 35px; --header-height: 25px; --footer-height: 25px; --grid-gap: 6px; diff --git a/web/app/src/components/settings/DropdownSelect.vue b/web/app/src/components/settings/DropdownSelect.vue new file mode 100644 index 00000000..07461e28 --- /dev/null +++ b/web/app/src/components/settings/DropdownSelect.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/web/app/src/components/settings/FormInputNumber.vue b/web/app/src/components/settings/FormInputNumber.vue new file mode 100644 index 00000000..cb1ae5d1 --- /dev/null +++ b/web/app/src/components/settings/FormInputNumber.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/web/app/src/components/settings/FormInputSwitchCheckbox.vue b/web/app/src/components/settings/FormInputSwitchCheckbox.vue new file mode 100644 index 00000000..1b89c429 --- /dev/null +++ b/web/app/src/components/settings/FormInputSwitchCheckbox.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/web/app/src/components/settings/FormInputText.vue b/web/app/src/components/settings/FormInputText.vue new file mode 100644 index 00000000..3314b4a8 --- /dev/null +++ b/web/app/src/components/settings/FormInputText.vue @@ -0,0 +1,77 @@ + + + diff --git a/web/app/src/router/index.js b/web/app/src/router/index.js index 29b158be..078bb0f7 100644 --- a/web/app/src/router/index.js +++ b/web/app/src/router/index.js @@ -31,6 +31,11 @@ const router = createRouter({ name: 'last-rendered', component: () => import('../views/LastRenderedView.vue'), }, + { + path: '/settings', + name: 'settings', + component: () => import('../views/SettingsView.vue'), + }, ], }); diff --git a/web/app/src/views/SettingsView.vue b/web/app/src/views/SettingsView.vue new file mode 100644 index 00000000..9f4e3478 --- /dev/null +++ b/web/app/src/views/SettingsView.vue @@ -0,0 +1,845 @@ + + + + +