diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 7a4fe40..be757b7 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -2,6 +2,8 @@ import {NgModule} from '@angular/core' import {Routes, RouterModule} from '@angular/router' import {CatalogComponent} from './pages/catalog/catalog.component' import {AdministrationComponent} from './pages/administration/administration.component' +import {MiscComponent} from './pages/others/misc.component' +import {TouchupkitComponent} from './pages/others/touchupkit/touchupkit.component' const routes: Routes = [{ @@ -44,8 +46,16 @@ const routes: Routes = [{ } ] }, { - path: 'material', - loadChildren: () => import('./modules/material/material.module').then(m => m.MaterialModule) + path: 'misc', + component: MiscComponent, + children: [{ + path: 'touchupkit', + component: TouchupkitComponent + }, { + path: '', + pathMatch: 'full', + redirectTo: 'touchupkit' + }] }] @NgModule({ diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 09374d6..9de024d 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -9,12 +9,16 @@ import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; import {CatalogComponent} from './pages/catalog/catalog.component'; import {CompanyModule} from './modules/company/company.module'; import { AdministrationComponent } from './pages/administration/administration.component'; +import { MiscComponent } from './pages/others/misc.component'; +import { TouchupkitComponent } from './pages/others/touchupkit/touchupkit.component'; @NgModule({ declarations: [ AppComponent, CatalogComponent, - AdministrationComponent + AdministrationComponent, + MiscComponent, + TouchupkitComponent ], imports: [ AppRoutingModule, diff --git a/src/app/modules/colors/colors.module.ts b/src/app/modules/colors/colors.module.ts index 6832ed8..c994650 100644 --- a/src/app/modules/colors/colors.module.ts +++ b/src/app/modules/colors/colors.module.ts @@ -1,38 +1,38 @@ -import {NgModule} from '@angular/core'; +import {NgModule} from '@angular/core' -import {ColorsRoutingModule} from './colors-routing.module'; -import {SharedModule} from "../shared/shared.module"; -import {ListComponent} from './pages/list/list.component'; -import {AddComponent} from './pages/add/add.component'; -import {EditComponent} from './pages/edit/edit.component'; -import {MatExpansionModule} from "@angular/material/expansion"; -import {FormsModule} from "@angular/forms"; -import {ExploreComponent} from './pages/explore/explore.component'; -import {RecipeInfoComponent} from './components/recipe-info/recipe-info.component'; -import {MixTableComponent} from './components/mix-table/mix-table.component'; -import {StepListComponent} from './components/step-list/step-list.component'; -import {StepTableComponent} from './components/step-table/step-table.component'; -import {MixEditorComponent} from './components/mix-editor/mix-editor.component'; -import {UnitSelectorComponent} from './components/unit-selector/unit-selector.component'; -import {MixAddComponent} from './pages/mix/mix-add/mix-add.component'; -import {MixEditComponent} from './pages/mix/mix-edit/mix-edit.component'; -import { ImagesEditorComponent } from './components/images-editor/images-editor.component'; -import { MixesCardComponent } from './components/mixes-card/mixes-card.component'; +import {ColorsRoutingModule} from './colors-routing.module' +import {SharedModule} from '../shared/shared.module' +import {ListComponent} from './pages/list/list.component' +import {AddComponent} from './pages/add/add.component' +import {EditComponent} from './pages/edit/edit.component' +import {MatExpansionModule} from '@angular/material/expansion' +import {FormsModule} from '@angular/forms' +import {ExploreComponent} from './pages/explore/explore.component' +import {RecipeInfoComponent} from './components/recipe-info/recipe-info.component' +import {MixTableComponent} from './components/mix-table/mix-table.component' +import {StepListComponent} from './components/step-list/step-list.component' +import {StepTableComponent} from './components/step-table/step-table.component' +import {MixEditorComponent} from './components/mix-editor/mix-editor.component' +import {UnitSelectorComponent} from './components/unit-selector/unit-selector.component' +import {MixAddComponent} from './pages/mix/mix-add/mix-add.component' +import {MixEditComponent} from './pages/mix/mix-edit/mix-edit.component' +import {ImagesEditorComponent} from './components/images-editor/images-editor.component' +import {MixesCardComponent} from './components/mixes-card/mixes-card.component' import {MatSortModule} from '@angular/material/sort' @NgModule({ - declarations: [ListComponent, AddComponent, EditComponent, ExploreComponent, RecipeInfoComponent, MixTableComponent, StepListComponent, StepTableComponent, MixEditorComponent, UnitSelectorComponent, MixAddComponent, MixEditComponent, ImagesEditorComponent, MixesCardComponent], - exports: [ - UnitSelectorComponent - ], - imports: [ - ColorsRoutingModule, - SharedModule, - MatExpansionModule, - FormsModule, - MatSortModule - ] + declarations: [ListComponent, AddComponent, EditComponent, ExploreComponent, RecipeInfoComponent, MixTableComponent, StepListComponent, StepTableComponent, MixEditorComponent, UnitSelectorComponent, MixAddComponent, MixEditComponent, ImagesEditorComponent, MixesCardComponent], + exports: [ + UnitSelectorComponent + ], + imports: [ + ColorsRoutingModule, + SharedModule, + MatExpansionModule, + FormsModule, + MatSortModule + ] }) export class ColorsModule { } diff --git a/src/app/modules/shared/components/employee-info/employee-menu.component.html b/src/app/modules/shared/components/employee-info/employee-menu.component.html index ee806f0..4830558 100644 --- a/src/app/modules/shared/components/employee-info/employee-menu.component.html +++ b/src/app/modules/shared/components/employee-info/employee-menu.component.html @@ -22,7 +22,7 @@ @@ -31,14 +31,14 @@ *ngIf="!authenticated && employeeInGroup" mat-list-item class="employee-menu-item-login" - routerLink="/account/login"> + (click)="openLogin()"> Connexion diff --git a/src/app/modules/shared/components/employee-info/employee-menu.component.ts b/src/app/modules/shared/components/employee-info/employee-menu.component.ts index 9224304..70263c3 100644 --- a/src/app/modules/shared/components/employee-info/employee-menu.component.ts +++ b/src/app/modules/shared/components/employee-info/employee-menu.component.ts @@ -1,8 +1,10 @@ -import {Component, OnDestroy, OnInit} from '@angular/core'; -import {AppState} from "../../app-state"; -import {Employee} from "../../model/employee"; -import {Subject} from "rxjs"; -import {takeUntil} from "rxjs/operators"; +import {Component, OnDestroy, OnInit} from '@angular/core' +import {AppState} from '../../app-state' +import {Employee} from '../../model/employee' +import {Subject} from 'rxjs' +import {takeUntil} from 'rxjs/operators' +import {UrlUtils} from '../../utils/url.utils' +import {ActivatedRoute, Router} from '@angular/router' @Component({ selector: 'cre-employee-menu', @@ -16,10 +18,14 @@ export class EmployeeMenuComponent implements OnInit, OnDestroy { menuEnabled = false private destroy$ = new Subject() + private urlUtils: UrlUtils constructor( - public appState: AppState + private appState: AppState, + private router: Router, + private activatedRoute: ActivatedRoute ) { + this.urlUtils = new UrlUtils(activatedRoute, router) } ngOnInit(): void { @@ -36,6 +42,16 @@ export class EmployeeMenuComponent implements OnInit, OnDestroy { this.destroy$.complete() } + openLogin() { + this.urlUtils.navigateTo('/account/login') + this.menuEnabled = false + } + + openLogout() { + this.urlUtils.navigateTo('/account/logout') + this.menuEnabled = false + } + private authenticationState(authenticated: boolean, employee: Employee) { this.authenticated = authenticated this.employee = employee diff --git a/src/app/modules/shared/components/header/header.component.ts b/src/app/modules/shared/components/header/header.component.ts index 04fd7ba..9a27af8 100644 --- a/src/app/modules/shared/components/header/header.component.ts +++ b/src/app/modules/shared/components/header/header.component.ts @@ -15,7 +15,8 @@ export class HeaderComponent extends SubscribingComponent { links: HeaderLink[] = [ {route: '/color', title: 'Couleurs', requiredPermission: EmployeePermission.VIEW_RECIPES}, {route: '/catalog', title: 'Catalogue', requiredPermission: EmployeePermission.VIEW_CATALOG}, - {route: '/admin', title: 'Administration', requiredPermission: EmployeePermission.VIEW_USERS} + {route: '/misc', title: 'Autres', enabled: true}, + {route: '/admin', title: 'Administration', requiredPermission: EmployeePermission.VIEW_USERS}, ] _activeLink = this.links[0].route @@ -46,10 +47,10 @@ export class HeaderComponent extends SubscribingComponent { ) // Auth status - this.updateEnabledLinks(this.appState.authenticatedEmployee) + this.updateEnabledLinks() this.subscribe( this.appState.authenticatedUser$, - authentication => this.updateEnabledLinks(authentication.authenticatedUser) + () => this.updateEnabledLinks() ) } @@ -70,10 +71,14 @@ export class HeaderComponent extends SubscribingComponent { return this._activeLink } - private updateEnabledLinks(employee: Employee) { + private updateEnabledLinks() { this.links.forEach(l => { if (l.requiredPermission) { - l.enabled = employee && employee.permissions.indexOf(l.requiredPermission) >= 0 + l.enabled = this.accountService.hasPermission(l.requiredPermission) + } + + if (l.route === '/misc') { + l.enabled = this.accountService.hasPermission(EmployeePermission.GENERATE_TOUCH_UP_KIT) } }) } diff --git a/src/app/modules/shared/model/employee.ts b/src/app/modules/shared/model/employee.ts index 050c3b7..b0ecdcb 100644 --- a/src/app/modules/shared/model/employee.ts +++ b/src/app/modules/shared/model/employee.ts @@ -25,8 +25,6 @@ export enum EmployeePermission { VIEW_USERS = 'VIEW_USERS', VIEW_CATALOG = 'VIEW_CATALOG', - PRINT_MIXES = 'PRINT_MIXES', - EDIT_RECIPES_PUBLIC_DATA = 'EDIT_RECIPES_PUBLIC_DATA', EDIT_RECIPES = 'EDIT_RECIPES', EDIT_MATERIALS = 'EDIT_MATERIALS', @@ -42,8 +40,10 @@ export enum EmployeePermission { REMOVE_USERS = 'REMOVE_USERS', REMOVE_CATALOG = 'REMOVE_CATALOG', + PRINT_MIXES = 'PRINT_MIXES', ADD_TO_INVENTORY = 'ADD_TO_INVENTORY', DEDUCT_FROM_INVENTORY = 'DEDUCT_FROM_INVENTORY', + GENERATE_TOUCH_UP_KIT = 'GENERATE_TOUCH_UP_KIT', ADMIN = 'ADMIN' } diff --git a/src/app/modules/shared/service/touchupkit.service.ts b/src/app/modules/shared/service/touchupkit.service.ts new file mode 100644 index 0000000..5b6a2d0 --- /dev/null +++ b/src/app/modules/shared/service/touchupkit.service.ts @@ -0,0 +1,11 @@ +import {Injectable} from '@angular/core' +import {environment} from '../../../../environments/environment' + +@Injectable({ + providedIn: 'root' +}) +export class TouchupkitService { + generateJobPdfDocument(job: string) { + window.open(`${environment.apiUrl}/touchup?job=${job}`, '_blank') + } +} diff --git a/src/app/pages/others/misc.component.html b/src/app/pages/others/misc.component.html new file mode 100644 index 0000000..2c65c9d --- /dev/null +++ b/src/app/pages/others/misc.component.html @@ -0,0 +1,2 @@ + + diff --git a/src/app/pages/others/misc.component.sass b/src/app/pages/others/misc.component.sass new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/others/misc.component.ts b/src/app/pages/others/misc.component.ts new file mode 100644 index 0000000..d6f99ea --- /dev/null +++ b/src/app/pages/others/misc.component.ts @@ -0,0 +1,15 @@ +import {Component} from '@angular/core' +import {SubMenuComponent} from '../../modules/shared/components/sub-menu/sub-menu.component' +import {NavLink} from '../../modules/shared/components/nav/nav.component' +import {EmployeePermission} from '../../modules/shared/model/employee' + +@Component({ + selector: 'cre-others', + templateUrl: './misc.component.html', + styleUrls: ['./misc.component.sass'] +}) +export class MiscComponent extends SubMenuComponent{ + links: NavLink[] = [ + {route: '/misc/touchupkit', title: 'Kits de retouche', permission: EmployeePermission.GENERATE_TOUCH_UP_KIT} + ] +}