From 1bd64173334202ed6bb13b9d3973d475164ef9ff Mon Sep 17 00:00:00 2001
From: Moustafa Banqusli <banqusli@infai.org>
Date: Thu, 21 Oct 2021 18:14:33 +0200
Subject: [PATCH] #373 pass data to observations-diagrams

---
 .../sharedFilter/FilterHistoryDiagrams.ts     | 50 ++++++++++++++-
 .../sharedFilter/FilterHistoryDiagrams.vue    | 63 ++++++++-----------
 2 files changed, 74 insertions(+), 39 deletions(-)

diff --git a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts
index bfce3c988..c83a469c5 100644
--- a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts
+++ b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts
@@ -3,11 +3,13 @@ import {FilterCriteriaType} from "@/types/filter";
 import VegaLite from "vue-vega";
 import {SelectedFilterHistoryDiagram, DiagramData} from "@/types";
 import {GenerateDashboardDiagramService} from "@/helper/generateDashboardDiagram.service";
-import {getCreatedInspection, getVisitedTransect} from "@/diagramsSchema/Diagrams.schema";
+import FilterHistoryDiagramCard from "@/components/shared/sharedFilter/FilterHistoryDiagramCard.vue";
+import {getCreatedInspection, getVisitedTransect, getCountSpecies, getCountSpeciesBreakdown, getObservationIndex} from "@/diagramsSchema/Diagrams.schema";
 
 @Component({
     components: {
         VegaLite,
+        FilterHistoryDiagramCard,
     },
 })
 
@@ -19,6 +21,8 @@ export default class FilterHistoryDiagrams extends Vue {
             return {};
         },
     }) private selectedFilterHistoryDiagram!: SelectedFilterHistoryDiagram;
+    private findingType = this.filterCriteriaType === FilterCriteriaType.FINDING;
+    private inspectionType = this.filterCriteriaType === FilterCriteriaType.INSPECTION;
     private isLoading = false;
     private showFailAlert = false;
     private diagramData: DiagramData[] = [];
@@ -31,7 +35,7 @@ export default class FilterHistoryDiagrams extends Vue {
     private mounted() {
         if (this.filterCriteriaType !== FilterCriteriaType.GENERAL) {
             this.isLoading = true;
-            this.getFilterHistoryDiagramData();
+            this.getFilterHistoryDiagramData().then();
         }
     }
 
@@ -63,6 +67,48 @@ export default class FilterHistoryDiagrams extends Vue {
         return null;
     }
 
+    /**
+     * will get observation-summarized-species count schema for diagram.
+     * @private
+     */
+    private get countSpecies(): {} | null {
+        if (this.diagramData && this.diagramData.length !== 0) {
+            const find = this.diagramData.find((d) => d.diagramType === "CountSpecies");
+            if (find) {
+                return getCountSpecies(find.data, this.$i18n);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * will get observation-separated-species count schema for diagram.
+     * @private
+     */
+    private get countSpeciesBreakdown(): {} | null {
+        if (this.diagramData && this.diagramData.length !== 0) {
+            const find = this.diagramData.find((d) => d.diagramType === "CountSpeciesBreakdown");
+            if (find) {
+                return getCountSpeciesBreakdown(find.data, this.$i18n);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * will get index of observations schema for diagram.
+     * @private
+     */
+    private get observationIndex(): {} | null {
+        if (this.diagramData && this.diagramData.length !== 0) {
+            const find = this.diagramData.find((d) => d.diagramType === "ObservationIndex");
+            if (find) {
+                return getObservationIndex(find.data, this.$i18n);
+            }
+        }
+        return null;
+    }
+
     /** handle requested-data */
     private async getFilterHistoryDiagramData() {
         try {
diff --git a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue
index 8e0295acb..07f785512 100644
--- a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue
+++ b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue
@@ -7,46 +7,35 @@
         </template>
     </v-row>
     <v-row v-else>
-        <v-row>
-            <v-col cols="12">
-                <v-card>
-                    <v-card-title>
-                        {{ $t("sharedTable.numberOfInspections") }}
-                    </v-card-title>
+        <v-col cols="12" v-if="inspectionType">
+            <FilterHistoryDiagramCard data-testid="ShowInspectionCount"
+                                      :title="$t('sharedTable.numberOfInspections')"
+                                      :showFailAlert="showFailAlert"
+                                      :errorMessage="errorMessage"
+                                      :spec="inspectionCount"/>
 
-                    <v-divider></v-divider>
+            <FilterHistoryDiagramCard data-testid="ShowVisitedTransect"
+                                      :title="$t('sharedTable.numberOfTransectsCommitted')"
+                                      :showFailAlert="showFailAlert"
+                                      :errorMessage="errorMessage"
+                                      :spec="transectCount"/>
+        </v-col>
+        <v-col cols="12" v-if="findingType">
+            <!--            <FilterHistoryDiagramCard :title="$t('sharedTable.speciesSeparatedTitle')"-->
+            <!--                                      :showFailAlert="showFailAlert"-->
+            <!--                                      :errorMessage="errorMessage"-->
+            <!--                                      :spec="countSpeciesBreakdown"/>-->
 
-                    <v-card-text v-if="inspectionCount" data-testid="ShowInspectionCount">
-                        <vega-lite :spec="inspectionCount"/>
-                    </v-card-text>
-                </v-card>
-            </v-col>
-            <v-container class="justify-center" fluid>
-                <v-alert v-show="showFailAlert" dismissible transition="fade-transition" type="error">
-                    {{ errorMessage }}
-                </v-alert>
-            </v-container>
-        </v-row>
-        <v-row>
-            <v-col cols="12">
-                <v-card>
-                    <v-card-title>
-                        {{ $t("sharedTable.numberOfTransectsCommitted") }}
-                    </v-card-title>
+            <FilterHistoryDiagramCard :title="$t('sharedTable.speciesSummarizedTitle')"
+                                      :showFailAlert="showFailAlert"
+                                      :errorMessage="errorMessage"
+                                      :spec="countSpecies"/>
 
-                    <v-divider></v-divider>
-
-                    <v-card-text v-if="transectCount" data-testid="ShowVisitedTransect">
-                        <vega-lite :spec="transectCount"/>
-                    </v-card-text>
-                </v-card>
-            </v-col>
-            <v-container class="justify-center" fluid>
-                <v-alert v-show="showFailAlert" dismissible transition="fade-transition" type="error">
-                    {{ errorMessage }}
-                </v-alert>
-            </v-container>
-        </v-row>
+            <FilterHistoryDiagramCard :title="$t('sharedTable.speciesCombinedTitle')"
+                                      :showFailAlert="showFailAlert"
+                                      :errorMessage="errorMessage"
+                                      :spec="observationIndex"/>
+        </v-col>
     </v-row>
 </template>
 
-- 
GitLab