From 55d7deaa9f6e1f90acbd6d8c9601dd07329536d4 Mon Sep 17 00:00:00 2001
From: Eugen Ciur <eugen@papermerge.com>
Date: Sat, 13 Nov 2021 14:00:15 +0100
Subject: [PATCH] render document details via document version

---
 app/adapters/document.js                        | 17 +++++++++++++++++
 app/components/document/detailed.hbs            | 11 -----------
 app/components/document/image.hbs               | 11 -----------
 app/components/document/image.js                | 11 -----------
 app/components/document_version.hbs             |  5 +++++
 app/models/content_type.js                      |  1 +
 app/models/document.js                          |  1 +
 app/models/document_version.js                  | 10 ++++++++++
 app/models/page.js                              |  7 +++++++
 app/routes/authenticated/document.js            |  9 ++++++++-
 app/templates/authenticated/document.hbs        |  1 -
 .../authenticated/document_version.hbs          |  1 +
 app/templates/authenticated/documents.hbs       |  5 -----
 13 files changed, 50 insertions(+), 40 deletions(-)
 create mode 100644 app/adapters/document.js
 delete mode 100644 app/components/document/detailed.hbs
 delete mode 100644 app/components/document/image.hbs
 delete mode 100644 app/components/document/image.js
 create mode 100644 app/components/document_version.hbs
 create mode 100644 app/models/document_version.js
 create mode 100644 app/models/page.js
 delete mode 100644 app/templates/authenticated/document.hbs
 create mode 100644 app/templates/authenticated/document_version.hbs
 delete mode 100644 app/templates/authenticated/documents.hbs

diff --git a/app/adapters/document.js b/app/adapters/document.js
new file mode 100644
index 0000000..f0b1aab
--- /dev/null
+++ b/app/adapters/document.js
@@ -0,0 +1,17 @@
+import ApplicationAdapter from './application';
+
+
+export default class NodeAdapter extends ApplicationAdapter {
+
+  getDocumentVersion(document_id) {
+    let url, ret;
+
+    url = this.buildURL('documents', document_id);
+
+    return this.ajax(url, 'GET').then((document_version) => {
+      this.store.pushPayload('document-version', document_version);
+      ret = this.store.peekRecord('document-version', document_version.data.id);
+      return ret;
+    });
+  }
+}
diff --git a/app/components/document/detailed.hbs b/app/components/document/detailed.hbs
deleted file mode 100644
index dfb6219..0000000
--- a/app/components/document/detailed.hbs
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="document detailed">
-  <Document::Image
-    src={{@doc.image}}
-    alt="A picture of {{@doc.title}}"
-  />
-
-  <div class="details">
-    <h3>About {{@doc.title}}</h3>
-  </div>
-
-</div>
\ No newline at end of file
diff --git a/app/components/document/image.hbs b/app/components/document/image.hbs
deleted file mode 100644
index 53f64b3..0000000
--- a/app/components/document/image.hbs
+++ /dev/null
@@ -1,11 +0,0 @@
-{{#if this.isLarge}}
-  <button type="button" class="image large" {{on "click" this.toggleSize}}>
-    <img ...attributes>
-    <small>View Smaller</small>
-  </button>
-{{else}}
-  <button type="button" class="image small" {{on "click" this.toggleSize}}>
-    <img ...attributes>
-    <small>View Larger</small>
-  </button>
-{{/if}}
\ No newline at end of file
diff --git a/app/components/document/image.js b/app/components/document/image.js
deleted file mode 100644
index 7b89bec..0000000
--- a/app/components/document/image.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-import { action } from '@ember/object';
-
-export default class DocumentImageComponent extends Component {
-  @tracked isLarge = false;
-
-  @action toggleSize() {
-    this.isLarge = !this.isLarge;
-  }
-}
diff --git a/app/components/document_version.hbs b/app/components/document_version.hbs
new file mode 100644
index 0000000..a338d32
--- /dev/null
+++ b/app/components/document_version.hbs
@@ -0,0 +1,5 @@
+Page Count = {{@model.page_count}}
+
+{{#each @model.pages as |page|}}
+  {{page.number}}
+{{/each}}
diff --git a/app/models/content_type.js b/app/models/content_type.js
index c5b500e..b0a1f60 100644
--- a/app/models/content_type.js
+++ b/app/models/content_type.js
@@ -1,5 +1,6 @@
 import Model, { attr, hasMany } from '@ember-data/model';
 
+
 class ContentTypeModel extends Model {
   @attr model;
   @hasMany('permission') permissions;
diff --git a/app/models/document.js b/app/models/document.js
index ddff917..570f3da 100644
--- a/app/models/document.js
+++ b/app/models/document.js
@@ -1,6 +1,7 @@
 import { attr } from '@ember-data/model';
 import NodeModel from './node';
 
+
 export default class DocumentModel extends NodeModel {
   @attr image;
   @attr lang;
diff --git a/app/models/document_version.js b/app/models/document_version.js
new file mode 100644
index 0000000..dbc2e2e
--- /dev/null
+++ b/app/models/document_version.js
@@ -0,0 +1,10 @@
+import Model, { attr, hasMany } from '@ember-data/model';
+
+
+export default class DocumentVersionModel extends Model {
+  @attr number; // document version number
+  @attr size; // associated file size in bytes
+  @attr page_count; // total page count
+  @attr lang; // languate used for this page
+  @hasMany('pages') pages;
+}
diff --git a/app/models/page.js b/app/models/page.js
new file mode 100644
index 0000000..63f4283
--- /dev/null
+++ b/app/models/page.js
@@ -0,0 +1,7 @@
+import Model, { attr } from '@ember-data/model';
+
+
+export default class PageModel extends Model {
+  // page number; page numbering start with 1
+  @attr number;
+}
diff --git a/app/routes/authenticated/document.js b/app/routes/authenticated/document.js
index ef2d3c3..4ac3263 100644
--- a/app/routes/authenticated/document.js
+++ b/app/routes/authenticated/document.js
@@ -6,6 +6,13 @@ export default class DocumentRoute extends Route {
   @service store;
 
   async model(params) {
-    return this.store.findRecord('document', params.document_id);
+    let adapter;
+
+    adapter = this.store.adapterFor('document');
+    return adapter.getDocumentVersion(params.document_id);
+  }
+
+  renderTemplate() {
+    this.render('authenticated.document_version');
   }
 }
diff --git a/app/templates/authenticated/document.hbs b/app/templates/authenticated/document.hbs
deleted file mode 100644
index 7cdfd02..0000000
--- a/app/templates/authenticated/document.hbs
+++ /dev/null
@@ -1 +0,0 @@
-<Document::Detailed @doc={{@model}} />
\ No newline at end of file
diff --git a/app/templates/authenticated/document_version.hbs b/app/templates/authenticated/document_version.hbs
new file mode 100644
index 0000000..0b32a70
--- /dev/null
+++ b/app/templates/authenticated/document_version.hbs
@@ -0,0 +1 @@
+<DocumentVersion @model={{@model}} />
\ No newline at end of file
diff --git a/app/templates/authenticated/documents.hbs b/app/templates/authenticated/documents.hbs
deleted file mode 100644
index e0822b2..0000000
--- a/app/templates/authenticated/documents.hbs
+++ /dev/null
@@ -1,5 +0,0 @@
-{{page-title "Documents"}}
-<DocumentsList
-  @title="List of Documents"
-  @document={{@model}}
-/>
\ No newline at end of file
-- 
GitLab