[ACA-4644] Inherited & linked rules that are disabled should not be listed (#2843)

* [ACA-4644] Inherited & linked rules that are disabled should not be listed

* Added condition for linked rule sets to need only enabled rules

* Added a bypass for the empty rules list for linked rule sets that have only disabled rules

* Replaced array filter with some
This commit is contained in:
Thomas Hunter
2022-12-13 10:10:17 +00:00
committed by GitHub
parent 49f0cc3b61
commit 8c7c40a3d4
9 changed files with 101 additions and 27 deletions

View File

@@ -35,7 +35,7 @@
</div>
<div
*ngIf="mainRuleSetGroupingItems.length > 0"
*ngIf="mainRuleSetGroupingItems.length > 0 || isMainRuleSetLinked"
class="aca-rule-list__item"
data-automation-id="rule-list-item"
[ngClass]="{ expanded: mainRuleSetExpanded }">
@@ -66,14 +66,25 @@
</mat-icon>
</div>
<aca-rule-list-grouping
*ngIf="mainRuleSetExpanded"
[items]="mainRuleSetGroupingItems"
[selectedRule]="selectedRule"
[showEnabledToggles]="isMainRuleSetOwned"
(selectRule)="onSelectRule($event)"
(ruleEnabledChanged)="onRuleEnabledChanged($event)"
(loadMoreRules)="onLoadMoreRules($event)">
</aca-rule-list-grouping>
<ng-container *ngIf="mainRuleSetExpanded">
<aca-rule-list-grouping
*ngIf="mainRuleSetGroupingItems.length > 0; else emptyLinkedRuleSet"
[items]="mainRuleSetGroupingItems"
[selectedRule]="selectedRule"
[showEnabledToggles]="isMainRuleSetOwned"
(selectRule)="onSelectRule($event)"
(ruleEnabledChanged)="onRuleEnabledChanged($event)"
(loadMoreRules)="onLoadMoreRules($event)">
</aca-rule-list-grouping>
<ng-template #emptyLinkedRuleSet>
<div class="aca-rule-list__item__all-linked-rules-are-disabled">
{{ 'ACA_FOLDER_RULES.RULE_LIST.ALL_LINKED_RULES_ARE_DISABLED' | translate }}
<button mat-stroked-button [routerLink]="['/nodes', mainRuleSet.owningFolder.id, 'rules']">
{{ 'ACA_FOLDER_RULES.MANAGE_RULES.TOOLBAR.ACTIONS.SEE_IN_FOLDER' | translate }}
</button>
</div>
</ng-template>
</ng-container>
</div>

View File

@@ -46,5 +46,18 @@
border-bottom: 1px solid var(--theme-border-color);
}
}
&__all-linked-rules-are-disabled {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 4px;
color: var(--theme-disabled-text-color);
font-style: italic;
text-align: center;
padding: 0.5em 0;
font-size: 0.9em;
}
}
}

View File

@@ -69,14 +69,17 @@ export class RuleListUiComponent {
get isMainRuleSetOwned(): boolean {
return FolderRuleSetsService.isOwnedRuleSet(this.mainRuleSet, this.folderId);
}
get isMainRuleSetLinked(): boolean {
return FolderRuleSetsService.isLinkedRuleSet(this.mainRuleSet, this.folderId);
}
get mainRuleSetGroupingItems(): RuleGroupingItem[] {
return this.mainRuleSet ? this.getRuleSetGroupingItems(this.mainRuleSet) : [];
return this.mainRuleSet ? this.getRuleSetGroupingItems(this.mainRuleSet, !this.isMainRuleSetOwned) : [];
}
get inheritedRuleSetGroupingItems(): RuleGroupingItem[] {
const items = this.inheritedRuleSets.reduce((accumulator: RuleGroupingItem[], currentRuleSet: RuleSet) => {
accumulator.push(...this.getRuleSetGroupingItems(currentRuleSet));
accumulator.push(...this.getRuleSetGroupingItems(currentRuleSet, true));
return accumulator;
}, []);
if (this.ruleSetsLoading || this.hasMoreRuleSets) {
@@ -87,11 +90,13 @@ export class RuleListUiComponent {
return items;
}
getRuleSetGroupingItems(ruleSet: RuleSet): RuleGroupingItem[] {
const items: RuleGroupingItem[] = ruleSet.rules.map((rule: Rule) => ({
type: 'rule',
rule
}));
getRuleSetGroupingItems(ruleSet: RuleSet, filterOutDisabledRules: boolean): RuleGroupingItem[] {
const items: RuleGroupingItem[] = ruleSet.rules
.filter((rule: Rule) => rule.isEnabled || !filterOutDisabledRules)
.map((rule: Rule) => ({
type: 'rule',
rule
}));
if (ruleSet.loadingRules || ruleSet.hasMoreRules) {
items.push(
ruleSet.loadingRules