diff --git a/src/components/settings_modal/admin_tabs/job_queues_tab.js b/src/components/settings_modal/admin_tabs/job_queues_tab.js
new file mode 100644
index 000000000..b0f583c55
--- /dev/null
+++ b/src/components/settings_modal/admin_tabs/job_queues_tab.js
@@ -0,0 +1,34 @@
+import BooleanSetting from '../helpers/boolean_setting.vue'
+import ChoiceSetting from '../helpers/choice_setting.vue'
+import IntegerSetting from '../helpers/integer_setting.vue'
+import StringSetting from '../helpers/string_setting.vue'
+import TupleSetting from '../helpers/tuple_setting.vue'
+import GroupSetting from '../helpers/group_setting.vue'
+import AttachmentSetting from '../helpers/attachment_setting.vue'
+import ListSetting from '../helpers/list_setting.vue'
+
+import SharedComputedObject from '../helpers/shared_computed_object.js'
+
+const JobQueuesTab = {
+ provide () {
+ return {
+ defaultDraftMode: true,
+ defaultSource: 'admin'
+ }
+ },
+ components: {
+ BooleanSetting,
+ ChoiceSetting,
+ IntegerSetting,
+ StringSetting,
+ TupleSetting,
+ AttachmentSetting,
+ GroupSetting,
+ ListSetting
+ },
+ computed: {
+ ...SharedComputedObject()
+ }
+}
+
+export default JobQueuesTab
diff --git a/src/components/settings_modal/admin_tabs/job_queues_tab.vue b/src/components/settings_modal/admin_tabs/job_queues_tab.vue
new file mode 100644
index 000000000..68ac91984
--- /dev/null
+++ b/src/components/settings_modal/admin_tabs/job_queues_tab.vue
@@ -0,0 +1,78 @@
+
+
+
+
{{ $t('admin_dash.job_queues.Oban') }}
+
+ -
+
+
{{ $t('admin_dash.job_queues.queues') }}
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/settings_modal/admin_tabs/uploads_tab.vue b/src/components/settings_modal/admin_tabs/uploads_tab.vue
index 33cdd7cf2..1c3c9349f 100644
--- a/src/components/settings_modal/admin_tabs/uploads_tab.vue
+++ b/src/components/settings_modal/admin_tabs/uploads_tab.vue
@@ -74,7 +74,7 @@
/>
-
+
{{ $t('admin_dash.uploads.filenames') }}
-
diff --git a/src/components/settings_modal/helpers/list_setting.js b/src/components/settings_modal/helpers/list_setting.js
index 3ce7e5bef..78f78709a 100644
--- a/src/components/settings_modal/helpers/list_setting.js
+++ b/src/components/settings_modal/helpers/list_setting.js
@@ -44,7 +44,7 @@ export default {
extraEntries () {
if (this.ignoreSuggestions) return [...this.valueSet.values()]
return [...this.valueSet.values()].filter((x) => {
- return !this.suggestions.has(x)
+ return !this.suggestions?.has(x)
})
},
builtinEntries () {
diff --git a/src/components/settings_modal/helpers/number_setting.vue b/src/components/settings_modal/helpers/number_setting.vue
index 7e301d613..e86b3fb08 100644
--- a/src/components/settings_modal/helpers/number_setting.vue
+++ b/src/components/settings_modal/helpers/number_setting.vue
@@ -24,6 +24,7 @@
type="number"
:step="step || 1"
:disabled="shouldBeDisabled"
+ :placeholder="backendDescriptionSuggestions"
:min="min || 0"
:value="realDraftMode ? draft :state"
@change="update"
diff --git a/src/components/settings_modal/helpers/setting.js b/src/components/settings_modal/helpers/setting.js
index a6419a03e..a62b500d5 100644
--- a/src/components/settings_modal/helpers/setting.js
+++ b/src/components/settings_modal/helpers/setting.js
@@ -18,6 +18,10 @@ export default {
type: [String, Array],
required: false
},
+ suggestions: {
+ type: [String, Array],
+ required: false
+ },
subgroup: {
type: String,
required: false
@@ -53,6 +57,9 @@ export default {
swapDescriptionAndLabel: {
type: Boolean
},
+ backendDescriptionPath: {
+ type: [String, Array]
+ },
overrideBackendDescription: {
type: Boolean
},
@@ -158,7 +165,7 @@ export default {
}
},
backendDescriptionSuggestions () {
- return this.backendDescription?.suggestions
+ return this.backendDescription?.suggestions || this.suggestions
},
shouldBeDisabled () {
if (this.path == null) {
@@ -228,6 +235,7 @@ export default {
},
descriptionPath () {
if (this.path == null) return null
+ if (this.backendDescriptionPath) return this.backendDescriptionPath
const path = Array.isArray(this.path) ? this.path : this.path.split('.')
if (this.subgroup) {
return [
diff --git a/src/components/settings_modal/helpers/tuple_setting.js b/src/components/settings_modal/helpers/tuple_setting.js
new file mode 100644
index 000000000..5815cc580
--- /dev/null
+++ b/src/components/settings_modal/helpers/tuple_setting.js
@@ -0,0 +1,16 @@
+import Setting from './setting.js'
+
+export default {
+ ...Setting,
+ methods: {
+ ...Setting.methods,
+ getValue ({ e, side }) {
+ const [a, b] = this.visibleState || []
+ if (side === 0) {
+ return [e.target.value, b]
+ } else {
+ return [a, e.target.value]
+ }
+ }
+ }
+}
diff --git a/src/components/settings_modal/helpers/tuple_setting.vue b/src/components/settings_modal/helpers/tuple_setting.vue
new file mode 100644
index 000000000..414530f22
--- /dev/null
+++ b/src/components/settings_modal/helpers/tuple_setting.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
diff --git a/src/components/settings_modal/settings_modal_admin_content.js b/src/components/settings_modal/settings_modal_admin_content.js
index 4d89aefad..f07fce6ac 100644
--- a/src/components/settings_modal/settings_modal_admin_content.js
+++ b/src/components/settings_modal/settings_modal_admin_content.js
@@ -10,6 +10,7 @@ import UploadsTab from './admin_tabs/uploads_tab.vue'
import MailerTab from './admin_tabs/mailer_tab.vue'
import MonitoringTab from './admin_tabs/monitoring_tab.vue'
import RegistrationsTab from './admin_tabs/registrations_tab.vue'
+import JobQueuesTab from './admin_tabs/job_queues_tab.vue'
import { useInterfaceStore } from 'src/stores/interface'
import { library } from '@fortawesome/fontawesome-svg-core'
@@ -22,6 +23,7 @@ import {
faEnvelope,
faChartLine,
faDoorOpen,
+ faGears,
faUpload
} from '@fortawesome/free-solid-svg-icons'
@@ -34,6 +36,7 @@ library.add(
faEnvelope,
faChartLine,
faDoorOpen,
+ faGears,
faUpload
)
@@ -42,15 +45,16 @@ const SettingsModalAdminContent = {
VerticalTabSwitcher,
InstanceTab,
- LimitsTab,
- FrontendsTab,
- MediaProxyTab,
- MailerTab,
+ RegistrationsTab,
EmojiTab,
+ FrontendsTab,
+ LimitsTab,
+ MailerTab,
UploadsTab,
+ MediaProxyTab,
LinksTab,
+ JobQueuesTab,
MonitoringTab,
- RegistrationsTab
},
computed: {
user () {
diff --git a/src/components/settings_modal/settings_modal_admin_content.vue b/src/components/settings_modal/settings_modal_admin_content.vue
index 572cc3a2c..681633067 100644
--- a/src/components/settings_modal/settings_modal_admin_content.vue
+++ b/src/components/settings_modal/settings_modal_admin_content.vue
@@ -114,6 +114,14 @@
+
+
+
+