diff options
| author | Zephyrrus <[email protected]> | 2021-01-11 18:57:19 +0200 |
|---|---|---|
| committer | Zephyrrus <[email protected]> | 2021-01-11 18:57:19 +0200 |
| commit | dc4f3a6557cc5f4ddf3d9a9bc8fad4f3bdc40c72 (patch) | |
| tree | 46ef67145a83d1c7c2da50984150e1b71d50d9be | |
| parent | feat: add sections to settings object meta (diff) | |
| download | host.fuwn.me-dc4f3a6557cc5f4ddf3d9a9bc8fad4f3bdc40c72.tar.xz host.fuwn.me-dc4f3a6557cc5f4ddf3d9a9bc8fad4f3bdc40c72.zip | |
fix: sections not rendering
| -rw-r--r-- | src/site/components/settings/JoiObject.vue | 6 | ||||
| -rw-r--r-- | src/site/pages/dashboard/admin/settings.vue | 26 | ||||
| -rw-r--r-- | src/site/store/admin.js | 5 |
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 = { |