diff --git a/src/client/components/facet_results/BarChartRace.js b/src/client/components/facet_results/BarChartRace.js index 398f9ea61729a95f080cdea965b21e0471c38511..f57e5b46c000b92ca87fb61352913979fda65b7e 100644 --- a/src/client/components/facet_results/BarChartRace.js +++ b/src/client/components/facet_results/BarChartRace.js @@ -381,9 +381,9 @@ import Paper from '@material-ui/core/Paper' const stepDuration = 2000 // let year = 2002 -const startYear = -940 +const startYear = 1410 let year = startYear -const yearIncrement = 20 +const yearIncrement = 10 class BarChartRace extends React.Component { componentDidMount = () => { @@ -397,10 +397,10 @@ class BarChartRace extends React.Component { componentDidUpdate = prevProps => { if (prevProps.resultUpdateID !== this.props.resultUpdateID) { // console.log(this.props.results) - // this.setInitialData() // this.sortCategoryAxis() // this.updateData() if (this.props.results && Object.prototype.hasOwnProperty.call(this.props.results, startYear)) { + // this.setInitialData() this.playAnimation() } } @@ -523,61 +523,48 @@ class BarChartRace extends React.Component { } setInitialData = () => { - // const d = allData[year] - const d = this.props.results[year] - // console.log(d) - - for (const n in d) { - this.series.data.push({ category: n, value: d[n] }) - this.yAxis.data.push({ category: n }) + const step = this.props.results[year] + for (const id in step) { + const { prefLabel, value } = step[id] + this.series.data.push({ category: prefLabel, value }) + this.yAxis.data.push({ category: prefLabel }) } } updateData = () => { // console.log(this.props.results['1410']) // console.log(this.series.dataItems) - let itemsWithNonZero = 0 // if (allData[year]) { if (this.props.results[year]) { // console.log(year) this.label.set('text', year.toString()) - + // console.log(this.props.results[year]) for (const [key, value] of Object.entries(this.props.results[year])) { // if (this.props.results[year - 10][key]) { // value += this.props.results[year - 10][key] // } - let dataItem = this.getSeriesItem(key) + // console.log(key) + let dataItem = this.getSeriesItem(value.prefLabel) if (dataItem == null) { - this.series.data.push({ category: key, value }) - this.yAxis.data.push({ category: key }) - dataItem = this.getSeriesItem(key) - // console.log(year) + console.log(key) + this.series.data.push({ category: value.prefLabel, value: value.value }) + this.yAxis.data.push({ category: value.prefLabel }) + dataItem = this.getSeriesItem(value.prefLabel) + console.log(dataItem) // console.log(key) } - // console.log(dataItem) - if (value > 0) { - itemsWithNonZero++ - } dataItem.animate({ key: 'valueX', - to: dataItem.get('valueX') + value, + to: value.value, duration: stepDuration, easing: am5.ease.linear }) dataItem.animate({ key: 'valueXWorking', - to: dataItem.get('valueXWorking') + value, + to: value.value, duration: stepDuration, easing: am5.ease.linear }) - dataItem.set({ - key: 'valueX', - value - }) - dataItem.set({ - key: 'valueXWorking', - value - }) } // am5.array.each(this.series.dataItems, dataItem => { @@ -606,7 +593,7 @@ class BarChartRace extends React.Component { // }) // console.log(itemsWithNonZero) - this.yAxis.zoom(0, itemsWithNonZero / this.yAxis.dataItems.length) + this.yAxis.zoom(0, this.yAxis.dataItems.length) } } diff --git a/src/server/sparql/Mappers.js b/src/server/sparql/Mappers.js index ff8e3c2c5d612886d7eccbb93b6337d8ecb2c539..c5bf1cf3d3067bbb72dad9f8c170d6249254c31b 100644 --- a/src/server/sparql/Mappers.js +++ b/src/server/sparql/Mappers.js @@ -1,4 +1,4 @@ -import { has } from 'lodash' +import { has, cloneDeep } from 'lodash' import { getTreeFromFlatData } from '@nosferatu500/react-sortable-tree' export const mapPlaces = sparqlBindings => { @@ -246,45 +246,27 @@ const recursiveSortAndSelectChildren = nodes => { export const toBarChartRaceFormat = ({ data, config }) => { const { step } = config - const firstItem = data[0] + const firstKey = parseInt(data[0].id) + const lastKey = parseInt(data[data.length - 1].id) const resultObj = {} - resultObj[firstItem.id] = dataItemToObject(firstItem.dataItem) - let mainIndex = firstItem.id - - for (let i = 1; i < data.length; i++) { - const currentID = data[i].id - if (parseInt(currentID) === parseInt(mainIndex) + step) { - resultObj[currentID] = dataItemToObject(currentID.dataItem) - mainIndex = currentID + let rawDataIndex = 0 + let lastNonNullIndex = null + for (let i = firstKey; i <= lastKey; i += step) { + const dataItemExists = parseInt(data[rawDataIndex].id) === i + if (dataItemExists) { + const currentDataItem = dataItemToObject(data[rawDataIndex].dataItem) + if (i === firstKey) { + resultObj[i] = currentDataItem + } else { + resultObj[i] = mergeDataItems(resultObj[lastNonNullIndex], currentDataItem) + } + lastNonNullIndex = i + rawDataIndex++ } else { - resultObj[parseInt(mainIndex) + step] = null + resultObj[i] = null } } - - console.log(resultObj) - return {} - // const object = data.reduce((obj, item) => { - // if (Array.isArray(item.productionPlaceCountry)) { - // const countries = item.productionPlaceCountry.reduce((obj, item) => { - // return { - // ...obj, - // [item.prefLabel]: parseInt(item.manuscriptCount) - // } - // }, {}) - // return { - // ...obj, - // [item.id]: countries - // } - // } else { - // return { - // ...obj, - // [item.id]: { - // [item.productionPlaceCountry.prefLabel]: parseInt(item.productionPlaceCountry.manuscriptCount) - // } - // } - // } - // }, {}) - // return object + return resultObj } const dataItemToObject = dataItem => { @@ -307,3 +289,17 @@ const dataItemToObject = dataItem => { } } } + +const mergeDataItems = (itemA, itemB) => { + const merged = cloneDeep(itemA) + const keys = Object.keys(itemB) + for (let i = 0; i < keys.length; i++) { + const itemBkey = keys[i] + if (Object.prototype.hasOwnProperty.call(itemA, itemBkey)) { + merged[itemBkey].value += itemB[itemBkey].value + } else { + merged[itemBkey] = itemB[itemBkey] + } + } + return merged +} diff --git a/src/server/sparql/SparqlApi.js b/src/server/sparql/SparqlApi.js index e975c3258c7db6936690a75eccf3653ba318bf09..3e73ca4f78e0dff1793aaf2dfcafbd5e7f47ff28 100644 --- a/src/server/sparql/SparqlApi.js +++ b/src/server/sparql/SparqlApi.js @@ -59,7 +59,7 @@ export const runSelectQuery = async ({ console.log(error.request) } else { // Something happened in setting up the request that triggered an Error - console.log('Error', error.message) + console.error(error) } // console.log(error.config) return { diff --git a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js index 1445b88d8b150579c472bdd77c280805a2371c52..344f0ee2cac46bfff82cda22329248e20f53569c 100644 --- a/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js +++ b/src/server/sparql/sampo/sparql_queries/SparqlQueriesPerspective1.js @@ -548,6 +548,7 @@ export const productionsByDecadeAndCountryQuery = ` # FILTER(?id < 1900) # FILTER(?id < -900) FILTER(?id > 1400 && ?id < 1440) + # FILTER(?id != 1420) } } GROUP BY ?id ?dataItem__id ?dataItem__prefLabel