diff --git a/package-lock.json b/package-lock.json index f0a6bb7..5920bfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2785,6 +2785,11 @@ } } }, + "date-fns": { + "version": "2.0.0-alpha.25", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.0.0-alpha.25.tgz", + "integrity": "sha512-iQzJkHF0L4wah9Ae9PkvwemwFz6qmRLuNZcghmvf2t+ptLs1qXzONLiGtjmPQzL6+JpC01JjlTopY2AEy4NFAg==" + }, "date-format": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", diff --git a/package.json b/package.json index 291f2f7..225fb38 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@auth0/angular-jwt": "^2.0.0", "@types/jquery": "^3.3.22", "core-js": "^2.5.4", + "date-fns": "^2.0.0-alpha.25", "jquery": "^3.3.1", "rxjs": "~6.3.3", "zone.js": "~0.8.26" diff --git a/src/app/auth/auth/auth.component.html b/src/app/auth/auth/auth.component.html index 1c29afe..1cbf23b 100644 --- a/src/app/auth/auth/auth.component.html +++ b/src/app/auth/auth/auth.component.html @@ -2,22 +2,22 @@

-
+ WN GÜLBABA Bejelentkezés -
+

- +
- +
diff --git a/src/app/auth/role-guard.service.ts b/src/app/auth/role-guard.service.ts index da1ca6e..be16047 100644 --- a/src/app/auth/role-guard.service.ts +++ b/src/app/auth/role-guard.service.ts @@ -26,6 +26,8 @@ export class RoleGuardService{ new RegExp("/hiba/megjelenites/[\\d]+", "i"), new RegExp("/beallitasok", "i"), new RegExp("/karbantartas/(idoszeru|teljes)-lista", "i"), + new RegExp("/karbantartas/naptar", "i"), + new RegExp("/karbantartas/naptar/[\\d]+", "i"), ], 'projektvezeto': [ new RegExp("/hiba/lista", "i"), @@ -38,6 +40,8 @@ export class RoleGuardService{ new RegExp("/riportok/szures", "i"), new RegExp("/riportok/havi-zaras", "i"), new RegExp("/karbantartas/(idoszeru|teljes)-lista", "i"), + new RegExp("/karbantartas/naptar", "i"), + new RegExp("/karbantartas/naptar/[\\d]+", "i"), new RegExp("/karbantartas/szerkesztes", "i"), ], diff --git a/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.css b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.html b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.html new file mode 100644 index 0000000..5138673 --- /dev/null +++ b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.html @@ -0,0 +1,8 @@ +
+

Karbantartási naptár

+
+
+ +
+
+
diff --git a/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.spec.ts b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.spec.ts new file mode 100644 index 0000000..101a579 --- /dev/null +++ b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MaintenanceCalendarComponent } from './maintenance-calendar.component'; + +describe('MaintenanceCalendarComponent', () => { + let component: MaintenanceCalendarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MaintenanceCalendarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MaintenanceCalendarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.ts b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.ts new file mode 100644 index 0000000..a31bcfe --- /dev/null +++ b/src/app/maintenance/maintenance-calendar/maintenance-calendar.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit } from '@angular/core'; +import { DeviceGroup } from "../shared/device-group"; +import { MaintenanceManagerService } from "../maintenance-manager.service"; +import { Title } from "@angular/platform-browser"; +import { ActivatedRoute } from "@angular/router"; + +@Component({ + selector: 'app-maintenance-calendar', + templateUrl: './maintenance-calendar.component.html', + styleUrls: ['./maintenance-calendar.component.css'] +}) +export class MaintenanceCalendarComponent implements OnInit { + + public year: number = 2018; + + constructor(private maintenanceManager: MaintenanceManagerService, + private titleService: Title, + private route: ActivatedRoute) { + } + + ngOnInit() { + this.titleService.setTitle('Webnapló : Éves karbantartási feladatok'); + this.route.params.subscribe((params: { + year: number + }) => { + this.year = params.year ? params.year : new Date().getFullYear(); + }); + this.route.data.subscribe((data: { + maintenances: Array, + }) => { + this.maintenances = data.maintenances; + }); + } + + get maintenances(): Array { + return this.maintenanceManager.maintenances; + } + + set maintenances(maintenances: Array) { + this.maintenanceManager.maintenances = maintenances; + } + +} diff --git a/src/app/maintenance/maintenance-manager.service.ts b/src/app/maintenance/maintenance-manager.service.ts index daf2d78..1e14b56 100644 --- a/src/app/maintenance/maintenance-manager.service.ts +++ b/src/app/maintenance/maintenance-manager.service.ts @@ -1,21 +1,28 @@ import { Injectable } from '@angular/core'; import { Observable } from "rxjs"; -import { HttpClient, HttpHeaders, HttpRequest } from "@angular/common/http"; +import { HttpClient } from "@angular/common/http"; import { environment } from "../../environments/environment"; -import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from "@angular/router"; +import { ActivatedRouteSnapshot, RouterStateSnapshot } from "@angular/router"; import { DeviceGroup } from "./shared/device-group"; import { MaintenanceEntity } from "./shared/maintenance-entity"; @Injectable() export class MaintenanceManagerService { - private apiEndpoint = environment.apiUrl + '/api/maintenance'; - private apiEndpointUpcoming = environment.apiUrl + '/api/maintenance/upcoming'; + static apiEndpoint = environment.apiUrl + '/api/maintenance'; + static apiEndpointUpcoming = environment.apiUrl + '/api/maintenance/upcoming'; + static apiEndpointCalendar = environment.apiUrl + '/api/maintenance/calendar'; + + static endpointMap = { + all: MaintenanceManagerService.apiEndpoint, + upcoming: MaintenanceManagerService.apiEndpointUpcoming, + calendar: MaintenanceManagerService.apiEndpointCalendar, + }; + private cachedMaintenances: Array = []; - constructor(private httpClient: HttpClient) { - } + constructor(private httpClient: HttpClient) {} /** * Resolver for the route @@ -25,10 +32,9 @@ export class MaintenanceManagerService { * @returns {Promise>} */ resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise> { - let filter = route.data.filter ? route.data.filter : 'upcoming'; - let url = filter == 'upcoming' - ? this.apiEndpointUpcoming - : this.apiEndpoint; + let year = route.params.year ? route.params.year : new Date().getFullYear(); + let filter = route.data.filter ? route.data.filter : 'all'; + let url = `${MaintenanceManagerService.endpointMap[filter]}/${year}`; return this.list(url).toPromise(); } @@ -42,11 +48,11 @@ export class MaintenanceManagerService { } public get(hash: string): Observable { - return this.httpClient.get(`${this.apiEndpoint}/${hash}`); + return this.httpClient.get(`${MaintenanceManagerService.apiEndpoint}/${hash}`); } public update(maintenance: MaintenanceEntity) { - return this.httpClient.put(`${this.apiEndpoint}/${maintenance.hash}`, maintenance); + return this.httpClient.put(`${MaintenanceManagerService.apiEndpoint}/${maintenance.hash}`, maintenance); } get maintenances(): Array { @@ -59,10 +65,8 @@ export class MaintenanceManagerService { public setWip(id: string, page: string) { if(confirm("Biztos benne?")) { - let url = page == 'upcoming' - ? this.apiEndpointUpcoming - : this.apiEndpoint; - this.httpClient.post(`${this.apiEndpoint}/${id}/wip`,{}).subscribe(()=>{ + let url = MaintenanceManagerService.endpointMap[page]; + this.httpClient.post(`${MaintenanceManagerService.apiEndpoint}/${id}/wip`,{}).subscribe(()=>{ this.list(url).subscribe(result => this.cachedMaintenances = result); }); } @@ -70,10 +74,8 @@ export class MaintenanceManagerService { public setFin(id: string, page: string) { if(confirm("Biztos benne?")) { - let url = page == 'upcoming' - ? this.apiEndpointUpcoming - : this.apiEndpoint; - this.httpClient.post(`${this.apiEndpoint}/${id}/fin`, {}).subscribe(() => { + let url = MaintenanceManagerService.endpointMap[page]; + this.httpClient.post(`${MaintenanceManagerService.apiEndpoint}/${id}/fin`, {}).subscribe(() => { this.list(url).subscribe(result => this.cachedMaintenances = result); }); } diff --git a/src/app/maintenance/maintenance-routing.module.ts b/src/app/maintenance/maintenance-routing.module.ts index 42574a7..a8c93aa 100644 --- a/src/app/maintenance/maintenance-routing.module.ts +++ b/src/app/maintenance/maintenance-routing.module.ts @@ -8,9 +8,20 @@ import { ListAllMaintenancesComponent } from "./list-all-maintenances/list-all-m import { ListUpcomingMaintenancesComponent } from "./list-upcoming-maintenances/list-upcoming-maintenances.component"; import { EditMaintenanceComponent } from "./edit-maintenance/edit-maintenance.component"; import { MaintenanceResolverService } from "./maintenance-resolver.service"; +import { MaintenanceCalendarComponent } from "./maintenance-calendar/maintenance-calendar.component"; const routes: Routes = [ { + path: 'karbantartas/teljes-lista/:year', + component: ListAllMaintenancesComponent, + canActivate: [AuthGuardService, RoleGuardService], + resolve: { + maintenances: MaintenanceManagerService, + }, + data: { + filter: 'all', + }, + }, { path: 'karbantartas/teljes-lista', component: ListAllMaintenancesComponent, canActivate: [AuthGuardService, RoleGuardService], @@ -20,6 +31,16 @@ const routes: Routes = [ data: { filter: 'all', }, + }, { + path: 'karbantartas/idoszeru-lista/:year', + component: ListUpcomingMaintenancesComponent, + canActivate: [AuthGuardService, RoleGuardService], + resolve: { + maintenances: MaintenanceManagerService, + }, + data: { + filter: 'upcoming', + }, }, { path: 'karbantartas/idoszeru-lista', component: ListUpcomingMaintenancesComponent, @@ -30,6 +51,26 @@ const routes: Routes = [ data: { filter: 'upcoming', }, + }, { + path: 'karbantartas/naptar/:year', + component: MaintenanceCalendarComponent, + canActivate: [AuthGuardService, RoleGuardService], + resolve: { + maintenances: MaintenanceManagerService, + }, + data: { + filter: 'calendar', + }, + }, { + path: 'karbantartas/naptar', + component: MaintenanceCalendarComponent, + canActivate: [AuthGuardService, RoleGuardService], + resolve: { + maintenances: MaintenanceManagerService, + }, + data: { + filter: 'calendar', + }, }, { path: 'karbantartas/szerkesztes/:id', component: EditMaintenanceComponent, diff --git a/src/app/maintenance/maintenance.module.ts b/src/app/maintenance/maintenance.module.ts index bfcbee5..9a1ca04 100644 --- a/src/app/maintenance/maintenance.module.ts +++ b/src/app/maintenance/maintenance.module.ts @@ -9,17 +9,31 @@ import { ListAllMaintenancesComponent } from './list-all-maintenances/list-all-m import { ListUpcomingMaintenancesComponent } from './list-upcoming-maintenances/list-upcoming-maintenances.component'; import { EditMaintenanceComponent } from './edit-maintenance/edit-maintenance.component'; import { MaintenanceResolverService } from './maintenance-resolver.service'; +import { SharedModule } from "../shared/shared.module"; +import { MaintenanceCalendarComponent } from './maintenance-calendar/maintenance-calendar.component'; @NgModule({ imports: [ CommonModule, FormsModule, ReactiveFormsModule, - MaintenanceRoutingModule + SharedModule, + MaintenanceRoutingModule, + ], + declarations: [ + UpcomingMaintenancesComponent, + ListAllMaintenancesComponent, + ListUpcomingMaintenancesComponent, + EditMaintenanceComponent, + MaintenanceCalendarComponent, + ], + providers: [ + MaintenanceManagerService, + MaintenanceResolverService, + ], + exports: [ + UpcomingMaintenancesComponent, ], - declarations: [UpcomingMaintenancesComponent, ListAllMaintenancesComponent, ListUpcomingMaintenancesComponent, EditMaintenanceComponent], - providers: [MaintenanceManagerService, MaintenanceResolverService], - exports: [UpcomingMaintenancesComponent], }) export class MaintenanceModule { } diff --git a/src/app/navigation/navigation/navigation.component.html b/src/app/navigation/navigation/navigation.component.html index 4d42fd3..37bfb96 100644 --- a/src/app/navigation/navigation/navigation.component.html +++ b/src/app/navigation/navigation/navigation.component.html @@ -24,8 +24,9 @@