mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	Enhancement: add background to consumer statuses
This commit is contained in:
		@@ -255,7 +255,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">63</context>
 | 
			
		||||
          <context context-type="linenumber">73</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8582620835547864448" datatype="html">
 | 
			
		||||
@@ -447,7 +447,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">323</context>
 | 
			
		||||
          <context context-type="linenumber">315</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="3768927257183755959" datatype="html">
 | 
			
		||||
@@ -506,7 +506,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">315</context>
 | 
			
		||||
          <context context-type="linenumber">307</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html</context>
 | 
			
		||||
@@ -632,7 +632,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">332</context>
 | 
			
		||||
          <context context-type="linenumber">324</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
 | 
			
		||||
@@ -948,7 +948,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">281</context>
 | 
			
		||||
          <context context-type="linenumber">283</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
 | 
			
		||||
@@ -1967,7 +1967,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">719</context>
 | 
			
		||||
          <context context-type="linenumber">733</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
 | 
			
		||||
@@ -2006,7 +2006,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">721</context>
 | 
			
		||||
          <context context-type="linenumber">735</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
 | 
			
		||||
@@ -4308,7 +4308,7 @@
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">34</context>
 | 
			
		||||
          <context context-type="linenumber">39</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5701618810648052610" datatype="html">
 | 
			
		||||
@@ -4472,7 +4472,7 @@
 | 
			
		||||
        <source>Dismiss completed</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">16</context>
 | 
			
		||||
          <context context-type="linenumber">20</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <note priority="1" from="description">This button dismisses all status messages about processed documents on the dashboard (failed and successful)</note>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
@@ -4480,7 +4480,7 @@
 | 
			
		||||
        <source>{VAR_PLURAL, plural, =1 {One more document} other {<x id="INTERPOLATION"/> more documents}}</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">32</context>
 | 
			
		||||
          <context context-type="linenumber">37</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <note priority="1" from="description">This is shown as a summary line when there are more than 5 document in the processing pipeline.</note>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
@@ -4814,110 +4814,106 @@
 | 
			
		||||
        <source>Notes <x id="START_BLOCK_IF" equiv-text="@if (document?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge text-bg-secondary ms-1">"/><x id="INTERPOLATION" equiv-text="ngth}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">270,273</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8191371354890763172" datatype="html">
 | 
			
		||||
        <source>Enter Password</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">304</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">361</context>
 | 
			
		||||
          <context context-type="linenumber">272,275</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5129524307369213584" datatype="html">
 | 
			
		||||
        <source>Save & next</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">317</context>
 | 
			
		||||
          <context context-type="linenumber">309</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="4910102545766233758" datatype="html">
 | 
			
		||||
        <source>Save & close</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">320</context>
 | 
			
		||||
          <context context-type="linenumber">312</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8191371354890763172" datatype="html">
 | 
			
		||||
        <source>Enter Password</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">363</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2218903673684131427" datatype="html">
 | 
			
		||||
        <source>An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">284,286</context>
 | 
			
		||||
          <context context-type="linenumber">298,300</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="3200733026060976258" datatype="html">
 | 
			
		||||
        <source>Document changes detected</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">307</context>
 | 
			
		||||
          <context context-type="linenumber">321</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2887155916749964" datatype="html">
 | 
			
		||||
        <source>The version of this document in your browser session appears older than the existing version.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">308</context>
 | 
			
		||||
          <context context-type="linenumber">322</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="237142428785956348" datatype="html">
 | 
			
		||||
        <source>Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">309</context>
 | 
			
		||||
          <context context-type="linenumber">323</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8720977247725652816" datatype="html">
 | 
			
		||||
        <source>Ok</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">311</context>
 | 
			
		||||
          <context context-type="linenumber">325</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5758784066858623886" datatype="html">
 | 
			
		||||
        <source>Error retrieving metadata</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">451</context>
 | 
			
		||||
          <context context-type="linenumber">465</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="3456881259945295697" datatype="html">
 | 
			
		||||
        <source>Error retrieving suggestions.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">476</context>
 | 
			
		||||
          <context context-type="linenumber">490</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8348337312757497317" datatype="html">
 | 
			
		||||
        <source>Document saved successfully.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">594</context>
 | 
			
		||||
          <context context-type="linenumber">608</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">603</context>
 | 
			
		||||
          <context context-type="linenumber">617</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="448882439049417053" datatype="html">
 | 
			
		||||
        <source>Error saving document</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">607</context>
 | 
			
		||||
          <context context-type="linenumber">621</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">648</context>
 | 
			
		||||
          <context context-type="linenumber">662</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="9021887951960049161" datatype="html">
 | 
			
		||||
        <source>Confirm delete</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">674</context>
 | 
			
		||||
          <context context-type="linenumber">688</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
 | 
			
		||||
@@ -4928,35 +4924,35 @@
 | 
			
		||||
        <source>Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">675</context>
 | 
			
		||||
          <context context-type="linenumber">689</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="6691075929777935948" datatype="html">
 | 
			
		||||
        <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">676</context>
 | 
			
		||||
          <context context-type="linenumber">690</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="719892092227206532" datatype="html">
 | 
			
		||||
        <source>Delete document</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">678</context>
 | 
			
		||||
          <context context-type="linenumber">692</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="7295637485862454066" datatype="html">
 | 
			
		||||
        <source>Error deleting document</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">697</context>
 | 
			
		||||
          <context context-type="linenumber">711</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="7362691899087997122" datatype="html">
 | 
			
		||||
        <source>Redo OCR confirm</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">717</context>
 | 
			
		||||
          <context context-type="linenumber">731</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
 | 
			
		||||
@@ -4967,28 +4963,28 @@
 | 
			
		||||
        <source>This operation will permanently redo OCR for this document.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">718</context>
 | 
			
		||||
          <context context-type="linenumber">732</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5729001209753056399" datatype="html">
 | 
			
		||||
        <source>Redo OCR operation will begin in the background. Close and re-open or reload this document after the operation has completed to see new content.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">729</context>
 | 
			
		||||
          <context context-type="linenumber">743</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="4409560272830824468" datatype="html">
 | 
			
		||||
        <source>Error executing operation</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">740</context>
 | 
			
		||||
          <context context-type="linenumber">754</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="4458954481601077369" datatype="html">
 | 
			
		||||
        <source>Page Fit</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">809</context>
 | 
			
		||||
          <context context-type="linenumber">823</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="6857598786757174736" datatype="html">
 | 
			
		||||
 
 | 
			
		||||
@@ -5,69 +5,77 @@
 | 
			
		||||
      <button class="btn btn-sm btn-outline-primary mt-3" (click)="fileUpload.click()" i18n>Browse files</button>
 | 
			
		||||
      <input type="file" class="visually-hidden" (change)="onFileSelected($event)" multiple #fileUpload>
 | 
			
		||||
    </form>
 | 
			
		||||
    <div class="fixed-bottom p-2 p-md-4" [ngClass]="slimSidebarEnabled ? 'col-slim' : 'offset-md-3 offset-lg-2'">
 | 
			
		||||
      <div class="row d-flex justify-content-end">
 | 
			
		||||
        <div class="col col-lg-4 col-xl-3 d-flex px-4 justify-content-between align-items-center">
 | 
			
		||||
          @if (getStatus().length > 0) {
 | 
			
		||||
            <p class="m-0 small text-muted">{{getStatusSummary()}}</p>
 | 
			
		||||
          }
 | 
			
		||||
          @if (getStatusCompleted().length > 0) {
 | 
			
		||||
            <a class="btn-link" (click)="dismissCompleted()" [routerLink]="[]" >
 | 
			
		||||
              <span class="me-1" i18n="This button dismisses all status messages about processed documents on the dashboard (failed and successful)">Dismiss completed</span>
 | 
			
		||||
              <i-bs name="check2-all"></i-bs>
 | 
			
		||||
            </a>
 | 
			
		||||
          }
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      @for (status of getStatus(); track status) {
 | 
			
		||||
        <div>
 | 
			
		||||
          <ng-container [ngTemplateOutlet]="consumerAlert" [ngTemplateOutletContext]="{ $implicit: status }"></ng-container>
 | 
			
		||||
        </div>
 | 
			
		||||
      }
 | 
			
		||||
    </div>
 | 
			
		||||
    @if (getStatusHidden().length) {
 | 
			
		||||
      <div class="alerts-hidden">
 | 
			
		||||
        @if (!alertsExpanded) {
 | 
			
		||||
          <p class="mt-3 mb-0 text-center">
 | 
			
		||||
            <span i18n="This is shown as a summary line when there are more than 5 document in the processing pipeline.">{getStatusHidden().length, plural, =1 {One more document} other {{{getStatusHidden().length}} more documents}}</span>
 | 
			
		||||
             • 
 | 
			
		||||
            <a [routerLink]="[]" (click)="alertsExpanded = !alertsExpanded" aria-controls="hiddenAlerts" [attr.aria-expanded]="alertsExpanded" i18n>Show all</a>
 | 
			
		||||
          </p>
 | 
			
		||||
        }
 | 
			
		||||
        <div #hiddenAlerts="ngbCollapse" [(ngbCollapse)]="!alertsExpanded">
 | 
			
		||||
          @for (status of getStatusHidden(); track status) {
 | 
			
		||||
            <div>
 | 
			
		||||
              <ng-container [ngTemplateOutlet]="consumerAlert" [ngTemplateOutletContext]="{ $implicit: status }"></ng-container>
 | 
			
		||||
    @if (getStatus().length > 0) {
 | 
			
		||||
    <div class="fixed-bottom p-2 p-md-4 d-flex justify-content-end" [ngClass]="slimSidebarEnabled ? 'col-slim' : 'offset-md-3 offset-lg-2'">
 | 
			
		||||
      <div class="col col-lg-4 col-xl-3 ps-0 pe-0 ps-lg-3 pe-lg-0">
 | 
			
		||||
        <div class="card shadow-sm consumer-status-card">
 | 
			
		||||
          <div class="card-body">
 | 
			
		||||
            <div class="row">
 | 
			
		||||
              <div class="col d-flex justify-content-between align-items-center">
 | 
			
		||||
                @if (getStatus().length > 0) {
 | 
			
		||||
                  <p class="m-0 small text-muted">{{getStatusSummary()}}</p>
 | 
			
		||||
                }
 | 
			
		||||
                @if (getStatusCompleted().length > 0) {
 | 
			
		||||
                  <a class="btn-link" (click)="dismissCompleted()" [routerLink]="[]" >
 | 
			
		||||
                    <span class="me-1" i18n="This button dismisses all status messages about processed documents on the dashboard (failed and successful)">Dismiss completed</span>
 | 
			
		||||
                    <i-bs name="check2-all"></i-bs>
 | 
			
		||||
                  </a>
 | 
			
		||||
                }
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          }
 | 
			
		||||
            <div class="row">
 | 
			
		||||
              <div class="col">
 | 
			
		||||
                @for (status of getStatus(); track status) {
 | 
			
		||||
                  <div>
 | 
			
		||||
                    <ng-container [ngTemplateOutlet]="consumerAlert" [ngTemplateOutletContext]="{ $implicit: status }"></ng-container>
 | 
			
		||||
                  </div>
 | 
			
		||||
                }
 | 
			
		||||
                @if (getStatusHidden().length) {
 | 
			
		||||
                  <div class="alerts-hidden">
 | 
			
		||||
                    @if (!alertsExpanded) {
 | 
			
		||||
                      <p class="mt-3 mb-0 text-center">
 | 
			
		||||
                        <span i18n="This is shown as a summary line when there are more than 5 document in the processing pipeline.">{getStatusHidden().length, plural, =1 {One more document} other {{{getStatusHidden().length}} more documents}}</span>
 | 
			
		||||
                         • 
 | 
			
		||||
                        <a [routerLink]="[]" (click)="alertsExpanded = !alertsExpanded" aria-controls="hiddenAlerts" [attr.aria-expanded]="alertsExpanded" i18n>Show all</a>
 | 
			
		||||
                      </p>
 | 
			
		||||
                    }
 | 
			
		||||
                    <div #hiddenAlerts="ngbCollapse" [(ngbCollapse)]="!alertsExpanded">
 | 
			
		||||
                      @for (status of getStatusHidden(); track status) {
 | 
			
		||||
                        <div>
 | 
			
		||||
                          <ng-container [ngTemplateOutlet]="consumerAlert" [ngTemplateOutletContext]="{ $implicit: status }"></ng-container>
 | 
			
		||||
                        </div>
 | 
			
		||||
                      }
 | 
			
		||||
                    </div>
 | 
			
		||||
                  </div>
 | 
			
		||||
                }
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    }
 | 
			
		||||
    </div>
 | 
			
		||||
  }
 | 
			
		||||
  </div>
 | 
			
		||||
</pngx-widget-frame>
 | 
			
		||||
 | 
			
		||||
<ng-template #consumerAlert let-status>
 | 
			
		||||
  <div class="row d-flex justify-content-end">
 | 
			
		||||
    <div class="col col-lg-4 col-xl-3">
 | 
			
		||||
      <ngb-alert type="secondary" class="mt-2 mb-0" [dismissible]="isFinished(status)" (closed)="dismiss(status)">
 | 
			
		||||
        <h6 class="alert-heading">{{status.filename}}</h6>
 | 
			
		||||
        @if (!isFinished(status) || (isFinished(status) && !status.documentId)) {
 | 
			
		||||
          <p class="mb-0 pb-1">{{status.message}}</p>
 | 
			
		||||
        }
 | 
			
		||||
        <ngb-progressbar [value]="status.getProgress()" [max]="1" [type]="getStatusColor(status)"></ngb-progressbar>
 | 
			
		||||
        <div *pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.Document }">
 | 
			
		||||
          @if (isFinished(status)) {
 | 
			
		||||
            <div>
 | 
			
		||||
              @if (status.documentId) {
 | 
			
		||||
                <button class="btn btn-sm btn-outline-primary btn-open" routerLink="/documents/{{status.documentId}}" (click)="dismiss(status)">
 | 
			
		||||
                  <small i18n>Open document</small>
 | 
			
		||||
                  <i-bs name="arrow-right-short"></i-bs>
 | 
			
		||||
                </button>
 | 
			
		||||
              }
 | 
			
		||||
            </div>
 | 
			
		||||
  <ngb-alert type="secondary" class="mt-2 mb-0" [dismissible]="isFinished(status)" (closed)="dismiss(status)">
 | 
			
		||||
    <h6 class="alert-heading">{{status.filename}}</h6>
 | 
			
		||||
    @if (!isFinished(status) || (isFinished(status) && !status.documentId)) {
 | 
			
		||||
      <p class="mb-0 pb-1">{{status.message}}</p>
 | 
			
		||||
    }
 | 
			
		||||
    <ngb-progressbar [value]="status.getProgress()" [max]="1" [type]="getStatusColor(status)"></ngb-progressbar>
 | 
			
		||||
    <div *pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.Document }">
 | 
			
		||||
      @if (isFinished(status)) {
 | 
			
		||||
        <div>
 | 
			
		||||
          @if (status.documentId) {
 | 
			
		||||
            <button class="btn btn-sm btn-outline-primary btn-open" routerLink="/documents/{{status.documentId}}" (click)="dismiss(status)">
 | 
			
		||||
              <small i18n>Open document</small>
 | 
			
		||||
              <i-bs name="arrow-right-short"></i-bs>
 | 
			
		||||
            </button>
 | 
			
		||||
          }
 | 
			
		||||
        </div>
 | 
			
		||||
      </ngb-alert>
 | 
			
		||||
      }
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
  </ngb-alert>
 | 
			
		||||
</ng-template>
 | 
			
		||||
 
 | 
			
		||||
@@ -35,3 +35,7 @@ form {
 | 
			
		||||
::ng-deep .ngx-file-drop__drop-zone--over {
 | 
			
		||||
  background-color: var(--pngx-primary-faded) !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.consumer-status-card {
 | 
			
		||||
  background-color: rgba(var(--bs-body-bg-rgb), .95) !important;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,6 +26,7 @@ import { UploadDocumentsService } from 'src/app/services/upload-documents.servic
 | 
			
		||||
import { WidgetFrameComponent } from '../widget-frame/widget-frame.component'
 | 
			
		||||
import { UploadFileWidgetComponent } from './upload-file-widget.component'
 | 
			
		||||
import { DragDropModule } from '@angular/cdk/drag-drop'
 | 
			
		||||
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
 | 
			
		||||
 | 
			
		||||
const FAILED_STATUSES = [new FileStatus()]
 | 
			
		||||
const WORKING_STATUSES = [new FileStatus(), new FileStatus()]
 | 
			
		||||
@@ -73,6 +74,7 @@ describe('UploadFileWidgetComponent', () => {
 | 
			
		||||
        RouterTestingModule.withRoutes(routes),
 | 
			
		||||
        NgbAlertModule,
 | 
			
		||||
        DragDropModule,
 | 
			
		||||
        NgxBootstrapIconsModule.pick(allIcons),
 | 
			
		||||
      ],
 | 
			
		||||
    }).compileComponents()
 | 
			
		||||
 | 
			
		||||
@@ -147,12 +149,16 @@ describe('UploadFileWidgetComponent', () => {
 | 
			
		||||
 | 
			
		||||
  it('should allow dismissing all alerts', fakeAsync(() => {
 | 
			
		||||
    mockConsumerStatuses(consumerStatusService)
 | 
			
		||||
    component.alertsExpanded = true
 | 
			
		||||
    fixture.detectChanges()
 | 
			
		||||
    jest
 | 
			
		||||
      .spyOn(component, 'getStatusCompleted')
 | 
			
		||||
      .mockImplementation(() => SUCCESS_STATUSES)
 | 
			
		||||
    const dismissSpy = jest.spyOn(consumerStatusService, 'dismiss')
 | 
			
		||||
    component.dismissCompleted()
 | 
			
		||||
    tick(1000)
 | 
			
		||||
    fixture.detectChanges()
 | 
			
		||||
    expect(dismissSpy).toHaveBeenCalledTimes(6)
 | 
			
		||||
    expect(dismissSpy).toHaveBeenCalledTimes(10)
 | 
			
		||||
  }))
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -116,6 +116,11 @@ export class UploadFileWidgetComponent extends ComponentWithPermissions {
 | 
			
		||||
 | 
			
		||||
  dismissCompleted() {
 | 
			
		||||
    this.alerts.forEach((a) => a.close())
 | 
			
		||||
    if (this.alertsExpanded) {
 | 
			
		||||
      this.getStatusCompleted().forEach((status) =>
 | 
			
		||||
        this.consumerStatusService.dismiss(status)
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public onFileSelected(event: Event) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user