From 988673ace3642a1a978aa0474b7d3315fc4b4861 Mon Sep 17 00:00:00 2001 From: Eugen Ciur <eugen@papermerge.com> Date: Sun, 5 Dec 2021 08:30:38 +0100 Subject: [PATCH] great realtime ocr status update! --- app/adapters/node.js | 10 ++++++++- app/components/commander/index.js | 36 +++++++++++++++++++++++++++++++ app/components/document/index.hbs | 12 ++++++++--- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/app/adapters/node.js b/app/adapters/node.js index 7d5d3e8..12a8b0b 100644 --- a/app/adapters/node.js +++ b/app/adapters/node.js @@ -34,8 +34,16 @@ export default class NodeAdapter extends ApplicationAdapter { } node_ids = nodes.data.map(node => { - let normalized_node = this.store.normalize('node', node); + let normalized_node; + + if (node.type === "folders") { + normalized_node = this.store.normalize('folder', node); + } else if (node.type === "Document") { + normalized_node = this.store.normalize('document', node); + } + this.store.push(normalized_node); + return node.id; }); diff --git a/app/components/commander/index.js b/app/components/commander/index.js index d8cf35a..28df1f0 100644 --- a/app/components/commander/index.js +++ b/app/components/commander/index.js @@ -2,6 +2,7 @@ import Component from '@glimmer/component'; import { tracked } from '@glimmer/tracking'; import { A } from '@ember/array'; import { action } from '@ember/object'; +import { inject as service } from '@ember/service'; export default class CommanderComponent extends Component { @@ -14,6 +15,10 @@ export default class CommanderComponent extends Component { is current panel displayed. @hint is "left" indicates that commander is displayed in left panel. */ + + @service websockets; + @service store; + // show create new folder modal dialog? @tracked show_new_folder_modal = false; @@ -34,6 +39,37 @@ export default class CommanderComponent extends Component { @tracked deleted_records = A([]); @tracked __deleted_records; // used as workaround for an ember bug + constructor(owner, args) { + super(owner, args); + + this.websockets.addHandler(this.messageHandler, this); + } + + messageHandler(message) { + let doc; + + doc = this.store.peekRecord('document', message.document_id); + if (!doc) { + console.warn(`Document ID=${message.document_id} not found.`); + return; + } + + switch (message.type) { + case 'ocrdocumenttask.taskreceived': + doc.ocr_status = 'received'; + break; + case 'ocrdocumenttask.taskstarted': + doc.ocr_status = 'started'; + break; + case 'ocrdocumenttask.tasksucceeded': + doc.ocr_status = 'succeeded'; + break; + case 'ocrdocumenttask.taskfailed': + doc.ocr_status = 'failed'; + break; + } // end of switch + } + @action openNewFolderModal() { this.show_new_folder_modal = true; diff --git a/app/components/document/index.hbs b/app/components/document/index.hbs index 0ab46ef..2c55f13 100644 --- a/app/components/document/index.hbs +++ b/app/components/document/index.hbs @@ -1,11 +1,17 @@ <div class="node document {{if this.is_selected "checked"}}"> - <Input @type="checkbox" @checked={{this.is_selected}} {{on "change" this.onCheckboxChange}} /> <div class="icon document"></div> - <div class="title"> - {{yield}} + + <div class="title d-flex flex-row align-items-center"> + {{#if @model.ocr}} + <OcrStatus + @status={{@model.ocr_status}} /> + {{/if}} + <div class="mx-2"> + {{yield}} + </div> </div> </div> \ No newline at end of file -- GitLab