aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZephyrrus <[email protected]>2021-01-11 18:57:19 +0200
committerZephyrrus <[email protected]>2021-01-11 18:57:19 +0200
commitdc4f3a6557cc5f4ddf3d9a9bc8fad4f3bdc40c72 (patch)
tree46ef67145a83d1c7c2da50984150e1b71d50d9be
parentfeat: add sections to settings object meta (diff)
downloadhost.fuwn.me-dc4f3a6557cc5f4ddf3d9a9bc8fad4f3bdc40c72.tar.xz
host.fuwn.me-dc4f3a6557cc5f4ddf3d9a9bc8fad4f3bdc40c72.zip
fix: sections not rendering
-rw-r--r--src/site/components/settings/JoiObject.vue6
-rw-r--r--src/site/pages/dashboard/admin/settings.vue26
-rw-r--r--src/site/store/admin.js5
3 files changed, 26 insertions, 11 deletions
diff --git a/src/site/components/settings/JoiObject.vue b/src/site/components/settings/JoiObject.vue
index c91fd36..af5b4eb 100644
--- a/src/site/components/settings/JoiObject.vue
+++ b/src/site/components/settings/JoiObject.vue
@@ -65,7 +65,7 @@ export default {
},
errors: {
'type': Object,
- 'default': {}
+ 'default': () => ({})
}
},
data() {
@@ -99,9 +99,9 @@ export default {
getDisplayType(field) {
if (!field.metas) return field.type;
- const { displayType } = field.metas.find(e => e.displayType);
+ const foundMeta = field.metas.find(e => e.displayType);
- if (displayType) return displayType;
+ if (foundMeta) return foundMeta.displayType;
return field.type;
},
diff --git a/src/site/pages/dashboard/admin/settings.vue b/src/site/pages/dashboard/admin/settings.vue
index 5a28dda..bd23b1c 100644
--- a/src/site/pages/dashboard/admin/settings.vue
+++ b/src/site/pages/dashboard/admin/settings.vue
@@ -11,8 +11,20 @@
</h2>
<hr>
- <!-- TODO: IMPLEMENT SECTIONS (v-for JoiObject for each section maybe?) -->
- <JoiObject :keys="sectionedSettings" :values="{}" />
+ <div v-for="[sectionName, fields] in Object.entries(sectionedSettings)" :key="sectionName" class="block">
+ <h5 class="title is-5 has-text-grey-lighter">
+ {{ sectionName }}
+ </h5>
+ <JoiObject :keys="fields" :values="{}" />
+ </div>
+
+ <div class="mb2 mt2 text-center">
+ <button
+ class="button is-primary"
+ @click="promptRestartService">
+ Save settings
+ </button>
+ </div>
</div>
</div>
</div>
@@ -45,12 +57,12 @@ export default {
settingsSchema: state => state.admin.settingsSchema
}),
sectionedSettings() {
- return Object.entries(this.settings).reduce((acc, { key, field }) => {
- if (!field.meta) acc['Other'] = { ...acc['Other'], [key]: field };
+ return Object.entries(this.settingsSchema.keys).reduce((acc, [key, field]) => {
+ if (!field.metas) acc['Other'] = { ...acc['Other'], [key]: field };
- const { sectionName } = field.metas.find(e => e.sectionName);
- if (sectionName) {
- acc[sectionName] = { ...acc[sectionName], [key]: field };
+ const sectionMeta = field.metas.find(e => e.section);
+ if (sectionMeta) {
+ acc[sectionMeta.section] = { ...acc[sectionMeta.section], [key]: field };
} else {
acc['Other'] = { ...acc['Other'], [key]: field };
}
diff --git a/src/site/store/admin.js b/src/site/store/admin.js
index e84a2b1..72cd919 100644
--- a/src/site/store/admin.js
+++ b/src/site/store/admin.js
@@ -13,7 +13,10 @@ export const state = () => ({
file: {},
settings: {},
statistics: {},
- settingsSchema: {}
+ settingsSchema: {
+ type: null,
+ keys: {}
+ }
});
export const actions = {