aboutsummaryrefslogtreecommitdiff
path: root/src/site
diff options
context:
space:
mode:
authorZephyrrus <[email protected]>2021-01-11 12:51:45 +0200
committerZephyrrus <[email protected]>2021-01-11 12:51:45 +0200
commitd69fcd856a47b04f964c658edfa2bed3e6f0abc1 (patch)
treed8e578a2c4ca5969b5f24a6256fae95ae84ba9ef /src/site
parentfeat: add dynamic settings page rendering based on the Joi object (diff)
downloadhost.fuwn.me-d69fcd856a47b04f964c658edfa2bed3e6f0abc1.tar.xz
host.fuwn.me-d69fcd856a47b04f964c658edfa2bed3e6f0abc1.zip
feat: add sections to settings object meta
Diffstat (limited to 'src/site')
-rw-r--r--src/site/components/settings/JoiObject.vue3
-rw-r--r--src/site/pages/dashboard/admin/settings.vue28
2 files changed, 25 insertions, 6 deletions
diff --git a/src/site/components/settings/JoiObject.vue b/src/site/components/settings/JoiObject.vue
index e842792..c91fd36 100644
--- a/src/site/components/settings/JoiObject.vue
+++ b/src/site/components/settings/JoiObject.vue
@@ -25,6 +25,7 @@
:rounded="false"
:true-value="true"
:false-value="false" />
+ <!-- TODO: If array and has allowed items, limit input to those items only -->
<b-taginput
v-else-if="getDisplayType(field) === 'array' || getDisplayType(field) === 'tagInput'"
v-model="settings.arr"
@@ -76,7 +77,7 @@ export default {
};
},
mounted() {
- // TODO: Implement merging fields with values from the db (no endpoint to fetch settings yet)
+
},
methods: {
getMin(field) {
diff --git a/src/site/pages/dashboard/admin/settings.vue b/src/site/pages/dashboard/admin/settings.vue
index bac9683..5a28dda 100644
--- a/src/site/pages/dashboard/admin/settings.vue
+++ b/src/site/pages/dashboard/admin/settings.vue
@@ -11,7 +11,8 @@
</h2>
<hr>
- <JoiObject :keys="settingsSchema.keys" :values="{}" />
+ <!-- TODO: IMPLEMENT SECTIONS (v-for JoiObject for each section maybe?) -->
+ <JoiObject :keys="sectionedSettings" :values="{}" />
</div>
</div>
</div>
@@ -31,16 +32,33 @@ export default {
middleware: ['auth', 'admin', ({ store }) => {
try {
store.dispatch('admin/fetchSettings');
+ // TODO: Implement merging fields with values from the db (no endpoint to fetch settings yet)
store.dispatch('admin/getSettingsSchema');
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
}
}],
- computed: mapState({
- settings: state => state.admin.settings,
- settingsSchema: state => state.admin.settingsSchema
- }),
+ computed: {
+ ...mapState({
+ settings: state => state.admin.settings,
+ settingsSchema: state => state.admin.settingsSchema
+ }),
+ sectionedSettings() {
+ return Object.entries(this.settings).reduce((acc, { key, field }) => {
+ if (!field.meta) acc['Other'] = { ...acc['Other'], [key]: field };
+
+ const { sectionName } = field.metas.find(e => e.sectionName);
+ if (sectionName) {
+ acc[sectionName] = { ...acc[sectionName], [key]: field };
+ } else {
+ acc['Other'] = { ...acc['Other'], [key]: field };
+ }
+
+ return acc;
+ }, {});
+ }
+ },
methods: {
promptRestartService() {
this.$buefy.dialog.confirm({