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