paperless-ngx/src-ui/src/app/components/document-list/document-list.component.html

156 lines
7 KiB
HTML
Raw Normal View History

<app-page-header [title]="getTitle()">
2020-10-27 01:10:18 +01:00
2020-11-29 16:33:33 +01:00
<div ngbDropdown class="d-inline-block mr-2">
2020-12-14 23:14:19 -08:00
<button class="btn btn-sm btn-outline-primary" id="dropdownSelect" ngbDropdownToggle>
2020-11-29 16:33:33 +01:00
<svg class="toolbaricon" fill="currentColor">
<use xlink:href="assets/bootstrap-icons.svg#text-indent-left" />
</svg>
2020-12-14 23:14:19 -08:00
Select
2020-11-29 16:33:33 +01:00
</button>
2020-12-14 23:14:19 -08:00
<div ngbDropdownMenu aria-labelledby="dropdownSelect" class="shadow">
2020-12-11 14:49:22 +01:00
<button ngbDropdownItem (click)="list.selectPage()">Select page</button>
<button ngbDropdownItem (click)="list.selectAll()">Select all</button>
<button ngbDropdownItem (click)="list.selectNone()">Select none</button>
2020-11-29 16:33:33 +01:00
</div>
</div>
2020-11-22 20:32:41 +01:00
<div class="btn-group btn-group-toggle" ngbRadioGroup [(ngModel)]="displayMode"
2020-10-30 22:46:43 +01:00
(ngModelChange)="saveDisplayMode()">
2020-11-22 16:33:26 +01:00
<label ngbButtonLabel class="btn-outline-primary btn-sm">
2020-10-27 01:10:18 +01:00
<input ngbButton type="radio" class="btn btn-sm" value="details">
<svg class="toolbaricon" fill="currentColor">
2020-10-30 22:46:43 +01:00
<use xlink:href="assets/bootstrap-icons.svg#list-ul" />
2020-10-27 01:10:18 +01:00
</svg>
</label>
2020-11-22 16:33:26 +01:00
<label ngbButtonLabel class="btn-outline-primary btn-sm">
2020-10-27 01:10:18 +01:00
<input ngbButton type="radio" class="btn btn-sm" value="smallCards">
<svg class="toolbaricon" fill="currentColor">
2020-10-30 22:46:43 +01:00
<use xlink:href="assets/bootstrap-icons.svg#grid" />
2020-10-27 01:10:18 +01:00
</svg>
</label>
2020-11-22 16:33:26 +01:00
<label ngbButtonLabel class="btn-outline-primary btn-sm">
2020-10-27 01:10:18 +01:00
<input ngbButton type="radio" class="btn btn-sm" value="largeCards">
<svg class="toolbaricon" fill="currentColor">
2020-10-30 22:46:43 +01:00
<use xlink:href="assets/bootstrap-icons.svg#hdd-stack" />
2020-10-27 01:10:18 +01:00
</svg>
</label>
</div>
<div class="btn-group btn-group-toggle ml-2" ngbRadioGroup [(ngModel)]="list.sortReverse">
2020-10-27 01:10:18 +01:00
<div ngbDropdown class="btn-group">
2020-11-22 16:33:26 +01:00
<button class="btn btn-outline-primary btn-sm" id="dropdownBasic1" ngbDropdownToggle>Sort by</button>
2020-12-09 13:44:37 +01:00
<div ngbDropdownMenu aria-labelledby="dropdownBasic1" class="shadow">
<button *ngFor="let f of getSortFields()" ngbDropdownItem (click)="list.sortField = f.field"
[class.active]="list.sortField == f.field">{{f.name}}</button>
2020-10-27 01:10:18 +01:00
</div>
</div>
2020-11-22 16:33:26 +01:00
<label ngbButtonLabel class="btn-outline-primary btn-sm">
<input ngbButton type="radio" class="btn btn-sm" [value]="false">
2020-10-27 01:10:18 +01:00
<svg class="toolbaricon" fill="currentColor">
2020-10-30 22:46:43 +01:00
<use xlink:href="assets/bootstrap-icons.svg#sort-alpha-down" />
2020-10-27 01:10:18 +01:00
</svg>
</label>
2020-11-22 16:33:26 +01:00
<label ngbButtonLabel class="btn-outline-primary btn-sm">
<input ngbButton type="radio" class="btn btn-sm" [value]="true">
2020-10-27 01:10:18 +01:00
<svg class="toolbaricon" fill="currentColor">
2020-10-30 22:46:43 +01:00
<use xlink:href="assets/bootstrap-icons.svg#sort-alpha-up-alt" />
2020-10-27 01:10:18 +01:00
</svg>
</label>
</div>
2020-10-30 22:46:43 +01:00
<div class="btn-group ml-2">
2020-10-30 22:46:43 +01:00
<div class="btn-group" ngbDropdown role="group">
2020-12-13 10:28:09 -08:00
<button class="btn btn-sm btn-outline-primary dropdown-toggle" ngbDropdownToggle>Views</button>
2020-12-10 15:51:11 -08:00
<div class="dropdown-menu shadow" ngbDropdownMenu>
2020-12-08 23:53:19 -08:00
<ng-container *ngIf="!list.savedViewId">
<button ngbDropdownItem *ngFor="let view of savedViewService.allViews" (click)="loadViewConfig(view)">{{view.name}}</button>
<div class="dropdown-divider" *ngIf="savedViewService.allViews.length > 0"></div>
</ng-container>
<button ngbDropdownItem (click)="saveViewConfig()" *ngIf="list.savedViewId">Save "{{list.savedViewTitle}}"</button>
<button ngbDropdownItem (click)="saveViewConfigAs()">Save as...</button>
2020-10-30 22:46:43 +01:00
</div>
</div>
</div>
2020-10-27 01:10:18 +01:00
</app-page-header>
<div class="w-100 mb-2 mb-sm-4">
<app-filter-editor [hidden]="isBulkEditing" [(filterRules)]="list.filterRules" #filterEditor></app-filter-editor>
2020-10-27 01:10:18 +01:00
<app-bulk-editor [hidden]="!isBulkEditing"
[viewDocuments]="list.documents"
2020-12-19 02:08:33 -08:00
[(selectedDocuments)]="list.selected"
2020-12-14 23:14:19 -08:00
(selectPage)="list.selectPage()"
(selectAll)="list.selectAll()"
(selectNone)="list.selectNone()"
2020-12-19 02:08:33 -08:00
(setTags)="bulkSetTags($event)"
(setCorrespondent)="bulkSetCorrespondent($event)"
(setDocumentType)="bulkSetDocumentType($event)"
2020-12-14 23:14:19 -08:00
(delete)="bulkDelete()">
2020-12-18 21:19:49 -08:00
</app-bulk-editor>
</div>
<div class="d-flex justify-content-between align-items-center">
<p><span *ngIf="list.selected.size > 0">Selected {{list.selected.size}} of </span>{{list.collectionSize || 0}} document{{list.collectionSize > 1 ? 's' : ''}} <span *ngIf="isFiltered">(filtered)</span></p>
2020-12-18 21:19:49 -08:00
<ngb-pagination [pageSize]="list.currentPageSize" [collectionSize]="list.collectionSize" [(page)]="list.currentPage" [maxSize]="5"
[rotate]="true" (pageChange)="list.reload()" aria-label="Default pagination"></ngb-pagination>
2020-12-14 23:14:19 -08:00
</div>
2020-10-27 01:10:18 +01:00
<div *ngIf="displayMode == 'largeCards'">
<app-document-card-large *ngFor="let d of list.documents" [document]="d" [details]="d.content" (clickTag)="clickTag($event)" (clickCorrespondent)="clickCorrespondent($event)">
2020-10-27 01:10:18 +01:00
</app-document-card-large>
</div>
2020-12-09 13:44:37 +01:00
<table class="table table-sm border shadow-sm" *ngIf="displayMode == 'details'">
2020-10-27 01:10:18 +01:00
<thead>
2020-12-11 14:49:22 +01:00
<th></th>
2020-11-22 20:00:58 +01:00
<th class="d-none d-lg-table-cell">ASN</th>
<th class="d-none d-md-table-cell">Correspondent</th>
2020-10-27 01:10:18 +01:00
<th>Title</th>
2020-11-22 20:00:58 +01:00
<th class="d-none d-xl-table-cell">Document type</th>
2020-11-12 15:23:07 +01:00
<th>Created</th>
2020-11-22 20:00:58 +01:00
<th class="d-none d-xl-table-cell">Added</th>
2020-10-27 01:10:18 +01:00
</thead>
<tbody>
2020-12-13 15:28:20 +01:00
<tr *ngFor="let d of list.documents" [ngClass]="list.isSelected(d) ? 'table-row-selected' : ''">
2020-12-11 14:49:22 +01:00
<td>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="docCheck{{d.id}}" [checked]="list.isSelected(d)" (change)="list.setSelected(d, $event.target.checked)">
<label class="custom-control-label" for="docCheck{{d.id}}"></label>
</div>
</td>
<td class="d-none d-lg-table-cell">
{{d.archive_serial_number}}
</td>
<td class="d-none d-md-table-cell">
<ng-container *ngIf="d.correspondent">
<a [routerLink]="" (click)="clickCorrespondent(d.correspondent)" title="Filter by correspondent">{{(d.correspondent$ | async)?.name}}</a>
</ng-container>
</td>
<td>
2020-12-11 17:57:56 +01:00
<a routerLink="/documents/{{d.id}}" title="Edit document" style="overflow-wrap: anywhere;">{{d.title | documentTitle}}</a>
<app-tag [tag]="t" *ngFor="let t of d.tags$ | async" class="ml-1" clickable="true" linkTitle="Filter by tag" (click)="clickTag(t.id)"></app-tag>
</td>
<td class="d-none d-xl-table-cell">
<ng-container *ngIf="d.document_type">
<a [routerLink]="" (click)="clickDocumentType(d.document_type)" title="Filter by document type">{{(d.document_type$ | async)?.name}}</a>
</ng-container>
</td>
<td>
{{d.created | date}}
</td>
<td class="d-none d-xl-table-cell">
{{d.added | date}}
</td>
2020-10-27 01:10:18 +01:00
</tr>
</tbody>
</table>
2020-11-22 19:30:55 +01:00
<div class="m-n2 row row-cols-paperless-cards" *ngIf="displayMode == 'smallCards'">
<app-document-card-small [document]="d" [selected]="list.isSelected(d)" (selectedChange)="list.setSelected(d, $event)" *ngFor="let d of list.documents" (clickTag)="clickTag($event)" (clickCorrespondent)="clickCorrespondent($event)"></app-document-card-small>
2020-10-27 01:10:18 +01:00
</div>