mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-10-20 23:08:14 +00:00
76 lines
4.2 KiB
HTML
76 lines
4.2 KiB
HTML
<pngx-page-header
|
|
title="OCR Templates"
|
|
i18n-title
|
|
info="Define extraction zones on document types to automatically populate custom fields via OCR."
|
|
i18n-info
|
|
>
|
|
<button type="button" class="btn btn-sm btn-outline-primary" (click)="editTemplate()" *pngxIfPermissions="{ action: PermissionAction.Add, type: PermissionType.OcrTemplate }">
|
|
<i-bs name="plus-circle" class="me-1"></i-bs><ng-container i18n>Add Template</ng-container>
|
|
</button>
|
|
</pngx-page-header>
|
|
|
|
<ul class="list-group">
|
|
|
|
<li class="list-group-item">
|
|
<div class="row">
|
|
<div class="col" i18n>Name</div>
|
|
<div class="col d-none d-sm-flex" i18n>Document Type</div>
|
|
<div class="col d-none d-sm-flex" i18n>Zones</div>
|
|
<div class="col" i18n>Status</div>
|
|
<div class="col" i18n>Actions</div>
|
|
</div>
|
|
</li>
|
|
|
|
@if (loading() && templates().length === 0) {
|
|
<li class="list-group-item">
|
|
<div class="spinner-border spinner-border-sm me-2" role="status"></div>
|
|
<ng-container i18n>Loading...</ng-container>
|
|
</li>
|
|
}
|
|
|
|
@for (template of templates(); track template.id) {
|
|
<li class="list-group-item">
|
|
<div class="row fade" [class.show]="show()">
|
|
<div class="col d-flex align-items-center"><button class="btn btn-link p-0 text-start" type="button" (click)="editTemplate(template)" [disabled]="!permissionsService.currentUserCan(PermissionAction.Change, PermissionType.OcrTemplate)">{{template.name}}</button></div>
|
|
<div class="col d-flex align-items-center d-none d-sm-flex">{{getDocumentTypeName(template)}}</div>
|
|
<div class="col d-flex align-items-center d-none d-sm-flex"><code>{{template.zones.length}}</code></div>
|
|
<div class="col d-flex align-items-center">
|
|
<div class="form-check form-switch mb-0">
|
|
<input type="checkbox" class="form-check-input cursor-pointer" [id]="template.id+'_enable'" [(ngModel)]="template.enabled" (change)="toggleTemplateEnabled(template)" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.OcrTemplate }">
|
|
<label class="form-check-label cursor-pointer" [for]="template.id+'_enable'">
|
|
<code> @if(template.enabled) { <ng-container i18n>Enabled</ng-container> } @else { <span i18n class="text-muted">Disabled</span> }</code>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col">
|
|
|
|
<div class="btn-group d-block d-sm-none">
|
|
<div ngbDropdown container="body" class="d-inline-block">
|
|
<button type="button" class="btn btn-link" id="actionsMenuMobile{{template.id}}" (click)="$event.stopPropagation()" ngbDropdownToggle>
|
|
<i-bs name="three-dots-vertical"></i-bs>
|
|
</button>
|
|
<div ngbDropdownMenu aria-labelledby="actionsMenuMobile{{template.id}}">
|
|
<button (click)="editTemplate(template)" *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.OcrTemplate }" ngbDropdownItem i18n>Edit</button>
|
|
<button (click)="deleteTemplate(template)" *pngxIfPermissions="{ action: PermissionAction.Delete, type: PermissionType.OcrTemplate }" ngbDropdownItem i18n>Delete</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="btn-toolbar d-none d-sm-flex gap-2" role="toolbar">
|
|
<div class="btn-group">
|
|
<button *pngxIfPermissions="{ action: PermissionAction.Change, type: PermissionType.OcrTemplate }" class="btn btn-sm btn-outline-secondary" type="button" (click)="editTemplate(template)">
|
|
<i-bs width="1em" height="1em" name="pencil" class="me-1"></i-bs><ng-container i18n>Edit</ng-container>
|
|
</button>
|
|
<button *pngxIfPermissions="{ action: PermissionAction.Delete, type: PermissionType.OcrTemplate }" class="btn btn-sm btn-outline-danger" type="button" (click)="deleteTemplate(template)">
|
|
<i-bs width="1em" height="1em" name="trash" class="me-1"></i-bs><ng-container i18n>Delete</ng-container>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
}
|
|
@if (!loading() && templates().length === 0) {
|
|
<li class="list-group-item" [class.show]="show()" i18n>No OCR templates defined.</li>
|
|
}
|
|
</ul>
|