From d69fcd856a47b04f964c658edfa2bed3e6f0abc1 Mon Sep 17 00:00:00 2001 From: Zephyrrus Date: Mon, 11 Jan 2021 12:51:45 +0200 Subject: feat: add sections to settings object meta --- src/site/components/settings/JoiObject.vue | 3 ++- src/site/pages/dashboard/admin/settings.vue | 28 +++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) (limited to 'src/site') 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" /> +
- + + @@ -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({ -- cgit v1.2.3