From e7add788446568a2c6bcc2532edd04eef628511c Mon Sep 17 00:00:00 2001
From: Moustafa Banqusli <banqusli@infai.org>
Date: Mon, 25 Oct 2021 18:29:11 +0200
Subject: [PATCH] #373 change diagram for species

---
 .../sharedFilter/FilterHistoryDiagrams.ts     |  2 +
 .../sharedFilter/FilterHistoryDiagrams.vue    |  2 +-
 app/src/diagramsSchema/Diagrams.schema.ts     | 61 +++++++++++++------
 3 files changed, 46 insertions(+), 19 deletions(-)

diff --git a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts
index 4a032d17f..bfc802690 100644
--- a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts
+++ b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.ts
@@ -123,6 +123,8 @@ export default class FilterHistoryDiagrams extends Vue {
                 const fullName = this.getSpeciesFullName(item.Species);
                 Object.assign(item, {SpeciesFullName: fullName});
                 dataWithSpeciesName.push(item);
+            } else {
+                dataWithSpeciesName.push(item);
             }
         }
         return dataWithSpeciesName;
diff --git a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue
index 9b40159b4..380f75b37 100644
--- a/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue
+++ b/app/src/components/shared/sharedFilter/FilterHistoryDiagrams.vue
@@ -26,7 +26,7 @@
             <FilterHistoryDiagramCard :title="$t('sharedTable.speciesSeparatedTitle')"
                                       :showFailAlert="showFailAlert"
                                       :errorMessage="errorMessage"
-                                      :isScaleDiagram="false"
+                                      :isScaleDiagram="true"
                                       :spec="countSpeciesBreakdown"/>
 
             <FilterHistoryDiagramCard :title="$t('sharedTable.speciesSummarizedTitle')"
diff --git a/app/src/diagramsSchema/Diagrams.schema.ts b/app/src/diagramsSchema/Diagrams.schema.ts
index 306ede13a..3f949a5b5 100644
--- a/app/src/diagramsSchema/Diagrams.schema.ts
+++ b/app/src/diagramsSchema/Diagrams.schema.ts
@@ -22,7 +22,11 @@ export function getVisitedTransect(data: Array<{}>, i18n: VueI18n) {
                     scale: {domain: {selection: "brush"}},
                     axis: {title: i18n.t("sharedTable.date").toString()},
                 },
-                y: {field: "Count", type: "quantitative", axis: {title: i18n.t("sharedTable.numberOfTransectsCommitted").toString()}},
+                y: {
+                    field: "Count",
+                    type: "quantitative",
+                    axis: {title: i18n.t("sharedTable.numberOfTransectsCommitted").toString()},
+                },
                 tooltip: {field: "Count", type: "quantitative"},
             },
         }, {
@@ -72,7 +76,11 @@ export function getCreatedInspection(data: Array<{}>, i18n: VueI18n) {
                     scale: {domain: {selection: "brush"}},
                     axis: {title: i18n.t("sharedTable.date").toString()},
                 },
-                y: {field: "Count", type: "quantitative", axis: {title: i18n.t("sharedTable.numberOfInspections").toString()}},
+                y: {
+                    field: "Count",
+                    type: "quantitative",
+                    axis: {title: i18n.t("sharedTable.numberOfInspections").toString()},
+                },
                 tooltip: {field: "Count", type: "quantitative"},
             },
         }, {
@@ -151,27 +159,44 @@ export function getCountSpecies(data: Array<{}>, i18n: VueI18n) {
 
 export function getCountSpeciesBreakdown(data: Array<{}>, i18n: VueI18n) {
     return {
+        width: "container",
         data: {
             values: data,
         },
-        mark: "bar",
-        encoding: {
-            column: {
-                field: "End",
-                type: "temporal",
-                timeUnit: "utcmonthdate",
-                header: {title: i18n.t("sharedTable.date").toString(), labelOrient: "bottom"},
+        vconcat: [{
+            width: 1000,
+            mark: {type: "bar", tooltip: true},
+            encoding: {
+                x: {
+                    timeUnit: "utcmonthdate", field: "Start", type: "temporal",
+                    scale: {domain: {selection: "brush"}},
+                    axis: {title: i18n.t("sharedTable.date").toString()},
+                },
+                y: {
+                    aggregate: "sum",
+                    field: "Count",
+                    type: "quantitative",
+                    axis: {title: i18n.t("sharedTable.speciesSeparated").toString()},
+                },
+                color: {
+                    field: "SpeciesFullName",
+                    type: "nominal",
+                    legend: {title: i18n.t("sharedTable.species").toString()},
+                },
+                tooltip: {field: "Count", type: "quantitative"},
             },
-            y: {
-                aggregate: "sum",
-                type: "quantitative",
-                field: "Count",
-                axis: {title: i18n.t("sharedTable.speciesSeparated").toString()},
+        }, {
+            width: 1000,
+            height: 60,
+            mark: {type: "bar", tooltip: true},
+            selection: {brush: {type: "interval", encodings: ["x"]}},
+            encoding: {
+                x: {timeUnit: "utcmonthdate", field: "Start", type: "temporal", axis: {title: ""}},
+                y: {aggregate: "sum", field: "Count", type: "quantitative", axis: {title: ""}},
+                color: {field: "SpeciesFullName", type: "nominal", title: ""},
+                tooltip: {field: "Count", type: "quantitative"},
             },
-            x: {field: "SpeciesFullName", type: "ordinal", axis: null},
-            tooltip: {field: "SpeciesFullName", type: "ordinal"},
-        },
-        config: {view: {stroke: "transparent"}, axis: {domainWidth: 1}},
+        }],
     };
 }
 
-- 
GitLab