Skip to content
Snippets Groups Projects
adv-search.component.html 16.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • <mat-sidenav-container class="maarch-container">
        <ng-template #adminMenuTemplate>
    
            <app-filter-tool-adv-search *ngIf="data.length > 0"></app-filter-tool-adv-search>
    
        </ng-template>
        <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 | secureUrl | async" />
            </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()">
    
                    <app-criteria-tool #appCriteriaTool (searchUrlGenerated)="launchSearch($event)"
                        [defaultCriteria]="['doctype','subject']" style="width:100%;"></app-criteria-tool>
    
                    <!--<app-filters-tool style="flex:1;overflow-x: auto;overflow-y: hidden;" #filtersTool
                        [listProperties]="this.listProperties" [totalRes]="allResInBasket.length"
                        [selectedRes]="selectedRes" [routeDatas]="'/rest/folders/' + folderInfo.id + '/filters'"
                        (toggleAllRes)="toggleAllRes($event)" (refreshEventAfterAction)="refreshDaoAfterAction()"
                        (refreshEvent)="refreshDao()" [title]="this.translate.instant('lang.searchMailInFolder')">
                    </app-filters-tool>-->
    
                    <div class="filterBadges">
                        <span *ngIf="!emptyCriteria()" class="label badge-eraser"
                            title="{{'lang.eraseAllFilters' | translate}}"><i class="fas fa-eraser"></i></span>
                        <ng-container *ngFor="let critKey of criteria | keyvalue">
                            <ng-container
                                *ngIf="isArrayType(critKey.value.values) && critKey.value.values.length <= 3">
                                <span class="label badge-search" *ngFor="let val of critKey.value.values"
                                    [title]="appCriteriaTool.getLabelValue(critKey.key,val)"
                                    (click)="removeCriteria(critKey.key, val)"><i
                                        class="fa {{indexingFieldService.getField(critKey.key).icon}}"
                                        [title]="indexingFieldService.getField(critKey.key).label"></i>&nbsp;{{appCriteriaTool.getLabelValue(critKey.key,val)}}&nbsp;<i class="fa fa-times-circle"></i></span>
                            </ng-container>
                            <ng-container *ngIf="isArrayType(critKey.value.values) && critKey.value.values.length > 3">
                                <span class="label badge-search"
                                    [title]="appCriteriaTool.getLabelValues(critKey.key,critKey.value.values)"
                                    (click)="removeCriteria(critKey.key)"><i
                                        class="fa {{indexingFieldService.getField(critKey.key).icon}}" [title]="indexingFieldService.getField(critKey.key).label"></i>&nbsp;{{critKey.value.values.length}} valeurs&nbsp;<i class="fa fa-times-circle"></i></span>
                            </ng-container>
                            <ng-container *ngIf="!isArrayType(critKey.value.values)">
                                <span class="label badge-search" [title]="critKey.value.values" (click)="removeCriteria(critKey.key, val)"><i
                                        class="fa {{indexingFieldService.getField(critKey.key).icon}}"
                                        [title]="indexingFieldService.getField(critKey.key).label"></i>&nbsp;{{critKey.value.values}}&nbsp;<i class="fa fa-times-circle"></i></span>
                            </ng-container>
                        </ng-container>
                    </div>
    
                </div>
            </div>
            <div class="container" [class.fullContainer]="appService.getViewMode()">
                <div class="container-content">
                    <div class="example-loading-shade" *ngIf="isLoadingResults">
                        <mat-spinner *ngIf="isLoadingResults"></mat-spinner>
                    </div>
                    <div class="table-head">
                        <div class="table-head-result">
                            <mat-checkbox color="primary"
                                [checked]="selectedRes.length == allResInBasket.length && selectedRes.length > 0"
                                [indeterminate]="selectedRes.length > 0 && selectedRes.length < allResInBasket.length"
    
                                style="margin: 10px;padding-right: 10px;"
                                title="{{'lang.selectAllResInBasket' | translate}}" (change)="toggleAllRes($event)">
                            </mat-checkbox>&nbsp;{{resultsLength}}
                            {{'lang.records' | translate | ucfirst}}&nbsp;<small *ngIf="selectedRes.length > 0">-
                                {{selectedRes.length}}
    
                                {{'lang.selected' | translate}}</small>
                        </div>
                        <div class="table-head-tool">
                            <span>
    
                                <mat-paginator #paginatorResultList [length]="resultsLength"
                                    [pageSizeOptions]="[10, 25, 50, 100, 150]" class="paginatorResultList"></mat-paginator>
    
                            </span>
                            <span>
                                <!--<app-folder-action-list #actionsList [contextMode]="false" [currentFolderInfo]="folderInfo"
                                    [totalRes]="allResInBasket.length" [selectedRes]="selectedRes"
                                    (refreshEvent)="refreshDaoAfterAction()"
                                    (refreshPanelFolders)="foldersService.getFolders()">
                                </app-folder-action-list>-->
                            </span>
                        </div>
                    </div>
                    <div style="height:90%;overflow:auto;position:absolute;width:100%;">
                        <table #tableBasketListSort="matSort" cdkDropList id="folder-list"
                            [cdkDropListConnectedTo]="listTodrag()" [cdkDropListData]="data"
                            [cdkDropListDisabled]="dragInit || appService.getViewMode()" mat-table [dataSource]="data"
                            matSort matSortActive="resId" matSortDisableClear matSortDirection="asc" style="width:100%;">
    
                            <ng-container matColumnDef="resId">
                                <td mat-cell *matCellDef="let row"
                                    style="padding:0;border-top: solid 1px rgba(0, 0, 0, 0.12);"
                                    [class.selected-data]="row.checked">
                                    <div class="main-info">
                                        <span style="width:50px;">
                                            <mat-checkbox color="primary" [checked]="row.checked"
                                                (change)="toggleRes($event,row)" (click)="$event.stopPropagation();">
                                            </mat-checkbox>
                                        </span>
    
                                        <button mat-icon-button (click)="$event.stopPropagation();toggleMailTracking(row)"
                                            style="margin-left: -25px;" class="followIcon"
    
                                            [title]="row.mailTracking === true ? this.translate.instant('lang.untrackThisMail') : this.translate.instant('lang.trackThisMail')">
    
                                            <mat-icon
                                                [ngClass]="[row.mailTracking === true ? 'fas fa-star' : 'far fa-star']"
                                                style="margin-bottom: 5px;"></mat-icon>
    
                                        </button>
                                        <span *ngIf="!appService.getViewMode()" style="cursor:pointer;"
                                            class="main-info-status">
                                            <mat-icon *ngIf="row.isLocked !== true" title="{{row.statusLabel}}"
                                                [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">
                                            </mat-icon>
                                            <span *ngIf="row.confidentiality === 'Y'"
                                                class="watermark">{{'lang.confidential' | translate}}</span>
                                            <mat-icon *ngIf="row.isLocked === true"
    
                                                title="{{'lang.warnLockResInProgress' | translate}} : {{row.locker}}"
                                                style="color: red;" class="fa fa-lock fa-2x">
    
                                            </mat-icon>
                                        </span>
                                        <span *ngIf="!appService.getViewMode()" class="main-info-data"
                                            style="width:200px;text-align:center;cursor:pointer;">
                                            <ng-container
                                                *ngIf="row.chrono == this.translate.instant('lang.undefined') && row.barcode != this.translate.instant('lang.undefined')">
                                                <span style="color: rgba(0,0,0,0.4);font-size: 90%;">
                                                    <i title="{{'lang.barcode' | translate}}" class="fas fa-barcode"></i>
                                                    {{row.barcode}}</span>
                                            </ng-container>
                                            <ng-container *ngIf="row.chrono != this.translate.instant('lang.undefined')">
                                                {{row.chrono}}
                                            </ng-container>
                                        </span>
                                        <span class="main-info-data" style="font-weight:bold;flex:1;cursor:pointer;"
                                            [class.undefined]="row.subject == this.translate.instant('lang.undefined')"
                                            title="{{row.subject}}">{{row.subject | shorten: 150: '...'}}</span>
                                        <span class="main-info-action">
    
                                            <button mat-icon-button title="{{'lang.notes' | translate}}"
                                                (click)="$event.stopPropagation();togglePanel('note',row)"
                                                [class.noData]="row.countNotes == 0">
                                                <mat-icon matBadgeHidden="{{row.countNotes == 0}}" fontSet="fas"
                                                    matBadge="{{row.countNotes}}" fontIcon="fa-comments fa-2x"
                                                    [color]="snav2.opened && row.checked && currentMode == 'note' ? 'primary' : ''">
                                                </mat-icon>
                                            </button>
                                            <button mat-icon-button title="{{'lang.attachments' | translate}}"
                                                (click)="$event.stopPropagation();togglePanel('attachment',row)"
                                                [class.noData]="row.countAttachments == 0">
                                                <mat-icon matBadgeHidden="{{row.countAttachments == 0}}" fontSet="fas"
                                                    matBadge="{{row.countAttachments}}" fontIcon="fa-paperclip fa-2x"
                                                    [color]="snav2.opened && row.checked && currentMode == 'attachment' ? 'primary' : ''">
                                                </mat-icon>
                                            </button>
                                            <button mat-icon-button title="{{'lang.diffusionList' | translate}}"
                                                (click)="$event.stopPropagation();togglePanel('diffusion',row)">
                                                <mat-icon fontSet="fas" fontIcon="fa-sitemap fa-2x"
                                                    [color]="snav2.opened && row.checked && currentMode == 'diffusion' ? 'primary' : ''">
                                                </mat-icon>
                                            </button>
                                            <button mat-icon-button
                                                title="{{row.hasDocument ? this.translate.instant('lang.viewResource') : this.translate.instant('lang.noDocument')}}"
                                                (click)="$event.stopPropagation();viewDocument(row)"
                                                (mouseenter)="viewThumbnail(row);" (mouseleave)="closeThumbnail();"
                                                [disabled]="!row.hasDocument">
                                                <mat-icon class="fa"
                                                    [ngClass]="[row.hasDocument ? 'fa-eye' : 'fa-eye-slash']">
                                                </mat-icon>
                                            </button>
                                            <button mat-icon-button title="{{'lang.linkDetails' | translate}}"
                                                (click)="$event.stopPropagation();goToDetail(row);">
                                                <mat-icon fontSet="fas" fontIcon="fa-info-circle fa-2x"></mat-icon>
                                            </button>
    
                                        </span>
                                    </div>
                                    <div *ngIf="row.folders !== undefined && row.folders.length > 0" class="folder-info">
    
                                        <span class="badge badge-folder"
                                            *ngFor="let folder of row.folders | sortBy : 'label'"
                                            (click)="$event.stopPropagation();goToFolder(folder);"
                                            title="{{'lang.goToFolder' | translate}} : {{folder.label}}"><i
                                                class="fa fa-folder"></i> {{folder.label}}</span>
    
                                    </div>
                                </td>
                            </ng-container>
                            <tr mat-row *matRowDef="let row; columns: displayedColumnsBasket;"
                                (contextmenu)="open($event,row);" (click)="open($event,row);" class="rowData"
    
                                style="cursor: pointer;" [class.locked]="row.isLocked == true" cdkDrag
                                [cdkDragDisabled]="!row.allowed" (cdkDragStarted)="selectSpecificRes(row);"
                                [cdkDragData]="row">
    
                                <div class="example-custom-placeholder" *cdkDragPlaceholder></div>
                                <div class="dragPreview" *cdkDragPreview><i class="fas fa-envelope-open-text fa-2x"></i>
                                    <br />
                                    {{'lang.classifyInFolder' | translate}} :
                                    <b>{{row.chrono}}</b>
                                </div>
                            </tr>
                        </table>
                    </div>
                    <div class="table-head">
                    </div>
                </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;" [class.docView]="innerHtml"
            [ngStyle]="{'width': appService.getViewMode() ? '80%' : '30%'}" autoFocus="false">
            <div *ngIf="innerHtml" [matTooltip]="currentChrono" [innerHTML]="innerHtml"
                style="height: 100%;overflow: hidden;"></div>
    
            <div style="display:flex;position: sticky;top: 0px;z-index: 2;">
                <button mat-icon-button (click)="snav2.close()" style="font-size: 20px;color:#666;">
                    <mat-icon class="fa fa-arrow-right"></mat-icon>
                </button>
            </div>
    
            <app-panel-list #appPanelList (refreshBadgeNotes)="refreshBadgeNotes($event)"
                (refreshBadgeAttachments)="refreshBadgeAttachments($event)"></app-panel-list>
    
            <mat-divider></mat-divider>
        </mat-sidenav>
    </mat-sidenav-container>
    <app-folder-action-list #actionsListContext [contextMode]="true" [currentFolderInfo]="folderInfo"
        [totalRes]="allResInBasket.length" [selectedRes]="selectedRes" (refreshEvent)="refreshDaoAfterAction()"
        (refreshPanelFolders)="foldersService.getFolders()">