From 61951ea45f01bbe05113c225e6dea2612278d113 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sun, 28 Nov 2021 07:56:21 +0100
Subject: [PATCH] viewer controller and other real time goodies

---
 app/components/viewer/action_buttons.hbs  | 25 +++++++++++----
 app/components/viewer/index.hbs           |  3 +-
 app/components/viewer/index.js            | 28 ----------------
 app/controllers/authenticated/document.js | 39 ++++++++++++++++++++++-
 app/services/websockets.js                |  2 +-
 app/templates/authenticated/viewer.hbs    |  2 ++
 6 files changed, 61 insertions(+), 38 deletions(-)
 delete mode 100644 app/components/viewer/index.js

diff --git a/app/components/viewer/action_buttons.hbs b/app/components/viewer/action_buttons.hbs
index c967b5c..7c89c90 100644
--- a/app/components/viewer/action_buttons.hbs
+++ b/app/components/viewer/action_buttons.hbs
@@ -1,11 +1,22 @@
 <div>
   <Button::DownloadDocumentVersion
     @document_versions={{@document_versions}} />
-  <button
-    class="btn btn-light"
-    type="button"
-    {{on "click" @onRunOCR}}>
-      <i class="fa fa-redo mr-1"></i>
-    Run OCR
-  </button>
+    {{#if @isLocked}}
+      <button
+        class="btn btn-light"
+        type="button"
+        disabled
+        {{on "click" @onRunOCR}}>
+          <i class="fa fa-redo mr-1"></i>
+        Run OCR
+      </button>
+    {{else}}
+      <button
+        class="btn btn-light"
+        type="button"
+        {{on "click" @onRunOCR}}>
+          <i class="fa fa-redo mr-1"></i>
+        Run OCR
+      </button>
+    {{/if}}
 </div>
\ No newline at end of file
diff --git a/app/components/viewer/index.hbs b/app/components/viewer/index.hbs
index b96952d..2aefdfa 100644
--- a/app/components/viewer/index.hbs
+++ b/app/components/viewer/index.hbs
@@ -2,7 +2,8 @@
   <div class="d-flex justify-content-between">
     <Viewer::ActionButtons
       @document_versions={{@document_versions}}
-      @onRunOCR={{this.onRunOCR}} />
+      @isLocked={{@isLocked}}
+      @onRunOCR={{@onRunOCR}} />
   </div>
 
   <Breadcrumb
diff --git a/app/components/viewer/index.js b/app/components/viewer/index.js
deleted file mode 100644
index c9e0470..0000000
--- a/app/components/viewer/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import Component from '@glimmer/component';
-import { action } from '@ember/object';
-import { inject as service } from '@ember/service';
-
-
-export default class ViewComponent extends Component {
-
-  @service requests;
-  @service websockets;
-
-  constructor(owner, args) {
-    super(owner, args);
-
-    this.websockets.addHandler(this.messageHandler, this);
-  }
-
-  messageHandler(message) {
-    console.log(message);
-  }
-
-  @action
-  onRunOCR() {
-    this.requests.runOCR({
-      doc_id: this.args.doc.id,
-      lang: 'deu'
-    });
-  }
-}
\ No newline at end of file
diff --git a/app/controllers/authenticated/document.js b/app/controllers/authenticated/document.js
index 0d95f2b..c58eb34 100644
--- a/app/controllers/authenticated/document.js
+++ b/app/controllers/authenticated/document.js
@@ -4,13 +4,25 @@ import { tracked } from "@glimmer/tracking";
 import { inject as service } from '@ember/service';
 
 
-export default class DocumentController extends Controller {
+export default class ViewerController extends Controller {
 
   @service currentUser;
+  @service requests;
+  @service websockets;
+
   @tracked extranode_id = null;
   @tracked extradoc_id = null;
+  @tracked is_ocred = false;
+
   queryParams = ['extranode_id', 'extradoc_id']
 
+
+  constructor(owner, args) {
+    super(owner, args);
+
+    this.websockets.addHandler(this.messageHandler, this);
+  }
+
   @action
   onPanelToggle() {
 
@@ -21,4 +33,29 @@ export default class DocumentController extends Controller {
       this.extranode_id = 75;
     }
   }
+
+  messageHandler(message) {
+    // console.log(message);
+    if (message.type == 'ocrdocumenttask.tasksucceeded' ) {
+      if (message.document_id == this.model.doc.id) {
+        this.is_ocred = false;
+        //to do: retrieve again
+        // 1. document versions
+        // 2. document pages
+      }
+    }
+  }
+
+  @action
+  onRunOCR() {
+    this.is_ocred = true;
+    this.requests.runOCR({
+      doc_id: this.model.doc.id,
+      lang: 'deu'
+    });
+  }
+
+  get isLocked() {
+    return this.is_ocred;
+  }
 }
diff --git a/app/services/websockets.js b/app/services/websockets.js
index 4977875..9d27f7d 100644
--- a/app/services/websockets.js
+++ b/app/services/websockets.js
@@ -21,7 +21,7 @@ export default class Websockets extends Service {
           json_data = JSON.parse(event.data);
           item.handler.apply(item.context, [json_data, event]);
         } catch (err) {
-          console.log(`Error while parsing incoming data: ${event.data}`);
+          console.log(`Error ${err} while parsing incoming data: ${event.data}`);
         }
       });
     }
diff --git a/app/templates/authenticated/viewer.hbs b/app/templates/authenticated/viewer.hbs
index fc5a08d..69b3801 100644
--- a/app/templates/authenticated/viewer.hbs
+++ b/app/templates/authenticated/viewer.hbs
@@ -7,6 +7,8 @@
     @extranode={{this.extranode.current_node}}
     @onPanelToggle={{this.onPanelToggle}}
     @dualPanelMode={{this.dualpanel_mode}}
+    @onRunOCR={{this.onRunOCR}}
+    @isLocked={{this.isLocked}}
     @hint="left" />
 
   {{#if this.dualpanel_mode}}
-- 
GitLab