From 5a8a2689d9b2d2cc9cc88c4119a46657c8784ae4 Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Tue, 12 Feb 2019 13:39:54 +0100 Subject: [PATCH] FEAT #9156 front basket list + fix pipe timeAgo --- .../list/list-administration.component.ts | 22 +++++----- .../app/list/basket-list.component.html | 13 +++--- .../app/list/basket-list.component.scss | 1 - .../app/list/basket-list.component.ts | 40 ++++++++++++++++--- src/frontend/lang/lang-en.ts | 9 +++-- src/frontend/lang/lang-fr.ts | 9 +++-- src/frontend/lang/lang-nl.ts | 9 +++-- src/frontend/plugins/timeAgo.pipe.ts | 7 +++- src/frontend/plugins/timeLimit.pipe.ts | 11 ++--- 9 files changed, 78 insertions(+), 43 deletions(-) diff --git a/src/frontend/app/administration/basket/list/list-administration.component.ts b/src/frontend/app/administration/basket/list/list-administration.component.ts index 659f67cc5d1..65b4ebbf201 100644 --- a/src/frontend/app/administration/basket/list/list-administration.component.ts +++ b/src/frontend/app/administration/basket/list/list-administration.component.ts @@ -64,15 +64,15 @@ export class ListAdministrationComponent implements OnInit { 'icon': 'fa-sitemap' }, { - 'value': 'getSenders', - 'label': this.lang.getSenders, + 'value': 'getRecipients', + 'label': this.lang.getRecipients, 'sample': 'Patricia PETIT', 'cssClasses': [], 'icon': 'fa-user' }, { - 'value': 'getRecipients', - 'label': this.lang.getRecipients, + 'value': 'getSenders', + 'label': this.lang.getSenders, 'sample': 'Alain DUBOIS (MAARCH)', 'cssClasses': [], 'icon': 'fa-book' @@ -92,23 +92,23 @@ export class ListAdministrationComponent implements OnInit { 'icon': 'fa-list-ol' }, { - 'value': 'modificationDate', - 'label': this.lang.modificationDate, + 'value': 'getModificationDate', + 'label': this.lang.getModificationDate, 'sample': '01-01-2019', 'cssClasses': [], 'icon': 'fa-calendar-check' }, { - 'value': 'opinionLimitDate', - 'label': this.lang.opinionLimitDate, + 'value': 'getOpinionLimitDate', + 'label': this.lang.getOpinionLimitDate, 'sample': '01-01-2019', 'cssClasses': [], 'icon': 'fa-stopwatch' }, { - 'value': 'nbAvisSent', - 'label': this.lang.nbAvisSent, - 'sample': this.lang.nbAvisSentSample, + 'value': 'getParallelOpinionsNumber', + 'label': this.lang.getParallelOpinionsNumber, + 'sample': this.lang.getParallelOpinionsNumberSample, 'cssClasses': [], 'icon': 'fa-comment-alt' }, diff --git a/src/frontend/app/list/basket-list.component.html b/src/frontend/app/list/basket-list.component.html index c3d41115d68..0bf9330bd20 100644 --- a/src/frontend/app/list/basket-list.component.html +++ b/src/frontend/app/list/basket-list.component.html @@ -29,11 +29,11 @@ <td mat-cell *matCellDef="let row" class="resultContainer" [class.resultContainer-mobile]="mobileMode"> <!-- Secondary Info Line --> <mat-toolbar *ngIf="row.display.length > 0"> - <div class="resultCol" style="flex:1" [class]="data.cssClasses.join(' ')" *ngFor="let data of row.display"> + <div class="resultCol" style="flex:1;overflow: hidden;text-overflow: ellipsis;padding-right: 10px;" [class]="data.cssClasses.join(' ')" *ngFor="let data of row.display"> <ng-container *ngIf="data.value == 'getCreationAndProcessLimitDates'"> - <i class="fa fa-calendar" title="{{lang.creationDate}}"></i> {{data.displayValue[0] - | timeAgo}} - <i class="fa fa-stopwatch" title="{{lang.processLimitDate}}"></i> <span - [innerHTML]="data.displayValue[1] | timeLimit" title='{{data.displayValue[1] | date : "le dd/MM/y à HH:mm"}}'></span> + <i class="fa fa-calendar" title="{{lang.creationDate}}"></i> <span + [innerHTML]="data.displayValue.creationDate | timeAgo" title='{{data.displayValue.creationDate | date : "le dd/MM/y à HH:mm"}}'></span> - <i class="fa fa-stopwatch" title="{{lang.processLimitDate}}"></i> <span + [innerHTML]="data.displayValue.processLimitDate | timeLimit" title='{{data.displayValue.processLimitDate | date : "le dd/MM/y à HH:mm"}}'></span> </ng-container> <ng-container *ngIf="data.icon != ''"> <i class="fa {{data.icon}}" title="{{data.label}}"></i> @@ -44,7 +44,8 @@ <span *ngIf="lang[data.displayValue]">{{lang[data.displayValue]}}</span> </ng-container> <ng-container *ngIf="data.value != 'getCategory' && data.value != 'getCreationAndProcessLimitDates'"> - <span *ngIf="lang[row.category_id]">{{data.displayValue}}</span> + <span *ngIf="!data.value.includes('Date')" title="{{data.displayValue}}" [innerHTML]="data.displayValue"></span> + <span *ngIf="data.value.includes('Date')" [innerHTML]="data.displayValue | timeAgo"></span> </ng-container> </div> </mat-toolbar> @@ -55,7 +56,7 @@ </div> <div class="resultCol" [class]="data.cssClasses.join(' ')" *ngFor="let data of displayedMainData"> <span *ngIf="data.value == 'alt_identifier'"> - <mat-icon [ngStyle]="{'color': row.priority_color}" color="primary" class="{{row.statusImage.charAt(0)}}{{row.statusImage.charAt(1)}} {{row.statusImage}} {{row.statusImage.charAt(0)}}{{row.statusImage.charAt(1)}}-2x" + <mat-icon [ngStyle]="{'color': row.priorityColor}" color="primary" class="{{row.statusImage.charAt(0)}}{{row.statusImage.charAt(1)}} {{row.statusImage}} {{row.statusImage.charAt(0)}}{{row.statusImage.charAt(1)}}-2x" title="{{row.statusLabel}}" style="cursor: crosshair;" (click)="$event.stopPropagation();filterThis(row.status_label)"></mat-icon><br /> <span *ngIf="row[data.value] == lang.undefined && row.barcode != null" style="color: rgba(0,0,0,0.4);font-size: 90%;"><i diff --git a/src/frontend/app/list/basket-list.component.scss b/src/frontend/app/list/basket-list.component.scss index 49028127e34..8d952a23de5 100644 --- a/src/frontend/app/list/basket-list.component.scss +++ b/src/frontend/app/list/basket-list.component.scss @@ -87,7 +87,6 @@ mat-toolbar { width: 40px; } - .actions { box-shadow: none; border: none; diff --git a/src/frontend/app/list/basket-list.component.ts b/src/frontend/app/list/basket-list.component.ts index 47e09b00480..eaf7bf16c1f 100755 --- a/src/frontend/app/list/basket-list.component.ts +++ b/src/frontend/app/list/basket-list.component.ts @@ -220,6 +220,7 @@ export class BasketListComponent implements OnInit { processPostData(data: any) { this.displayedSecondaryData = []; data.resources.forEach((element: any) => { + // Process main datas Object.keys(element).forEach((key) => { if (key == 'statusImage' && element[key] == null) { element[key] = 'fa-question undefined'; @@ -227,8 +228,10 @@ export class BasketListComponent implements OnInit { element[key] = this.lang.undefined; } }); + + // Process secondary datas element.display.forEach((key: any) => { - if ((key.displayValue == null || key.displayValue == '') && ['getCreationAndProcessLimitDates'].indexOf(key.value) === -1) { + if ((key.displayValue == null || key.displayValue == '') && ['getCreationAndProcessLimitDates', 'getParallelOpinionsNumber'].indexOf(key.value) === -1) { key.displayValue = this.lang.undefined; } else if (["getSenders", "getRecipients"].indexOf(key.value) > 0) { @@ -239,10 +242,36 @@ export class BasketListComponent implements OnInit { } } else if(key.value == 'getCreationAndProcessLimitDates') { key.icon = ''; - key.displayValue = [ - '2019-02-10', - '2019-02-13' - ] + } else if(key.value == 'getVisaWorkflow') { + let formatWorkflow: any = []; + let content = ''; + let user = ''; + key.displayValue.forEach((visa: any) => { + content = ''; + user = visa.user; + if (visa.mode == 'sign') { + user = '<u>'+user+'</u>'; + } + if (visa.date == '') { + content = '<i class="fa fa-hourglass-half"></i> <span title="' + this.lang[visa.mode+'User'] + '">' + user + '</span>'; + } else { + content = '<span color="accent" style=""><i class="fa fa-check"></i> <span title="' + this.lang[visa.mode+'User'] + '">' + user + '</span></span>'; + } + + if (visa.current) { + content = '<b color="primary">'+content+'</b>'; + } + formatWorkflow.push(content); + }); + key.icon = ''; + key.displayValue = formatWorkflow.join(' <i class="fas fa-long-arrow-alt-right"></i> '); + } else if(key.value == 'getParallelOpinionsNumber') { + if (key.displayValue > 0) { + key.displayValue = '<b color="primary">' + key.displayValue + '</b> ' + this.lang.opinionsSent; + } else { + key.displayValue = key.displayValue + ' ' + this.lang.opinionsSent; + } + } key.label = this.lang[key.value]; }); @@ -253,7 +282,6 @@ export class BasketListComponent implements OnInit { element['checked'] = true; } }); - return data; } diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index a314805727c..1ddeb0ecacf 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -825,9 +825,10 @@ export const LANG_EN = { "getVisaWorkflow" : "Visa workflow", "getCreationAndProcessLimitDates" : "Creation date - Process limit date", "getCreationAndProcessLimitDatesSample" : "1st jan. - <i class=\"fa fa-stopwatch\"></i> <b color=\"warn\">3 day(s)</b>", - "nbAvisSent" : "Number of opinion sent", - "nbAvisSentSample" : "<b>3</b> opinion(s) sent", + "getParallelOpinionsNumber" : "Number of opinions sent", + "getParallelOpinionsNumberSample" : "<b>3</b> opinion(s) sent", "warnMaxDataList" : "Maximum of displayed datas is reached", - "opinionLimitDate" : "Opinion limit date", - "modificationDate" : "Modification date", + "getOpinionLimitDate" : "Opinion limit date", + "getModificationDate" : "Modification date", + "opinionsSent" : "opinion(s) sent", }; diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index efc2000d921..8e09e3c2524 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -851,9 +851,10 @@ export const LANG_FR = { "getVisaWorkflow" : "Circuit de visa", "getCreationAndProcessLimitDates" : "Date de création - Date limite", "getCreationAndProcessLimitDatesSample" : "1er janv. - <i class=\"fa fa-stopwatch\"></i> <b color=\"warn\">3 jour(s)</b>", - "nbAvisSent" : "Nombre d'avis donné", - "nbAvisSentSample" : "<b>3</b> avis donné(s)", + "getParallelOpinionsNumber" : "Nombre d'avis donnés", + "getParallelOpinionsNumberSample" : "<b>3</b> avis donné(s)", "warnMaxDataList" : "Le nombre maximal d'élements affichés a été atteint", - "opinionLimitDate" : "Date limite d'envoi des avis", - "modificationDate" : "Date de mise à jour", + "getOpinionLimitDate" : "Date limite d'envoi des avis", + "getModificationDate" : "Date de mise à jour", + "opinionsSent" : "avis donné(s)", }; diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index cfae6539930..7daafd25868 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -854,10 +854,11 @@ export const LANG_NL = { "getVisaWorkflow" : "Visa workflow", //_TO_TRANSLATE "getCreationAndProcessLimitDates" : "Creation date - Process limit date", //_TO_TRANSLATE "getCreationAndProcessLimitDatesSample" : "1st jan. - <i class=\"fa fa-stopwatch\"></i> <b color=\"warn\">3 day(s)</b>", //_TO_TRANSLATE - "nbAvisSent" : "Number of opinion sent", //_TO_TRANSLATE - "nbAvisSentSample" : "<b>3</b> opinion(s) sent", //_TO_TRANSLATE + "getParallelOpinionsNumber" : "Number of opinions sent", //_TO_TRANSLATE + "getParallelOpinionsNumberSample" : "<b>3</b> opinion(s) sent", //_TO_TRANSLATE "warnMaxDataList" : "Maximum of displayed datas is reached", //_TO_TRANSLATE - "opinionLimitDate" : "Opinion limit date", //_TO_TRANSLATE - "modificationDate" : "Modification date", //_TO_TRANSLATE + "getOpinionLimitDate" : "Opinion limit date", //_TO_TRANSLATE + "getModificationDate" : "Modification date", //_TO_TRANSLATE + "opinionsSent" : "opinion(s) sent", //_TO_TRANSLATE }; diff --git a/src/frontend/plugins/timeAgo.pipe.ts b/src/frontend/plugins/timeAgo.pipe.ts index 8e4a1ea5beb..f0c6ba8fd91 100755 --- a/src/frontend/plugins/timeAgo.pipe.ts +++ b/src/frontend/plugins/timeAgo.pipe.ts @@ -13,7 +13,8 @@ export class TimeAgoPipe implements PipeTransform, OnDestroy { this.removeTimer(); let d = new Date(value); let dayNumber = ('0' + d.getDate()).slice(-2); - let monthNumber = ('0' + d.getMonth()).slice(-2); + const realMonth = d.getMonth()+1; + let monthNumber = ('0' + realMonth).slice(-2); let hourNumber = ('0' + d.getHours()).slice(-2); let minuteNumber = ('0' + d.getMinutes()).slice(-2); let now = new Date(); @@ -45,7 +46,9 @@ export class TimeAgoPipe implements PipeTransform, OnDestroy { let days = Math.round(Math.abs(hours / 24)); let months = Math.round(Math.abs(days/30.416)); let years = Math.round(Math.abs(days/365)); - if (Number.isNaN(seconds)){ + if(value == this.lang.undefined) { + return this.lang.undefined; + } else if (Number.isNaN(seconds)){ return ''; } else if (seconds <= 45) { return this.lang.fewSeconds; diff --git a/src/frontend/plugins/timeLimit.pipe.ts b/src/frontend/plugins/timeLimit.pipe.ts index 8bbf0dc7ed8..fdae009da57 100755 --- a/src/frontend/plugins/timeLimit.pipe.ts +++ b/src/frontend/plugins/timeLimit.pipe.ts @@ -12,12 +12,13 @@ export class TimeLimitPipe implements PipeTransform, OnDestroy { transform(value:string) { this.removeTimer(); let d = new Date(value); - let dayNumber = ('0' + d.getDate()).slice(-2) - let monthNumber = ('0' + d.getMonth()).slice(-2) - let hourNumber = ('0' + d.getHours()).slice(-2) - let minuteNumber = ('0' + d.getMinutes()).slice(-2) + let dayNumber = ('0' + d.getDate()).slice(-2); + const realMonth = d.getMonth()+1; + let monthNumber = ('0' + realMonth).slice(-2); + let hourNumber = ('0' + d.getHours()).slice(-2); + let minuteNumber = ('0' + d.getMinutes()).slice(-2); let now = new Date(); - let month = new Array(); + let month = []; month[0] = this.lang.januaryShort; month[1] = this.lang.februaryShort; month[2] = this.lang.marchShort; -- GitLab