Something went wrong on our end
-
Hamza HRAMCHI authoredHamza HRAMCHI authored
search.component.html 13.68 KiB
<ion-header [translucent]="true">
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-menu-button menu="left-menu"></ion-menu-button>
</ion-buttons>
<ion-title>{{'lang.search' | translate}}</ion-title>
<ion-title slot="end" color="secondary">{{count}} {{'lang.results' | translate}}</ion-title>
<ion-buttons slot="end">
<ion-menu-button menu="right-menu">
<ion-icon name="funnel-outline"></ion-icon>
</ion-menu-button>
</ion-buttons>
</ion-toolbar>
<ion-toolbar *ngIf="this.currentFilters.length > 0" color="primary" style="padding-left: 1px;padding-right: 1px;">
<div style="display: flex;">
<ion-button class="clearFilter" shape="round" size="small" fill="clear" slot="start" color="primary"
(click)="clearFilters()" [title]="'lang.clearFilters' | translate">
<ion-icon slot="icon-only" name="trash-bin-outline" color="light"></ion-icon>
</ion-button>
<div class="scrollfilters" slot="start">
<div *ngFor="let currentFilter of currentFilters">
<ion-chip outline *ngIf="(currentFilter.id === 'title' || currentFilter.id === 'reference' || currentFilter.id === 'documentId') && currentFilter.val !== ''" color="primary"
style="background: white;" [title]="'lang.' + currentFilter.id + 'Search' | translate"
(click)="removeFilter(currentFilter)">
<ion-icon *ngIf="currentFilter.id === 'title'" name="document-text-outline"></ion-icon>
<ion-icon *ngIf="currentFilter.id === 'reference'" name="compass-outline"></ion-icon>
<ion-icon *ngIf="currentFilter.id === 'documentId'" name="bookmark-outline"></ion-icon>
<ion-label>{{ currentFilter.val }}</ion-label>
<ion-icon name="close-circle"></ion-icon>
</ion-chip>
<div *ngIf="currentFilter.id === 'workflowStates' && currentFilter.val.length > 0">
<ion-chip outline *ngFor="let item of currentFilter.val" color="primary"
style="background: white;" [title]="'lang.workflowStatesSearch' | translate"
(click)="removeFilter(currentFilter, item.id)">
<ion-icon name="swap-horizontal-outline"></ion-icon>
<ion-label>{{ item.label | translate}}</ion-label>
<ion-icon name="close-circle"></ion-icon>
</ion-chip>
</div>
<div *ngIf="currentFilter.id === 'workflowUsers' && currentFilter.val.length > 0">
<ion-chip outline *ngFor="let item of currentFilter.val" color="primary"
style="background: white;" [title]="'lang.workflowUsersSearch' | translate"
(click)="removeFilter(currentFilter, item)">
<ion-icon name="person-outline"></ion-icon>
<ion-label>{{ item.firstname}} {{ item.lastname }}</ion-label>
<ion-icon name="close-circle"></ion-icon>
</ion-chip>
</div>
<div *ngIf="currentFilter.id === 'documentState' && currentFilter.val.length > 0">
<ion-chip outline color="primary" *ngFor="let item of currentFilter.val"
style="background: white;" [title]="'lang.documentStateSearch' | translate"
(click)="removeFilter(currentFilter, item)">
<ion-icon name="document-outline"></ion-icon>
<ion-label>{{ 'lang.' + item | translate }}</ion-label>
<ion-icon name="close-circle"></ion-icon>
</ion-chip>
</div>
</div>
</div>
</div>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list class="no-result" *ngIf="ressources.length === 0">
<ion-item lines="none">
<ion-label class="no-result-label" color="medium">{{'lang.noResult' | translate}}</ion-label>
</ion-item>
</ion-list>
<ion-list *ngIf="ressources.length > 0">
<ion-virtual-scroll [items]="ressources" approxItemHeight="165px">
<ion-item *virtualItem="let element">
<ion-label>
<ion-toolbar color="light">
<ion-title size="small">
<p
style="display: flex;align-items: center;white-space: pre;overflow-x: auto;overflow-y: hidden;">
<ng-container *ngFor="let itemW of element.workflow;let i=index;">
<ion-icon *ngIf="i>0" name="chevron-forward-outline"></ion-icon>
<span class="workflow-item success"
[class.success]="itemW.processDate!==null && itemW.status!=='STOP'"
[class.typist-interrupt]="itemW.status==='REF'"
[class.interrupt]="(itemW.processDate===null && itemW.status === 'END') || itemW.status === 'STOP'"
[class.current]="itemW.current"
[class.no-visa]="itemW.processDate===null && itemW.status===null && !itemW.current">{{!this.functionsService.empty(itemW.userDisplay) ? itemW.userDisplay : ('lang.userDeleted' | translate)}}
<ion-icon
*ngIf="itemW.processDate!==null && itemW.status!=='REF' && itemW.status!=='STOP'"
name="thumbs-up-outline"></ion-icon>
<ion-icon *ngIf="itemW.processDate!==null && itemW.status==='REF'"
name="thumbs-down-outline"></ion-icon>
<ion-badge
*ngIf="itemW.processDate===null && (itemW.status===null || ['END','STOP'].indexOf(itemW.status) > -1)"
color="medium">{{'lang.' + itemW.mode + 'User' | translate}}</ion-badge>
</span>
</ng-container>
</p>
</ion-title>
</ion-toolbar>
<ion-item-sliding #slidingItem (ionDrag)="onSliding($event, element.id)">
<ion-item lines="none" style="margin-bottom: -10px;">
<ion-icon *ngIf="element.state == 'PROG'" color="primary" slot="start"
name="hourglass-outline">
</ion-icon>
<ion-icon *ngIf="element.state == 'STOP'" color="danger" slot="start"
name="hand-left-outline">
</ion-icon>
<ion-icon *ngIf="element.state == 'VAL'" color="success" slot="start"
name="thumbs-up-outline">
</ion-icon>
<ion-icon *ngIf="element.state == 'REF'" color="danger" slot="start"
name="thumbs-down-outline">
</ion-icon>
<ion-label (click)="goTo(element)" [title]="(element.status !== 'HARD_DEL' ? 'lang.accessDocument': 'lang.cannotAccess') | translate"
[ngStyle]="{'cursor': element.status !== 'HARD_DEL' ? 'pointer' : 'not-allowed'}">
<p [class.unavailableDoc]="element.state === 'DEL'">
{{element.reference}}
</p>
<h2 [class.unavailableDoc]="element.state === 'DEL'"
[ngStyle]="{'margin-top': ['HARD_DEL', 'SOFT_DEL'].indexOf(element.status) > -1 ? '-10px' : '', 'margin-bottom': ['HARD_DEL', 'SOFT_DEL'].indexOf(element.status) > -1 ? '-11px' : 'auto'}">{{element.title}}
<button mat-icon-button
[class.deleted]="['HARD_DEL', 'SOFT_DEL'].indexOf(element.status) > -1"
[title]="getTitle(element)">
<ion-icon *ngIf="element?.status === 'SOFT_DEL'" name="remove-circle-outline"></ion-icon>
<ion-icon *ngIf="element?.status === 'HARD_DEL'" name="close-circle-outline"></ion-icon>
</button>
</h2>
<p *ngIf="element.reason.length > 0" class="primary">
<ng-container *ngFor="let note of element.reason">
<ion-icon name="chatbox-outline"></ion-icon> {{note}}
</ng-container>
</p>
</ion-label>
<ion-buttons slot="end">
<ion-button *ngIf="openedLine===element.id" slot="icon-only" fill="clear" shape="round"
(click)="$event.stopPropagation();toggleSlide(slidingItem, element.id)">
<ion-icon color="medium" slot="icon-only" name="arrow-forward-outline"></ion-icon>
</ion-button>
<ion-button *ngIf="openedLine!==element.id" slot="icon-only" fill="clear" shape="round"
(click)="$event.stopPropagation();toggleSlide(slidingItem, element.id)">
<ion-icon color="medium" slot="icon-only" name="arrow-back-outline"></ion-icon>
</ion-button>
</ion-buttons>
</ion-item>
<ion-item-options>
<ion-item-option *ngIf="element.state !== 'PROG'" color="primary"
(click)="openPromptProof(element)">
<ion-icon slot="bottom" name="ribbon-sharp"></ion-icon>
{{'lang.download' | translate}}
</ion-item-option>
<ion-item-option *ngIf="element.status !== 'HARD_DEL'" color="primary"
[disabled]="!isValidPrivilege()" (click)="openActions(element)">
<ion-icon slot="bottom" name="settings-sharp"></ion-icon>
{{'lang.actions' | translate}}
</ion-item-option>
</ion-item-options>
</ion-item-sliding>
</ion-label>
</ion-item>
</ion-virtual-scroll>
</ion-list>
<ion-infinite-scroll threshold="100px" (ionInfinite)="loadData($event)">
<ion-infinite-scroll-content loadingSpinner="bubbles" [loadingText]="'lang.loadingMoreData' | translate">
</ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
<ng-template #rightContent>
<ion-header [translucent]="true">
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-back-button></ion-back-button>
</ion-buttons>
<ion-title class="ion-text-center">{{ 'lang.filters' | translate }}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list *ngFor="let filter of filters">
<ng-container *ngIf="filter.type === 'text'">
<ion-item>
<ion-label color="secondary" position="floating">{{'lang.' + filter.id + 'Search' | translate}}
</ion-label>
<ion-input [(ngModel)]="filter.val" [value]="filter.val" (keyup.enter)="launchSearch()"
(ionChange)="checkInput()"></ion-input>
</ion-item>
</ng-container>
<ng-container *ngIf="filter.type === 'checkbox'">
<ion-list-header>
<ion-label color="secondary">{{'lang.' + filter.id + 'Search' | translate}}</ion-label>
</ion-list-header>
<ion-item *ngFor="let val of filter.values;let i=index;">
<ion-label>{{val.label | translate}}</ion-label>
<ion-checkbox (ngModelChange)="toggleItem(filter, val, !val.selected)" [(ngModel)]="val.selected" [checked]="val.selected"
slot="end" [value]="val.id" class="workflowStates">
</ion-checkbox>
</ion-item>
</ng-container>
<ng-container *ngIf="filter.type === 'autocompleteUsers'">
<ion-list-header>
<ion-label color="secondary">{{'lang.' + filter.id + 'Search' | translate}}</ion-label>
</ion-list-header>
<plugin-autocomplete [currentItems]="filter.val"></plugin-autocomplete>
</ng-container>
</ion-list>
</ion-content>
<ion-footer class="ion-no-border">
<div class="ion-text-center" style="background: white;">
<ion-button color="primary" shape="round" size="large" fill="outline" (click)="onSubmit()">
<ion-label style="font-size: 13px;">{{'lang.search' | translate}}</ion-label>
</ion-button>
</div>
</ion-footer>
</ng-template>