diff options
| author | Zephyrrus <[email protected]> | 2021-01-11 12:51:45 +0200 |
|---|---|---|
| committer | Zephyrrus <[email protected]> | 2021-01-11 12:51:45 +0200 |
| commit | d69fcd856a47b04f964c658edfa2bed3e6f0abc1 (patch) | |
| tree | d8e578a2c4ca5969b5f24a6256fae95ae84ba9ef /src/site | |
| parent | feat: add dynamic settings page rendering based on the Joi object (diff) | |
| download | host.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.vue | 3 | ||||
| -rw-r--r-- | src/site/pages/dashboard/admin/settings.vue | 28 |
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({ |