diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index ec840fb7a165ce2d0fc947fe46aabefb631c0b93..2585e787bd5ff9ccf035a5f45b5f91f00a415fc0 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -3088,29 +3088,45 @@ window.DefaultRules = (function() { */ function ProcessLabel(slave, rule) { + //mass removal of old tags, variant from '*' mask. if (rule.removeLabel !== null && rule.removeLabel !== '' && rule.removeLabel == '*') { - console.log(`${slave.slaveName}: rules remove triggered ('*').`); + //console.log(`${slave.slaveName}: rules remove triggered ('*').`); slave.custom.label = slave.custom.label.replace(/(?:\[.+\])+/, ""); r += `All <br>${slave.slaveName}'s tags is removed.`; } + //mass removal of old tags, variant from GUI swith. console.log(rule.labelTagsClear); if (rule.labelTagsClear === true) { - console.log(`${slave.slaveName}: rules remove triggered (labelTagsClean).`); + //console.log(`${slave.slaveName}: rules remove triggered (labelTagsClean).`); slave.custom.label = slave.custom.label.replace(/(?:\[.+\])+/, ""); r += `All <br>${slave.slaveName}'s tags is removed.`; } - if (rule.removeLabel !== null && rule.removeLabel !== '' && slave.custom.label.includes(`[${rule.removeLabel}]`)) { - console.log(`${slave.slaveName}: rule remove with |${rule.rule.removeLabel}| triggered.`); - slave.custom.label = slave.custom.label.replace(`[${rule.removeLabel}]`, ""); - r += `<br>${slave.slaveName}'s tag [${rule.removeLabel}] is removed.`; + //removing tags selected for removal. + let tags = [], i; + if (rule.label != null && rule.label !== '') + tags = rule.label.split("|"); + + for (i in tags) { + if (tags[i] != null && tags[i] !== '' && !slave.custom.label.includes(`[${tags[i]}]`)) { + //console.log(`${slave.slaveName}: rule add with |${tags[i]}| triggered.`); + slave.custom.label = `${slave.custom.label}[${tags[i]}]`; + r += `<br>${slave.slaveName} has been tagged as ${tags[i]}`; + } } + + //finally adding new tags. + tags = []; + if (rule.removeLabel != null && rule.removeLabel !== '') + tags = rule.label.split("|"); - if (rule.label !== null && rule.label !== '' && !slave.custom.label.includes(`[${rule.label}]`)) { - console.log(`${slave.slaveName}: rule add with |${rule.label}| triggered.`); - slave.custom.label = `${slave.custom.label}[${rule.label}]`; - r += `<br>${slave.slaveName} has been tagged as ${rule.label}`; + for (i in tags) { + if (tags[i] !== null && tags[i] !== '' && slave.custom.label.includes(`[${tags[i]}]`)) { + //console.log(`${slave.slaveName}: rule remove with |${tags[i]}| triggered.`); + slave.custom.label = slave.custom.label.replace(`[${tags[i]}]`, ""); + r += `<br>${slave.slaveName}'s tag [${tags[i]}] is removed.`; + } } } diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index 8a492943876c6815cd0672e1721c966b7e33d1a8..a6c1f53dec5cb3d90d0e6561bbaa0afeab7602cc 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -594,6 +594,13 @@ App.RA.ruleDeepAssign = function deepAssign(target, source) { target[key] = {}; } deepAssign(target[key], source[key]); + } else if (key == "label" || key == "removeLabel") { + console.log( key + " key found"); + if (source[key] != null) + if (target[key] != null) + target[key] += "|" + source[key]; + else + target[key] = source[key]; } else { // A rule overrides any preceding ones if, // * there are no preceding ones, @@ -608,5 +615,6 @@ App.RA.ruleDeepAssign = function deepAssign(target, source) { } } } + console.log(target); return target; }; diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index d2a1b2e1e22287748f0b654116ac974ba93cdf94..add70b98472f00374756fd60f75956f6af52b567 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -1554,7 +1554,7 @@ window.rulesAssistantOptions = (function() { class ClearLabelSwitch extends BooleanSwitch { constructor() { - super("Remove all previous labels", [false, true]); + super("Remove all tags (Gobal swith)", [false, true]); this.setValue(current_rule.set.labelTagsClear); this.onchange = (value) => current_rule.set.labelTagsClear = value; } @@ -4143,7 +4143,7 @@ window.rulesAssistantOptions = (function() { class LabelList extends StringEditor { constructor() { - super("Custom label", [], true, true); + super("Custom label(s) (separate by '|')", [], true, true); this.setValue(current_rule.set.label); this.onchange = (value) => current_rule.set.label = value; } @@ -4151,7 +4151,7 @@ window.rulesAssistantOptions = (function() { class LabelRemoveList extends StringEditor { constructor() { - super("Remove custom label", [], true, true); + super("Remove custom label(s) (separate by '|')", [], true, true); this.setValue(current_rule.set.removeLabel); this.onchange = (value) => current_rule.set.removeLabel = value; }