TSK-1786: Changed notification for empty classification filtering

Now display a message inline, instead of a popup notification
This commit is contained in:
Tristan 2022-02-14 16:15:37 +01:00 committed by Tristan2357
parent 6dda569f16
commit 17d9567b35
5 changed files with 1667 additions and 736 deletions

View File

@ -11,3 +11,4 @@ coverage/**
out-tsc/**
**/*.html
target/**
.angular/cache/

View File

@ -1,16 +1,30 @@
<tree-root #tree [nodes]="treeNodes" [options]="options" (activate)="onActivate($event)" (deactivate)="onDeactivate($event)"
(moveNode)="onMoveNode($event)" (treeDrop)="onDrop($event)">
<ng-template #treeNodeTemplate let-node let-index="index">
<span class="tree__svg-icon">
<svg-icon
*ngIf="node.data.category"
[src]="getCategoryIcon(node.data.category).left"
matTooltip="{{getCategoryIcon(node.data.category).right}}">
</svg-icon>
</span>
<span>
<strong>{{ node.data.key }}</strong>
</span>
<span> - {{ node.data.name }}</span>
</ng-template>
<div *ngIf="emptyTreeNodes">
<h3 class="grey" style="text-align: center">There are no classifications</h3>
<p class="grey" style="text-align: center">No Classifications match used filter "{{filter}}"
in category {{category}}</p>
</div>
<tree-root
#tree
(activate)="onActivate($event)"
(deactivate)="onDeactivate($event)"
(moveNode)="onMoveNode($event)"
(treeDrop)="onDrop($event)"
[hidden]="emptyTreeNodes"
[nodes]="treeNodes"
[options]="options"
>
<ng-template #treeNodeTemplate let-index="index" let-node>
<span class="tree__svg-icon">
<svg-icon
*ngIf="node.data.category"
[src]="getCategoryIcon(node.data.category).left"
matTooltip="{{ getCategoryIcon(node.data.category).right }}"
>
</svg-icon>
</span>
<span>
<strong>{{ node.data.key }}</strong>
</span>
<span> - {{ node.data.name }}</span>
</ng-template>
</tree-root>

View File

@ -41,6 +41,10 @@ export class TaskanaTreeComponent implements OnInit, AfterViewChecked, OnDestroy
treeNodes: TreeNodeModel[];
categoryIcons: ClassificationCategoryImages;
emptyTreeNodes = false;
filter: string;
category: string;
@Input() selectNodeId: string;
@Input() filterText: string;
@Input() filterIcon = '';
@ -188,6 +192,17 @@ export class TaskanaTreeComponent implements OnInit, AfterViewChecked, OnDestroy
this.destroy$.complete();
}
private checkNameAndKey(node: any, text: string): boolean {
return (
node.data.name.toUpperCase().includes(text.toUpperCase()) ||
node.data.key.toUpperCase().includes(text.toUpperCase())
);
}
private checkIcon(node: any, iconText: string): boolean {
return node.data.category.toUpperCase() === iconText.toUpperCase() || iconText === '';
}
private selectNode(nodeId: string) {
if (nodeId) {
const selectedNode = this.getNode(nodeId);
@ -209,26 +224,10 @@ export class TaskanaTreeComponent implements OnInit, AfterViewChecked, OnDestroy
}
private filterNodes(filterText, category) {
this.tree.treeModel.filterNodes(
(node) => TaskanaTreeComponent.checkNameAndKey(node, filterText) && TaskanaTreeComponent.checkIcon(node, category)
);
if (!this.tree.treeModel.getVisibleRoots().length) {
this.notificationsService.showInformation('CLASSIFICATION_FILTER_EMPTY_RESULT', {
filter: filterText,
category: category || 'ALL'
});
}
}
private static checkNameAndKey(node: any, text: string): boolean {
return (
node.data.name.toUpperCase().includes(text.toUpperCase()) ||
node.data.key.toUpperCase().includes(text.toUpperCase())
);
}
private static checkIcon(node: any, iconText: string): boolean {
return node.data.category.toUpperCase() === iconText.toUpperCase() || iconText === '';
this.tree.treeModel.filterNodes((node) => this.checkNameAndKey(node, filterText) && this.checkIcon(node, category));
this.filter = filterText;
this.category = category || 'ALL';
this.emptyTreeNodes = !this.tree.treeModel.getVisibleRoots().length;
}
private manageTreeState() {

View File

@ -99,8 +99,7 @@ export const messageByErrorCode = {
},
[messageTypes.INFORMATION]: {
EMPTY_WORKBASKET: 'Selected Workbasket is empty',
CLASSIFICATION_FILTER_EMPTY_RESULT: 'No Classification match for used filter {filter} in category {category}'
EMPTY_WORKBASKET: 'Selected Workbasket is empty'
},
[messageTypes.WARNING]: {

File diff suppressed because it is too large Load Diff