diff --git a/src/frontend/app/about-us.component.html b/src/frontend/app/about-us.component.html index 52fd392861e0a764a3052dae7866be426a1371ba..0c488fb7a4b808f2a9e21040fbb1087338bcb60e 100755 --- a/src/frontend/app/about-us.component.html +++ b/src/frontend/app/about-us.component.html @@ -1,74 +1,66 @@ -<div class="admin-container" [class.admin-is-mobile]="appService.getViewMode()"> - <mat-sidenav-container autosize class="admin-sidenav-container" > - <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56" [opened]="appService.getViewMode() ? false : true" - autoFocus="false"> - <menu-shortcut></menu-shortcut> - <menu-nav></menu-nav> - </mat-sidenav> - <mat-sidenav-content> - <div *ngIf="loading" style="display:flex;height:100%;"> - <mat-spinner style="margin:auto;"></mat-spinner> - </div> - <mat-card *ngIf="!loading" class="card-app-content"> - <div class="col-sm-8"> - <h3>Maarch Courrier {{applicationVersion}} </h3> - <hr/> - <p><em>Copyright © 2008-2019 Maarch SAS {{lang.groupeCompany}}</em></p> - <p>{{lang.maarchLicence}} - <a target="blank" href="http://www.gnu.org/licenses/gpl-3.0-standalone.html">licence GNU GPLv3</a>.</p> - <div> - <ul> - <li>{{lang.officialWebsite}} : <a target="blank" href="https://maarch.com/">https://maarch.com</a></li> - <li>{{lang.community}} : <a target="blank" href="https://community.maarch.org/">https://community.maarch.org</a></li> - <li>{{lang.documentation}} : <a target="blank" href="https://docs.maarch.org/">https://docs.maarch.org</a></li> - </ul> - </div> - <p> </p> - <h3>{{lang.externalComponents}}</h3> - <hr/> - <em>{{lang.thanksToExtDev}}</em> - <p> </p> - <ul> - <li><a target="blank" href="https://angular.io/">Angular</a></li> - <li><a target="blank" href="https://material.angular.io/">Angular Material</a></li> - <li><a target="blank" href="http://getbootstrap.com/">Bootstrap</a></li> - <li><a target="blank" href="http://www.chartjs.org/">Chart.js</a></li> - <li><a target="blank" href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a></li> - <li><a target="blank" href="http://www.fpdf.org/">Fpdf</a></li> - <li><a target="blank" href="http://www.setasign.de/products/pdf-php-solutions/fpdi/">fpdi</a></li> - <li><a target="blank" href="https://jquery.com/">Jquery</a></li> - <li><a target="blank" href="https://github.com/running-coder/jquery-typeahead">Jquery Typeahead</a></li> - <li><a target="blank" href="http://logging.apache.org/log4php/">log4php</a></li> - <li><a target="blank" href="http://chir.ag/tech/download/pdfb">Pdfb</a></li> - <li><a target="blank" href="http://www.foolabs.com/xpdf/">Pdftotext</a></li> - <!-- <li><a target="blank" href="http://www.prototypejs.org/">Prototype</a></li> - <li><a target="blank" href="http://script.aculo.us/">Script.aculo.us</a></li> --> - <!-- <li><a target="blank" href="http://tafel.developpez.com">Tafel Tree</a></li> --> - <li><a target="blank" href="http://www.tinybutstrong.com/">Tiny But Strong</a></li> - <li><a target="blank" href="http://www.tinymce.com/">TinyMCE</a></li> - <li><a target="blank" href="http://framework.zend.com/">Zend Lucene Search</a></li> - </ul> - </div> - - <div class="col-sm-4"> - <h3>Crédits</h3> - <hr/> - <ul> - <li>Florian AZIZIAN, Damien BUREL, Bruno CARLIN, Carole COTIN, Prosper DE LAURE, Driss DEMIRAY, Gaël DE VILLEBLANCHE, Emmanuel DILLARD, Mathieu DONZEL, Jean-Louis ERCOLANI, Claire FIGUERAS, Laurent GIOVANNONI, - Guillaume HEURTIER, Henri QUENEAU, Kader KANE, Yves-Christian KPAKPO, Alexandre MORIN, Sébastien NANABONDJA, Fodé NDIAYE, Cédric NDOUMBA, Alex ORLUC, Alexis RAGOT, Alexandre STEFANOVIC, Serge THIERRY-MIEG, - Cyril VAZQUEZ, Arnaud VEBER, Loic VINET</li> - <br> - <li><em>{{lang.thanksToCommunity}}</em></li> - </ul> - <p> </p> - <div class="img_credits_maarch_box"> - <img src="static.php?filename=maarch_box.svg" /> - </div> - </div> - </mat-card> - </mat-sidenav-content> - <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56" - position='end' [opened]="appService.getViewMode() ? false : true" style="overflow-x:hidden;"> - </mat-sidenav> - </mat-sidenav-container> - </div> \ No newline at end of file +<div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> +</div> +<mat-card *ngIf="!loading" class="card-app-content"> + <div class="col-sm-8"> + <h3>Maarch Courrier {{applicationVersion}} </h3> + <hr /> + <p><em>Copyright © 2008-2019 Maarch SAS {{lang.groupeCompany}}</em></p> + <p>{{lang.maarchLicence}} + <a target="blank" href="http://www.gnu.org/licenses/gpl-3.0-standalone.html">licence GNU GPLv3</a>.</p> + <div> + <ul> + <li>{{lang.officialWebsite}} : <a target="blank" href="https://maarch.com/">https://maarch.com</a></li> + <li>{{lang.community}} : <a target="blank" + href="https://community.maarch.org/">https://community.maarch.org</a></li> + <li>{{lang.documentation}} : <a target="blank" + href="https://docs.maarch.org/">https://docs.maarch.org</a></li> + </ul> + </div> + <p> </p> + <h3>{{lang.externalComponents}}</h3> + <hr /> + <em>{{lang.thanksToExtDev}}</em> + <p> </p> + <ul> + <li><a target="blank" href="https://angular.io/">Angular</a></li> + <li><a target="blank" href="https://material.angular.io/">Angular Material</a></li> + <li><a target="blank" href="http://getbootstrap.com/">Bootstrap</a></li> + <li><a target="blank" href="http://www.chartjs.org/">Chart.js</a></li> + <li><a target="blank" href="http://fortawesome.github.io/Font-Awesome/">Font Awesome</a></li> + <li><a target="blank" href="http://www.fpdf.org/">Fpdf</a></li> + <li><a target="blank" href="http://www.setasign.de/products/pdf-php-solutions/fpdi/">fpdi</a></li> + <li><a target="blank" href="https://jquery.com/">Jquery</a></li> + <li><a target="blank" href="https://github.com/running-coder/jquery-typeahead">Jquery Typeahead</a></li> + <li><a target="blank" href="http://logging.apache.org/log4php/">log4php</a></li> + <li><a target="blank" href="http://chir.ag/tech/download/pdfb">Pdfb</a></li> + <li><a target="blank" href="http://www.foolabs.com/xpdf/">Pdftotext</a></li> + <!-- <li><a target="blank" href="http://www.prototypejs.org/">Prototype</a></li> + <li><a target="blank" href="http://script.aculo.us/">Script.aculo.us</a></li> --> + <!-- <li><a target="blank" href="http://tafel.developpez.com">Tafel Tree</a></li> --> + <li><a target="blank" href="http://www.tinybutstrong.com/">Tiny But Strong</a></li> + <li><a target="blank" href="http://www.tinymce.com/">TinyMCE</a></li> + <li><a target="blank" href="http://framework.zend.com/">Zend Lucene Search</a></li> + </ul> + </div> + + <div class="col-sm-4"> + <h3>Crédits</h3> + <hr /> + <ul> + <li>Florian AZIZIAN, Damien BUREL, Bruno CARLIN, Carole COTIN, Prosper DE LAURE, Driss DEMIRAY, Gaël DE + VILLEBLANCHE, Emmanuel DILLARD, Mathieu DONZEL, Jean-Louis ERCOLANI, Claire FIGUERAS, Laurent + GIOVANNONI, + Guillaume HEURTIER, Henri QUENEAU, Kader KANE, Yves-Christian KPAKPO, Alexandre MORIN, Sébastien + NANABONDJA, Fodé NDIAYE, Cédric NDOUMBA, Alex ORLUC, Alexis RAGOT, Alexandre STEFANOVIC, Serge + THIERRY-MIEG, + Cyril VAZQUEZ, Arnaud VEBER, Loic VINET</li> + <br> + <li><em>{{lang.thanksToCommunity}}</em></li> + </ul> + <p> </p> + <div class="img_credits_maarch_box"> + <img src="static.php?filename=maarch_box.svg" /> + </div> + </div> +</mat-card> \ No newline at end of file diff --git a/src/frontend/app/about-us.component.ts b/src/frontend/app/about-us.component.ts index 05d14da1fafbc36ac008c3c2801ad21cd4144cba..b5ac275ec3e80f18dfbbb23e7d4f85f30f33fcd4 100755 --- a/src/frontend/app/about-us.component.ts +++ b/src/frontend/app/about-us.component.ts @@ -1,8 +1,6 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { LANG } from './translate.component'; -import { NotificationService } from './notification.service'; -import { HeaderService } from '../service/header.service'; -import { MatSidenav } from '@angular/material/sidenav'; +import { HeaderService } from '../service/header.service'; import { AppService } from '../service/app.service'; declare function $j(selector: any): any; @@ -12,29 +10,23 @@ declare var angularGlobals: any; @Component({ templateUrl: "about-us.component.html", styleUrls: ['profile.component.css'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class AboutUsComponent implements OnInit { - @ViewChild('snav', { static: true }) public sidenavLeft : MatSidenav; - @ViewChild('snav2', { static: true }) public sidenavRight : MatSidenav; - - applicationVersion : string; + applicationVersion: string; lang: any = LANG; loading: boolean = false; - constructor( private headerService: HeaderService, - public appService: AppService) { - $j("link[href='merged_css.php']").remove(); + public appService: AppService) { + $j("link[href='merged_css.php']").remove(); } ngOnInit(): void { this.headerService.setHeader(this.lang.aboutUs); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.applicationVersion = angularGlobals.applicationVersion; this.loading = false; diff --git a/src/frontend/app/actions/actions-list.component.html b/src/frontend/app/actions/actions-list.component.html index 82debf74813913b509e0240f8bb8fbdeab144cf2..e41d68a7b7a289f392906338b2beab6f609c8003 100644 --- a/src/frontend/app/actions/actions-list.component.html +++ b/src/frontend/app/actions/actions-list.component.html @@ -1,7 +1,7 @@ <button *ngIf="!contextMode" (click)="loadActionList();" mat-stroked-button [matMenuTriggerFor]="menu">Actions <mat-icon matSuffix class="fa fa-caret-down"></mat-icon> </button> -<span *ngIf="contextMode" [matMenuTriggerFor]="menu" #menu2 style="position: absolute;" +<span *ngIf="contextMode" [matMenuTriggerFor]="menu" #menu2 style="position: fixed;" [style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y"></span> <mat-menu #menu="matMenu" [class]="'actionListMenu'"> diff --git a/src/frontend/app/actions/actions-list.component.ts b/src/frontend/app/actions/actions-list.component.ts index 6f63c0bf98b06f0d757319f1355c393479c0bac5..2323cf3a0b7ce549b1af3fc437c52f6d3a29df73 100644 --- a/src/frontend/app/actions/actions-list.component.ts +++ b/src/frontend/app/actions/actions-list.component.ts @@ -55,7 +55,6 @@ export class ActionsListComponent implements OnInit { ngOnInit(): void { } open(x: number, y: number, row: any) { - this.loadActionList(); // Adjust the menu anchor position this.contextMenuPosition.x = x + 'px'; diff --git a/src/frontend/app/administration/action/action-administration.component.ts b/src/frontend/app/administration/action/action-administration.component.ts index c3bded99702fd98f20f237e6249e1e5c141084d9..1ae8994fa5044d251bd926abe99705fee7afe07b 100755 --- a/src/frontend/app/administration/action/action-administration.component.ts +++ b/src/frontend/app/administration/action/action-administration.component.ts @@ -55,10 +55,10 @@ export class ActionAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe(params => { - if (typeof params['id'] == "undefined") { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { + this.creationMode = true; this.http.get('../../rest/initAction') @@ -81,8 +81,6 @@ export class ActionAdministrationComponent implements OnInit { }); } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = false; diff --git a/src/frontend/app/administration/action/actions-administration.component.ts b/src/frontend/app/administration/action/actions-administration.component.ts index 520f53f47174b2a81cff81cee2ee17954c932338..9ab487a0881d297dbaf8ec259becab3a36c51d3d 100755 --- a/src/frontend/app/administration/action/actions-administration.component.ts +++ b/src/frontend/app/administration/action/actions-administration.component.ts @@ -54,8 +54,8 @@ export class ActionsAdministrationComponent implements OnInit { } ngOnInit(): void { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/basket/basket-administration.component.ts b/src/frontend/app/administration/basket/basket-administration.component.ts index fb9d3a79c33ca20c53c8ae26804c96f383f35b2f..9330a3ea9260afe58423e38330616ec928c17533 100755 --- a/src/frontend/app/administration/basket/basket-administration.component.ts +++ b/src/frontend/app/administration/basket/basket-administration.component.ts @@ -73,20 +73,16 @@ export class BasketAdministrationComponent implements OnInit { ngOnInit(): void { this.loading = true; - + this.headerService.sideNavLeft = this.sidenavLeft; + this.route.params.subscribe((params: any) => { if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.basketCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); - this.creationMode = true; this.basketIdAvailable = false; this.loading = false; } else { - this.orderColumnsSelected = []; - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + this.orderColumnsSelected = []; this.creationMode = false; this.basketIdAvailable = true; diff --git a/src/frontend/app/administration/basket/baskets-administration.component.ts b/src/frontend/app/administration/basket/baskets-administration.component.ts index 797e35e81b7329d004ecd725c6b00ec8d4b22880..dc42ffa1c68fb9db5f9fabfbbaf9896e79c0948e 100755 --- a/src/frontend/app/administration/basket/baskets-administration.component.ts +++ b/src/frontend/app/administration/basket/baskets-administration.component.ts @@ -53,8 +53,7 @@ export class BasketsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.baskets); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.ts b/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.ts index 8b082129cda3cb15e74d5eb7d726e6dec2101f0c..8ccb92eac4774936a75d2796240910a7630b2099 100644 --- a/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.ts +++ b/src/frontend/app/administration/contact/customField/contacts-custom-fields-administration.component.ts @@ -17,7 +17,7 @@ import { SortPipe } from '../../../../plugins/sorting.pipe'; 'contacts-custom-fields-administration.component.scss', '../../../indexation/indexing-form/indexing-form.component.scss' ], - providers: [NotificationService, AppService, SortPipe] + providers: [AppService, SortPipe] }) export class ContactsCustomFieldsAdministrationComponent implements OnInit { @@ -105,8 +105,8 @@ export class ContactsCustomFieldsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.customFields + ' ' + this.lang.contacts); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); + + this.headerService.sideNavLeft = this.sidenavLeft; this.http.get("../../rest/contactsCustomFields").pipe( // TO FIX DATA BINDING SIMPLE ARRAY VALUES diff --git a/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts b/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts index 485b1019e61373d6f435ff7788bc5a726b4e8104..3f99967472cc29fed637cf6ae42eea22cf6419e9 100644 --- a/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts +++ b/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts @@ -20,7 +20,7 @@ declare function $j(selector: any): any; styleUrls: [ 'contacts-group-administration.component.scss' ], - providers: [NotificationService, AppService] + providers: [AppService] }) export class ContactsGroupAdministrationComponent implements OnInit { @@ -123,18 +123,16 @@ export class ContactsGroupAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe(params => { + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.contactGroupCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); - + this.creationMode = true; this.contactsGroup.public = false; this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); - + this.creationMode = false; this.http.get('../../rest/contactsGroups/' + params['id']) diff --git a/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts b/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts index d1c8fc76de0863785ee7ef141230fdefae394905..1ebc50784de3ed673d762e98e990b7eb5ba4b95a 100644 --- a/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts +++ b/src/frontend/app/administration/contact/group/contacts-groups-administration.component.ts @@ -17,7 +17,7 @@ declare function $j(selector: any): any; styleUrls: [ 'contacts-groups-administration.component.scss' ], - providers: [NotificationService, AppService] + providers: [AppService] }) export class ContactsGroupsAdministrationComponent implements OnInit { @@ -85,10 +85,8 @@ export class ContactsGroupsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.contactsGroups); - - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); - + this.headerService.sideNavLeft = this.sidenavLeft; + this.loading = true; this.http.get('../../rest/contactsGroups') diff --git a/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts b/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts index c84dab793e5251618088c5056c7c09db6f19d4f0..e465f80f897c767a0c54f81c27c74f1b8a24a7fd 100644 --- a/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts +++ b/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts @@ -82,6 +82,7 @@ export class ContactsListAdministrationComponent implements OnInit { public functions: FunctionsService) { } ngOnInit(): void { + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; this.initContactList(); this.initAutocompleteContacts(); diff --git a/src/frontend/app/administration/contact/page/contacts-page-administration.component.ts b/src/frontend/app/administration/contact/page/contacts-page-administration.component.ts index 0085ee2c4e2454c736587c70ea69343a6257a5cb..78cf757945f81f1295375ecb9b9ddcefa47d3ebe 100644 --- a/src/frontend/app/administration/contact/page/contacts-page-administration.component.ts +++ b/src/frontend/app/administration/contact/page/contacts-page-administration.component.ts @@ -1,7 +1,6 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { LANG } from '../../../translate.component'; -import { NotificationService } from '../../../notification.service'; import { HeaderService } from '../../../../service/header.service'; import { MatSidenav } from '@angular/material/sidenav'; import { AppService } from '../../../../service/app.service'; @@ -11,7 +10,7 @@ import { ActivatedRoute, Router } from '@angular/router'; @Component({ templateUrl: "contacts-page-administration.component.html", styleUrls: ['contacts-page-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class ContactsPageAdministrationComponent implements OnInit { @@ -65,17 +64,15 @@ export class ContactsPageAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe((params: any) => { - if (typeof params['id'] == "undefined") { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.contactCreation); this.creationMode = true; this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); this.headerService.setHeader(this.lang.contactModification); diff --git a/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.ts b/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.ts index 25b313cfcdef084c28dc32fbcf8a1b71b6b7ad66..0aa3e9aad5328e657ecbb245856d3900e2a2eed5 100644 --- a/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.ts +++ b/src/frontend/app/administration/contact/parameter/contacts-parameters-administration.component.ts @@ -12,7 +12,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "contacts-parameters-administration.component.html", styleUrls: ['contacts-parameters-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class ContactsParametersAdministrationComponent implements OnInit { @@ -84,8 +84,7 @@ export class ContactsParametersAdministrationComponent implements OnInit { this.loading = true; this.headerService.setHeader(this.lang.contactsParameters); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + this.headerService.sideNavLeft = this.sidenavLeft; this.http.get('../../rest/contactsParameters') .subscribe((data: any) => { diff --git a/src/frontend/app/administration/customField/custom-fields-administration.component.ts b/src/frontend/app/administration/customField/custom-fields-administration.component.ts index 575626e01533e58806bd24ab25450276ec68eaa8..5b822f9f0a877ec708da99c97418af3572642bae 100644 --- a/src/frontend/app/administration/customField/custom-fields-administration.component.ts +++ b/src/frontend/app/administration/customField/custom-fields-administration.component.ts @@ -19,7 +19,7 @@ declare function $j(selector: any): any; 'custom-fields-administration.component.scss', '../../indexation/indexing-form/indexing-form.component.scss' ], - providers: [NotificationService, AppService, SortPipe] + providers: [AppService, SortPipe] }) export class CustomFieldsAdministrationComponent implements OnInit { @@ -84,8 +84,8 @@ export class CustomFieldsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.customFields); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); + + this.headerService.sideNavLeft = this.sidenavLeft; this.http.get("../../rest/customFields").pipe( // TO FIX DATA BINDING SIMPLE ARRAY VALUES diff --git a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts index 9d0a3ddaa6e10e03385911202eb324c9640a92e4..a40b1344afb45306bac15504d7f1cc9c52919288 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModel-administration.component.ts @@ -62,17 +62,16 @@ export class DiffusionModelAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe(async params => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.diffusionModelCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); this.creationMode = true; this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); this.creationMode = false; diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts index e43119f61e0c10c20f2b5b5263d1b62083530f85..43398eef0ce4eefdcbb768c8d489953871ebdfee 100755 --- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts +++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts @@ -67,8 +67,8 @@ export class DiffusionModelsAdministrationComponent implements OnInit { async ngOnInit(): Promise<void> { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.diffusionModels); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/docserver/docserver-administration.component.ts b/src/frontend/app/administration/docserver/docserver-administration.component.ts index 47ba93fea250259ffd5d4c7699d2702027f7d783..732978e5bb95b5f41d6b93b57593eac02b5227d7 100755 --- a/src/frontend/app/administration/docserver/docserver-administration.component.ts +++ b/src/frontend/app/administration/docserver/docserver-administration.component.ts @@ -43,8 +43,8 @@ export class DocserverAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.docserverCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/docserver/docservers-administration.component.ts b/src/frontend/app/administration/docserver/docservers-administration.component.ts index f38b3dbc6af91c8737b83e0cb71b224cdbd336a7..fb90bc8b3c51e2761c6c70fb155776c90d2032f1 100755 --- a/src/frontend/app/administration/docserver/docservers-administration.component.ts +++ b/src/frontend/app/administration/docserver/docservers-administration.component.ts @@ -42,8 +42,8 @@ export class DocserversAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.docservers); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/doctype/doctypes-administration.component.ts b/src/frontend/app/administration/doctype/doctypes-administration.component.ts index 4f99c16d17817a2a0b412a48dcce0eb4db9432aa..8ee2097d0529c2a227070f32ff0e3d4555abe641 100755 --- a/src/frontend/app/administration/doctype/doctypes-administration.component.ts +++ b/src/frontend/app/administration/doctype/doctypes-administration.component.ts @@ -7,14 +7,13 @@ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dial import { MatPaginator } from '@angular/material/paginator'; import { MatSidenav } from '@angular/material/sidenav'; import { MatSort } from '@angular/material/sort'; -import { MatTableDataSource } from '@angular/material/table'; import { AppService } from '../../../service/app.service'; declare function $j(selector: any): any; @Component({ templateUrl: "doctypes-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class DoctypesAdministrationComponent implements OnInit { @@ -57,8 +56,8 @@ export class DoctypesAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.documentTypes); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/entity/entities-administration.component.ts b/src/frontend/app/administration/entity/entities-administration.component.ts index c929ca969353c24fedee0903c8abcb90cc1c59ef..e88195aa431d8755663c0dace13b51b4930b8d8b 100755 --- a/src/frontend/app/administration/entity/entities-administration.component.ts +++ b/src/frontend/app/administration/entity/entities-administration.component.ts @@ -6,7 +6,6 @@ import { MatPaginator } from '@angular/material/paginator'; import { MatSidenav } from '@angular/material/sidenav'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; -import { ConfirmModalComponent } from '../../confirmModal.component'; import { NotificationService } from '../../notification.service'; import { HeaderService } from '../../../service/header.service'; import { Router } from '@angular/router'; @@ -24,7 +23,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "entities-administration.component.html", styleUrls: ['entities-administration.component.css'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class EntitiesAdministrationComponent implements OnInit { /*HEADER*/ @@ -87,8 +86,8 @@ export class EntitiesAdministrationComponent implements OnInit { async ngOnInit(): Promise<void> { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.entities); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/group/group-administration.component.ts b/src/frontend/app/administration/group/group-administration.component.ts index 9f071f32e6544adb66e9272b36f1f307468f59a4..cf8171198e62079ff0254dac9afe1dc0db4af045 100755 --- a/src/frontend/app/administration/group/group-administration.component.ts +++ b/src/frontend/app/administration/group/group-administration.component.ts @@ -13,7 +13,7 @@ import { PrivilegeService } from '../../../service/privileges.service'; import { tap, catchError, exhaustMap, map, finalize, filter } from 'rxjs/operators'; import { of } from 'rxjs'; import { MenuShortcutComponent } from '../../menu/menu-shortcut.component'; -import { MatSelectionList, MatDialog, MatSlideToggle } from '@angular/material'; +import { MatDialog } from '@angular/material'; import { ConfirmComponent } from '../../../plugins/modal/confirm.component'; declare function $j(selector: any): any; @@ -21,7 +21,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "group-administration.component.html", styleUrls: ['group-administration.component.scss'], - providers: [NotificationService, AppService, PrivilegeService] + providers: [AppService, PrivilegeService] }) export class GroupAdministrationComponent implements OnInit { /*HEADER*/ @@ -87,14 +87,13 @@ export class GroupAdministrationComponent implements OnInit { if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.groupCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); - + this.headerService.sideNavLeft = this.sidenavLeft; + this.creationMode = true; this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.creationMode = false; this.http.get("../../rest/groups/" + params['id'] + "/details") @@ -271,11 +270,9 @@ export class GroupAdministrationComponent implements OnInit { } - resfreshShortcut() { - this.headerService.resfreshCurrentUser(); - setTimeout(() => { - this.appShortcut.loadShortcuts(); - }, 200); + async resfreshShortcut() { + await this.headerService.resfreshCurrentUser(); + this.privilegeService.resfreshUserShortcuts(); } getCurrentPrivListDiff(serviceId: string) { diff --git a/src/frontend/app/administration/group/groups-administration.component.ts b/src/frontend/app/administration/group/groups-administration.component.ts index b7070de3cad7e7ba53df41b171dd72bfa3c14d9e..abf21251be697f825a3d146467ada1ec76e52f50 100755 --- a/src/frontend/app/administration/group/groups-administration.component.ts +++ b/src/frontend/app/administration/group/groups-administration.component.ts @@ -15,7 +15,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "groups-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class GroupsAdministrationComponent implements OnInit { /*HEADER*/ @@ -61,8 +61,7 @@ export class GroupsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.groups); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/history/batch/history-batch-administration.component.ts b/src/frontend/app/administration/history/batch/history-batch-administration.component.ts index f1b3bc271955a3c2fa316403bab0611c3b09f6bf..395a604f333f5739e245d268cbfacf3da11b571c 100644 --- a/src/frontend/app/administration/history/batch/history-batch-administration.component.ts +++ b/src/frontend/app/administration/history/batch/history-batch-administration.component.ts @@ -7,7 +7,7 @@ import { MatSidenav } from '@angular/material/sidenav'; import { AppService } from '../../../../service/app.service'; import { Observable, merge, Subject, of as observableOf, of } from 'rxjs'; import { MatPaginator, MatSort, MatDialog } from '@angular/material'; -import { takeUntil, startWith, switchMap, map, catchError, filter, exhaustMap, tap, debounceTime, distinctUntilChanged, finalize } from 'rxjs/operators'; +import { takeUntil, startWith, switchMap, map, catchError, tap, finalize } from 'rxjs/operators'; import { FormControl } from '@angular/forms'; import { FunctionsService } from '../../../../service/functions.service'; import { LatinisePipe } from 'ngx-pipes'; @@ -73,6 +73,8 @@ export class HistoryBatchAdministrationComponent implements OnInit { private privilegeService: PrivilegeService) { } ngOnInit(): void { + this.headerService.sideNavLeft = this.sidenavLeft; + if (this.privilegeService.hasCurrentUserPrivilege('view_history')) { this.subMenus = [ { diff --git a/src/frontend/app/administration/history/history-administration.component.ts b/src/frontend/app/administration/history/history-administration.component.ts index e8cadf34bab226387a00b980978a79f866ba1e51..14f189120bd6ed4162d7e27792553b89f8023fd1 100755 --- a/src/frontend/app/administration/history/history-administration.component.ts +++ b/src/frontend/app/administration/history/history-administration.component.ts @@ -51,6 +51,8 @@ export class HistoryAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.history.toLowerCase(), '', ''); + this.headerService.sideNavLeft = this.sidenavLeft; + if (this.privilegeService.hasCurrentUserPrivilege('view_history_batch')) { this.subMenus = [ { diff --git a/src/frontend/app/administration/home/administration.component.ts b/src/frontend/app/administration/home/administration.component.ts index 04049776ef2cf4cbdd6682d16af6b3ae3943cbd2..e5368cdb5c139029363ca0357189a7a238dab430 100644 --- a/src/frontend/app/administration/home/administration.component.ts +++ b/src/frontend/app/administration/home/administration.component.ts @@ -34,8 +34,8 @@ export class AdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts b/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts index 353751b330fc1f8fd5f2e9122a44ed7154cfbc75..ca7906ee0a6f3357381d241ceb4f8665382142e8 100644 --- a/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts +++ b/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts @@ -20,7 +20,7 @@ declare function $j(selector: any): any; 'indexing-model-administration.component.scss', '../../indexation/indexing-form/indexing-form.component.scss' ], - providers: [NotificationService, AppService, SortPipe] + providers: [AppService, SortPipe] }) export class IndexingModelAdministrationComponent implements OnInit { @@ -64,8 +64,8 @@ export class IndexingModelAdministrationComponent implements OnInit { } ngOnInit(): void { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); + + this.headerService.sideNavLeft = this.sidenavLeft; this.route.params.subscribe((params) => { if (typeof params['id'] == "undefined") { diff --git a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts index a6257450be673ae92cc525f77636cd907d628900..048c2da72e2bf2b3fafa7bf3a46365a3426290eb 100644 --- a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts +++ b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts @@ -20,7 +20,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "indexing-models-administration.component.html", styleUrls: ['indexing-models-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class IndexingModelsAdministrationComponent implements OnInit { @@ -63,8 +63,8 @@ export class IndexingModelsAdministrationComponent implements OnInit { ) { } ngOnInit(): void { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/notification/notification-administration.component.ts b/src/frontend/app/administration/notification/notification-administration.component.ts index ea3cadfb7ca3213b5cd6314b68f37406f8459926..35c4d4be79b60e9296ae5674a3fc50066c8ff02e 100755 --- a/src/frontend/app/administration/notification/notification-administration.component.ts +++ b/src/frontend/app/administration/notification/notification-administration.component.ts @@ -11,7 +11,7 @@ declare var $j: any; @Component({ templateUrl: "notification-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class NotificationAdministrationComponent implements OnInit { @@ -40,11 +40,12 @@ export class NotificationAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe((params: any) => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['identifier'] == "undefined") { this.headerService.setHeader(this.lang.notificationCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); - + this.creationMode = true; this.http.get('../../rest/administration/notifications/new') .subscribe((data: any) => { @@ -55,8 +56,6 @@ export class NotificationAdministrationComponent implements OnInit { this.notify.error(err.error.errors); }); } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = false; this.http.get('../../rest/notifications/' + params['identifier']) diff --git a/src/frontend/app/administration/notification/notifications-administration.component.ts b/src/frontend/app/administration/notification/notifications-administration.component.ts index 9d6af481a8b5b5d038c3fa1944d4d708f31d538a..0c992b7e47728f1de81d9987f9cfe3812c083363 100755 --- a/src/frontend/app/administration/notification/notifications-administration.component.ts +++ b/src/frontend/app/administration/notification/notifications-administration.component.ts @@ -14,7 +14,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "notifications-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class NotificationsAdministrationComponent implements OnInit { @@ -72,9 +72,8 @@ export class NotificationsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.notifications); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); - + this.headerService.sideNavLeft = this.sidenavLeft; + this.loading = true; this.http.get('../../rest/notifications') diff --git a/src/frontend/app/administration/parameter/parameter-administration.component.ts b/src/frontend/app/administration/parameter/parameter-administration.component.ts index e3c7e8af9178dbf511ffac8f4c10c14b6a3d362a..4877d552faa33b73615d4a576acddaa76fef58b4 100755 --- a/src/frontend/app/administration/parameter/parameter-administration.component.ts +++ b/src/frontend/app/administration/parameter/parameter-administration.component.ts @@ -11,7 +11,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "parameter-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class ParameterAdministrationComponent implements OnInit { @@ -41,16 +41,15 @@ export class ParameterAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe((params) => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.parameterCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = true; this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = false; this.http.get("../../rest/parameters/" + params['id']) diff --git a/src/frontend/app/administration/parameter/parameters-administration.component.ts b/src/frontend/app/administration/parameter/parameters-administration.component.ts index 6695de0b6559f5b231fdf3d15ae3eda13001c04c..3fe60c4ba2929a92bfce509c57ee0eec96e2ead6 100755 --- a/src/frontend/app/administration/parameter/parameters-administration.component.ts +++ b/src/frontend/app/administration/parameter/parameters-administration.component.ts @@ -14,7 +14,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "parameters-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class ParametersAdministrationComponent implements OnInit { @@ -54,8 +54,8 @@ export class ParametersAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.parameters); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/priority/priorities-administration.component.ts b/src/frontend/app/administration/priority/priorities-administration.component.ts index c3eb2c56a611d01c347c9603c111fab958144092..779cf5dae2060d448b7bb697c719b9d63d61e3af 100755 --- a/src/frontend/app/administration/priority/priorities-administration.component.ts +++ b/src/frontend/app/administration/priority/priorities-administration.component.ts @@ -14,7 +14,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "priorities-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class PrioritiesAdministrationComponent implements OnInit { /*HEADER*/ @@ -53,8 +53,8 @@ export class PrioritiesAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.priorities); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/priority/priority-administration.component.ts b/src/frontend/app/administration/priority/priority-administration.component.ts index 1277a98d4d45ff56d74f832f89da1e758619ffcd..90afaaf3c352e4f60c0e59fb1c19a85e7b95f297 100755 --- a/src/frontend/app/administration/priority/priority-administration.component.ts +++ b/src/frontend/app/administration/priority/priority-administration.component.ts @@ -11,7 +11,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "priority-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class PriorityAdministrationComponent implements OnInit { @@ -44,16 +44,15 @@ export class PriorityAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe((params) => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.priorityCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = true; this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = false; this.id = params['id']; diff --git a/src/frontend/app/administration/report/reports-administration.component.ts b/src/frontend/app/administration/report/reports-administration.component.ts index dd0add0dfe380dd7ae9c7ac1c60ea56f2bdfbfb2..33528e8c3c1d4c313702585d87697e13c614124b 100755 --- a/src/frontend/app/administration/report/reports-administration.component.ts +++ b/src/frontend/app/administration/report/reports-administration.component.ts @@ -10,7 +10,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "reports-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class ReportsAdministrationComponent implements OnInit { /*HEADER*/ @@ -37,8 +37,8 @@ export class ReportsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.reports); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/security/securities-administration.component.ts b/src/frontend/app/administration/security/securities-administration.component.ts index 73e1c1ec2f2511e64df6d22d781065e816c2cb3a..10a5e9d16f60817e1908cd9e076714eeb3a087f0 100755 --- a/src/frontend/app/administration/security/securities-administration.component.ts +++ b/src/frontend/app/administration/security/securities-administration.component.ts @@ -10,7 +10,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "securities-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class SecuritiesAdministrationComponent implements OnInit { @@ -46,8 +46,8 @@ export class SecuritiesAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.securitiesAdministration); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/sendmail/sendmail-administration.component.ts b/src/frontend/app/administration/sendmail/sendmail-administration.component.ts index 141ae90e789960e45ed558b8525debb4e215298b..7bf17590cf79cecd4d788519cef7c0a6eb36e9a7 100644 --- a/src/frontend/app/administration/sendmail/sendmail-administration.component.ts +++ b/src/frontend/app/administration/sendmail/sendmail-administration.component.ts @@ -12,7 +12,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "sendmail-administration.component.html", styleUrls: ['sendmail-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class SendmailAdministrationComponent implements OnInit { @@ -93,8 +93,8 @@ export class SendmailAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.sendmailShort); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/shipping/shipping-administration.component.ts b/src/frontend/app/administration/shipping/shipping-administration.component.ts index 2e366c2cc64da7e3aac1f4ff92bf308bddb81b4a..0f7dd6f9873c69d1dd203a60f91ef948ea3a15f3 100644 --- a/src/frontend/app/administration/shipping/shipping-administration.component.ts +++ b/src/frontend/app/administration/shipping/shipping-administration.component.ts @@ -15,7 +15,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "shipping-administration.component.html", styleUrls: ['shipping-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class ShippingAdministrationComponent implements OnInit { @@ -79,10 +79,6 @@ export class ShippingAdministrationComponent implements OnInit { } ngOnInit(): void { - - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); - this.http.get("../../rest/externalConnectionsEnabled").pipe( tap((data: any) => { console.log(data); @@ -96,6 +92,9 @@ export class ShippingAdministrationComponent implements OnInit { ).subscribe(); this.route.params.subscribe(params => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.shippingCreation); diff --git a/src/frontend/app/administration/shipping/shippings-administration.component.ts b/src/frontend/app/administration/shipping/shippings-administration.component.ts index 7ae43b7846c8c7645293ba47e84eb060f2d71c41..c234100c37064179997d0f818f9807100345711c 100644 --- a/src/frontend/app/administration/shipping/shippings-administration.component.ts +++ b/src/frontend/app/administration/shipping/shippings-administration.component.ts @@ -14,7 +14,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "shippings-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class ShippingsAdministrationComponent implements OnInit { @@ -54,8 +54,8 @@ export class ShippingsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.shippings); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/status/status-administration.component.ts b/src/frontend/app/administration/status/status-administration.component.ts index d9c3cc803c16722c08fd10a5103ae6e9babff7b0..590b21700b8bab698e1c1340b48b338e756cde29 100755 --- a/src/frontend/app/administration/status/status-administration.component.ts +++ b/src/frontend/app/administration/status/status-administration.component.ts @@ -12,7 +12,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "status-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class StatusAdministrationComponent implements OnInit { @@ -58,10 +58,11 @@ export class StatusAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe((params: any) => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['identifier'] == "undefined") { this.headerService.setHeader(this.lang.statusCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.http.get('../../rest/administration/statuses/new') .subscribe((data: any) => { @@ -74,8 +75,6 @@ export class StatusAdministrationComponent implements OnInit { }); this.statusIdAvailable = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.creationMode = false; this.statusIdentifier = params['identifier']; diff --git a/src/frontend/app/administration/status/statuses-administration.component.ts b/src/frontend/app/administration/status/statuses-administration.component.ts index 4e99a00eb18908d034f064f328b44d1955728c0c..2f350ed757594aa322d7dc15e13bd720b7a81fb6 100755 --- a/src/frontend/app/administration/status/statuses-administration.component.ts +++ b/src/frontend/app/administration/status/statuses-administration.component.ts @@ -14,7 +14,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "statuses-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class StatusesAdministrationComponent implements OnInit { @@ -52,8 +52,8 @@ export class StatusesAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.statuses); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/tag/tag-administration.component.ts b/src/frontend/app/administration/tag/tag-administration.component.ts index 58777e349487f1754aee24f6b10210911fb2883d..502331182a87d79eecb81870e2456b91fa218a75 100644 --- a/src/frontend/app/administration/tag/tag-administration.component.ts +++ b/src/frontend/app/administration/tag/tag-administration.component.ts @@ -57,11 +57,11 @@ export class TagAdministrationComponent implements OnInit { ngOnInit(): void { this.loading = true; + + this.route.params.subscribe((params) => { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + this.headerService.sideNavLeft = this.sidenavLeft; - this.route.params.subscribe((params) => { if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.tagCreation); this.creationMode = true; diff --git a/src/frontend/app/administration/tag/tags-administration.component.ts b/src/frontend/app/administration/tag/tags-administration.component.ts index e09d04b3508a3b28dd0e31d474b79620e1bfb2c8..30b24dd0315d403b63613086d7beb987f9b51886 100644 --- a/src/frontend/app/administration/tag/tags-administration.component.ts +++ b/src/frontend/app/administration/tag/tags-administration.component.ts @@ -53,8 +53,9 @@ export class TagsAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.tags); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; + this.loadList(); } diff --git a/src/frontend/app/administration/template/template-administration.component.ts b/src/frontend/app/administration/template/template-administration.component.ts index 9ea2006e0ec0f9ccf886a8f53235769d7d8f4a7a..bab89ea93b1c68c8c02bbfbdaa4247007b826377 100755 --- a/src/frontend/app/administration/template/template-administration.component.ts +++ b/src/frontend/app/administration/template/template-administration.component.ts @@ -14,7 +14,7 @@ declare var tinymce: any; @Component({ templateUrl: "template-administration.component.html", styleUrls: ['template-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class TemplateAdministrationComponent implements OnInit { @@ -64,10 +64,11 @@ export class TemplateAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe(params => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { this.headerService.setHeader(this.lang.templateCreation); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); this.creationMode = true; @@ -80,8 +81,6 @@ export class TemplateAdministrationComponent implements OnInit { }); } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); this.creationMode = false; this.http.get('../../rest/templates/' + params['id'] + '/details') diff --git a/src/frontend/app/administration/template/templates-administration.component.ts b/src/frontend/app/administration/template/templates-administration.component.ts index a5fc68222f959fc2378e969a39588877202c2cbe..50ec04bcd95b7c27860b6074c52eefa4f45eb595 100755 --- a/src/frontend/app/administration/template/templates-administration.component.ts +++ b/src/frontend/app/administration/template/templates-administration.component.ts @@ -14,7 +14,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "templates-administration.component.html", - providers: [NotificationService, AppService] + providers: [AppService] }) export class TemplatesAdministrationComponent implements OnInit { @@ -55,8 +55,8 @@ export class TemplatesAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.templates); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/updateStatus/update-status-administration.component.ts b/src/frontend/app/administration/updateStatus/update-status-administration.component.ts index 67952561cffad75828d3f1ed515ec628b82134f3..8b3411578d0061309b5ddda22b4976a05a9933ad 100755 --- a/src/frontend/app/administration/updateStatus/update-status-administration.component.ts +++ b/src/frontend/app/administration/updateStatus/update-status-administration.component.ts @@ -12,7 +12,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "update-status-administration.component.html", styleUrls: ['update-status-administration.component.css'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class UpdateStatusAdministrationComponent implements OnInit { @@ -40,8 +40,8 @@ export class UpdateStatusAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.updateStatus); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/administration/user/user-administration.component.ts b/src/frontend/app/administration/user/user-administration.component.ts index 6b349c36513dfdade7f0171e43eafe51dad054ad..f27ee9b81ef90756d7e8ce70b19ba0e13185177d 100755 --- a/src/frontend/app/administration/user/user-administration.component.ts +++ b/src/frontend/app/administration/user/user-administration.component.ts @@ -22,7 +22,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "user-administration.component.html", styleUrls: ['user-administration.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class UserAdministrationComponent implements OnInit { @ViewChild('snav', { static: true }) public sidenavLeft: MatSidenav; @@ -136,9 +136,10 @@ export class UserAdministrationComponent implements OnInit { this.loading = true; this.route.params.subscribe((params: any) => { + + this.headerService.sideNavLeft = this.sidenavLeft; + if (typeof params['id'] == "undefined") { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.headerService.setHeader(this.lang.userCreation); this.creationMode = true; @@ -146,8 +147,6 @@ export class UserAdministrationComponent implements OnInit { this.canManagePersonalDatas = this.privilegeService.hasCurrentUserPrivilege('manage_personal_data'); this.loading = false; } else { - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); this.creationMode = false; this.serialId = params['id']; @@ -389,14 +388,12 @@ export class UserAdministrationComponent implements OnInit { "role": group.role }; this.http.post("../../rest/users/" + this.serialId + "/groups", groupReq) - .subscribe((data: any) => { + .subscribe(async (data: any) => { this.user.groups = data.groups; this.user.baskets = data.baskets; if (this.headerService.user.id == this.serialId) { - this.headerService.resfreshCurrentUser(); - setTimeout(() => { - this.appShortcut.loadShortcuts(); - }, 200); + await this.headerService.resfreshCurrentUser(); + this.privilegeService.resfreshUserShortcuts(); } this.notify.success(this.lang.groupAdded); }, (err) => { @@ -404,15 +401,13 @@ export class UserAdministrationComponent implements OnInit { }); } else { this.http.delete("../../rest/users/" + this.serialId + "/groups/" + group.group_id) - .subscribe((data: any) => { + .subscribe(async (data: any) => { this.user.groups = data.groups; this.user.baskets = data.baskets; this.user.redirectedBaskets = data.redirectedBaskets; if (this.headerService.user.id == this.serialId) { - this.headerService.resfreshCurrentUser(); - setTimeout(() => { - this.appShortcut.loadShortcuts(); - }, 200); + await this.headerService.resfreshCurrentUser(); + this.privilegeService.resfreshUserShortcuts(); } this.notify.success(this.lang.groupDeleted); }, (err) => { diff --git a/src/frontend/app/administration/user/users-administration.component.html b/src/frontend/app/administration/user/users-administration.component.html index 6fbcd7b8d5200ab04274d8f46ba9e066aca4d51d..a0e0d8e833b9376f99315eaf542d980dcf820e0b 100755 --- a/src/frontend/app/administration/user/users-administration.component.html +++ b/src/frontend/app/administration/user/users-administration.component.html @@ -1,100 +1,132 @@ -<div class="admin-container" [class.admin-is-mobile]="appService.getViewMode()"> - <mat-sidenav-container autosize class="admin-sidenav-container" > - <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56" - [opened]="appService.getViewMode() ? false : true"> - <menu-shortcut></menu-shortcut> - <menu-nav></menu-nav> - <mat-nav-list> - <h3 mat-subheader>{{lang.actions}}</h3> - <a mat-list-item routerLink="/administration/users/new"> - <mat-icon color="primary" mat-list-icon class="fa fa-plus"></mat-icon> - <p mat-line> - {{lang.add}} - </p> - </a> - </mat-nav-list> - <mat-divider></mat-divider> - <mat-divider *ngIf="quota.userQuota"></mat-divider> - <mat-nav-list *ngIf="quota.userQuota"> - <h3 mat-subheader>{{lang.quota}}</h3> - <p mat-line style="margin-left:20px">{{lang.actives}} : {{quota.actives}}</p> - <p mat-line style="margin-left:20px">{{lang.inactives}} : {{quota.inactives}}</p> - <p mat-line style="margin-left:20px">{{lang.quota}} : {{quota.userQuota}}</p> - </mat-nav-list> - </mat-sidenav> - <mat-sidenav-content> - <div *ngIf="loading" style="display:flex;height:100%;"> - <mat-spinner style="margin:auto;"></mat-spinner> +<mat-sidenav-container autosize class="maarch-container"> + <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" + [opened]="appService.getViewMode() ? false : true" + [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> + <header-panel [snavLeft]="snav"></header-panel> + <menu-shortcut></menu-shortcut> + <menu-nav></menu-nav> + <mat-nav-list> + <h3 mat-subheader>{{lang.actions}}</h3> + <a mat-list-item routerLink="/administration/users/new"> + <mat-icon color="primary" mat-list-icon class="fa fa-plus"></mat-icon> + <p mat-line> + {{lang.add}} + </p> + </a> + </mat-nav-list> + <mat-divider></mat-divider> + <mat-divider *ngIf="quota.userQuota"></mat-divider> + <mat-nav-list *ngIf="quota.userQuota"> + <h3 mat-subheader>{{lang.quota}}</h3> + <p mat-line style="margin-left:20px">{{lang.actives}} : {{quota.actives}}</p> + <p mat-line style="margin-left:20px">{{lang.inactives}} : {{quota.inactives}}</p> + <p mat-line style="margin-left:20px">{{lang.quota}} : {{quota.userQuota}}</p> + </mat-nav-list> + </mat-sidenav> + <mat-sidenav-content> + <div class="bg-head"> + <div class="bg-head-title" [class.customContainerRight]="appService.getViewMode()"> + <div class="bg-head-title-label"> + <header-left [snavLeft]="snav"></header-left> + </div> + <div class="bg-head-title-tool"> + <header-right></header-right> + </div> </div> - <mat-card *ngIf="!loading" class="card-app-content"> - <div class="row"> - <div class="col-md-6 col-xs-6"> - <mat-form-field> - <input matInput (keyup)="applyFilter($event.target.value)" placeholder="{{lang.filterBy}}"> - <mat-button-toggle class="webserviceAccount" matSuffix (click)="$event.stopPropagation();toggleWebserviceAccount()" - [checked]="this.withWebserviceAccount" title="{{lang.displayWebserviceAccount}}" > - <mat-icon fontSet="fas" fontIcon="fa-user-shield fa-2x" style="margin-left: -2px; margin-top: -4px;"></mat-icon> - </mat-button-toggle> - </mat-form-field> - </div> - <div class="col-md-6 col-xs-6"> - <mat-paginator #paginator [length]="100" [hidePageSize]="true" [pageSize]="10"> - </mat-paginator> - </div> + <div class="bg-head-content" [class.fullContainer]="appService.getViewMode()"> + </div> + </div> + <div class="container" [class.fullContainer]="appService.getViewMode()"> + <div class="container-content"> + <div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> </div> - <mat-table #table [dataSource]="dataSource" matSort matSortActive="user_id" matSortDirection="asc"> - <ng-container matColumnDef="id"> - <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="appService.getViewMode()">{{lang.technicalId}}</mat-header-cell> - <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> {{element.id}} </mat-cell> - </ng-container> - <ng-container matColumnDef="user_id"> - <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="appService.getViewMode()">{{lang.id}}</mat-header-cell> - <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> {{element.user_id}} </mat-cell> - </ng-container> - <ng-container matColumnDef="lastname"> - <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.lastname}}</mat-header-cell> - <mat-cell *matCellDef="let element"> {{element.lastname}} </mat-cell> - </ng-container> - <ng-container matColumnDef="firstname"> - <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.firstname}}</mat-header-cell> - <mat-cell *matCellDef="let element"> {{element.firstname}} </mat-cell> - </ng-container> - <ng-container matColumnDef="status"> - <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.status}}</mat-header-cell> - <mat-cell *matCellDef="let element"> - <span [ngClass]="{'statusUserLabelWarn': ['SPD','ABS'].indexOf(element.status) > -1, 'statusUserLabelPrimary': ['SPD','ABS'].indexOf(element.status) == -1}" class="label">{{lang['user'+element.status]}}</span> - </mat-cell> - </ng-container> - <ng-container matColumnDef="mail"> - <mat-header-cell *matHeaderCellDef mat-sort-header [class.hide-for-mobile]="appService.getViewMode()">{{lang.email}}</mat-header-cell> - <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> {{element.mail}} </mat-cell> - </ng-container> - <ng-container matColumnDef="actions"> - <mat-header-cell *matHeaderCellDef> - </mat-header-cell> - <mat-cell *matCellDef="let element" style="justify-content: flex-end;"> - <button mat-icon-button color="primary" [disabled]="element.user_id==user.user_id" *ngIf="element.status != 'SPD'" matTooltip="{{lang.suspend}}" - (click)="$event.stopPropagation();deleteUser(element, 'suspend')"> - <mat-icon class="fa fa-pause fa-2x" aria-hidden="true"></mat-icon> - </button> - <button mat-icon-button color="accent" *ngIf="element.status == 'SPD'" matTooltip="{{lang.authorize}}" (click)="$event.stopPropagation();activateUser(element)"> - <mat-icon class="fa fa-check fa-2x" aria-hidden="true"></mat-icon> - </button> - <button mat-icon-button color="warn" [disabled]="element.user_id==user.user_id" matTooltip="{{lang.delete}}" data-toggle="modal" - data-target="#changeDiffListDest" (click)="$event.stopPropagation();deleteUser(element, 'delete')"> - <mat-icon class="fa fa-trash-alt fa-2x"></mat-icon> - </button> - </mat-cell> - </ng-container> - <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> - <mat-row *matRowDef="let row; columns: displayedColumns;" routerLink="/administration/users/{{row.id}}" style="cursor:pointer;" - matTooltip="{{lang.view}}"></mat-row> - </mat-table> - <div class="mat-paginator" style="min-height:48px;min-height: 48px;display: flex;justify-content: end;align-items: center;padding-right: 20px;">{{data.length}} {{lang.usersAlt}}</div> - </mat-card> - </mat-sidenav-content> - <mat-sidenav #snav2 [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56" - position='end' [opened]="appService.getViewMode() ? false : false"> - </mat-sidenav> - </mat-sidenav-container> -</div> + <mat-card *ngIf="!loading" class="card-app-content"> + <div class="row"> + <div class="col-md-6 col-xs-6"> + <mat-form-field> + <input matInput (keyup)="applyFilter($event.target.value)" + placeholder="{{lang.filterBy}}"> + <mat-button-toggle class="webserviceAccount" matSuffix + (click)="$event.stopPropagation();toggleWebserviceAccount()" + [checked]="this.withWebserviceAccount" title="{{lang.displayWebserviceAccount}}"> + <mat-icon fontSet="fas" fontIcon="fa-user-shield fa-2x" + style="margin-left: -2px; margin-top: -4px;"></mat-icon> + </mat-button-toggle> + </mat-form-field> + </div> + <div class="col-md-6 col-xs-6"> + <mat-paginator #paginator [length]="100" [hidePageSize]="true" [pageSize]="10"> + </mat-paginator> + </div> + </div> + <mat-table #table [dataSource]="dataSource" matSort matSortActive="user_id" matSortDirection="asc"> + <ng-container matColumnDef="id"> + <mat-header-cell *matHeaderCellDef mat-sort-header + [class.hide-for-mobile]="appService.getViewMode()">{{lang.technicalId}} + </mat-header-cell> + <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> + {{element.id}} </mat-cell> + </ng-container> + <ng-container matColumnDef="user_id"> + <mat-header-cell *matHeaderCellDef mat-sort-header + [class.hide-for-mobile]="appService.getViewMode()">{{lang.id}}</mat-header-cell> + <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> + {{element.user_id}} </mat-cell> + </ng-container> + <ng-container matColumnDef="lastname"> + <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.lastname}}</mat-header-cell> + <mat-cell *matCellDef="let element"> {{element.lastname}} </mat-cell> + </ng-container> + <ng-container matColumnDef="firstname"> + <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.firstname}}</mat-header-cell> + <mat-cell *matCellDef="let element"> {{element.firstname}} </mat-cell> + </ng-container> + <ng-container matColumnDef="status"> + <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.status}}</mat-header-cell> + <mat-cell *matCellDef="let element"> + <span + [ngClass]="{'statusUserLabelWarn': ['SPD','ABS'].indexOf(element.status) > -1, 'statusUserLabelPrimary': ['SPD','ABS'].indexOf(element.status) == -1}" + class="label">{{lang['user'+element.status]}}</span> + </mat-cell> + </ng-container> + <ng-container matColumnDef="mail"> + <mat-header-cell *matHeaderCellDef mat-sort-header + [class.hide-for-mobile]="appService.getViewMode()">{{lang.email}}</mat-header-cell> + <mat-cell *matCellDef="let element" [class.hide-for-mobile]="appService.getViewMode()"> + {{element.mail}} </mat-cell> + </ng-container> + <ng-container matColumnDef="actions"> + <mat-header-cell *matHeaderCellDef> + </mat-header-cell> + <mat-cell *matCellDef="let element" style="justify-content: flex-end;"> + <button mat-icon-button color="primary" [disabled]="element.user_id==user.user_id" + *ngIf="element.status != 'SPD'" matTooltip="{{lang.suspend}}" + (click)="$event.stopPropagation();deleteUser(element, 'suspend')"> + <mat-icon class="fa fa-pause fa-2x" aria-hidden="true"></mat-icon> + </button> + <button mat-icon-button color="accent" *ngIf="element.status == 'SPD'" + matTooltip="{{lang.authorize}}" + (click)="$event.stopPropagation();activateUser(element)"> + <mat-icon class="fa fa-check fa-2x" aria-hidden="true"></mat-icon> + </button> + <button mat-icon-button color="warn" [disabled]="element.user_id==user.user_id" + matTooltip="{{lang.delete}}" data-toggle="modal" data-target="#changeDiffListDest" + (click)="$event.stopPropagation();deleteUser(element, 'delete')"> + <mat-icon class="fa fa-trash-alt fa-2x"></mat-icon> + </button> + </mat-cell> + </ng-container> + <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> + <mat-row *matRowDef="let row; columns: displayedColumns;" + routerLink="/administration/users/{{row.id}}" style="cursor:pointer;" + matTooltip="{{lang.view}}"></mat-row> + </mat-table> + <div class="mat-paginator" + style="min-height:48px;min-height: 48px;display: flex;justify-content: end;align-items: center;padding-right: 20px;"> + {{data.length}} {{lang.usersAlt}}</div> + </mat-card> + </div> + </div> + </mat-sidenav-content> +</mat-sidenav-container> \ No newline at end of file diff --git a/src/frontend/app/administration/user/users-administration.component.ts b/src/frontend/app/administration/user/users-administration.component.ts index c3ee2a4c2e3220582d889baa2a2aecf5b2bb18c9..2661aa6c24c9c40f40d760c73b3f6444eee02d89 100755 --- a/src/frontend/app/administration/user/users-administration.component.ts +++ b/src/frontend/app/administration/user/users-administration.component.ts @@ -71,8 +71,8 @@ export class UsersAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.administration + ' ' + this.lang.users); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.user = angularGlobals.user; this.loading = true; diff --git a/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts b/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts index 1319f5b14d80c7a1b6ee71c1eff399b4997db9fb..4d5ba2906ea8f9bd1d7767cef213a708a8fb3f29 100755 --- a/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts +++ b/src/frontend/app/administration/versionUpdate/versions-update-administration.component.ts @@ -16,7 +16,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "versions-update-administration.component.html", styleUrls: ['versions-update-administration.component.scss'], - providers: [NotificationService, AppService], + providers: [AppService], }) export class VersionsUpdateAdministrationComponent implements OnInit { @@ -42,8 +42,8 @@ export class VersionsUpdateAdministrationComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.updateVersionControl); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); + + this.headerService.sideNavLeft = this.sidenavLeft; this.loading = true; diff --git a/src/frontend/app/app.component.html b/src/frontend/app/app.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c914473b1482fee8d92951c826d9aef117712b66 --- /dev/null +++ b/src/frontend/app/app.component.html @@ -0,0 +1,15 @@ +<mat-sidenav-container class="maarch-container"> + <mat-sidenav #snavLeft class="panel-left" [mode]="appService.getViewMode() ? 'over' : 'side'" + [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() || headerService.hideSideBar ? false : true" autoFocus="false" + style="overflow-x:hidden;" [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> + <header-panel [snavLeft]="snav"></header-panel> + <menu-shortcut #menuShortcut></menu-shortcut> + <menu-nav></menu-nav> + <basket-home #basketHome (refreshEvent)="refreshDao()" [snavL]="snav"></basket-home> + <mat-divider></mat-divider> + <panel-folder #panelFolder (refreshEvent)="refreshDao()"></panel-folder> + </mat-sidenav> + <mat-sidenav-content> + <router-outlet></router-outlet> + </mat-sidenav-content> +</mat-sidenav-container> \ No newline at end of file diff --git a/src/frontend/app/app.component.ts b/src/frontend/app/app.component.ts index 25eb279a613c59f0973ae418172173fbb0d3a405..47b180ec7df3715b140f6591162b5df41ad948e3 100755 --- a/src/frontend/app/app.component.ts +++ b/src/frontend/app/app.component.ts @@ -1,9 +1,10 @@ -import { Component, ViewEncapsulation, Testability } from '@angular/core'; +import { Component, ViewEncapsulation, ViewChild } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; import { MatIconRegistry } from '@angular/material/icon'; import { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions } from '@angular/material/tooltip'; import { HeaderService } from '../service/header.service'; import { AppService } from '../service/app.service'; +import { MatSidenav } from '@angular/material'; /** Custom options the configure the tooltip's default show/hide delays. */ export const myCustomTooltipDefaults: MatTooltipDefaultOptions = { @@ -12,12 +13,11 @@ export const myCustomTooltipDefaults: MatTooltipDefaultOptions = { touchendHideDelay: 0, }; -declare const angularGlobals: any; declare function $j(selector: any): any; @Component({ selector: 'my-app', - template: `<main-header></main-header><router-outlet></router-outlet>`, + templateUrl: 'app.component.html', encapsulation: ViewEncapsulation.None, styleUrls: [ '../../../node_modules/bootstrap/dist/css/bootstrap.min.css', @@ -28,14 +28,18 @@ declare function $j(selector: any): any; ], viewProviders: [MatIconRegistry], providers: [ + AppService, {provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: myCustomTooltipDefaults} ], }) export class AppComponent { + @ViewChild('snavLeft', { static: false }) snavLeft: MatSidenav; + constructor( iconReg: MatIconRegistry, sanitizer: DomSanitizer, + public appService: AppService, public headerService: HeaderService ) { @@ -63,4 +67,15 @@ export class AppComponent { $j('#content h1')[0].remove(); } } + + ngOnInit(): void { + setTimeout(() => { + this.headerService.sideNavLeft = this.snavLeft; + this.headerService.defaultSideNavLeft = this.snavLeft; + }, 0); + + + this.headerService.sideNavLeft = this.snavLeft; + this.headerService.defaultSideNavLeft = this.snavLeft; + } } diff --git a/src/frontend/app/basket/basket-home.component.html b/src/frontend/app/basket/basket-home.component.html index 49fbeab794c12100c41578f85a1af51b3968017f..4dc9a627499ae5db78fa84f388d0053897d75f67 100755 --- a/src/frontend/app/basket/basket-home.component.html +++ b/src/frontend/app/basket/basket-home.component.html @@ -42,7 +42,7 @@ </p> </a> <a mat-list-item - [ngClass]="{'selectedBasket': currentBasketInfo.basketId == basket.id && currentBasketInfo.ownerId == basket.owner_user_id && currentBasketInfo.groupId == regroupedBasket.groupSerialId}" + [ngClass]="{'selectedBasket': headerService.currentBasketInfo.basketId == basket.id && headerService.currentBasketInfo.ownerId == basket.owner_user_id && headerService.currentBasketInfo.groupId == regroupedBasket.groupSerialId}" *ngIf="!basket.redirected" (click)="refreshDatas(basket);closePanelLeft();" routerLink="/basketList/users/{{basket.owner_user_id}}/groups/{{regroupedBasket.groupSerialId}}/baskets/{{basket.id}}" style="cursor:pointer;" @@ -63,7 +63,7 @@ <mat-nav-list> <a mat-list-item *ngFor="let basket of homeData.assignedBaskets | filterList:listFilter.value:'basket_name'" - [ngClass]="{'selectedBasket': currentBasketInfo.basketId==basket.id && currentBasketInfo.ownerId==basket.owner_user_id && currentBasketInfo.groupId==basket.group_id}" + [ngClass]="{'selectedBasket': headerService.currentBasketInfo.basketId==basket.id && headerService.currentBasketInfo.ownerId==basket.owner_user_id && headerService.currentBasketInfo.groupId==basket.group_id}" routerLink="/basketList/users/{{basket.owner_user_id}}/groups/{{basket.group_id}}/baskets/{{basket.id}}"> <mat-icon *ngIf="!appService.getViewMode()" style="color:#666" mat-list-icon class="fa fa-paper-plane"></mat-icon> diff --git a/src/frontend/app/basket/basket-home.component.ts b/src/frontend/app/basket/basket-home.component.ts index a913568e378353f96109cfe89aa3e827b1c4a00c..5b0dc74fe42a5ea1df95dfccf70760b86e118c44 100755 --- a/src/frontend/app/basket/basket-home.component.ts +++ b/src/frontend/app/basket/basket-home.component.ts @@ -5,8 +5,10 @@ import { MatSidenav } from '@angular/material/sidenav'; import { AppService } from '../../service/app.service'; import { tap, finalize, catchError } from 'rxjs/operators'; import { MatExpansionPanel } from '@angular/material'; -import { of } from 'rxjs'; +import { of, Subscription } from 'rxjs'; import { NotificationService } from '../notification.service'; +import { HeaderService } from '../../service/header.service'; +import { ActionsService } from '../actions/actions.service'; declare function $j(selector: any) : any; @@ -31,18 +33,30 @@ export class BasketHomeComponent implements OnInit { @Output('refreshEvent') refreshEvent = new EventEmitter<string>(); @ViewChild('basketPanel', { static: true }) basketPanel: MatExpansionPanel; editOrderGroups: boolean = false; + subscription: Subscription; constructor( public http: HttpClient, public appService: AppService, - private notify: NotificationService + public headerService: HeaderService, + private notify: NotificationService, + public actionService: ActionsService, ) { + + this.subscription = this.actionService.catchAction().subscribe(message => { + this.refreshBasketHome(); + }); } ngOnInit(): void { this.getMyBaskets(); } + ngOnDestroy() { + // unsubscribe to ensure no memory leaks + this.subscription.unsubscribe(); + } + getMyBaskets() { this.loading = true; diff --git a/src/frontend/app/folder/document-list/folder-document-list.component.html b/src/frontend/app/folder/document-list/folder-document-list.component.html index 99571606166c8682e4c0407772c9f4559bb06645..7aacbe4ffce6938e6070ffa0a1326c130a23f026 100644 --- a/src/frontend/app/folder/document-list/folder-document-list.component.html +++ b/src/frontend/app/folder/document-list/folder-document-list.component.html @@ -1,15 +1,4 @@ <mat-sidenav-container class="maarch-container"> - <mat-sidenav #snavLeft class="panel-left" #snav [mode]="appService.getViewMode() ? 'over' : 'side'" - [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() ? false : true" - autoFocus="false" style="overflow-x:hidden;" [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> - <header-panel [snavLeft]="snav"></header-panel> - <menu-shortcut #menuShortcut></menu-shortcut> - <menu-nav></menu-nav> - <basket-home #basketHome [snavL]="snav"></basket-home> - <mat-divider></mat-divider> - <panel-folder #panelFolder *ngIf="folderInfo.id !== '' && folderInfo.id !== undefined" - [selectedId]="folderInfo.id" [showTree]="true"></panel-folder> - </mat-sidenav> <mat-sidenav-content> <mat-card id="viewThumbnail" style="display:none;position: fixed;z-index: 2;margin-left: 1px;"> <img style="max-height: 100vh;" src="{{thumbnailUrl}}" /> diff --git a/src/frontend/app/folder/document-list/folder-document-list.component.ts b/src/frontend/app/folder/document-list/folder-document-list.component.ts index 9d52d42feefb43fea33d0e3c09858020f992f206..b9c1713bd31576c22c841cd8e2a5b5d4debbc525 100644 --- a/src/frontend/app/folder/document-list/folder-document-list.component.ts +++ b/src/frontend/app/folder/document-list/folder-document-list.component.ts @@ -55,7 +55,6 @@ export class FolderDocumentListComponent implements OnInit { dialogRef: MatDialogRef<any>; - @ViewChild('snav', { static: true }) sidenavLeft: MatSidenav; @ViewChild('snav2', { static: true }) sidenavRight: MatSidenav; displayedColumnsBasket: string[] = ['resId']; @@ -167,17 +166,12 @@ export class FolderDocumentListComponent implements OnInit { }; this.foldersService.setFolder(this.folderInfo); this.headerService.setHeader(this.folderInfo.label, '', 'fa fa-folder-open'); - setTimeout(() => { - this.basketHome.togglePanel(false); - }, 200); }); this.basketUrl = '../../rest/folders/' + params['folderId'] + '/resources'; this.filtersListService.filterMode = false; this.selectedRes = []; this.sidenavRight.close(); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.listProperties = this.filtersListService.initListsProperties(this.headerService.user.id, 0, params['folderId'], 'folder'); diff --git a/src/frontend/app/folder/folder-action-list/folder-action-list.component.html b/src/frontend/app/folder/folder-action-list/folder-action-list.component.html index 8c3ceee1617c08f4071bd25e72d46e307367403e..700eb239dee8b4af57bbdd92e3568840645f57ff 100644 --- a/src/frontend/app/folder/folder-action-list/folder-action-list.component.html +++ b/src/frontend/app/folder/folder-action-list/folder-action-list.component.html @@ -1,7 +1,7 @@ <button *ngIf="!contextMode" mat-stroked-button [matMenuTriggerFor]="menu">{{lang.actionsAlt}}<mat-icon matSuffix class="fa fa-caret-down"></mat-icon> </button> -<span *ngIf="contextMode" [matMenuTriggerFor]="menu" #menu2 style="position: absolute;" +<span *ngIf="contextMode" [matMenuTriggerFor]="menu" #menu2 style="position: fixed;" [style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y"></span> <mat-menu #menu="matMenu" [class]="'actionListMenu'"> diff --git a/src/frontend/app/folder/panel/panel-folder.component.ts b/src/frontend/app/folder/panel/panel-folder.component.ts index db6a4bff9fb5ad28ab95ffeec3244c72ef24b4fd..0dd2e47d79aad2a48abf285f97fc4483e0a6db72 100644 --- a/src/frontend/app/folder/panel/panel-folder.component.ts +++ b/src/frontend/app/folder/panel/panel-folder.component.ts @@ -2,6 +2,9 @@ import { Component, OnInit, Input, ViewChild, Output, EventEmitter } from '@angu import { LANG } from '../../translate.component'; import { FolderTreeComponent } from '../folder-tree.component'; import { FoldersService } from '../folders.service'; +import { HeaderService } from '../../../service/header.service'; +import { ActionsService } from '../../actions/actions.service'; +import { Subscription } from 'rxjs'; declare function $j(selector: any): any; @@ -19,11 +22,25 @@ export class PanelFolderComponent implements OnInit { @ViewChild('folderTree', { static: false }) folderTree: FolderTreeComponent; @Output('refreshEvent') refreshEvent = new EventEmitter<string>(); + + subscription: Subscription; - constructor(public foldersService: FoldersService) { } + constructor( + public foldersService: FoldersService, + public actionService: ActionsService, + ) { + this.subscription = this.actionService.catchAction().subscribe(message => { + this.refreshFoldersTree(); + }); + } ngOnInit(): void { } + ngOnDestroy() { + // unsubscribe to ensure no memory leaks + this.subscription.unsubscribe(); + } + initTree() { this.folderTree.openTree(this.id); } diff --git a/src/frontend/app/header/header-left.component.html b/src/frontend/app/header/header-left.component.html index a7346f9ae18fcbb8cc8ddb451804e9bba87dacd7..c69bdd68a8c7d257149d3810758be9ce914ab70e 100644 --- a/src/frontend/app/header/header-left.component.html +++ b/src/frontend/app/header/header-left.component.html @@ -1,5 +1,5 @@ -<div class="bg-head-title-label"> - <button *ngIf="!snavLeft.opened" mat-icon-button (click)="snavLeft.open()" style="font-size:20px;"> +<div class="bg-head-title-label" *ngIf="headerService.sideNavLeft !== undefined"> + <button *ngIf="!headerService.sideNavLeft.opened" mat-icon-button (click)="headerService.sideNavLeft.open()" style="font-size:20px;"> <mat-icon class="fa fa-stream"></mat-icon> </button> <i *ngIf="headerService.headerMessageIcon !== ''" class="{{headerService.headerMessageIcon}} headerIcon"></i> {{headerService.headerMessage}} <span class="admin-toolbar-title-small">{{headerService.subHeaderMessage}}</span> diff --git a/src/frontend/app/header/header-panel.component.html b/src/frontend/app/header/header-panel.component.html index d47710379a609d8f1b9dae39444c57e659b03c80..151e240739eb317f28425adf4f1ad87e4adb8777 100644 --- a/src/frontend/app/header/header-panel.component.html +++ b/src/frontend/app/header/header-panel.component.html @@ -11,7 +11,7 @@ </button> </div> <div class="panelHeader-button"> - <button mat-icon-button (click)="snavLeft.close()"> + <button mat-icon-button (click)="headerService.sideNavLeft.close()"> <mat-icon fontSet="fas" fontIcon="fa-stream" style="transform: rotate(180deg);"></mat-icon> </button> </div> diff --git a/src/frontend/app/home/followed-action-list/followed-action-list.component.html b/src/frontend/app/home/followed-action-list/followed-action-list.component.html index 880b77b3fe3996e2c503c744fe909728a6711dc1..001e268eb0735ccaf934e3dc3437735b1780203b 100644 --- a/src/frontend/app/home/followed-action-list/followed-action-list.component.html +++ b/src/frontend/app/home/followed-action-list/followed-action-list.component.html @@ -1,7 +1,7 @@ <button *ngIf="!contextMode" mat-stroked-button [matMenuTriggerFor]="menu">{{lang.actionsAlt}}<mat-icon matSuffix class="fa fa-caret-down"></mat-icon> </button> -<span *ngIf="contextMode" [matMenuTriggerFor]="menu" #menu2 style="position: absolute;" +<span *ngIf="contextMode" [matMenuTriggerFor]="menu" #menu2 style="position: fixed;" [style.left]="contextMenuPosition.x" [style.top]="contextMenuPosition.y"></span> <mat-menu #menu="matMenu" [class]="'actionListMenu'"> diff --git a/src/frontend/app/home/followed-list/followed-document-list.component.html b/src/frontend/app/home/followed-list/followed-document-list.component.html index 21ec99516ba685c33d6dc9d79c0079b582ddf9bf..5e6c76da912425513ff280722603d88dd5bc75f2 100644 --- a/src/frontend/app/home/followed-list/followed-document-list.component.html +++ b/src/frontend/app/home/followed-list/followed-document-list.component.html @@ -1,15 +1,4 @@ <mat-sidenav-container class="maarch-container"> - <mat-sidenav #snavLeft class="panel-left" #snav [mode]="appService.getViewMode() ? 'over' : 'side'" - [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() ? false : true" - autoFocus="false" style="overflow-x:hidden;" [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> - <header-panel [snavLeft]="snav"></header-panel> - <menu-shortcut #menuShortcut></menu-shortcut> - <menu-nav></menu-nav> - <basket-home #basketHome [snavL]="snav"></basket-home> - <mat-divider></mat-divider> - <panel-folder #panelFolder *ngIf="folderInfo.id !== '' && folderInfo.id !== undefined" - [selectedId]="folderInfo.id" [showTree]="false"></panel-folder> - </mat-sidenav> <mat-sidenav-content> <mat-card id="viewThumbnail" style="display:none;position: fixed;z-index: 2;margin-left: 1px;"> <img style="max-height: 100vh;" src="{{thumbnailUrl}}" /> diff --git a/src/frontend/app/home/followed-list/followed-document-list.component.ts b/src/frontend/app/home/followed-list/followed-document-list.component.ts index 23e320c418f85d5768801f45b4443e658e6a9475..cb16dcb7d0d58cf9ffb412845cf846b6ccc7ac90 100644 --- a/src/frontend/app/home/followed-list/followed-document-list.component.ts +++ b/src/frontend/app/home/followed-list/followed-document-list.component.ts @@ -54,7 +54,6 @@ export class FollowedDocumentListComponent implements OnInit { dialogRef: MatDialogRef<any>; - @ViewChild('snav', { static: true }) sidenavLeft: MatSidenav; @ViewChild('snav2', { static: true }) sidenavRight: MatSidenav; displayedColumnsBasket: string[] = ['resId']; @@ -141,8 +140,6 @@ export class FollowedDocumentListComponent implements OnInit { this.filtersListService.filterMode = false; this.selectedRes = []; - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.listProperties = this.filtersListService.initListsProperties(this.headerService.user.id, 0, null, 'followed'); diff --git a/src/frontend/app/home/home.component.html b/src/frontend/app/home/home.component.html index 3f8c1e2893f710edbf1e79d50fa3fda6d5c99e85..56c8741c49807190cdb8310204bb67606f319067 100644 --- a/src/frontend/app/home/home.component.html +++ b/src/frontend/app/home/home.component.html @@ -1,136 +1,117 @@ -<mat-sidenav-container class="maarch-container"> - <mat-sidenav #snavLeft class="panel-left" #snav [mode]="appService.getViewMode() ? 'over' : 'side'" - [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() ? false : true" autoFocus="false" style="overflow-x:hidden;" - [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> - <header-panel [snavLeft]="snav"></header-panel> - <menu-shortcut></menu-shortcut> - <menu-nav></menu-nav> - <basket-home #basketHome [snavL]="snav"></basket-home> - <mat-divider></mat-divider> - <panel-folder></panel-folder> - </mat-sidenav> - <mat-sidenav-content> - <mat-card id="viewThumbnail" style="display:none;position: fixed;z-index: 2;margin-left: 1px;"><img - style="max-height: 100vh;" src="{{thumbnailUrl}}" /> - </mat-card> - <div class="bg-head"> - <div class="bg-head-title" [class.customContainerRight]="appService.getViewMode()"> - <div class="bg-head-title-label"> - <header-left [snavLeft]="snav"></header-left> - </div> - <div class="bg-head-title-tool"> - <header-right></header-right> +<mat-card id="viewThumbnail" style="display:none;position: fixed;z-index: 2;margin-left: 1px;"><img + style="max-height: 100vh;" src="{{thumbnailUrl}}" /> +</mat-card> +<div class="bg-head"> + <div class="bg-head-title" [class.customContainerRight]="appService.getViewMode()"> + <div class="bg-head-title-label"> + <header-left></header-left> + </div> + <div class="bg-head-title-tool"> + <header-right></header-right> + </div> + </div> + <div class="bg-head-content" [class.fullContainer]="appService.getViewMode()"> + <mat-card *ngIf="homeMessage" + style="background: #135F7F;color: white;box-shadow: none;border: solid 2px white;width: 100%;border-radius: 20px;padding-bottom: 40px;"> + <div style="display: flex;max-height: 250px;overflow: auto;"> + <div style="padding-left: 10px;"> + <span [innerHTML]="homeMessage"></span> </div> </div> - <div class="bg-head-content" [class.fullContainer]="appService.getViewMode()"> - <mat-card *ngIf="homeMessage" - style="background: #135F7F;color: white;box-shadow: none;border: solid 2px white;width: 100%;border-radius: 20px;padding-bottom: 40px;"> - <div style="display: flex;max-height: 250px;overflow: auto;"> - <div style="padding-left: 10px;"> - <span [innerHTML]="homeMessage"></span> - </div> - </div> - <div style="text-align: right;opacity: 0.5;"> - <button mat-button routerLink="/about-us" - style="position:absolute;font-size:10px;right: 0px;bottom: 0px;">{{lang.aboutUs}}</button> - </div> - </mat-card> + <div style="text-align: right;opacity: 0.5;"> + <button mat-button routerLink="/about-us" + style="position:absolute;font-size:10px;right: 0px;bottom: 0px;">{{lang.aboutUs}}</button> </div> - </div> - <div class="container" [class.fullContainer]="appService.getViewMode()"> - <div class="container-content"> - <mat-tab-group> - <mat-tab *ngIf="homeData !== undefined && homeData.isLinkedToMaarchParapheur"> - <ng-template matTabLabel> - <span [class.noDoc]="nbMpDocs === 0" matBadge="{{nbMpDocs}}" matBadgeOverlap="false">{{lang.maarchParapheurDocuments}}</span> - </ng-template> - <app-maarch-parapheur-list (triggerEvent)="updateNbMpDocs($event)"></app-maarch-parapheur-list> - </mat-tab> - <mat-tab label="{{lang.myLastResources}}" *ngIf="homeData !== undefined"> - <div *ngIf="loading" style="display:flex;height:100%;"> - <mat-spinner style="margin:auto;"></mat-spinner> - </div> - <table *ngIf="!loading" mat-table [dataSource]="dataSource" matSort matSortActive="res_id" - matSortDisableClear matSortDirection="asc" style="width:100%;table-layout: fixed;"> - <!-- Number Column --> - <ng-container matColumnDef="res_id"> - <td class="first_col" mat-cell *matCellDef="let row" [ngStyle]="{'width': appService.getViewMode() ? '30%' : '15%'}"> - <div *ngIf="row.closing_date == null && appService.getViewMode()" - id="{{row.res_id}}_creation_date" - style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" - title='{{row.creation_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'> - <i class="fa fa-calendar" title="{{lang.creationDate}}"></i> - {{row.creation_date | timeAgo}} - </div> - <div style="overflow: hidden;text-overflow: ellipsis;"> - <mat-icon [ngStyle]="{'color': row.priority_color}" color="primary" - class="{{row.status_icon.charAt(0)}}{{row.status_icon.charAt(1)}} {{row.status_icon}} {{row.status_icon.charAt(0)}}{{row.status_icon.charAt(1)}}-2x" - title="{{row.status_label}} ({{row.status_id}})"></mat-icon> - <span *ngIf="row.confidentiality === 'Y'" class="watermark">{{lang.confidential}}</span> - </div> - <div style="padding-top: 5px;color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" - title="{{row.alt_identifier}} (n°{{row.res_id}})"> - {{row.alt_identifier}} - </div> - </td> - </ng-container> - <ng-container matColumnDef="subject"> - <td mat-cell *matCellDef="let row" - style="width:45%;overflow:hidden;text-overflow: ellipsis;padding: 5px;vertical-align: middle;"> - <div *ngIf="row.closing_date == null && appService.getViewMode()" - style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;text-align: right;"> - <i class="fa fa-stopwatch" title="{{lang.processLimitDate}}"></i> - <span [innerHTML]="row.process_limit_date | timeLimit" - title='{{row.process_limit_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'></span> - </div> - <div style="overflow: hidden;line-height: 1.5em;height: 3em;overflow: hidden;" - title="{{row.subject}}"> - <span>{{row.subject}}</span> - </div> - </td> - </ng-container> - <ng-container matColumnDef="creation_date"> - <td mat-cell *matCellDef="let row" - style="text-align: right;width:15%;overflow:hidden;text-overflow: ellipsis;white-space: nowrap;padding: 5px;vertical-align: middle;"> - <div *ngIf="row.closing_date == null" id="{{row.res_id}}_creation_date" - style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" - title='{{row.creation_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'> - <i class="fa fa-calendar" title="{{lang.creationDate}}"></i> - {{row.creation_date | timeAgo}} - </div> - <div *ngIf="row.closing_date == null" - style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> - <i class="fa fa-stopwatch" title="{{lang.processLimitDate}}"></i> - <span [innerHTML]="row.process_limit_date | timeLimit" - title='{{row.process_limit_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'></span> - </div> - <div *ngIf="row.closing_date != null" - style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> - <i class="fa fa-lock" title="{{lang.closingDate}}"></i> - <span - title='{{row.closing_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'>{{row.closing_date | timeAgo}}</span> - </div> - <div> - <button mat-icon-button (click)="$event.stopPropagation();viewDocument(row);" - (mouseenter)="viewThumbnail(row);" (mouseleave)="closeThumbnail();"> - <mat-icon color="primary" class="fa fa-eye"></mat-icon> - </button> - </div> - </td> - </ng-container> - <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="goToDetail(row);" - style="cursor:pointer;"></tr> - </table> - </mat-tab> - </mat-tab-group> - </div> - </div> - </mat-sidenav-content> - <mat-sidenav #snav2 [fixedInViewport]="appService.getViewMode()" position='end' - [opened]="appService.getViewMode() ? false : false" [mode]="appService.getViewMode() ? 'over' : 'side'" class="panel-right" - style="overflow-x:hidden;" [ngStyle]="{'width': appService.getViewMode() ? '80%' : '30%'}" autoFocus="false"> - <pdf-viewer [src]="docUrl" [render-text]="true" [autoresize]="true" [original-size]="false" [show-all]="true"> - </pdf-viewer> - <!-- <div *ngIf="innerHtml" [innerHTML]="innerHtml" style="height: 100%;overflow: hidden;"></div> --> - </mat-sidenav> -</mat-sidenav-container> + </mat-card> + </div> +</div> +<div class="container" [class.fullContainer]="appService.getViewMode()"> + <div class="container-content"> + <mat-tab-group> + <mat-tab *ngIf="homeData !== undefined && homeData.isLinkedToMaarchParapheur"> + <ng-template matTabLabel> + <span [class.noDoc]="nbMpDocs === 0" matBadge="{{nbMpDocs}}" + matBadgeOverlap="false">{{lang.maarchParapheurDocuments}}</span> + </ng-template> + <app-maarch-parapheur-list (triggerEvent)="updateNbMpDocs($event)"></app-maarch-parapheur-list> + </mat-tab> + <mat-tab label="{{lang.myLastResources}}" *ngIf="homeData !== undefined"> + <div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> + </div> + <table *ngIf="!loading" mat-table [dataSource]="dataSource" matSort matSortActive="res_id" + matSortDisableClear matSortDirection="asc" style="width:100%;table-layout: fixed;"> + <!-- Number Column --> + <ng-container matColumnDef="res_id"> + <td class="first_col" mat-cell *matCellDef="let row" + [ngStyle]="{'width': appService.getViewMode() ? '30%' : '15%'}"> + <div *ngIf="row.closing_date == null && appService.getViewMode()" + id="{{row.res_id}}_creation_date" + style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" + title='{{row.creation_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'> + <i class="fa fa-calendar" title="{{lang.creationDate}}"></i> + {{row.creation_date | timeAgo}} + </div> + <div style="overflow: hidden;text-overflow: ellipsis;"> + <mat-icon [ngStyle]="{'color': row.priority_color}" color="primary" + class="{{row.status_icon.charAt(0)}}{{row.status_icon.charAt(1)}} {{row.status_icon}} {{row.status_icon.charAt(0)}}{{row.status_icon.charAt(1)}}-2x" + title="{{row.status_label}} ({{row.status_id}})"></mat-icon> + <span *ngIf="row.confidentiality === 'Y'" class="watermark">{{lang.confidential}}</span> + </div> + <div style="padding-top: 5px;color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" + title="{{row.alt_identifier}} (n°{{row.res_id}})"> + {{row.alt_identifier}} + </div> + </td> + </ng-container> + <ng-container matColumnDef="subject"> + <td mat-cell *matCellDef="let row" + style="width:45%;overflow:hidden;text-overflow: ellipsis;padding: 5px;vertical-align: middle;"> + <div *ngIf="row.closing_date == null && appService.getViewMode()" + style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;text-align: right;"> + <i class="fa fa-stopwatch" title="{{lang.processLimitDate}}"></i> + <span [innerHTML]="row.process_limit_date | timeLimit" + title='{{row.process_limit_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'></span> + </div> + <div style="overflow: hidden;line-height: 1.5em;height: 3em;overflow: hidden;" + title="{{row.subject}}"> + <span>{{row.subject}}</span> + </div> + </td> + </ng-container> + <ng-container matColumnDef="creation_date"> + <td mat-cell *matCellDef="let row" + style="text-align: right;width:15%;overflow:hidden;text-overflow: ellipsis;white-space: nowrap;padding: 5px;vertical-align: middle;"> + <div *ngIf="row.closing_date == null" id="{{row.res_id}}_creation_date" + style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" + title='{{row.creation_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'> + <i class="fa fa-calendar" title="{{lang.creationDate}}"></i> + {{row.creation_date | timeAgo}} + </div> + <div *ngIf="row.closing_date == null" + style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> + <i class="fa fa-stopwatch" title="{{lang.processLimitDate}}"></i> + <span [innerHTML]="row.process_limit_date | timeLimit" + title='{{row.process_limit_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'></span> + </div> + <div *ngIf="row.closing_date != null" + style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> + <i class="fa fa-lock" title="{{lang.closingDate}}"></i> + <span + title='{{row.closing_date | date : lang.onRange + " dd/MM/y " + lang.atRange +" HH:mm"}}'>{{row.closing_date | timeAgo}}</span> + </div> + <div> + <button mat-icon-button (click)="$event.stopPropagation();viewDocument(row);" + (mouseenter)="viewThumbnail(row);" (mouseleave)="closeThumbnail();"> + <mat-icon color="primary" class="fa fa-eye"></mat-icon> + </button> + </div> + </td> + </ng-container> + <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="goToDetail(row);" + style="cursor:pointer;"></tr> + </table> + </mat-tab> + </mat-tab-group> + </div> +</div> \ No newline at end of file diff --git a/src/frontend/app/home/home.component.ts b/src/frontend/app/home/home.component.ts index 179bf287961fa8f9de11f7dd16076c5a9d361ba2..a624075450a5e7e220657b8c99453ba55d22ee4e 100644 --- a/src/frontend/app/home/home.component.ts +++ b/src/frontend/app/home/home.component.ts @@ -16,7 +16,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "home.component.html", styleUrls: ['home.component.scss'], - providers: [NotificationService, AppService] + providers: [AppService] }) export class HomeComponent implements OnInit { @@ -35,8 +35,6 @@ export class HomeComponent implements OnInit { public innerHtml : SafeHtml; displayedColumns : string[] = ['res_id', 'subject', 'creation_date']; - @ViewChild('snav', { static: true }) snav: MatSidenav; - @ViewChild('snav2', { static: true }) sidenavRight: MatSidenav; @ViewChildren(MatExpansionPanel) viewPanels: QueryList<MatExpansionPanel>; constructor( @@ -58,8 +56,6 @@ export class HomeComponent implements OnInit { this.displayedColumns = ['res_id', 'subject']; } this.headerService.setHeader(this.lang.home); - window['MainHeaderComponent'].setSnav(this.snav); - window['MainHeaderComponent'].setSnavRight(null); let event = new Date(); let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; diff --git a/src/frontend/app/indexation/indexation.component.ts b/src/frontend/app/indexation/indexation.component.ts index 1dbff7fa7de6ba33a2e4f9ac349a0caddb140554..4a3915499483cc2b243b99cf3264d7c8ba506bd6 100644 --- a/src/frontend/app/indexation/indexation.component.ts +++ b/src/frontend/app/indexation/indexation.component.ts @@ -85,8 +85,8 @@ export class IndexationComponent implements OnInit { // Event after process action this.subscription = this.actionService.catchAction().subscribe(resIds => { const param = this.isMailing ? { - isMailing : true - } : null; + isMailing: true + } : null; this.router.navigate([`/resources/${resIds[0]}`], { queryParams: param }); }); } @@ -95,6 +95,8 @@ export class IndexationComponent implements OnInit { // Use to clean data after navigate on same url this._activatedRoute.queryParamMap.subscribe((paramMap: ParamMap) => { const refresh = paramMap.get('refresh'); + this.headerService.sideNavLeft.close(); + this.headerService.sideNavLeft = this.sidenavLeft; if (refresh) { this.appDocumentViewer.templateListForm.reset(); this.appDocumentViewer.file = { @@ -188,7 +190,7 @@ export class IndexationComponent implements OnInit { onSubmit() { if (this.indexingForm.isValidForm()) { const formatdatas = this.formatDatas(this.indexingForm.getDatas()); - + formatdatas['modelId'] = this.currentIndexingModel.master !== null ? this.currentIndexingModel.master : this.currentIndexingModel.id; formatdatas['chrono'] = true; diff --git a/src/frontend/app/list/basket-list.component.html b/src/frontend/app/list/basket-list.component.html index 6e1ca1a85971c39ba05029872170a96e1eba5353..0a98ce92ea510117a48b1df6ad84da1181f20e6f 100644 --- a/src/frontend/app/list/basket-list.component.html +++ b/src/frontend/app/list/basket-list.component.html @@ -1,15 +1,4 @@ <mat-sidenav-container class="maarch-container"> - <mat-sidenav #snavLeft class="panel-left" #snav [mode]="appService.getViewMode() ? 'over' : 'side'" - [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() ? false : true" autoFocus="false" - style="overflow-x:hidden;" [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> - <header-panel [snavLeft]="snav"></header-panel> - <menu-shortcut #menuShortcut></menu-shortcut> - <menu-nav></menu-nav> - <basket-home #basketHome (refreshEvent)="refreshDao()" [snavL]="snav" - [currentBasketInfo]="currentBasketInfo"></basket-home> - <mat-divider></mat-divider> - <panel-folder #panelFolder (refreshEvent)="refreshDao()"></panel-folder> - </mat-sidenav> <mat-sidenav-content> <mat-card id="viewThumbnail" style="display:none;position: fixed;z-index: 2;margin-left: 1px;"><img style="max-height: 100vh;" src="{{thumbnailUrl}}" /></mat-card> <div class="bg-head"> diff --git a/src/frontend/app/list/basket-list.component.ts b/src/frontend/app/list/basket-list.component.ts index b1da70195f7b6c889a9e3d7266bc48a9ca2eb422..31ef8e53cdc7d1ecd362f0db92ade9f7fa24f195 100755 --- a/src/frontend/app/list/basket-list.component.ts +++ b/src/frontend/app/list/basket-list.component.ts @@ -31,7 +31,7 @@ declare function $j(selector: any): any; @Component({ templateUrl: "basket-list.component.html", styleUrls: ['basket-list.component.scss'], - providers: [NotificationService, AppService], + providers: [AppService], }) export class BasketListComponent implements OnInit { @@ -52,7 +52,6 @@ export class BasketListComponent implements OnInit { dragInit: boolean = true; - @ViewChild('snav', { static: true }) sidenavLeft: MatSidenav; @ViewChild('snav2', { static: true }) sidenavRight: MatSidenav; displayedColumnsBasket: string[] = ['resId']; @@ -98,8 +97,6 @@ export class BasketListComponent implements OnInit { @ViewChild('actionsListContext', { static: true }) actionsList: ActionsListComponent; @ViewChild('filtersTool', { static: true }) filtersTool: FiltersToolComponent; @ViewChild('appPanelList', { static: true }) appPanelList: PanelListComponent; - @ViewChild('basketHome', { static: true }) basketHome: BasketHomeComponent; - @ViewChild('panelFolder', { static: true }) panelFolder: PanelFolderComponent; currentSelectedChrono: string = ''; @@ -133,7 +130,6 @@ export class BasketListComponent implements OnInit { }); this.subscription2 = this.actionService.catchAction().subscribe((message: any) => { this.refreshDaoAfterAction(); - this.panelFolder.refreshFoldersTree(); }); $j("link[href='merged_css.php']").remove(); @@ -156,11 +152,11 @@ export class BasketListComponent implements OnInit { groupId: params['groupSerialId'], basketId: params['basketId'] }; + this.headerService.currentBasketInfo = this.currentBasketInfo; + this.filtersListService.filterMode = false; this.selectedRes = []; this.sidenavRight.close(); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(null); this.listProperties = this.filtersListService.initListsProperties(this.currentBasketInfo.ownerId, this.currentBasketInfo.groupId, this.currentBasketInfo.basketId, 'basket', this.specificChrono); @@ -273,7 +269,6 @@ export class BasketListComponent implements OnInit { refreshDaoAfterAction() { this.sidenavRight.close(); this.refreshDao(); - this.basketHome.refreshBasketHome(); const e: any = { checked: false }; this.toggleAllRes(e); } diff --git a/src/frontend/app/menu/menu-shortcut.component.html b/src/frontend/app/menu/menu-shortcut.component.html index 32ad6bad06f5e3080418f482ed1fcb8946890c49..d6b29fbfaca05f7a89e9a3d9be5d7a3eef51b147 100755 --- a/src/frontend/app/menu/menu-shortcut.component.html +++ b/src/frontend/app/menu/menu-shortcut.component.html @@ -2,7 +2,7 @@ </mat-nav-list> <mat-nav-list> <div class="button-row" style="padding-left: 10px;padding-right: 10px;display: flex;width: 300px;margin-top: -10px;margin-bottom: 10px;"> - <ng-container *ngFor="let shortcut of shortcuts"> + <ng-container *ngFor="let shortcut of privilegeService.shortcuts"> <span style="flex:1;text-align: left;padding: 5px;" *ngIf="(shortcut.id == 'indexing' && shortcut.groups.length<=1) || (shortcut.id != 'indexing')"> <button style="z-index: 9999;" color="default" mat-fab (click)="gotToMenu(shortcut);" matTooltip="{{shortcut.label}}" matTooltipPosition="above"> diff --git a/src/frontend/app/menu/menu-shortcut.component.ts b/src/frontend/app/menu/menu-shortcut.component.ts index 67a69145f8ad1e4b218ee748df9ae8e709a1810e..ebc7131f6878fef6cb132095b7cf79a2e660d47e 100755 --- a/src/frontend/app/menu/menu-shortcut.component.ts +++ b/src/frontend/app/menu/menu-shortcut.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Inject } from '@angular/core'; +import { Component, OnInit, Inject, ChangeDetectionStrategy } from '@angular/core'; import { Router } from '@angular/router'; import { HttpClient } from '@angular/common/http'; import { LANG } from '../translate.component'; @@ -35,13 +35,8 @@ export class MenuShortcutComponent implements OnInit { this.router = _router; } - ngOnInit(): void { - this.loadShortcuts(); - } + ngOnInit(): void { } - loadShortcuts() { - this.shortcuts = this.privilegeService.getCurrentUserShortcuts(); - } onSpeedDialFabClicked(group: any, shortcut: any) { this.router.navigate(['/indexing/' + group.id]); diff --git a/src/frontend/app/process/process.component.ts b/src/frontend/app/process/process.component.ts index b8108534cb0ff9d0025610fc77002c25ea8926ac..0988fd19ac8a18ca1a1dcf0be18363625bd5b6cc 100755 --- a/src/frontend/app/process/process.component.ts +++ b/src/frontend/app/process/process.component.ts @@ -186,7 +186,8 @@ export class ProcessComponent implements OnInit { ngOnInit(): void { this.loading = true; - + this.headerService.sideNavLeft.close(); + this.headerService.sideNavLeft = this.sidenavLeft; this.headerService.setHeader(this.lang.eventProcessDoc); this.route.params.subscribe(params => { diff --git a/src/frontend/app/profile.component.html b/src/frontend/app/profile.component.html index 492b4b8d2d5b6ac2926326287f3471bb5bb0bc2e..a55a498d8e19b8465b9e2bf914eb03290d211854 100755 --- a/src/frontend/app/profile.component.html +++ b/src/frontend/app/profile.component.html @@ -1,25 +1,5 @@ <div class="admin-container" [class.admin-is-mobile]="appService.getViewMode()"> <mat-sidenav-container autosize class="admin-sidenav-container"> - <mat-sidenav #snav [mode]="appService.getViewMode() ? 'over' : 'side'" [fixedInViewport]="appService.getViewMode()" fixedTopGap="56" - [opened]="appService.getViewMode() ? false : true" autoFocus="false"> - <menu-shortcut></menu-shortcut> - <menu-nav></menu-nav> - <mat-nav-list> - <h3 mat-subheader>{{lang.actions}}</h3> - <a mat-list-item (click)="askRedirectBasket()"> - <mat-icon color="warn" mat-list-icon class="fa fa-plane"></mat-icon> - <p mat-line> - {{lang.activateMyAbs}} - </p> - </a> - <a *ngIf="user.canModifyPassword" mat-list-item (click)="changePasswd();"> - <mat-icon color="primary" mat-list-icon class="fa fa-key"></mat-icon> - <p mat-line> - {{lang.changeMyPassword}} - </p> - </a> - </mat-nav-list> - </mat-sidenav> <mat-sidenav-content> <div *ngIf="loading" style="display:flex;height:100%;"> <mat-spinner style="margin:auto;"></mat-spinner> diff --git a/src/frontend/app/profile.component.ts b/src/frontend/app/profile.component.ts index 3a71186d0f8898b137c74e25e4cbd96532c2bf2f..51ee5d86c1f4cc0e6cdab408776a3d80e22c6fde 100755 --- a/src/frontend/app/profile.component.ts +++ b/src/frontend/app/profile.component.ts @@ -404,8 +404,8 @@ export class ProfileComponent implements OnInit { ngOnInit(): void { this.headerService.setHeader(this.lang.myProfile); - window['MainHeaderComponent'].setSnav(this.sidenavLeft); - window['MainHeaderComponent'].setSnavRight(this.sidenavRight); + + this.loading = true; diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts index 26deadab743db4dec3eb2fa01a246ef6496ec46f..0788ba0fb2c0f122f9a49ced7547f5c0eafe96da 100644 --- a/src/frontend/service/app.guard.ts +++ b/src/frontend/service/app.guard.ts @@ -21,9 +21,16 @@ export class AppGuard implements CanActivate { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean { // TO DO : CAN BE REMOVE AFTER FULL V2 localStorage.setItem('PreviousV2Route', state.url); - + + if (route.url.filter((url: any) => url == 'administration').length > 0) { + this.headerService.hideSideBar = true; + //this.headerService.sideNavLeft.close(); + } else { + this.headerService.hideSideBar = false; + this.headerService.resetSideNavSelection(); + } + if (this.headerService.user.id === undefined) { - return this.http.get('../../rest/currentUser/profile') .pipe( map((data: any) => { @@ -37,7 +44,9 @@ export class AppGuard implements CanActivate { preferences: data.preferences, privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : data.privileges }; + this.headerService.nbResourcesFollowed = data.nbFollowedResources; + this.privilegeService.resfreshUserShortcuts(); return true; }) ); @@ -51,6 +60,8 @@ export class AppGuard implements CanActivate { providedIn: 'root' }) export class AfterProcessGuard implements CanDeactivate<ProcessComponent> { + constructor() { } + canDeactivate(component: ProcessComponent): boolean { if (!component.isActionEnded() && !component.detailMode) { component.unlockResource(); diff --git a/src/frontend/service/header.service.ts b/src/frontend/service/header.service.ts index d8f048821d93ddf4a968c68faf624e20ab754531..e282ff462cc0e3678c5398cfd24b3775fa350c60 100755 --- a/src/frontend/service/header.service.ts +++ b/src/frontend/service/header.service.ts @@ -3,45 +3,71 @@ import { HttpClient } from '@angular/common/http'; import { LANG } from '../app/translate.component'; import { tap, catchError, map } from 'rxjs/operators'; import { of } from 'rxjs'; +import { MatSidenav } from '@angular/material'; +import { FoldersService } from '../app/folder/folders.service'; @Injectable() export class HeaderService { + hideSideBar: boolean = false; + sideNavLeft: MatSidenav = null; + defaultSideNavLeft: MatSidenav = null; + currentBasketInfo: any = { + ownerId: 0, + groupId: 0, + basketId: '' + }; + folderId: number = 0; headerMessageIcon: string = ""; headerMessage: string = ""; subHeaderMessage: string = ""; - user: any = { firstname: "", lastname: "", groups : [], privileges : [] }; + user: any = { firstname: "", lastname: "", groups: [], privileges: [] }; lang: any = LANG; nbResourcesFollowed: number = 0; base64: string = null; - constructor(public http: HttpClient) { } + constructor( + public http: HttpClient, + public foldersService: FoldersService, + ) { } loadHeader() { - this.http.get('../../rest/header').pipe( - tap((data: any) => this.setUser(data.user)), - catchError((err: any) => { - console.log(err); - return of(false); - }) - ).subscribe(); + return new Promise((resolve, reject) => { + this.http.get('../../rest/header').pipe( + tap((data: any) => { + this.setUser(data.user); + resolve(true); + }), + catchError((err: any) => { + console.log(err); + resolve(false); + return of(false); + }) + ).subscribe(); + }); + } resfreshCurrentUser() { - this.http.get('../../rest/currentUser/profile') - .pipe( - map((data: any) => { - this.user = { - id: data.id, - userId: data.user_id, - firstname: data.firstname, - lastname: data.lastname, - entities: data.entities, - groups: data.groups, - preferences: data.preferences, - privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.user.privileges : data.privileges - } - }) - ).subscribe(); + return new Promise((resolve, reject) => { + this.http.get('../../rest/currentUser/profile') + .pipe( + map((data: any) => { + this.user = { + id: data.id, + userId: data.user_id, + firstname: data.firstname, + lastname: data.lastname, + entities: data.entities, + groups: data.groups, + preferences: data.preferences, + privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.user.privileges : data.privileges + }; + this.nbResourcesFollowed = data.nbFollowedResources; + resolve(true); + }) + ).subscribe(); + }); + } setUser(user: any) { @@ -61,4 +87,20 @@ export class HeaderService { this.subHeaderMessage = subTitle; this.headerMessageIcon = icon; } + + resetSideNavSelection() { + console.log(this.defaultSideNavLeft); + + if (this.defaultSideNavLeft !== undefined) { + this.sideNavLeft = this.defaultSideNavLeft; + this.sideNavLeft.open(); + this.currentBasketInfo = { + ownerId: 0, + groupId: 0, + basketId: '' + }; + this.foldersService.setFolder({ id: 0 }); + } + + } } diff --git a/src/frontend/service/privileges.service.ts b/src/frontend/service/privileges.service.ts index 56c18fb38e3e2e451d93b284ff256d02e90f5936..f3200604400f14ea69e5a634ac8083d6b31e5086 100644 --- a/src/frontend/service/privileges.service.ts +++ b/src/frontend/service/privileges.service.ts @@ -519,6 +519,19 @@ export class PrivilegeService { } ]; + shortcuts: any[] = [ + { + "id": "followed", + "label": this.lang.followedMail, + "comment": this.lang.followedMail, + "route": "/followed", + "style": "fas fa-star", + "unit": "application", + "angular": true, + "shortcut" : true + } + ]; + constructor(public headerService: HeaderService) { } getAllPrivileges() { @@ -591,8 +604,8 @@ export class PrivilegeService { return this.menus.map(elem => elem.unit).filter((elem, pos, arr) => arr.indexOf(elem) === pos); } - getCurrentUserShortcuts(): Array<menu> { - let shortcuts: any[] = [ + resfreshUserShortcuts() { + this.shortcuts = [ { "id": "followed", "label": this.lang.followedMail, @@ -605,7 +618,7 @@ export class PrivilegeService { } ]; - shortcuts = shortcuts.concat(this.menus.filter(elem => elem.shortcut === true).filter(elem => this.headerService.user.privileges.indexOf(elem.id) > -1)); + this.shortcuts = this.shortcuts.concat(this.menus.filter(elem => elem.shortcut === true).filter(elem => this.headerService.user.privileges.indexOf(elem.id) > -1)); if (this.headerService.user.groups.filter((group: any) => group.can_index === true).length > 0) { const indexingGroups: any[] = []; @@ -628,10 +641,8 @@ export class PrivilegeService { 'shortcut' : true, "groups": indexingGroups }; - shortcuts.push(indexingShortcut); + this.shortcuts.push(indexingShortcut); } - - return shortcuts; } getAdministrations(): Array<administration> {