Skip to content
Snippets Groups Projects
Commit e0cb9e22 authored by esikkala's avatar esikkala
Browse files

Handle rejected promises, remove unnecessary result mappers

parent 41ebc29f
No related branches found
No related tags found
No related merge requests found
......@@ -32,7 +32,7 @@ app.get('/manuscripts', (req, res) => {
// console.log(data);
res.json(data);
})
.catch((err) => {
.catch(err => {
console.log(err);
return res.sendStatus(500);
});
......
import _ from 'lodash';
import { getTreeFromFlatData } from 'react-sortable-tree';
//https://github.com/SemanticComputing/angular-paging-sparql-service/blob/master/src/sparql.object-mapper-service.js
export const groupBy = (sparqlBindings, group) => Object.values(_.reduce(sparqlBindings, (results, sparqlResult) => {
const id = _.get(sparqlResult[group], 'value');
if (id === undefined) {
return [];
}
if (!results[id]) {
results[id] = {};
}
let result = results[id];
_.forOwn(sparqlResult, (value, key) => {
if (key === group) {
result[group] = value.value; // ignore lang tags
} else {
const oldValues = result[key];
// add new value if it doesn't already exist
if (!_.includes(oldValues, value.value)) {
(result[key] || (result[key] = [])).push(value.value);
}
}
});
return results;
}, {}));
// export const mergeSuggestions = (suggestions) => {
// return groupBy(_.compact(_.flatten(suggestions)), 'label', false);
// };
//
//
// export const mergeSimpleSuggestions = (suggestions) => {
//
// // Suggestions from different datasets may have duplicates
// let uniqueSuggestions = [...new Set(_.flatten(suggestions))];
//
// // Sort suggestions alphabetically, because Lunece score does
// // not work with wildcard queries.
// return uniqueSuggestions.sort();
// };
//
// const capitalizeFirstLetter = (string) => {
// return string.charAt(0).toUpperCase() + string.slice(1);
// };
export const mapManuscripts = (sparqlBindings) => {
// console.log(sparqlBindings);
const results = sparqlBindings.map(b => {
return {
id: b.id.value,
prefLabel: createStringList(b.prefLabel.value),
//entry: createStringList(b.entry.value),
manuscriptRecord: _.has(b, 'manuscriptRecord') ? createStringList(b.manuscriptRecord.value) : '-',
author: _.has(b, 'author',) ? createObjectList(b.author.value, 'names') : '-',
owner: _.has(b, 'owner',) ? createObjectList(b.owner.value, 'names') : '-',
timespan: _.has(b, 'timespan',) ? createStringList(b.timespan.value) : '-',
creationPlace: _.has(b, 'creationPlace',) ? createObjectList(b.creationPlace.value, 'places') : '-',
material: _.has(b, 'material',) ? createStringList(b.material.value) : '-',
language: _.has(b, 'language',) ? createStringList(b.language.value) : '-',
};
});
return results;
};
const createStringList = (str) => {
const list = str.split('|');
return list.length < 2 ? list[0] : list;
};
const createObjectList = (str, sdbmType) => {
const list = str.split('|');
if (list.length < 2) {
return createObject(list[0], sdbmType);
} else {
return list.map(item => {
return createObject(item, sdbmType);
});
}
};
const createObject = (str, sdbmType) => {
const values = str.split(';');
if (values.length > 2) {
return {
id: values[1],
prefLabel: values[0],
order: values[2],
entry: values[3],
sdbmLink: `https://sdbm.library.upenn.edu/${sdbmType}/${values[1].substring(values[1].lastIndexOf('/') + 1)}`
};
} else {
return {
id: values[1],
prefLabel: values[0],
sdbmLink: `https://sdbm.library.upenn.edu/${sdbmType}/${values[1].substring(values[1].lastIndexOf('/') + 1)}`
};
}
};
export const mapPlaces = (sparqlBindings) => {
//console.log(sparqlBindings);
const results = sparqlBindings.map(b => {
......@@ -176,12 +77,3 @@ const recursiveSort = nodes => {
});
return nodes;
};
export const mapAllResults = (results) => groupBy(results, 'id');
export const mergeFederatedResults = (results) => {
// SPARQL query defines the ordering of results of one dataset.
// Return all merged results subsequentially.
//console.log(_.flatten(results))
return _.flatten(results);
};
......@@ -26,31 +26,18 @@ class SparqlApi {
body: params,
headers: headers,
})
.then(res => {
if (res.ok) { // res.status >= 200 && res.status < 300
return res;
} else {
return reject(res.statusText);
}
})
.then(res => res.text())
.then(data => {
return resolve(data);
})
.catch(error => console.log('error is', error));
// if (this.endpoint === 'http://vocab.getty.edu/sparql.json') {
// const url = this.endpoint + '?query=' + query;
// fetch(url)
// .then(response => {
// return response.json();
// })
// .then(responseData => {
// return resolve(responseData);
// })
// .catch(error => console.log('error is', error));
// } else {
// const body = { query: query};
// request.post(this.endpoint)
// .send(body)
// .set(headers)
// .end((err, res) => {
// if (err || !res.ok) return reject(err);
// return resolve(res.text);
// });
// }
.catch(err => console.log(err));
});
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment