Fix scheme matching
This commit is contained in:
parent
4b4b3c341f
commit
0e34fdaa8d
|
@ -64,8 +64,12 @@ export default class SettingsScheme {
|
|||
/**
|
||||
* An array of stripped settings categories this scheme manages.
|
||||
*/
|
||||
get categories() {
|
||||
return this.args.categories || this.args.settings || [];
|
||||
}
|
||||
|
||||
get settings() {
|
||||
return this.args.settings || [];
|
||||
return this.categories;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -82,21 +86,21 @@ export default class SettingsScheme {
|
|||
* @return {Boolean}
|
||||
*/
|
||||
isActive(set) {
|
||||
for (let schemeCategory of this.settings) {
|
||||
const category = set.categories.find(c => c.category === schemeCategory.category);
|
||||
for (let schemeCategory of this.categories) {
|
||||
const category = set.categories.find(c => c.id === (schemeCategory.id || schemeCategory.category));
|
||||
if (!category) {
|
||||
Logger.warn('SettingsScheme', `Category ${schemeCategory.category} does not exist`);
|
||||
Logger.warn('SettingsScheme', `Category ${schemeCategory.id || schemeCategory.category} does not exist`);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (let schemeSetting of schemeCategory.settings) {
|
||||
const setting = category.settings.find(s => s.id === schemeSetting.id);
|
||||
if (!setting) {
|
||||
Logger.warn('SettingsScheme', `Setting ${schemeCategory.category}/${schemeSetting.id} does not exist`);
|
||||
Logger.warn('SettingsScheme', `Setting ${category.category}/${schemeSetting.id} does not exist`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Utils.compare(setting.value, schemeSetting.value)) return false;
|
||||
if (!Utils.compare(setting.args.value, schemeSetting.value)) return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -372,9 +372,9 @@ export default class SettingsSet extends AsyncEventEmitter {
|
|||
if (!categories) return [];
|
||||
|
||||
for (let newCategory of categories) {
|
||||
const category = this.find(category => category.category === newCategory.category);
|
||||
const category = this.find(category => category.id === (newCategory.id || newCategory.category));
|
||||
if (!category) {
|
||||
Logger.warn('SettingsCategory', `Trying to merge category ${newCategory.id}, which does not exist.`);
|
||||
Logger.warn('SettingsSet', `Trying to merge category ${newCategory.id}, which does not exist.`);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -398,14 +398,14 @@ export default class SettingsSet extends AsyncEventEmitter {
|
|||
*/
|
||||
async merge(newSet, emit_multi = true) {
|
||||
let updatedSettings = [];
|
||||
// const categories = newSet instanceof Array ? newSet : newSet.settings;
|
||||
const categories = newSet && newSet.args ? newSet.args.settings : newSet ? newSet.settings : newSet;
|
||||
const categories = newSet && newSet.args ? newSet.args.categories || newSet.args.settings :
|
||||
newSet ? newSet.categories || newSet.settings : newSet;
|
||||
if (!categories) return [];
|
||||
|
||||
for (let newCategory of categories) {
|
||||
const category = this.find(category => category.category === newCategory.category);
|
||||
const category = this.find(category => category.id === (newCategory.id || newCategory.category));
|
||||
if (!category) {
|
||||
Logger.warn('SettingsCategory', `Trying to merge category ${newCategory.id}, which does not exist.`);
|
||||
Logger.warn('SettingsSet', `Trying to merge category ${newCategory.id}, which does not exist.`);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ export default class ArraySetting extends Setting {
|
|||
constructor(args, ...merge) {
|
||||
super(args, ...merge);
|
||||
|
||||
this.args.settings = this.settings.map(category => new SettingsCategory(category));
|
||||
this.args.categories = this.categories.map(category => new SettingsCategory(category));
|
||||
this.args.schemes = this.schemes.map(scheme => new SettingsScheme(scheme));
|
||||
this.args.items = this.value ? this.value.map(item => this.createItem(item.args || item)) : [];
|
||||
|
||||
|
@ -143,7 +143,7 @@ export default class ArraySetting extends Setting {
|
|||
|
||||
const set = new SettingsSet({
|
||||
id: item ? item.args ? item.args.id : item.id : Math.random(),
|
||||
settings: Utils.deepclone(this.settings),
|
||||
categories: this.categories.map(c => c.clone()),
|
||||
schemes: this.schemes
|
||||
}, item ? item.args || item : undefined);
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
"max": 100,
|
||||
"step": 1,
|
||||
"unit": "%",
|
||||
"multi": "0.01",
|
||||
"multi": 0.01,
|
||||
"text": "Span border opacity",
|
||||
"hint": "test"
|
||||
},
|
||||
|
@ -246,9 +246,9 @@
|
|||
"name": "Test scheme",
|
||||
"hint": "Sets the span border opacity to 1%.",
|
||||
"icon_path": "scheme-icon.jpg",
|
||||
"settings": [
|
||||
"categories": [
|
||||
{
|
||||
"category": "default",
|
||||
"id": "default",
|
||||
"settings": [
|
||||
{
|
||||
"id": "spanOpacity",
|
||||
|
@ -263,9 +263,9 @@
|
|||
"name": "Another test scheme",
|
||||
"hint": "Sets the primary colour to red and the span border opacity to 99%.",
|
||||
"icon_path": "scheme-icon.jpg",
|
||||
"settings": [
|
||||
"categories": [
|
||||
{
|
||||
"category": "default",
|
||||
"id": "default",
|
||||
"settings": [
|
||||
{
|
||||
"id": "divBg",
|
||||
|
@ -288,17 +288,13 @@
|
|||
"name": "Final test scheme",
|
||||
"hint": "Sets the primary colour to transparent and the span border opacity to 50%.",
|
||||
"icon_path": "scheme-icon.jpg",
|
||||
"settings": [
|
||||
"categories": [
|
||||
{
|
||||
"category": "default",
|
||||
"id": "default",
|
||||
"settings": [
|
||||
{
|
||||
"id": "divBg",
|
||||
"type": "text",
|
||||
"value": "transparent",
|
||||
"text": "Primary colour",
|
||||
"hint": "A colour setting type would be nice here",
|
||||
"scss_raw": true
|
||||
"value": "transparent"
|
||||
},
|
||||
{
|
||||
"id": "spanOpacity",
|
||||
|
@ -313,9 +309,9 @@
|
|||
"name": "Reset to default background",
|
||||
"hint": "Better than editing user.config.json.",
|
||||
"icon_path": "background.jpg",
|
||||
"settings": [
|
||||
"categories": [
|
||||
{
|
||||
"category": "default",
|
||||
"id": "default",
|
||||
"settings": [
|
||||
{
|
||||
"id": "relative-file-test",
|
||||
|
|
Loading…
Reference in New Issue