From 807a7e6be887169f184d9a440aa2c537d4fed1b2 Mon Sep 17 00:00:00 2001
From: Paul Pestov <kontakt@paulpestov.de>
Date: Wed, 28 Sep 2022 00:13:56 +0200
Subject: [PATCH] Display more data in workflows list

---
 src/assets/main.scss                       |  2 +-
 src/components/workflows/WorkflowsList.vue | 47 ++++++++++++++++++----
 src/main.js                                | 11 ++++-
 3 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/src/assets/main.scss b/src/assets/main.scss
index e19eaaa..a5d06e1 100644
--- a/src/assets/main.scss
+++ b/src/assets/main.scss
@@ -19,4 +19,4 @@
 
 .p-tooltip-text {
   white-space: nowrap;
-}
\ No newline at end of file
+}
diff --git a/src/components/workflows/WorkflowsList.vue b/src/components/workflows/WorkflowsList.vue
index bca59d0..50f01d4 100644
--- a/src/components/workflows/WorkflowsList.vue
+++ b/src/components/workflows/WorkflowsList.vue
@@ -1,19 +1,51 @@
 <template>
   <div>
-    <Card v-for="(item, i) in list" :key="i" class="mb-3 shadow-3 border-gray-200">
+    <Card v-for="(item, i) in list" :key="i" class="mb-3 shadow-3 border-gray-200 p-4">
       <template #header>
-        <h3 class="text-xl font-bold p-3">{{ item.label }}</h3>
+        <div class="grid align-items-center gap-2">
+          <h3 class="text-xl font-bold">{{ item.label }}</h3>
+          <Tag :value="item.metadata.workflow_model" class="bg-gray-300 text-gray-700 ml-3"></Tag>
+          <Tag v-for="font in item.metadata.document_metadata.fonts" :key="font" :value="font" class="bg-gray-300 text-gray-700"></Tag>
+        </div>
       </template>
       <template #content>
         <div class="grid">
+          <div class="col-7 grid">
+            <Accordion class="text-sm mr-3 flex-1">
+              <AccordionTab :header="item.metadata.gt_workspace.label">
+                <div class="grid">
+                  <div class="col">
+                    <p class="font-bold">{{ $t('number_of_pages') }}:</p>
+                    <p>{{ item.metadata.document_metadata.number_of_pages }}</p>
+                    <p class="mt-2 font-bold">{{ $t('publication_year') }}:</p>
+                    <p> {{ item.metadata.document_metadata.publication_year }}</p>
+                  </div>
+                  <div class="col">
+                    <p class="font-bold">{{ $t('layout') }}:</p>
+                    <p>{{ item.metadata.document_metadata.layout }}</p>
+                    <p class="mt-2 font-bold">{{ $t('publication_century') }}:</p>
+                    <p> {{ item.metadata.document_metadata.publication_century }}</p>
+                  </div>
+                </div>
+
+              </AccordionTab>
+            </Accordion>
+            <Accordion class="text-sm flex-1">
+              <AccordionTab :header="item.metadata.ocr_workflow.label">
+                <div class="flex gap-2">
+                  <div v-for="step in item.metadata.workflow_steps" :key="step"><Chip :label="step" class="text-sm" /></div>
+                </div>
+              </AccordionTab>
+            </Accordion>
+          </div>
           <div class="col-5 py-0 ml-auto">
-            <div class="grid">
-              <div class="col py-0" v-for="(evalKey, i) in evals" :key="i">
+            <div class="grid mb-1">
+              <div class="col py-0 text-center" v-for="(evalKey, i) in evals" :key="i">
                 <span class="font-bold">{{defs[evalKey] ? defs[evalKey].label : evalKey}}</span>
               </div>
             </div>
             <div class="grid">
-              <div v-for="(evaluation, i) in item.evaluations" :key="i" class="col">
+              <div v-for="(evaluation, i) in item.evaluations" :key="i" class="col text-center">
               <span
                   class="border-round-3xl py-1 px-3"
                   :class="getEvalColor(evaluation.name, evaluation.value)">
@@ -38,8 +70,9 @@ const evals = ref([]);
 
 
 const setListData = (data) => {
-  list.value = data.map(({ label, evaluation }) => ({
+  list.value = data.map(({ label, evaluation, metadata }) => ({
     label,
+    metadata,
     evaluations: Object.keys(evaluation.document_wide).map(key => ({
       name: key,
       value: evaluation.document_wide[key]
@@ -72,7 +105,7 @@ watch(() => props.data, () => {
     padding: 0;
   }
   :deep(.p-card-body) {
-    @include styleclass('p-3');
+    @include styleclass('p-0 pt-5')
   }
 }
 </style>
diff --git a/src/main.js b/src/main.js
index b20a491..77151fe 100644
--- a/src/main.js
+++ b/src/main.js
@@ -7,7 +7,10 @@ import Button from 'primevue/button';
 import Card from 'primevue/card';
 import Dropdown from 'primevue/dropdown';
 import SelectButton from 'primevue/selectbutton';
-import Tooltip from 'primevue/tooltip';
+import Accordion from 'primevue/accordion';
+import AccordionTab from 'primevue/accordiontab';
+import Chip from 'primevue/chip';
+import Tag from 'primevue/tag';
 
 import { createI18n } from "vue-i18n";
 
@@ -37,5 +40,9 @@ app.component('Button', Button);
 app.component('Card', Card);
 app.component('Dropdown', Dropdown);
 app.component('SelectButton', SelectButton);
-app.directive('tooltip', Tooltip);
+app.component('Chip', Chip);
+app.component('Accordion', Accordion);
+app.component('AccordionTab', AccordionTab);
+app.component('Tag', Tag);
+
 app.mount('#app');
-- 
GitLab