Fix inline settings arrays

This commit is contained in:
Samuel Elliott 2018-03-02 22:20:34 +00:00
parent bd72246715
commit 88e563501a
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
3 changed files with 28 additions and 3 deletions

View File

@ -70,6 +70,10 @@ export default class SettingsCategory {
return this.settings.find(f);
}
findSettings(f) {
return this.settings.filter(f);
}
getSetting(id) {
return this.findSetting(setting => setting.id === id);
}

View File

@ -71,6 +71,10 @@ export default class SettingsSet {
return this.categories.find(f);
}
findCategories(f) {
return this.categories.filter(f);
}
getCategory(id) {
return this.find(category => category.id === id);
}
@ -82,6 +86,13 @@ export default class SettingsSet {
}
}
findSettings(f) {
for (let category of this.categories) {
const setting = category.findSettings(f);
if (setting) return setting;
}
}
findSettingInCategory(cf, f) {
for (let category of this.categories.filter(cf)) {
const setting = category.find(f);
@ -89,6 +100,13 @@ export default class SettingsSet {
}
}
findSettingsInCategory(cf, f) {
for (let category of this.categories.filter(cf)) {
const setting = category.findSettings(f);
if (setting) return setting;
}
}
getSetting(id, sid) {
if (sid) return this.findSettingInCategory(category => category.id === id, setting => setting.id === sid);
return this.findSetting(setting => setting.id === id);

View File

@ -19,15 +19,15 @@
<div class="bd-settingsarray-item" v-for="(item, index) in setting.items">
<div class="bd-settingsarray-item-marker">{{ index + 1 }}</div>
<SettingsPanel class="bd-settingsarray-item-contents" v-if="setting.inline" :settings="item.settings" :change="(c, s, v) => changeInItem(item, c, s, v)" />
<SettingsPanel class="bd-settingsarray-item-contents" v-if="setting.inline" :settings="item" />
<div class="bd-settingsarray-item-contents" v-else>
<div class="bd-settingsarray-item-hint">
<span v-if="item.settings[0] && item.settings[0].settings[0]">{{ item.settings[0].settings[0].text }}: {{ item.settings[0].settings[0].value }}</span><span v-if="item.settings[0] && item.settings[0].settings[1]">, {{ item.settings[0].settings[1].text }}: {{ item.settings[0].settings[1].value }}</span><span v-if="item.settings[0] && item.settings[0].settings[2] || item.settings[1] && item.settings[1].settings[0]">, ...</span>
<span v-if="getItemSettings(item)[0]">{{ getItemSettings(item)[0].text }}: {{ getItemSettings(item)[0].value }}</span><span v-if="getItemSettings(item)[1]">, {{ getItemSettings(item)[1].text }}: {{ getItemSettings(item)[1].value }}</span><span v-if="getItemSettings(item)[2]">, ...</span>
</div>
</div>
<div class="bd-settingsarray-item-controls">
<span class="bd-settingsarray-open" v-if="typeof setting.allow_external !== 'undefined' ? setting.allow_external || !setting.inline : true" @click="() => showModal(item, index)"><MiOpenInNew v-if="setting.inline" /><MiSettings v-else /></span>
<span class="bd-settingsarray-open" v-if="setting.allow_external" @click="() => showModal(item, index)"><MiOpenInNew v-if="setting.inline" /><MiSettings v-else /></span>
<span class="bd-settingsarray-remove" :class="{'bd-disabled': setting.disabled || setting.min && setting.items.length <= setting.min}" @click="() => removeItem(item)"><MiMinus /></span>
</div>
</div>
@ -71,6 +71,9 @@
},
showModal(item, index) {
Modals.settings(item, this.setting.headertext ? this.setting.headertext.replace(/%n/, index + 1) : this.setting.text + ` #${index + 1}`);
},
getItemSettings(item) {
return item.findSettings(() => true);
}
},
beforeCreate() {