filterDialog Anpassung

main
manueltauber 2023-10-12 15:24:43 +02:00
parent 200bdcf8e0
commit ef7d840f82
6 changed files with 133 additions and 40 deletions

View File

@ -480,9 +480,9 @@ export class DataService {
* @returns true or false for a boolean flag * @returns true or false for a boolean flag
*/ */
private validateApproval(resp):boolean{ private validateApproval(resp):boolean{
console.log(resp.changeNr); // console.log(resp.changeNr);
console.log(resp.approvalStatus); // console.log(resp.approvalStatus);
console.log('\n'); // console.log('\n');
if(resp.approvalStatus!=undefined && resp.approvalStatus!="0"){ if(resp.approvalStatus!=undefined && resp.approvalStatus!="0"){
return true; return true;
}else{ }else{
@ -512,6 +512,30 @@ export class DataService {
} }
return ""; return "";
} }
public getContractNameByID(contractId){
for (let contract of this.contracts) {
if(contractId == contract.id){
return contract.name;
}
}
}
public getPaketTypeNameByID(paketTypeId){
for (let paketType of this.paketTypes) {
if(paketTypeId == paketType.id){
return paketType.name;
}
}
}
public getPaketTypeIdByName(paketTypeName){
for (let paketType of this.paketTypes) {
if(paketTypeName == paketType.name){
return paketType.id;
}
}
}
} }

View File

@ -22,8 +22,7 @@
[placeholder]="userSupportGroup" [placeholder]="userSupportGroup"
[data]="supportGroups" [data]="supportGroups"
[key]="'supportGroup'" [key]="'supportGroup'"
[appliedFilters]= "appliedFiltersSg" [appliedFilters]= "prevFiltersSg"
(result)="onResult($event)"> (result)="onResult($event)">
</multiselect-autocomplete> </multiselect-autocomplete>
</mat-expansion-panel> </mat-expansion-panel>
@ -37,6 +36,7 @@
[placeholder]="languageService.lMap.get('filterDilogSearchState')" [placeholder]="languageService.lMap.get('filterDilogSearchState')"
[data]="states" [data]="states"
[key]="'state'" [key]="'state'"
[appliedFilters]= "prevFiltersState"
(result)="onResult($event)"> (result)="onResult($event)">
</multiselect-autocomplete> </multiselect-autocomplete>
</mat-expansion-panel> </mat-expansion-panel>
@ -50,6 +50,7 @@
[placeholder]="languageService.lMap.get('filterDilogSearchContract')" [placeholder]="languageService.lMap.get('filterDilogSearchContract')"
[data]="contracts" [data]="contracts"
[key]="'contract'" [key]="'contract'"
[appliedFilters]= "prevFiltersContract"
(result)="onResult($event)"> (result)="onResult($event)">
</multiselect-autocomplete> </multiselect-autocomplete>
</mat-expansion-panel> </mat-expansion-panel>
@ -63,6 +64,7 @@
[placeholder]="languageService.lMap.get('filterDilogSearchPt')" [placeholder]="languageService.lMap.get('filterDilogSearchPt')"
[data]="paketTypes" [data]="paketTypes"
[key]="'paketType'" [key]="'paketType'"
[appliedFilters]= "prevFiltersPaketType"
(result)="onResult($event)"> (result)="onResult($event)">
</multiselect-autocomplete> </multiselect-autocomplete>
</mat-expansion-panel> </mat-expansion-panel>

View File

@ -40,6 +40,8 @@ export class FilterDialogComponent implements OnInit {
public contracts: string[] = []; public contracts: string[] = [];
public userSupportGroup: string; public userSupportGroup: string;
public prevFilters: any[]=[];
public criteria: string; public criteria: string;
public filterStartDate: Date; public filterStartDate: Date;
public filterEndDate: Date; public filterEndDate: Date;
@ -52,13 +54,13 @@ export class FilterDialogComponent implements OnInit {
public dateFilter = []; public dateFilter = [];
public filterLabels: string[] = []; public filterLabels: string[] = [];
public appliedFilterText: string; public prevFilterText: string;
public appliedFiltersSg: string[] = ["Vertrieb - Vertriebsstellenbetreuung Nord", "Vertrieb - Vertriebsstellenbetreuung West", "Vertrieb - Vertriebsstellenbetreuung Süd", "Vertrieb - Vertriebsstellenbetreuung Ost"]; public prevFiltersSg: string[] = [];
public appliedFiltersStatus: string[] = ["Vertrieb - Vertriebsstellenbetreuung Nord", "Vertrieb - Vertriebsstellenbetreuung West", "Vertrieb - Vertriebsstellenbetreuung Süd", "Vertrieb - Vertriebsstellenbetreuung Ost"]; public prevFiltersState: string[] = [];
public appliedFiltersContract: string[] = ["Vertrieb - Vertriebsstellenbetreuung Nord", "Vertrieb - Vertriebsstellenbetreuung West", "Vertrieb - Vertriebsstellenbetreuung Süd", "Vertrieb - Vertriebsstellenbetreuung Ost"]; public prevFiltersContract: string[] = [];
public appliedFiltersPaketType: string[] = ["Vertrieb - Vertriebsstellenbetreuung Nord", "Vertrieb - Vertriebsstellenbetreuung West", "Vertrieb - Vertriebsstellenbetreuung Süd", "Vertrieb - Vertriebsstellenbetreuung Ost"]; public prevFiltersPaketType: string[] = [];
public appliedFilterDateFrom: Date; public prevFilterDateFrom: Date;
public appliedFilterDateTo: Date; public prevFilterDateTo: Date;
public filterObj; public filterObj;
@ -71,16 +73,71 @@ export class FilterDialogComponent implements OnInit {
*/ */
constructor(public languageService: LanguageService, public dialogRef: MatDialogRef<FilterDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private dataService: DataService, private _snackBar: MatSnackBar) { constructor(public languageService: LanguageService, public dialogRef: MatDialogRef<FilterDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private dataService: DataService, private _snackBar: MatSnackBar) {
//dialogRef.beforeClosed().subscribe(() => dialogRef.close(this.dataToReturn)); //dialogRef.beforeClosed().subscribe(() => dialogRef.close(this.dataToReturn));
if(data[0].filters){
////console.log(data[0].filters.filterElement);
this.prevFilters = data[0].filters.filterElement;
}
if(data[0].userSg){
this.userSupportGroup = data[0].userSg;
}
} }
/** /**
* The function ngOnInit initialized the component by fetching all relevant data via the dataService * The function ngOnInit initialized the component by fetching all relevant data via the dataService
*/ */
ngOnInit(): void { ngOnInit(): void {
console.log(this.prevFilters);
if(this.prevFilters.length > 0){
for (const filter of this.prevFilters) {
//console.log(filter);
if(filter.column == "SupportGroup"){
//console.log(filter);
this.prevFiltersSg = filter.criteria;
}
if(filter.column == "State"){
//console.log(filter);
if(this.languageService.language == "DE"){
for (const crit of filter.criteria) {
this.prevFiltersState.push(this.dataService.getStates().find((item)=> {return item.stateNameEN == crit;}).stateNameDE);
}
}else{
this.prevFiltersState = filter.criteria;
}
}
if(filter.column == "Contract"){
//console.log(filter);
for (const crit of filter.criteria) {
this.prevFiltersContract.push(this.dataService.getContractName(crit));
}
//this.prevFiltersContract = filter.criteria;
}
if(filter.column == "PackageType"){
//console.log("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
//console.log(this.dataService.getPaketTypes());
for (const crit of filter.criteria) {
console.log(crit);
this.prevFiltersPaketType.push(this.dataService.getPaketTypeNameByID(crit));
}
console.log(this.prevFiltersPaketType);
//this.prevFiltersPaketType = filter.criteria;
}
}
}
if(this.prevFiltersSg.length == 0){
this.prevFiltersSg[0] = this.userSupportGroup;
}
this.dataService.fetchUserSupportGroup().then((res:any)=>{ this.dataService.fetchUserSupportGroup().then((res:any)=>{
this.userSupportGroup = res.name; this.userSupportGroup = res.name;
}); });
console.log(this.userSupportGroup); //console.log(this.userSupportGroup);
if(this.languageService.language == 'DE'){ if(this.languageService.language == 'DE'){
for (const state of this.dataService.getStates()) { for (const state of this.dataService.getStates()) {
this.states.push(state.stateNameDE); this.states.push(state.stateNameDE);
@ -108,55 +165,62 @@ export class FilterDialogComponent implements OnInit {
* @param event selection event from the multiselect-autocomplete-component * @param event selection event from the multiselect-autocomplete-component
*/ */
onResult(event: any) { onResult(event: any) {
console.log(event); //console.log(event);
switch (event.key) { switch (event.key) {
case 'supportGroup': case 'supportGroup':
this.supportGroupsFilter = event.data; this.supportGroupsFilter = event.data;
this.supportGroupsFilter = [...new Set(this.supportGroupsFilter)];
break; break;
case 'state': case 'state':
if(this.languageService.language == 'DE'){ if(this.languageService.language == 'DE'){
console.log(event.data); //console.log(event.data);
for (const state of event.data) { for (const state of event.data) {
if(this.dataService.getStates().find((item)=> {return item.stateNameDE == state;})){ if(this.dataService.getStates().find((item)=> {return item.stateNameDE == state;})){
this.statesFilter.push(this.dataService.getStates().find((item)=> {return item.stateNameDE == state;}).stateNameEN); this.statesFilter.push(this.dataService.getStates().find((item)=> {return item.stateNameDE == state;}).stateNameEN);
} }
console.log(this.statesFilter); // //console.log(this.statesFilter);
} }
}else{ }else{
console.log(event.data); //console.log(event.data);
for (const state of event.data) { for (const state of event.data) {
if(this.dataService.getStates().find((item)=> {return item.stateNameEN == state;})){ if(this.dataService.getStates().find((item)=> {return item.stateNameEN == state;})){
this.statesFilter.push(this.dataService.getStates().find((item)=> {return item.stateNameEN == state;}).stateNameEN); this.statesFilter.push(this.dataService.getStates().find((item)=> {return item.stateNameEN == state;}).stateNameEN);
} }
console.log(this.statesFilter); // //console.log(this.statesFilter);
} }
} }
this.statesFilter = [...new Set(this.statesFilter)];
//console.log(this.statesFilter);
break; break;
case 'contract': case 'contract':
//this.contractsFilter = event.data; //this.contractsFilter = event.data;
console.log(event.data); this.contractsFilter = [];
//console.log(event.data);
for (const contract of event.data) { for (const contract of event.data) {
if(this.dataService.getContracts().find((item)=> {return item.name == contract;})){ if(this.dataService.getContracts().find((item)=> {return item.name == contract;})){
this.contractsFilter.push(this.dataService.getContracts().find((item)=> {return item.name == contract;}).id); this.contractsFilter.push(this.dataService.getContracts().find((item)=> {return item.name == contract;}).id);
} }
console.log(this.contractsFilter);
} }
//this.contractsFilter = [...new Set(this.contractsFilter)];
//console.log(this.contractsFilter);
break; break;
case 'paketType': case 'paketType':
//this.paketTypesFilter = event.data; //this.paketTypesFilter = event.data;
console.log(event.data); this.paketTypesFilter = [];
//console.log(event.data);
for (const paketType of event.data) { for (const paketType of event.data) {
if(this.dataService.getPaketTypes().find((item)=> {return item.name == paketType;})){ if(this.dataService.getPaketTypeIdByName(paketType)){
this.paketTypesFilter.push(this.dataService.getPaketTypes().find((item)=> {return item.name == paketType;}).id); this.paketTypesFilter.push(this.dataService.getPaketTypeIdByName(paketType));
} }
console.log(this.paketTypesFilter);
} }
// this.paketTypesFilter = [...new Set(this.paketTypesFilter)];
//console.log(this.paketTypesFilter);
break; break;
default: default:
break; break;
} }
} }
/** /**
@ -194,7 +258,7 @@ export class FilterDialogComponent implements OnInit {
      "filter": "equals",       "filter": "equals",
      "criteria": this.supportGroupsFilter       "criteria": this.supportGroupsFilter
}); });
console.log(this.supportGroupsFilter); //console.log(this.supportGroupsFilter);
}else{ }else{
filterElement.push({ filterElement.push({
"column": "SupportGroup", "column": "SupportGroup",

View File

@ -1,12 +1,14 @@
<div class="chip-list-wrapper"> <div class="chip-list-wrapper">
<mat-chip-list #chipList> <mat-chip-list #chipList>
<ng-container *ngFor="let select of selectData"> <ng-container *ngFor="let select of selectData | slice:0:20; let i =index">
<mat-chip class="cardinal-colors" (click)="removeChip(select)" style="background-color: #00a79d;"> <mat-chip class="cardinal-colors" (click)="removeChip(select)" style="background-color: #00a79d;">
{{ select.item }} {{ select.item }}
<mat-icon class="mat-chip-remove">cancel</mat-icon> <mat-icon class="mat-chip-remove">cancel</mat-icon>
</mat-chip> </mat-chip>
</ng-container> </ng-container>
<mat-chip *ngIf="selectData.length>20" class="cardinal-colors" style="background-color: #00a79d;">... {{selectData.length-20}} weitere
</mat-chip>
</mat-chip-list> </mat-chip-list>
</div> </div>

View File

@ -5,7 +5,6 @@ import { Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators'; import { map, startWith } from 'rxjs/operators';
export interface ItemData { export interface ItemData {
item: string; item: string;
selected: boolean; selected: boolean;
@ -54,8 +53,6 @@ export class MultiselectAutocompleteComponent implements OnInit {
* The function ngOnInit imports the data (filter options) and maps it * The function ngOnInit imports the data (filter options) and maps it
*/ */
ngOnInit(): void { ngOnInit(): void {
this.data.forEach((item: string) => { this.data.forEach((item: string) => {
this.rawData.push({ item, selected: false }); this.rawData.push({ item, selected: false });
}); });
@ -75,12 +72,14 @@ export class MultiselectAutocompleteComponent implements OnInit {
for (const filter of this.appliedFilters) { for (const filter of this.appliedFilters) {
for (const item of this.rawData) { for (const item of this.rawData) {
if(item.item == filter){ if(item.item == filter){
console.log("MATCH"+item.item);
item.selected = true; item.selected = true;
this.toggleSelection({'item': filter, selected: false}); this.toggleSelection({'item': filter, selected: false});
} }
} }
} }
} }
console.log(this.selectData);
this.evaluateIndeterminate(); this.evaluateIndeterminate();
} }
@ -116,8 +115,8 @@ export class MultiselectAutocompleteComponent implements OnInit {
* it builds the base for many filter select option * it builds the base for many filter select option
*/ */
toggleSelection = (data: ItemData): void => { toggleSelection = (data: ItemData): void => {
console.log(data); //console.log(data);
console.log(this.selectData); //console.log(this.selectData);
data.selected = !data.selected; data.selected = !data.selected;
if (data.selected === true) { if (data.selected === true) {
this.selectData.push(data); this.selectData.push(data);
@ -146,7 +145,8 @@ export class MultiselectAutocompleteComponent implements OnInit {
* The removeChip removes a option from the selection list if the user presses the remove button on the chip list * The removeChip removes a option from the selection list if the user presses the remove button on the chip list
*/ */
removeChip = (data: ItemData): void => { removeChip = (data: ItemData): void => {
this.toggleSelection(data); let dat = {item: data.item, selected: true};
this.toggleSelection(dat);
for (const rawItem of this.rawData) { for (const rawItem of this.rawData) {
if(data.item == rawItem.item){ if(data.item == rawItem.item){
rawItem.selected = false; rawItem.selected = false;
@ -157,7 +157,7 @@ export class MultiselectAutocompleteComponent implements OnInit {
public toggleAll(): void{ public toggleAll(): void{
this.allSelected = !this.allSelected; this.allSelected = !this.allSelected;
if(this.allSelected == false){ if(this.allSelected == false){
console.log('####false'+this.allSelected); //console.log('####false'+this.allSelected);
for (const item of this.rawData) { for (const item of this.rawData) {
item.selected = false; item.selected = false;
@ -170,7 +170,7 @@ export class MultiselectAutocompleteComponent implements OnInit {
} }
this.emitAdjustedData(); this.emitAdjustedData();
}else{ }else{
console.log('####true'+this.allSelected); //console.log('####true'+this.allSelected);
for (const item of this.rawData) { for (const item of this.rawData) {
item.selected = true; item.selected = true;
@ -189,7 +189,7 @@ export class MultiselectAutocompleteComponent implements OnInit {
public showCheckBox(): void{ public showCheckBox(): void{
this.showCheckbox = true; this.showCheckbox = true;
console.log("####") //console.log("####")
} }
public hideCheckBox(): void{ public hideCheckBox(): void{
this.showCheckbox = false; this.showCheckbox = false;

View File

@ -305,9 +305,10 @@ export class NttGanttComponent implements OnInit {
* This function is triggered by the filter button. * This function is triggered by the filter button.
*/ */
openFilterDialog(){ openFilterDialog(){
console.log(this.filters);
let dialogRef = FilterDialogComponent; let dialogRef = FilterDialogComponent;
this.matDialog.open(dialogRef, this.matDialog.open(dialogRef,
{data : [], width: '50%', maxWidth: '800px'}).afterClosed().subscribe((res)=>{ {data : [{filters: this.filters, userSg: this.userSupportGroup}], width: '50%', maxWidth: '800px'}).afterClosed().subscribe((res)=>{
if(res){ if(res){
this.filters = res; this.filters = res;
this.filterEnabled = true; this.filterEnabled = true;