From a1cf16223914e50c8a87df537bdf5b637ade1a3c Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Tue, 2 Jul 2019 18:49:24 +0200 Subject: [PATCH] FEAT #10828 TIME 1:20 add maarch parapheur list + move home component in home folder --- src/frontend/app/app-routing.module.ts | 2 +- src/frontend/app/app.module.ts | 4 +- src/frontend/app/home.component.scss | 0 .../app/{ => home}/home.component.html | 13 +++- src/frontend/app/home/home.component.scss | 13 ++++ src/frontend/app/{ => home}/home.component.ts | 15 +++-- .../maarch-parapheur-list.component.html | 35 ++++++++++ .../maarch-parapheur-list.component.scss | 7 ++ .../maarch-parapheur-list.component.ts | 66 +++++++++++++++++++ src/frontend/lang/lang-en.ts | 6 +- src/frontend/lang/lang-fr.ts | 6 +- src/frontend/lang/lang-nl.ts | 4 ++ 12 files changed, 159 insertions(+), 12 deletions(-) delete mode 100644 src/frontend/app/home.component.scss rename src/frontend/app/{ => home}/home.component.html (93%) mode change 100755 => 100644 create mode 100644 src/frontend/app/home/home.component.scss rename src/frontend/app/{ => home}/home.component.ts (91%) mode change 100755 => 100644 create mode 100644 src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.html create mode 100644 src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.scss create mode 100644 src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.ts diff --git a/src/frontend/app/app-routing.module.ts b/src/frontend/app/app-routing.module.ts index cd10fda4735..8303b020e8f 100755 --- a/src/frontend/app/app-routing.module.ts +++ b/src/frontend/app/app-routing.module.ts @@ -5,7 +5,7 @@ import { ActivateUserComponent } from './activate-user.component'; import { PasswordModificationComponent } from './password-modification.component'; import { ProfileComponent } from './profile.component'; import { AboutUsComponent } from './about-us.component'; -import { HomeComponent } from './home.component'; +import { HomeComponent } from './home/home.component'; import { BasketListComponent } from './list/basket-list.component'; import { SignatureBookComponent } from './signature-book.component'; import { SaveNumericPackageComponent } from './save-numeric-package.component'; diff --git a/src/frontend/app/app.module.ts b/src/frontend/app/app.module.ts index 7cb8d3e77ae..8be5b4504c5 100755 --- a/src/frontend/app/app.module.ts +++ b/src/frontend/app/app.module.ts @@ -13,7 +13,8 @@ import { AdministrationModule } from './administration/administr import { ProfileComponent } from './profile.component'; import { AboutUsComponent } from './about-us.component'; -import { HomeComponent } from './home.component'; +import { HomeComponent } from './home/home.component'; +import { MaarchParapheurListComponent } from './home/maarch-parapheur/maarch-parapheur-list.component'; import { BasketListComponent } from './list/basket-list.component'; import { PasswordModificationComponent, InfoChangePasswordModalComponent, } from './password-modification.component'; import { SignatureBookComponent, SafeUrlPipe } from './signature-book.component'; @@ -69,6 +70,7 @@ import { PrintSeparatorComponent } from './separator/prin ProfileComponent, AboutUsComponent, HomeComponent, + MaarchParapheurListComponent, BasketListComponent, PasswordModificationComponent, SignatureBookComponent, diff --git a/src/frontend/app/home.component.scss b/src/frontend/app/home.component.scss deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/frontend/app/home.component.html b/src/frontend/app/home/home.component.html old mode 100755 new mode 100644 similarity index 93% rename from src/frontend/app/home.component.html rename to src/frontend/app/home/home.component.html index ba960b0261d..63e5a3e7131 --- a/src/frontend/app/home.component.html +++ b/src/frontend/app/home/home.component.html @@ -9,7 +9,8 @@ <mat-divider></mat-divider> </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 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]="mobileMode"> @@ -111,11 +112,16 @@ </div> </td> </ng-container> - <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="goToDetail(row);" style="cursor:pointer;"></tr> </table> </mat-tab> + <mat-tab *ngIf="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-group> </div> </div> @@ -123,7 +129,8 @@ <mat-sidenav #snav2 [fixedInViewport]="mobileQuery.matches" position='end' [opened]="mobileQuery.matches ? false : false" [mode]="mobileMode ? 'over' : 'side'" class="panel-right" style="overflow-x:hidden;" [ngStyle]="{'width': mobileMode ? '80%' : '30%'}" autoFocus="false"> - <pdf-viewer [src]="docUrl" [render-text]="true" [autoresize]="true" [original-size]="false" [show-all]="true"></pdf-viewer> + <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> \ No newline at end of file diff --git a/src/frontend/app/home/home.component.scss b/src/frontend/app/home/home.component.scss new file mode 100644 index 00000000000..30d9dc381dd --- /dev/null +++ b/src/frontend/app/home/home.component.scss @@ -0,0 +1,13 @@ +@import '../../css/vars.scss'; + +.mat-badge-content { + background: none; + color: $primary; +} + +.noDoc { + .mat-badge-content { + color: #666; + opacity: 0.5; + } +} diff --git a/src/frontend/app/home.component.ts b/src/frontend/app/home/home.component.ts old mode 100755 new mode 100644 similarity index 91% rename from src/frontend/app/home.component.ts rename to src/frontend/app/home/home.component.ts index bc56436dd99..d45e95a45cd --- a/src/frontend/app/home.component.ts +++ b/src/frontend/app/home/home.component.ts @@ -1,13 +1,13 @@ import { ChangeDetectorRef, Component, OnInit, ViewChild, QueryList, ViewChildren } from '@angular/core'; import { MediaMatcher } from '@angular/cdk/layout'; import { HttpClient } from '@angular/common/http'; -import { LANG } from './translate.component'; +import { LANG } from '../translate.component'; import { MatDialog, MatSidenav, MatExpansionPanel, MatTableDataSource } from '@angular/material'; -import { NotificationService } from './notification.service'; -import { HeaderService } from '../service/header.service'; +import { NotificationService } from '../notification.service'; +import { HeaderService } from '../../service/header.service'; -import { AutoCompletePlugin } from '../plugins/autocomplete.plugin'; +import { AutoCompletePlugin } from '../../plugins/autocomplete.plugin'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; declare function $j(selector: any): any; @@ -35,6 +35,7 @@ export class HomeComponent extends AutoCompletePlugin implements OnInit { homeMessage : string; dataSource : any; currentDate : string = ""; + nbMpDocs : number = 0; public innerHtml : SafeHtml; @@ -71,7 +72,7 @@ export class HomeComponent extends AutoCompletePlugin implements OnInit { this.http.get(this.coreUrl + "rest/home") .subscribe((data: any) => { this.homeData = data; - this.homeMessage = data['homeMessage'] + this.homeMessage = data['homeMessage']; }); } @@ -121,4 +122,8 @@ export class HomeComponent extends AutoCompletePlugin implements OnInit { this.notify.error(this.lang.errorOccured); }); } + + updateNbMpDocs(ev: any) { + this.nbMpDocs = ev; + } } diff --git a/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.html b/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.html new file mode 100644 index 00000000000..503dfc26f24 --- /dev/null +++ b/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.html @@ -0,0 +1,35 @@ +<div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> +</div> +<table mat-table [dataSource]="dataSource" matSort matSortActive="id" matSortDisableClear + matSortDirection="asc" style="width:100%;table-layout: fixed;"> + <!-- Number Column --> + <ng-container matColumnDef="id"> + <td mat-cell *matCellDef="let row" style="width:15%;text-align:center;overflow:hidden;text-overflow: ellipsis;white-space: nowrap;padding: 5px;vertical-align: middle;"> + <div style="overflow: hidden;text-overflow: ellipsis;"> + <mat-icon color="primary" class="fas fa-2x" [ngClass]="{ + 'fa-file-signature':row.mode == 'sign', + 'fa-thumbs-up':row.mode == 'visa', + 'fa-comment-dots':row.mode == 'note' + }" title="{{lang['to_'+row.mode]}}"></mat-icon> + </div> + <div style="padding-top: 5px;color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" + title="{{row.reference}}"> + {{row.reference}} + </div> + </td> + </ng-container> + <ng-container matColumnDef="title"> + <td mat-cell *matCellDef="let row" + style="width:45%;overflow:hidden;text-overflow: ellipsis;padding: 5px;vertical-align: middle;"> + <div style="overflow: hidden;line-height: 1.5em;height: 3em;overflow: hidden;" title="{{row.title}}"> + <span>{{row.title}}</span> + </div> + </td> + </ng-container> + <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="goTo(row);" style="cursor:pointer;"> + </tr> +</table> +<div class="noResult" *ngIf="dataSource.filteredData.length === 0"> + {{lang.noResult}} +</div> \ No newline at end of file diff --git a/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.scss b/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.scss new file mode 100644 index 00000000000..009119ea580 --- /dev/null +++ b/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.scss @@ -0,0 +1,7 @@ +@import '../../../css/vars.scss'; + +.noResult { + padding: 10px; + text-align: center; + opacity: 0.5; +} \ No newline at end of file diff --git a/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.ts b/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.ts new file mode 100644 index 00000000000..660175acaea --- /dev/null +++ b/src/frontend/app/home/maarch-parapheur/maarch-parapheur-list.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit, ViewChild, Output, EventEmitter } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { LANG } from '../../translate.component'; +import { MatDialog, MatTableDataSource, MatPaginator, MatSort } from '@angular/material'; +import { NotificationService } from '../../notification.service'; +import { HeaderService } from '../../../service/header.service'; +import { finalize } from 'rxjs/operators'; + +export interface MPDocument { + id: string; + title: string; + reference: string; + mode: string; + owner: boolean; +} + +declare function $j(selector: any): any; + +@Component({ + selector: 'app-maarch-parapheur-list', + templateUrl: "maarch-parapheur-list.component.html", + styleUrls: ['maarch-parapheur-list.component.scss'], + providers: [NotificationService] +}) +export class MaarchParapheurListComponent implements OnInit { + + lang: any = LANG; + loading: boolean = true; + + userList: MPDocument[] = []; + + dataSource: MatTableDataSource<MPDocument>; + + displayedColumns: string[] = ['id', 'title']; + maarchParapheurUrl: string = ''; + + @Output() triggerEvent = new EventEmitter<string>(); + + constructor(public http: HttpClient, public dialog: MatDialog, private notify: NotificationService, private headerService: HeaderService) { + this.dataSource = new MatTableDataSource(this.userList); + } + + ngOnInit(): void { + this.loading = true; + } + + ngAfterViewInit(): void { + this.http.get("../../rest/home/maarchParapheurDocuments") + .pipe( + finalize(() => this.loading = false) + ) + .subscribe((data: any) => { + setTimeout(() => { + this.dataSource = new MatTableDataSource(data.documents); + this.maarchParapheurUrl = data.url; + this.triggerEvent.emit(data.count.current); + }, 0); + }, (err: any) => { + this.notify.handleErrors(err); + }); + } + + goTo(row: any) { + window.location.href = this.maarchParapheurUrl + '/dist/index.html#/documents/' + row.id; + } +} diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index 52363644239..aca41b16a09 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1018,5 +1018,9 @@ export const LANG_EN = { "searchUserInMaarchParapheur" : "Search an user in Maarch Parapheur", "newLoginInMaarchParapheur" : "New Maarch Parapheur Login", "loginAlreadyExistsInMaarchParapheur" : "Login already exists in Maarch Parapheur", - "maarchParapheurLinkbroken" : "Maarch Parapheur link is broken" + "maarchParapheurLinkbroken" : "Maarch Parapheur link is broken", + "maarchParapheurDocuments" : "Last Maarch Parapheur document(s)", + "to_visa" : "To approve", + "to_sign" : "To sign", + "to_note" : "To note", }; diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 07e9e5e25cf..a0bc79a710c 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1051,5 +1051,9 @@ export const LANG_FR = { "searchUserInMaarchParapheur" : "Rechercher un utilisateur dans Maarch Parapheur", "newLoginInMaarchParapheur" : "Nouvel identifiant Maarch Parapheur", "loginAlreadyExistsInMaarchParapheur" : "Ce login existe déjà dans Maarch Parapheur", - "maarchParapheurLinkbroken" : "L'utilisateur n'existe plus dans Maarch Parapheur." + "maarchParapheurLinkbroken" : "L'utilisateur n'existe plus dans Maarch Parapheur.", + "maarchParapheurDocuments" : "Mes derniers documents Maarch Parapheur", + "to_visa" : "À vise", + "to_sign" : "À signer", + "to_note" : "À annoter", }; \ No newline at end of file diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index ff3eb642317..7df82ccdedc 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1045,4 +1045,8 @@ export const LANG_NL = { "newLoginInMaarchParapheur" : "New Maarch Parapheur Login", //_TO_TRANSLATE "loginAlreadyExistsInMaarchParapheur" : "Login already exists in Maarch Parapheur", //_TO_TRANSLATE "maarchParapheurLinkbroken" : "Maarch Parapheur link is broken", //_TO_TRANSLATE + "maarchParapheurDocuments" : "Last Maarch Parapheur document(s)", //_TO_TRANSLATE + "to_visa" : "To approve", //_TO_TRANSLATE + "to_sign" : "To sign", //_TO_TRANSLATE + "to_note" : "To note", //_TO_TRANSLATE }; -- GitLab