main
Manuel Tauber 2024-03-22 14:33:21 +01:00
parent 24e484e240
commit 11da71c2bf
7 changed files with 141 additions and 77 deletions

View File

@ -58,10 +58,10 @@ export class DataService {
this.fetchContracts().then((res: any [])=>{ this.fetchContracts().then((res: any [])=>{
this.contracts = res; this.contracts = res;
}); });
this.fetchPaketTypes().then((res: any [])=>{ // this.fetchPaketTypes().then((res: any [])=>{
this.paketTypes = res; // this.paketTypes = res;
// console.log(res); // // console.log(res);
}); // });
this.fetchUserSupportGroup().then((res: any)=>{ this.fetchUserSupportGroup().then((res: any)=>{
this.userSupportGroup = res.name; this.userSupportGroup = res.name;
console.log(this.userSupportGroup); console.log(this.userSupportGroup);
@ -431,23 +431,23 @@ export class DataService {
return promise; return promise;
} }
/** // /**
* The function fetchPaketTypes fetches an array of all paketTypes // * The function fetchPaketTypes fetches an array of all paketTypes
* @returns promise for the fetched paketTypes array // * @returns promise for the fetched paketTypes array
*/ // */
public async fetchPaketTypes(){ // public async fetchPaketTypes(){
const promise = new Promise(resolve=>{ // const promise = new Promise(resolve=>{
let res : any[] = []; // let res : any[] = [];
this.http.get('http://localhost:8080/api/getPackageTypes') // this.http.get('http://localhost:8080/api/getPackageTypes')
.subscribe((response: any)=>{ // .subscribe((response: any)=>{
response.forEach(paketType => { // response.forEach(paketType => {
res.push(paketType) // res.push(paketType)
}); // });
resolve(res); // resolve(res);
}) // })
}) // })
return promise; // return promise;
} // }
/** /**
* The function fetchPaketTypes fetches the supportGroup of the current user * The function fetchPaketTypes fetches the supportGroup of the current user

View File

@ -18,3 +18,11 @@ font-family: Roboto;
flex-direction: row; flex-direction: row;
justify-content: flex-end; justify-content: flex-end;
} }
.dot-badge {
background-color: #00a79d;
color: #00a79d;
width: 10px; /* Breite des Punkts */
height: 10px; /* Höhe des Punkts */
border-radius: 50%; /* Rundung des Punkts */
}

View File

@ -4,18 +4,19 @@
<mat-accordion> <mat-accordion>
<mat-expansion-panel> <mat-expansion-panel>
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>{{this.languageService.lMap.get('filterDialogShortDesc')}}</mat-panel-title>
<mat-panel-title>{{this.languageService.lMap.get('filterDialogShortDesc')}} <mat-badge *ngIf="TextEnabled" [matBadge]="''" class="dot-badge"></mat-badge></mat-panel-title>
<mat-panel-description>{{this.languageService.lMap.get('filterDialogShortDescText')}}</mat-panel-description> <mat-panel-description>{{this.languageService.lMap.get('filterDialogShortDescText')}}</mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<mat-form-field appearance="fill" style="width: 100%;" > <mat-form-field appearance="fill" style="width: 100%;" >
<mat-label>{{this.languageService.lMap.get('filterDilogSearchText')}}</mat-label> <mat-label>{{this.languageService.lMap.get('filterDilogSearchText')}}</mat-label>
<input matInput type="text" [(ngModel)]="criteria" > <input matInput (input)="this.TextEnabled = this.criteria !== '';" type="text" [(ngModel)]="criteria" >
</mat-form-field> </mat-form-field>
</mat-expansion-panel> </mat-expansion-panel>
<mat-expansion-panel> <mat-expansion-panel>
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>{{this.languageService.lMap.get('filterDilogSg')}}</mat-panel-title> <mat-panel-title>{{this.languageService.lMap.get('filterDilogSg')}}<mat-badge *ngIf="SgEnabled" [matBadge]="''" class="dot-badge"></mat-badge></mat-panel-title>
<mat-panel-description>{{this.languageService.lMap.get('filterDilogSgText')}}</mat-panel-description> <mat-panel-description>{{this.languageService.lMap.get('filterDilogSgText')}}</mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<multiselect-autocomplete <multiselect-autocomplete
@ -29,7 +30,7 @@
<mat-expansion-panel> <mat-expansion-panel>
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>{{this.languageService.lMap.get('filterDilogState')}}</mat-panel-title> <mat-panel-title>{{this.languageService.lMap.get('filterDilogState')}}<mat-badge *ngIf="StateEnabled" [matBadge]="''" class="dot-badge"></mat-badge></mat-panel-title>
<mat-panel-description>{{this.languageService.lMap.get('filterDilogStateText')}}</mat-panel-description> <mat-panel-description>{{this.languageService.lMap.get('filterDilogStateText')}}</mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<multiselect-autocomplete <multiselect-autocomplete
@ -43,7 +44,7 @@
<mat-expansion-panel> <mat-expansion-panel>
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>{{this.languageService.lMap.get('filterDilogContract')}}</mat-panel-title> <mat-panel-title>{{this.languageService.lMap.get('filterDilogContract')}}<mat-badge *ngIf="ContractEnabled" [matBadge]="''" class="dot-badge"></mat-badge></mat-panel-title>
<mat-panel-description>{{this.languageService.lMap.get('filterDilogContractText')}}</mat-panel-description> <mat-panel-description>{{this.languageService.lMap.get('filterDilogContractText')}}</mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<multiselect-autocomplete <multiselect-autocomplete
@ -71,12 +72,12 @@
<mat-expansion-panel> <mat-expansion-panel>
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>{{this.languageService.lMap.get('filterDilogDate')}}</mat-panel-title> <mat-panel-title>{{this.languageService.lMap.get('filterDilogDate')}}<mat-badge *ngIf="DateEnabled" [matBadge]="''" class="dot-badge"></mat-badge></mat-panel-title>
<mat-panel-description>{{this.languageService.lMap.get('filterDilogDateText')}}</mat-panel-description> <mat-panel-description>{{this.languageService.lMap.get('filterDilogDateText')}}</mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<mat-form-field appearance="fill" style="width: 48%;"> <mat-form-field appearance="fill" style="width: 48%;">
<mat-label>{{this.languageService.lMap.get('filterDilogSearchFrom')}}</mat-label> <mat-label>{{this.languageService.lMap.get('filterDilogSearchFrom')}}</mat-label>
<input matInput [matDatepicker]="picker1" [(ngModel)]="filterStartDate"> <input (input)="this.onDateSelect()" matInput [matDatepicker]="picker1" [(ngModel)]="filterStartDate">
<mat-hint>MM/DD/YYYY</mat-hint> <mat-hint>MM/DD/YYYY</mat-hint>
<mat-datepicker-toggle matIconSuffix [for]="picker1"></mat-datepicker-toggle> <mat-datepicker-toggle matIconSuffix [for]="picker1"></mat-datepicker-toggle>
<mat-datepicker #picker1></mat-datepicker> <mat-datepicker #picker1></mat-datepicker>
@ -84,7 +85,7 @@
- -
<mat-form-field appearance="fill" style="width: 48%;"> <mat-form-field appearance="fill" style="width: 48%;">
<mat-label>{{this.languageService.lMap.get('filterDilogSearchTo')}}</mat-label> <mat-label>{{this.languageService.lMap.get('filterDilogSearchTo')}}</mat-label>
<input matInput [matDatepicker]="picker2" [(ngModel)]="filterEndDate"> <input (input)="this.onDateSelect()" matInput [matDatepicker]="picker2" [(ngModel)]="filterEndDate">
<mat-hint>MM/DD/YYYY</mat-hint> <mat-hint>MM/DD/YYYY</mat-hint>
<mat-datepicker-toggle matIconSuffix [for]="picker2"></mat-datepicker-toggle> <mat-datepicker-toggle matIconSuffix [for]="picker2"></mat-datepicker-toggle>
<mat-datepicker #picker2></mat-datepicker> <mat-datepicker #picker2></mat-datepicker>
@ -93,11 +94,11 @@
<mat-expansion-panel> <mat-expansion-panel>
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>Intervall</mat-panel-title> <mat-panel-title>Intervall<mat-badge *ngIf="IntervallEnabled" [matBadge]="''" class="dot-badge"></mat-badge></mat-panel-title>
<mat-panel-description>Pakete mit Intervall > ein Jahr</mat-panel-description> <mat-panel-description>Pakete mit Intervall > ein Jahr</mat-panel-description>
</mat-expansion-panel-header> </mat-expansion-panel-header>
<mat-checkbox [(ngModel)]="intervallFilter">Zeige nur Pakete mit Intervall > 1 Jahr!</mat-checkbox> <mat-checkbox (input)="this.IntervallEnabled = intervallFilter;" [(ngModel)]="intervallFilter">Zeige nur Pakete mit Intervall > 1 Jahr!</mat-checkbox>
</mat-expansion-panel> </mat-expansion-panel>
</mat-accordion> </mat-accordion>

View File

@ -64,8 +64,19 @@ export class FilterDialogComponent implements OnInit {
public prevFilterDateTo: Date; public prevFilterDateTo: Date;
public prevIntervallFilter: boolean; public prevIntervallFilter: boolean;
public TextEnabled: boolean = false;
public SgEnabled: boolean = false;
public StateEnabled: boolean = false;
public ContractEnabled: boolean = false;
public FiltersSgEnabled: boolean = false;
public PaketTypeEnabled: boolean = false;
public DateEnabled: boolean = false;
public IntervallEnabled: boolean = false;
public filterObj; public filterObj;
/** /**
* The constructor injects required Dependencies and sets default values for logic and ui * The constructor injects required Dependencies and sets default values for logic and ui
* @param languageService representation of the LanguageService * @param languageService representation of the LanguageService
@ -102,9 +113,11 @@ export class FilterDialogComponent implements OnInit {
console.log("\nPREVSUPPORTGROUPSFILTER") console.log("\nPREVSUPPORTGROUPSFILTER")
console.log(filter); console.log(filter);
this.prevFiltersSg = filter.criteria; this.prevFiltersSg = filter.criteria;
this.FiltersSgEnabled = false;
} }
if(filter.column == "State"){ if(filter.column == "State"){
this.StateEnabled = true;
console.log("\nStatesfilter prev") console.log("\nStatesfilter prev")
console.log(filter); console.log(filter);
if(this.languageService.language == "DE"){ if(this.languageService.language == "DE"){
@ -117,6 +130,7 @@ export class FilterDialogComponent implements OnInit {
} }
if(filter.column == "Contract"){ if(filter.column == "Contract"){
this.ContractEnabled = true;
//console.log(filter); //console.log(filter);
for (const crit of filter.criteria) { for (const crit of filter.criteria) {
this.prevFiltersContract.push(this.dataService.getContractName(crit)); this.prevFiltersContract.push(this.dataService.getContractName(crit));
@ -124,27 +138,30 @@ export class FilterDialogComponent implements OnInit {
//this.prevFiltersContract = filter.criteria; //this.prevFiltersContract = filter.criteria;
} }
if(filter.column == "PackageType"){ // if(filter.column == "PackageType"){
//console.log("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); // //console.log("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
//console.log(this.dataService.getPaketTypes()); // //console.log(this.dataService.getPaketTypes());
for (const crit of filter.criteria) { // for (const crit of filter.criteria) {
//console.log(crit); // //console.log(crit);
this.prevFiltersPaketType.push(this.dataService.getPaketTypeNameByID(crit)); // this.prevFiltersPaketType.push(this.dataService.getPaketTypeNameByID(crit));
} // }
//console.log(this.prevFiltersPaketType); // //console.log(this.prevFiltersPaketType);
//this.prevFiltersPaketType = filter.criteria; // //this.prevFiltersPaketType = filter.criteria;
} // }
if(filter.column == "D2"){ if(filter.column == "D2"){
this.DateEnabled = true;
this.filterStartDate = filter.criteria[0]; this.filterStartDate = filter.criteria[0];
this.filterEndDate = filter.criteria[1]; this.filterEndDate = filter.criteria[1];
} }
if(filter.column == "ResourceName"){ if(filter.column == "ResourceName"){
this.TextEnabled = true;
this.criteria = filter.criteria[0]; this.criteria = filter.criteria[0];
} }
if(filter.column == "ASF_WI_HighestIntervall"){ if(filter.column == "ASF_WI_HighestIntervall"){
this.IntervallEnabled = true;
this.intervallFilter = true; this.intervallFilter = true;
} }
} }
@ -194,8 +211,12 @@ export class FilterDialogComponent implements OnInit {
this.supportGroupsFilter = [...new Set(this.supportGroupsFilter)]; this.supportGroupsFilter = [...new Set(this.supportGroupsFilter)];
break; break;
case 'state': case 'state':
// console.log("\nEvent DATA") if(event.data[0]){
// console.log(event); this.StateEnabled = true;
}else{
this.StateEnabled = false;
}
this.statesFilter = []; this.statesFilter = [];
if(this.languageService.language == 'DE'){ if(this.languageService.language == 'DE'){
// console.log(event.data); // console.log(event.data);
@ -215,14 +236,17 @@ export class FilterDialogComponent implements OnInit {
} }
} }
this.statesFilter = [...new Set(this.statesFilter)]; this.statesFilter = [...new Set(this.statesFilter)];
// if(event.data.length() == 0){
// this.statesFilter = [];
// }
// console.log("\nRESULT Statesfilter"); // console.log("\nRESULT Statesfilter");
// console.log(this.statesFilter); // console.log(this.statesFilter);
break; break;
case 'contract': case 'contract':
if(event.data[0]){
this.ContractEnabled = true;
}else{
this.ContractEnabled = false;
}
//this.contractsFilter = event.data; //this.contractsFilter = event.data;
this.contractsFilter = []; this.contractsFilter = [];
//console.log(event.data); //console.log(event.data);
@ -235,24 +259,35 @@ export class FilterDialogComponent implements OnInit {
//this.contractsFilter = [...new Set(this.contractsFilter)]; //this.contractsFilter = [...new Set(this.contractsFilter)];
//console.log(this.contractsFilter); //console.log(this.contractsFilter);
break; break;
case 'paketType': // case 'paketType':
//this.paketTypesFilter = event.data; // //this.paketTypesFilter = event.data;
this.paketTypesFilter = []; // this.paketTypesFilter = [];
//console.log(event.data); // //console.log(event.data);
for (const paketType of event.data) { // for (const paketType of event.data) {
if(this.dataService.getPaketTypeIdByName(paketType)){ // if(this.dataService.getPaketTypeIdByName(paketType)){
this.paketTypesFilter.push(this.dataService.getPaketTypeIdByName(paketType)); // this.paketTypesFilter.push(this.dataService.getPaketTypeIdByName(paketType));
} // }
} // }
// this.paketTypesFilter = [...new Set(this.paketTypesFilter)]; // // this.paketTypesFilter = [...new Set(this.paketTypesFilter)];
//console.log(this.paketTypesFilter); // //console.log(this.paketTypesFilter);
break; // break;
default: default:
break; break;
} }
} }
public onDateSelect(){
console.log("################################")
if(this.filterStartDate && this.filterEndDate){
this.DateEnabled = true;
}else{
this.DateEnabled = false;
}
}
/** /**
* The function mapFilter builds a filterElement out of all the selected filters, delivers it back and closes the dialog * The function mapFilter builds a filterElement out of all the selected filters, delivers it back and closes the dialog
*/ */

View File

@ -136,6 +136,13 @@
background-color: #ef6c00; background-color: #ef6c00;
} }
.dot-badge {
background-color: #00a79d;
color: #00a79d;
width: 15px; /* Breite des Punkts */
height: 15px; /* Höhe des Punkts */
border-radius: 50%; /* Rundung des Punkts */
}
/* ::ng-deep .mat-calendar{ /* ::ng-deep .mat-calendar{
background: white; background: white;

View File

@ -61,9 +61,11 @@
</div> </div>
<div *ngIf="!errorService.rsso && !rssoInit" class="filterContainer"> <div *ngIf="!errorService.rsso && !rssoInit" class="filterContainer">
<button matBadge="1" matBadgeColor="warn" mat-raised-button class="filterButton" aria-label="Filtern" (click)="openFilterDialog()"> <button mat-raised-button class="filterButton" aria-label="Filtern" (click)="openFilterDialog()">
{{languageService.lMap.get('nttGanttFilterButton')}} <mat-icon style="color: #00a79d;">filter_alt</mat-icon> {{languageService.lMap.get('nttGanttFilterButton')}} <mat-icon style="color: #00a79d;">filter_alt</mat-icon>
</button> </button>
<mat-badge *ngIf="filterBadge" [matBadge]="''" class="dot-badge"></mat-badge>
<button *ngIf="showSaveButton" mat-raised-button (click)="updatePreset()">Speichern</button> <button *ngIf="showSaveButton" mat-raised-button (click)="updatePreset()">Speichern</button>
<button *ngIf="showSaveUnderButton" mat-raised-button (click)="openSaveUnderDialog()" >Speichern unter</button> <button *ngIf="showSaveUnderButton" mat-raised-button (click)="openSaveUnderDialog()" >Speichern unter</button>
<button [disabled]="!filterEnabled" mat-icon-button aria-label="clear Filters and Sort" class="clearFilter" (click)="clearFilter()"> <button [disabled]="!filterEnabled" mat-icon-button aria-label="clear Filters and Sort" class="clearFilter" (click)="clearFilter()">

View File

@ -174,6 +174,7 @@ export class NttGanttComponent implements OnInit {
public rssoInit: boolean = true; public rssoInit: boolean = true;
public showInitPresetsError: boolean = false; public showInitPresetsError: boolean = false;
public filterBadge: boolean = false;
/**###################################################################### Initial Loading functions ######################################################################*/ /**###################################################################### Initial Loading functions ######################################################################*/
@ -492,6 +493,7 @@ export class NttGanttComponent implements OnInit {
this.filterEnabled = false; this.filterEnabled = false;
this.sort = null; this.sort = null;
this.sortEnabled = false; this.sortEnabled = false;
this.filterBadge = false;
this.refreshData(); this.refreshData();
if(this.filters !== this.selectedPreset.definition){ if(this.filters !== this.selectedPreset.definition){
if(this.isUserPreset){ if(this.isUserPreset){
@ -589,7 +591,16 @@ export class NttGanttComponent implements OnInit {
this.showSaveButton = false; this.showSaveButton = false;
this.showSaveUnderButton = true; this.showSaveUnderButton = true;
} }
}
if(this.filters){
if(this.filters.filterElement){
if(this.filters.filterElement[1]){
this.filterBadge = true;
}else{
this.filterBadge = false;
}
}
} }
this.refreshData(); this.refreshData();
} }
@ -826,46 +837,46 @@ export class NttGanttComponent implements OnInit {
if(args.data.taskData.TaskID.includes("D2")){ if(args.data.taskData.TaskID.includes("D2")){
console.log(args.data.taskData.resources[0]); // console.log(args.data.taskData.resources[0]);
if (args.data.taskData.resources[0].state == 0 ) { if (args.data.taskData.resources[0].state == 0 ) {
args.milestoneColor = "#f83200"; //red args.milestoneColor = "#f83200"; //red
console.log("red"); // console.log("red");
} }
if (args.data.taskData.resources[0].state == 1 ) { if (args.data.taskData.resources[0].state == 1 ) {
args.milestoneColor = "#f98700"; //orange args.milestoneColor = "#f98700"; //orange
console.log("orange"); // console.log("orange");
} }
if (args.data.taskData.resources[0].state == 3 ) { if (args.data.taskData.resources[0].state == 3 ) {
args.milestoneColor = "#ff9248"; //light orange args.milestoneColor = "#ff9248"; //light orange
console.log("light orange"); // console.log("light orange");
} }
if (args.data.taskData.resources[0].state >= 6 ) { if (args.data.taskData.resources[0].state >= 6 ) {
args.milestoneColor = "#ffff00"; //yellow args.milestoneColor = "#ffff00"; //yellow
console.log("yellow"); // console.log("yellow");
} }
if (args.data.taskData.resources[0].state == 7 ) { if (args.data.taskData.resources[0].state == 7 ) {
args.milestoneColor = "#ffff00"; //yellow args.milestoneColor = "#ffff00"; //yellow
console.log("yellow"); // // console.log("yellow");
} }
if (args.data.taskData.resources[0].state == 10 && args.data.taskData.resources[0].statusReason != "") { if (args.data.taskData.resources[0].state == 10 && args.data.taskData.resources[0].statusReason != "") {
args.milestoneColor = "#32CD32"; //lightgreen args.milestoneColor = "#32CD32"; //lightgreen
console.log("lightgreen"); // console.log("lightgreen");
} }
if (args.data.taskData.resources[0].state == 10 ) { if (args.data.taskData.resources[0].state == 10 ) {
args.milestoneColor = "#008B45"; //lightgreen args.milestoneColor = "#008B45"; //lightgreen
console.log("lightgreen"); // console.log("lightgreen");
} }
if (args.data.taskData.resources[0].state == 11 ) { if (args.data.taskData.resources[0].state == 11 ) {
args.milestoneColor = "#ffffff"; //white args.milestoneColor = "#ffffff"; //white
console.log("white"); // console.log("white");
} }
console.log("\n###############"); // console.log("\n###############");
console.log("\nisFixed:"+args.data.taskData.isFixed); // console.log("\nisFixed:"+args.data.taskData.isFixed);
console.log("\nArgs:", args); // console.log("\nArgs:", args);
console.log("\nBorder",args.taskbarElement.children[1].classList) // console.log("\nBorder",args.taskbarElement.children[1].classList)
console.log("\nisRes: ", args.data.taskData.isRes); // console.log("\nisRes: ", args.data.taskData.isRes);
console.log("\nisD2", args.data.taskData.TaskID.includes("D2")); // console.log("\nisD2", args.data.taskData.TaskID.includes("D2"));
console.log("\nMilestone Color ready:",args.milestoneColor); // console.log("\nMilestone Color ready:",args.milestoneColor);
} }
@ -907,7 +918,7 @@ export class NttGanttComponent implements OnInit {
if(res.ok == false){ if(res.ok == false){
this._snackBar.open("Änderung fehlegeschlagen, bitte erneut versuchen", 'Schließen', {duration: 10000,horizontalPosition: this.horizontalPosition, verticalPosition: this.verticalPosition, panelClass: ['red-snackbar']}); this._snackBar.open("Änderung fehlegeschlagen, bitte erneut versuchen", 'Schließen', {duration: 10000,horizontalPosition: this.horizontalPosition, verticalPosition: this.verticalPosition, panelClass: ['red-snackbar']});
}else{ }else{
console.log(res); // console.log(res);
this._snackBar.open("Änderung erfolgreich, Neues Datum: "+res.d2.slice(0,-14), 'Schließen', {duration: 3000, horizontalPosition: this.horizontalPosition, verticalPosition: this.verticalPosition, panelClass: ['green-snackbar']}); this._snackBar.open("Änderung erfolgreich, Neues Datum: "+res.d2.slice(0,-14), 'Schließen', {duration: 3000, horizontalPosition: this.horizontalPosition, verticalPosition: this.verticalPosition, panelClass: ['green-snackbar']});
this.plantimeComponent.fetchPlanTimes(); this.plantimeComponent.fetchPlanTimes();
let elem = document.querySelector( let elem = document.querySelector(
@ -958,7 +969,7 @@ export class NttGanttComponent implements OnInit {
* @param args event arguments from the syncfusion gantt chart. * @param args event arguments from the syncfusion gantt chart.
*/ */
public dataBound(args: any) { public dataBound(args: any) {
console.log(args); // console.log(args);
this.spin = false; this.spin = false;
if(this.sortEnabled && this.sortSelectorName){ if(this.sortEnabled && this.sortSelectorName){
this.selectSortedColumn(this.sortSelectorName); this.selectSortedColumn(this.sortSelectorName);