diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 9912137..824d66b 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -38,6 +38,7 @@ import {MomentDateModule} from '@angular/material-moment-adapter'; import {PlanTimeBarComponent} from './plan-time-bar/plan-time-bar.component'; import { RenamePresetDialogComponent } from './rename-preset-dialog/rename-preset-dialog.component'; import { DeletePresetDialogComponent } from './delete-preset-dialog/delete-preset-dialog.component'; +import { SavePresetUnderDialogComponent } from './save-preset-under-dialog/save-preset-under-dialog.component'; @NgModule({ @@ -50,7 +51,8 @@ import { DeletePresetDialogComponent } from './delete-preset-dialog/delete-prese FilterDialogComponent, PlanTimeBarComponent, RenamePresetDialogComponent, - DeletePresetDialogComponent + DeletePresetDialogComponent, + SavePresetUnderDialogComponent ], imports: [ BrowserModule, diff --git a/frontend/src/app/data.service.ts b/frontend/src/app/data.service.ts index 10c83e8..e9e1c6d 100644 --- a/frontend/src/app/data.service.ts +++ b/frontend/src/app/data.service.ts @@ -179,7 +179,7 @@ export class DataService { let user = []; let admin = []; for (const preset of res.presets) { - if(preset.presetType == "Sysdemdefault"){ + if(preset.presetType == "System"){ system.push(preset); }else{ user.push(preset); @@ -187,7 +187,7 @@ export class DataService { } presetGroups = [ { - name: 'Sysdemdefault', + name: 'System', presets: system, }, { @@ -253,6 +253,7 @@ export class DataService { * @param change the Change (the Resource) from which the date should be changed */ public async updatePreset(preset: any){ + console.log(preset); const promise = new Promise(resolve=>{ let serializableResource = {id: preset.id, definition: JSON.stringify(preset.definition)}; let strigifiedResource = JSON.stringify(serializableResource); diff --git a/frontend/src/app/ntt-gantt/ntt-gantt.component.html b/frontend/src/app/ntt-gantt/ntt-gantt.component.html index 6baf902..43920ed 100644 --- a/frontend/src/app/ntt-gantt/ntt-gantt.component.html +++ b/frontend/src/app/ntt-gantt/ntt-gantt.component.html @@ -51,8 +51,8 @@ - - + +
@@ -60,7 +60,7 @@ {{languageService.lMap.get('nttGanttFilterButton')}} filter_alt - + diff --git a/frontend/src/app/ntt-gantt/ntt-gantt.component.ts b/frontend/src/app/ntt-gantt/ntt-gantt.component.ts index bbf1bcc..b24f161 100644 --- a/frontend/src/app/ntt-gantt/ntt-gantt.component.ts +++ b/frontend/src/app/ntt-gantt/ntt-gantt.component.ts @@ -17,6 +17,7 @@ import { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition import { MAT_DATE_FORMATS } from '@angular/material/core'; import { RenamePresetDialogComponent } from '../rename-preset-dialog/rename-preset-dialog.component'; import { DeletePresetDialogComponent } from '../delete-preset-dialog/delete-preset-dialog.component'; +import { SavePresetUnderDialogComponent } from '../save-preset-under-dialog/save-preset-under-dialog.component'; export const MY_DATE_FORMATS = { parse: { @@ -161,6 +162,7 @@ export class NttGanttComponent implements OnInit { public userPreferences: {language:'', showDetails: false, view: ''}; public showSaveButton: boolean = false; public showSaveUnderButton: boolean = false; + public isUserPreset: boolean = false; /**###################################################################### Initial Loading functions ######################################################################*/ @@ -269,6 +271,12 @@ export class NttGanttComponent implements OnInit { public selectPreset(event: any){ this.showSaveButton = false; this.showSaveUnderButton = false; + + if(event.value.presetType == 'System' || event.value.presetType == 'Admin'){ + this.isUserPreset = false; + }else{ + this.isUserPreset = true; + } console.log(event); this.dataService.selectPreset(event.value).then((res)=>{ this.refreshGanttwithPresets(); @@ -331,6 +339,19 @@ export class NttGanttComponent implements OnInit { }); } + /** + * The function openFilterDialog triggers the opening of the filterDialog, recieves the results of the filterDialog and refrehses the gantt chart. + * This function is triggered by the filter button. + */ + public openSaveUnderDialog(){ + console.log(this.filters); + let dialogRef = SavePresetUnderDialogComponent; + this.matDialog.open(dialogRef, + {data : [{preset: this.selectedPreset, definition: this.filters}], width: '20%', maxWidth: '800px'}).afterClosed().subscribe((res)=>{ + this.refreshGanttwithPresets(); + }); + } + /** * The function openFilterDialog triggers the opening of the filterDialog, recieves the results of the filterDialog and refrehses the gantt chart. * This function is triggered by the filter button. @@ -351,6 +372,13 @@ export class NttGanttComponent implements OnInit { this.dataService.initPresets().then((res: any)=>{ this.presets = res.presets; this.selectedPreset = res.selectedPreset; + if(this.selectedPreset.presetType == 'User' ){ + this.isUserPreset = true; + }else{ + this.isUserPreset = false; + } + + this.presetGroups = res.presetGroups; this.filters = this.selectedPreset.definition; this.filterEnabled = true; @@ -432,6 +460,16 @@ export class NttGanttComponent implements OnInit { this.sort = null; this.sortEnabled = false; this.refreshData(); + if(this.filters !== this.selectedPreset.definition){ + if(this.isUserPreset){ + this.showSaveButton = true; + this.showSaveUnderButton = false; + }else{ + this.showSaveButton = false; + this.showSaveUnderButton = true; + } + + } } /** * The function mapRequestJSON maps the requestObject for the refreshData function, it evaluates if filters or sort parameters are set. @@ -489,9 +527,11 @@ export class NttGanttComponent implements OnInit { // console.log(res); // }); if(this.filters !== this.selectedPreset.definition){ - if(this.selectedPreset.presetType == 'Admin'){ + if(this.isUserPreset){ this.showSaveButton = true; + this.showSaveUnderButton = false; }else{ + this.showSaveButton = false; this.showSaveUnderButton = true; } diff --git a/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.css b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.html b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.html new file mode 100644 index 0000000..f0746af --- /dev/null +++ b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.html @@ -0,0 +1,10 @@ +

Als neues Preset speichern?

+ + Preset Name + + + + + + + diff --git a/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.spec.ts b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.spec.ts new file mode 100644 index 0000000..8595787 --- /dev/null +++ b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SavePresetUnderDialogComponent } from './save-preset-under-dialog.component'; + +describe('SavePresetUnderDialogComponent', () => { + let component: SavePresetUnderDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SavePresetUnderDialogComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SavePresetUnderDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.ts b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.ts new file mode 100644 index 0000000..0fd4c21 --- /dev/null +++ b/frontend/src/app/save-preset-under-dialog/save-preset-under-dialog.component.ts @@ -0,0 +1,33 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { LanguageService } from '../language.service'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { RenamePresetDialogComponent } from '../rename-preset-dialog/rename-preset-dialog.component'; +import { DataService } from '../data.service'; +import { MatSnackBar } from '@angular/material/snack-bar'; + +@Component({ + selector: 'app-save-preset-under-dialog', + templateUrl: './save-preset-under-dialog.component.html', + styleUrls: ['./save-preset-under-dialog.component.css'] +}) +export class SavePresetUnderDialogComponent implements OnInit { + public preset; + public newName: string; + public definition: any; + + constructor(public languageService: LanguageService, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, private dataService: DataService, private _snackBar: MatSnackBar) { + this.preset = data[0].preset; + this.newName = 'Copy of ' + this.preset.name; + this.definition = data[0].definition; + + } + + ngOnInit(): void { + } + + public savePreset(){ + this.dataService.savePreset({name: this.newName, definition: this.definition}); + } + +} + diff --git a/frontend/src/index.html b/frontend/src/index.html index 219bc8b..6f30418 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -2,7 +2,7 @@ - SyncfusionGantt + Change Calender