diff --git a/css/80_app.css b/css/80_app.css index 59581813f..7a940e6af 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -3292,10 +3292,6 @@ button.autofix.action.active { color: #ff0c05; } -.layer-list.issues-list { - margin-bottom: 0; -} - /* Issues Pane */ .issues-options-container { @@ -3318,12 +3314,29 @@ button.autofix.action.active { padding: 0 10px; } -.issues-list.layer-list li.issue { +.layer-list.issues-list, +.layer-list.issue-rules-list { + margin-bottom: 0; +} + +.layer-list.issues-list li.issue { border-color: inherit; /* override .layer-list styles */ color: inherit; height: unset; } +.issue-rules-links { + display: flex; + flex-flow: row nowrap; + flex-direction: row-reverse; + height: 30px; + padding-top: 5px; +} +.issue-rules-link { + padding: 5px; +} + + .issues-none { border-radius: 4px; border: 1px solid #72d979; diff --git a/data/core.yaml b/data/core.yaml index 98a04f0a2..a9b44ffb3 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -1289,6 +1289,8 @@ en: visible: "In View" all: "Everywhere" suggested: "Suggested updates:" + enable_all: Enable All + disable_all: Disable All fix_one: title: fix fix_all: diff --git a/dist/locales/en.json b/dist/locales/en.json index 31ca9b254..d36fd02fb 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1581,6 +1581,8 @@ } }, "suggested": "Suggested updates:", + "enable_all": "Enable All", + "disable_all": "Disable All", "fix_one": { "title": "fix" }, diff --git a/modules/core/validator.js b/modules/core/validator.js index 136206701..78f244457 100644 --- a/modules/core/validator.js +++ b/modules/core/validator.js @@ -137,6 +137,17 @@ export function coreValidator(context) { }; + validator.disableRules = function(keys) { + _disabledRules = {}; + keys.forEach(function(k) { + _disabledRules[k] = true; + }); + + context.storage('validate-disabledRules', Object.keys(_disabledRules).join(',')); + validator.validate(); + }; + + // // Remove a single entity and all its related issues from the caches // diff --git a/modules/ui/issues.js b/modules/ui/issues.js index d162640aa..3004f0826 100644 --- a/modules/ui/issues.js +++ b/modules/ui/issues.js @@ -290,13 +290,46 @@ export function uiIssues(context) { function renderRulesList(selection) { - var container = selection.selectAll('.issue-rules-list') + var container = selection.selectAll('.issues-rulelist-container') .data([0]); - _rulesList = container.enter() + var containerEnter = container.enter() + .append('div') + .attr('class', 'issues-rulelist-container'); + + containerEnter .append('ul') - .attr('class', 'layer-list issue-rules-list') - .merge(container); + .attr('class', 'layer-list issue-rules-list'); + + var ruleLinks = containerEnter + .append('div') + .attr('class', 'issue-rules-links'); + + ruleLinks + .append('a') + .attr('class', 'issue-rules-link') + .attr('href', '#') + .text(t('issues.enable_all')) + .on('click', function() { + context.validator().disableRules([]); + }); + + ruleLinks + .append('a') + .attr('class', 'issue-rules-link') + .attr('href', '#') + .text(t('issues.disable_all')) + .on('click', function() { + var keys = context.validator().getRuleKeys(); + context.validator().disableRules(keys); + }); + + + // Update + container = container + .merge(containerEnter); + + _rulesList = container.selectAll('.issue-rules-list'); updateRulesList(); }