intervalFilter/DONE

main
Manuel Tauber 2024-01-18 15:48:14 +01:00
parent 900f038eb4
commit df704a9820
3 changed files with 63 additions and 26 deletions

View File

@ -102,6 +102,8 @@ public class Filter {
var column = current_filter.getColumn(); var column = current_filter.getColumn();
var criterias = current_filter.getCriteria(); var criterias = current_filter.getCriteria();
if (column.isEmpty() || criterias.length <= 0) { if (column.isEmpty() || criterias.length <= 0) {
throw new ValidationError("Fields inside filter empty"); throw new ValidationError("Fields inside filter empty");
} }
@ -111,33 +113,45 @@ public class Filter {
var dateQualifier = constructDateQualifier(current_filter, column, query, api); var dateQualifier = constructDateQualifier(current_filter, column, query, api);
qualifier = "(" + dateQualifier + ")"; qualifier = "(" + dateQualifier + ")";
} else { } else {
column = api.getFieldDatabaseName(query.getFormName(), query.getFieldId(column)); if(column.equals("ASF_WI_HighestIntervall") ){
Integer crit = Integer.parseInt(current_filter.getCriteria()[0]);
var inner_filter = "\'" + column + "\' "; System.out.println("\n VORHER: "+qualifier);
var inner_concat = " OR "; qualifier +="(" + "'ASF_WI_HighestIntervall'"+ ">"+ crit + ")";
var inner_criteria_prefix = ""; System.out.println("\n NACHER: "+qualifier);
switch (current_filter.getFilter()) {
case "equals":
inner_filter += "= ";
break;
case "contains":
inner_filter += "LIKE ";
inner_concat = " AND ";
inner_criteria_prefix = "%";
break;
default:
throw new ValidationError("Invalid inner filter argument");
} }
else{
column = api.getFieldDatabaseName(query.getFormName(), query.getFieldId(column));
for (int j = 0; j < criterias.length; j++) { var inner_filter = "\'" + column + "\' ";
criterias[j] = inner_criteria_prefix + criterias[j] + inner_criteria_prefix; var inner_concat = " OR ";
inner_qualifier += "(" + inner_filter + "\"" + criterias[j] + "\")"; var inner_criteria_prefix = "";
if (j < criterias.length - 1) {
inner_qualifier += inner_concat; switch (current_filter.getFilter()) {
case "equals":
inner_filter += "= ";
break;
case ">":
inner_filter += ">";
break;
case "contains":
inner_filter += "LIKE ";
inner_concat = " AND ";
inner_criteria_prefix = "%";
break;
default:
throw new ValidationError("Invalid inner filter argument");
} }
for (int j = 0; j < criterias.length; j++) {
criterias[j] = inner_criteria_prefix + criterias[j] + inner_criteria_prefix;
inner_qualifier += "(" + inner_filter + "\"" + criterias[j] + "\")";
if (j < criterias.length - 1) {
inner_qualifier += inner_concat;
}
}
qualifier += "(" + inner_qualifier + ")";
} }
qualifier += "(" + inner_qualifier + ")";
} }
if (i < filterElement.size() - 1) { if (i < filterElement.size() - 1) {

View File

@ -90,6 +90,15 @@
<mat-datepicker #picker2></mat-datepicker> <mat-datepicker #picker2></mat-datepicker>
</mat-form-field> </mat-form-field>
</mat-expansion-panel> </mat-expansion-panel>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>Intervall</mat-panel-title>
<mat-panel-description>Pakete mit Intervall > ein Jahr</mat-panel-description>
</mat-expansion-panel-header>
<mat-checkbox [(ngModel)]="intervallFilter">Zeige nur Pakete mit Intervall > 1 Jahr!</mat-checkbox>
</mat-expansion-panel>
</mat-accordion> </mat-accordion>
<!-- <mat-form-field appearance="fill" style="width: 100%;" > <!-- <mat-form-field appearance="fill" style="width: 100%;" >

View File

@ -39,8 +39,7 @@ export class FilterDialogComponent implements OnInit {
public states: string[] = []; public states: string[] = [];
public contracts: string[] = []; public contracts: string[] = [];
public userSupportGroup: string; public userSupportGroup: string;
public filterLabels: string[] = [];
public prevFilters: any[]=[];
public criteria: string; public criteria: string;
public filterStartDate: Date; public filterStartDate: Date;
@ -52,7 +51,9 @@ export class FilterDialogComponent implements OnInit {
public contractsFilter = []; public contractsFilter = [];
public textFilter = []; public textFilter = [];
public dateFilter = []; public dateFilter = [];
public filterLabels: string[] = []; public intervallFilter: boolean;
public prevFilters: any[]=[];
public prevFilterText: string; public prevFilterText: string;
public prevFiltersSg: string[] = []; public prevFiltersSg: string[] = [];
@ -61,6 +62,7 @@ export class FilterDialogComponent implements OnInit {
public prevFiltersPaketType: string[] = []; public prevFiltersPaketType: string[] = [];
public prevFilterDateFrom: Date; public prevFilterDateFrom: Date;
public prevFilterDateTo: Date; public prevFilterDateTo: Date;
public prevIntervallFilter: boolean;
public filterObj; public filterObj;
@ -135,6 +137,10 @@ export class FilterDialogComponent implements OnInit {
if(filter.column == "ResourceName"){ if(filter.column == "ResourceName"){
this.criteria = filter.criteria[0]; this.criteria = filter.criteria[0];
} }
if(filter.column == "Intervall"){
this.intervallFilter = filter.criteria[0];
}
} }
} }
@ -291,6 +297,14 @@ export class FilterDialogComponent implements OnInit {
}); });
} }
if(this.intervallFilter){
filterElement.push({
"column": "ASF_WI_HighestIntervall",
      "filter": ">",
      "criteria": [365]
});
}
let filter = {filterElement: filterElement}; let filter = {filterElement: filterElement};
//console.log(filter); //console.log(filter);
this.dialogRef.close(filter); this.dialogRef.close(filter);