From 73c9784daa1bfa582a234e87dcac021a424692b3 Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Mon, 10 Sep 2018 09:55:50 +0200 Subject: [PATCH] feat continue components basket list --- .../Views/attachment-list.component.html | 55 +++++++++++++ .../Views/diffusion-list.component.html | 79 +++++++++++++++++++ .../Views/note-list.component.html | 24 ++++++ rest/index.php | 7 ++ 4 files changed, 165 insertions(+) create mode 100644 apps/maarch_entreprise/Views/attachment-list.component.html create mode 100644 apps/maarch_entreprise/Views/diffusion-list.component.html create mode 100644 apps/maarch_entreprise/Views/note-list.component.html diff --git a/apps/maarch_entreprise/Views/attachment-list.component.html b/apps/maarch_entreprise/Views/attachment-list.component.html new file mode 100644 index 00000000000..0a4342e6fde --- /dev/null +++ b/apps/maarch_entreprise/Views/attachment-list.component.html @@ -0,0 +1,55 @@ +<div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> +</div> +<div style="text-align:center;font-weight:bold;opacity:0.3;">{{data.chrono}} - {{lang.attachments}}</div> +<mat-nav-list *ngIf="!loading" style="min-width:650px;"> + <div *ngIf="attachments.length == 0" style="text-align:center;font-size:24px;font-weight:bold;opacity:0.3;"> + AUCUN ATTACHEMENT + </div> + <ng-container *ngFor="let attachment of attachments"> + <a target="_blank" href="index.php?display=true&module=attachments&page=view_attachment&res_id_master={{data.resId}}&id={{attachment.res_id}}" mat-list-item (click)="openLink($event)" style="height:auto;"> + <span mat-line> + <div style="display:flex;color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> + <span style="flex:1;text-align: center;"> + <small color="primary" *ngIf="attachment.update_date != null" title='{{attachment.update_date | date : "le dd/MM/y à HH:mm"}}'>Modifié + par {{attachment.firstname_updated}} {{attachment.lastname_updated}} ({{attachment.update_date | timeAgo}})</small> + </span> + </div> + <div style="display:flex;"> + <div style="text-align: center;align-items: center;padding-right: 15px;width:180px;"> + <div style="color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;" title="{{attachmentTypes[attachment.attachment_type].label}}">{{attachmentTypes[attachment.attachment_type].label}}</div> + <div class="fa fa-paperclip fa-2x" title="{{attachment.status}}" color="primary"></div> + <div style="color: rgba(0,0,0,0.4);font-size: 90%;padding:5px;" title="{{attachment.identifier}} (n°{{attachment.res_id}})">{{attachment.identifier}}</div> + </div> + <div style="flex:5;"> + <div style="display:flex;color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> + <span style="flex:1" title='{{attachment.creation_date | date : "le dd/MM/y à HH:mm"}}'> + <i class="fa fa-calendar" title="Date d'enregistrement"></i> {{attachment.creation_date | timeAgo}} + </span> + <span style="flex:1;text-align: right;"> + <span *ngIf="attachment.return_date != null && attachment.effective == null" title='{{attachment.return_date | date : "le dd/MM/y à HH:mm"}}'> + <i class="fa fa-stopwatch" title="Date de retour attendue"></i> <span [innerHTML]="attachment.return_date | timeLimit"></span> + </span> + <span *ngIf="attachment.effective != null"> + <i class="fa fa-lock" title="Date de retour"></i> <span title='{{attachment.effective_date | date : "le dd/MM/y à HH:mm"}}' [innerHTML]="attachment.effective_date | timeAgo"></span> + </span> + </span> + </div> + <div style="padding-top:10px;padding-bottom:10px;"> + {{attachment.title}} + </div> + <div style="display:flex;color: rgba(0,0,0,0.4);font-size: 90%;overflow: hidden;text-overflow: ellipsis;"> + <span style="flex:1"><i class="fa fa-user" title="Auteur"></i> {{attachment.firstname_typist}} + {{attachment.lastname_typist}}</span> + <span style="flex:1;text-align: right;">{{attachment.status}}</span> + </div> + </div> + </div> + + + </span> + </a> + <mat-divider style="margin:10px;"></mat-divider> + </ng-container> + +</mat-nav-list> \ No newline at end of file diff --git a/apps/maarch_entreprise/Views/diffusion-list.component.html b/apps/maarch_entreprise/Views/diffusion-list.component.html new file mode 100644 index 00000000000..62137219879 --- /dev/null +++ b/apps/maarch_entreprise/Views/diffusion-list.component.html @@ -0,0 +1,79 @@ +<div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> +</div> +<div style="text-align:center;font-weight:bold;opacity:0.3;">{{data.chrono}} - {{lang.diffusionList}}</div> +<mat-list *ngIf="!loading"> + <mat-tab-group> + <mat-tab label="{{lang.diffusionList}}"> + <div *ngIf="listinstance.length == 0" style="text-align:center;font-size:24px;font-weight:bold;opacity:0.3;"> + AUCUNE LISTE DE DIFFUSION + </div> + <ng-container *ngFor="let role of roles"> + <h3 mat-subheader>{{role}}</h3> + <mat-list-item *ngFor="let diffusion of listinstance[role]"> + + <mat-icon *ngIf="diffusion.item_type == 'user_id'" mat-list-icon class="fa fa-2x" [ngClass]="[diffusion.item_mode == 'copy' ? 'fa-users' : 'fa-user']" + color="primary"></mat-icon> + <h4 mat-line *ngIf="diffusion.item_type == 'user_id'">{{diffusion.item_firstname}} + {{diffusion.item_lastname}}</h4> + <p mat-line *ngIf="diffusion.item_type == 'user_id'" style="opacity:0.5;"> + {{diffusion.item_entity}} </p> + + <mat-icon *ngIf="diffusion.item_type == 'entity_id'" mat-list-icon class="fa fa-sitemap fa-2x" + color="primary"></mat-icon> + <h4 *ngIf="diffusion.item_type == 'entity_id'" mat-line>{{diffusion.item_entity}}</h4> + <p *ngIf="diffusion.item_type == 'entity_id'" mat-line style="opacity:0.5;"> </p> + </mat-list-item> + <mat-divider></mat-divider> + </ng-container> + </mat-tab> + <mat-tab label="Circuit de visa" [disabled]='!tabVisaCircuit'> + <div *ngIf="visaCircuit.length == 0" style="text-align:center;font-size:24px;font-weight:bold;opacity:0.3;"> + AUCUN CIRCUIT DE VISA + </div> + <ng-container *ngFor="let visa of visaCircuit"> + <mat-list-item [ngStyle]="{'opacity': visa.process_date == null ? '0.5' : '1','background': visa.process_date != null ? 'rgba(0, 128, 0, 0.11)' : ''}"> + <mat-icon mat-list-icon class="fa fa-user fa-2x" color="primary"></mat-icon> + <mat-icon mat-list-icon class="fa fa-hourglass fa-2x" *ngIf="visa.process_date == null" style="opacity:0.5;"></mat-icon> + <mat-icon mat-list-icon class="fa fa-check fa-2x" *ngIf="visa.process_date != null" style="opacity:0.5;" + color="accent"></mat-icon> + <h4 mat-line style="display: flex;"> + <span style="flex: 1;">{{visa.item_firstname}} {{visa.item_lastname}}</span> + <span *ngIf="!visa.requested_signature" style="flex: 1;text-align: right;font-size: 90%;" color="primary">{{lang.visaUser}}</span> + <span *ngIf="visa.requested_signature" style="flex: 1;text-align: right;font-size: 90%;" color="warn">{{lang.signUser}}</span> + </h4> + <p mat-line style="display: flex;"> + <span style="opacity:0.5;flex: 1;">{{visa.item_entity}}</span> + <span *ngIf="visa.process_date != null" title='{{visa.process_date | date : "le dd/MM/y à HH:mm"}}' + style="flex: 1;text-align: right;font-size: 90%;" color="accent">{{visa.process_date + | timeAgo}}</span> + </p> + </mat-list-item> + </ng-container> + </mat-tab> + <mat-tab label="Circuit d'avis" [disabled]='!tabAvisCircuit'> + <div *ngIf="avisCircuit.length == 0" style="text-align:center;font-size:24px;font-weight:bold;opacity:0.3;"> + AUCUN CIRCUIT D'AVIS + </div> + <ng-container *ngFor="let avis of avisCircuit"> + <mat-list-item [ngStyle]="{'opacity': avis.process_date == null ? '0.5' : '1','background': avis.process_date != null ? 'rgba(0, 128, 0, 0.11)' : ''}"> + <mat-icon mat-list-icon class="fa fa-user fa-2x" color="primary"></mat-icon> + <mat-icon mat-list-icon class="fa fa-hourglass fa-2x" *ngIf="avis.process_date == null" style="opacity:0.5;"></mat-icon> + <mat-icon mat-list-icon class="fa fa-check fa-2x" *ngIf="avis.process_date != null" style="opacity:0.5;" + color="accent"></mat-icon> + <h4 mat-line style="display: flex;"> + <span style="flex: 1;">{{avis.item_firstname}} {{avis.item_lastname}}</span> + </h4> + <p mat-line style="display: flex;"> + <span style="opacity:0.5;flex: 1;">{{avis.item_entity}}</span> + <span *ngIf="avis.process_date != null" title='{{avis.process_date | date : "le dd/MM/y à HH:mm"}}' + style="flex: 1;text-align: right;font-size: 90%;" color="accent">{{avis.process_date + | timeAgo}}</span> + </p> + </mat-list-item> + </ng-container> + </mat-tab> + </mat-tab-group> + + +</mat-list> \ No newline at end of file diff --git a/apps/maarch_entreprise/Views/note-list.component.html b/apps/maarch_entreprise/Views/note-list.component.html new file mode 100644 index 00000000000..c964c1067c0 --- /dev/null +++ b/apps/maarch_entreprise/Views/note-list.component.html @@ -0,0 +1,24 @@ +<div *ngIf="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> +</div> +<ng-container *ngIf="!loading" > + <div style="text-align:center;font-weight:bold;opacity:0.3;">{{data.chrono}} - {{lang.notes}}</div> + + <div *ngIf="notes.length == 0" style="text-align:center;font-size:24px;font-weight:bold;opacity:0.3;"> + AUCUNE NOTE + </div> + <mat-card *ngFor="let note of notes" style="margin-top: 10px;" [ngStyle]="{'background-color': note.entities_restriction ? 'rgba(255, 165, 0, 0.2)' : 'white'}"> + <mat-card-header> + <div mat-card-avatar bgColor="primary" style="display: flex;text-align: center;"><i class="fa fa-user" style="color: white;flex: 1;font-size: 25px;margin: auto;"></i></div> + <mat-card-title>{{note.firstname}} {{note.lastname}}</mat-card-title> + <mat-card-subtitle>{{note.entity_label}}</mat-card-subtitle> + <mat-card-subtitle title='{{note.date_note | date : "le dd/MM/y à HH:mm"}}' style="position: absolute;right: 10px;top: 20px;font-size: 10px;">{{note.date_note | timeAgo}}</mat-card-subtitle> + </mat-card-header> + <mat-card-content> + <p> + {{note.note_text}} + </p> + <span *ngFor="let entity of note.entities_restriction" class="label label-default" style="background-color:rgba(0,0,0,0.4);white-space:normal;display:inline-block;margin-right: 5px;" title="Entité restreinte"><i class="fa fa-sitemap"></i> {{entity}}</span> + </mat-card-content> + </mat-card> +</ng-container> \ No newline at end of file diff --git a/rest/index.php b/rest/index.php index 1c137f64b42..031c7048ee4 100755 --- a/rest/index.php +++ b/rest/index.php @@ -174,6 +174,9 @@ $app->get('/links/resId/{resId}', \Link\controllers\LinkController::class . ':ge //Listinstance $app->get('/listinstance/{id}', \Entity\controllers\ListInstanceController::class . ':getById'); +$app->get('/res/{resId}/listinstance', \Entity\controllers\ListInstanceController::class . ':getListByResId'); +$app->get('/res/{resId}/visaCircuit', \Entity\controllers\ListInstanceController::class . ':getVisaCircuitByResId'); +$app->get('/res/{resId}/avisCircuit', \Entity\controllers\ListInstanceController::class . ':getAvisCircuitByResId'); //ListTemplates $app->get('/listTemplates', \Entity\controllers\ListTemplateController::class . ':get'); @@ -186,6 +189,9 @@ $app->put('/listTemplates/entityDest/itemId/{itemId}', \Entity\controllers\ListT $app->get('/listTemplates/types/{typeId}/roles', \Entity\controllers\ListTemplateController::class . ':getTypeRoles'); $app->put('/listTemplates/types/{typeId}/roles', \Entity\controllers\ListTemplateController::class . ':updateTypeRoles'); +//Notes +$app->get('/res/{resId}/notes', \Note\controllers\NoteController::class . ':getByResId'); + //Parameters $app->get('/parameters', \Parameter\controllers\ParameterController::class . ':get'); $app->post('/parameters', \Parameter\controllers\ParameterController::class . ':create'); @@ -227,6 +233,7 @@ $app->get('/resources/groups/{groupSerialId}/baskets/{basketId}', \Resource\cont //Attachments $app->get('/res/{resIdMaster}/attachment/{resId}', \Attachment\controllers\AttachmentController::class . ':getFileContent'); +$app->get('/res/{resId}/attachments', \Attachment\controllers\AttachmentController::class . ':getAttachmentsListById'); //SignatureBook $app->get('/{basketId}/signatureBook/resList', \SignatureBook\controllers\SignatureBookController::class . ':getResList'); -- GitLab