From 63f629acfbeea13d1433ee1fa3d160d2853c2a27 Mon Sep 17 00:00:00 2001
From: esikkala <esko.ikkala@aalto.fi>
Date: Mon, 10 Jun 2019 18:22:49 +0300
Subject: [PATCH] Properly sort production dates

---
 .../facet_results/ResultTableCell.js          | 28 ++++++++++++++++++-
 src/server/sparql/SparqlQueriesManuscripts.js |  4 +--
 2 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/client/components/facet_results/ResultTableCell.js b/src/client/components/facet_results/ResultTableCell.js
index bf137760..61271471 100644
--- a/src/client/components/facet_results/ResultTableCell.js
+++ b/src/client/components/facet_results/ResultTableCell.js
@@ -21,6 +21,25 @@ const styles = () => ({
 
 const ResultTableCell = props => {
 
+  const ISOStringToDate = str => {
+    let year;
+    let month;
+    let day;
+    if (str.charAt(0) == '-') {
+      year = parseInt(str.substring(0,5));
+      month = parseInt(str.substring(7,8));
+      day = parseInt(str.substring(10,11));
+    } else {
+      year = parseInt(str.substring(0,4));
+      month = parseInt(str.substring(6,7));
+      day = parseInt(str.substring(9,10));
+    }
+    // console.log(year)
+    // console.log(month)
+    // console.log(day)
+    return new Date(year, month, day);
+  };
+
   const stringListRenderer = cell => {
     if (cell == null || cell === '-'){
       return '-';
@@ -43,7 +62,14 @@ const ResultTableCell = props => {
     }
     else if (Array.isArray(cell)) {
       if (props.columnId == 'productionTimespan') {
-        cell = sortValues ? sortBy(cell, obj => Number(obj.start)) : cell;
+        cell = sortValues
+          ? cell.sort((a,b) => {
+            a = ISOStringToDate(a.start);
+            b = ISOStringToDate(b.start);
+            // arrange from the most recent to the oldest
+            return a > b ? 1 : a < b ? -1 : 0;
+          })
+          : cell;
       } else {
         cell = sortValues ? orderBy(cell, 'prefLabel') : cell;
       }
diff --git a/src/server/sparql/SparqlQueriesManuscripts.js b/src/server/sparql/SparqlQueriesManuscripts.js
index 46e736b6..9e7af91a 100644
--- a/src/server/sparql/SparqlQueriesManuscripts.js
+++ b/src/server/sparql/SparqlQueriesManuscripts.js
@@ -18,8 +18,8 @@ export const manuscriptProperties = `
     ?production crm:P108_has_produced ?id .
     ?production crm:P4_has_time-span ?productionTimespan .
     ?productionTimespan skos:prefLabel ?productionTimespan__id .
-    OPTIONAL { ?productionTimespan crm:P79_beginning_is_qualified_by ?productionTimespan__start }
-    OPTIONAL { ?productionTimespan crm:P80_end_is_qualified_by ?productionTimespan__end }
+    OPTIONAL { ?productionTimespan crm:P82a_begin_of_the_begin ?productionTimespan__start }
+    OPTIONAL { ?productionTimespan crm:P82b_end_of_the_end ?productionTimespan__end }
     BIND (?productionTimespan__id AS ?productionTimespan__prefLabel)
   }
   UNION
-- 
GitLab