diff --git a/examples/dataset-frictionless/lib/dataset.js b/examples/dataset-frictionless/lib/dataset.js index 356d37e8..5a1e04af 100644 --- a/examples/dataset-frictionless/lib/dataset.js +++ b/examples/dataset-frictionless/lib/dataset.js @@ -5,28 +5,66 @@ import toArray from 'stream-to-array' export async function getDataset(directory) { - // get dataset descriptor and resources - const f11sDataset = await Dataset.load(directory) - const descriptor = f11sDataset.descriptor + try { - const resources = await Promise.all(f11sDataset.resources.map(async (resource) => { - let _tmp = resource.descriptor - let rowStream = await resource.rows({ keyed: true }) - _tmp.sample = await toArray(rowStream) - _tmp.size = resource.size - return _tmp - })) - const readme = descriptor.readme - const processed = await remark() - .use(html) - .process(readme) + if (!directory) { + throw new Error('No directory provided.') + } - const readmeHtml = processed.toString() - const dataset = { - readme: readme, - readmeHtml: readmeHtml, - descriptor: descriptor, - resources: resources + const f11sDataset = await Dataset.load(directory) + const descriptor = f11sDataset.descriptor + + const resources = await Promise.all(f11sDataset.resources.map(async (resource) => { + let _tmp = resource.descriptor + let rowStream = await resource.rows({ keyed: true }) + _tmp.sample = await toArray(rowStream) + _tmp.size = resource.size + return _tmp + })) + + const readme = descriptor.readme || "" + + const processed = await remark() + .use(html) + .process(readme) + + const readmeHtml = processed.toString() + + + const dataset = { + readme: readme, + readmeHtml: readmeHtml, + descriptor: descriptor, + resources: resources, + hasError: false, + errorMsg: "" + } + return dataset + } catch (err) { + console.log(err) + return { + hasError: true, + errorMsg: errorMessageMappings[err.message] || err.message + } } - return dataset } + + +const errorMessageMappings = { + "No datapackage.json at destination.": + ` +
No datapackage.json file in the data directory!
+You need to add a datapackage.json file describing your dataset to the root folder.
+For more information, see the documentation
+No data directory found!
+You need to provide a data directory with CSV data, datapackage.json, and optionally a ReadMe file.
+For more information, see the documentation
+