diff --git a/controllers/canvas.mjs b/controllers/canvas.mjs index 4ca5162..2e33856 100644 --- a/controllers/canvas.mjs +++ b/controllers/canvas.mjs @@ -16,8 +16,12 @@ export default async function generateCanvas(manifestId, name) { const canvas = new Canvas(IIIF_API_VERSION, BASE_URL); const manifest = new Manifest(IIIF_API_VERSION, BASE_URL); manifest.generateID(manifestId); - canvas.generateID(manifestId, name); + + let filename = await Common.getImageName(canvas) + + console.log('Filename: ' + filename); + let label = name .replace(/c(\w{1,2})0+(\d+).*(\.\w{2,3})?$/i, function (str, c, number) { return `C${c}. ${number}`; @@ -28,8 +32,8 @@ export default async function generateCanvas(manifestId, name) { } canvas.label = label; - const image = new Image(canvas.id); - image.generateID(process.env.IMAGE_SERVER_URL, await Common.getImageName(canvas)); + const image = new Image(canvas.id, filename); + image.generateID(process.env.IMAGE_SERVER_URL, filename); const imgSize = await Common.getImageSize(image.id); image.setSize(imgSize.height, imgSize.width); @@ -41,5 +45,11 @@ export default async function generateCanvas(manifestId, name) { canvas.addImage(image); - return canvas.toObject(); + return canvas.toObject(); + /** + const manifest = new Manifest(IIIF_API_VERSION, BASE_URL); + manifest.generateID(manifestId); + + return Common.createCanvas(manifest, name, manifestId).toObject(); + */ } \ No newline at end of file diff --git a/routes/index.mjs b/routes/index.mjs index 7cf8555..4b9edba 100644 --- a/routes/index.mjs +++ b/routes/index.mjs @@ -31,7 +31,8 @@ router.get('/iiif/:manifestid/canvas/:name', async function(req, res) { try { canvas = await generateCanvas(req.params.manifestid, req.params.name) } catch(error) { - res.status(500).json({status: 500, message: 'There was an error processing this request'}); + res.status(500).json({status: 500, message: 'There was an error processing this request: ' + error}); + return; } res.json(canvas); }); diff --git a/src/common.js b/src/common.js index 55f8869..7a571a3 100644 --- a/src/common.js +++ b/src/common.js @@ -144,13 +144,28 @@ Common.getImageSize = async function (imageId) { } /** * Get image name for given canvas + * @todo Use regex in filter!! * @param {Canvas} canvas * @returns {string} */ Common.getImageName = async function (canvas) { const images = await this.getImageList(canvas.resourceId); - - return images.filter(i => i.includes(canvas.name))[0]; + + let name = canvas.name; + + // Adjust canvas name for HSI with PCA... + if (/pc(1|3)/.test(name)) { + name = name.replace( + /pc((1|3))/, + function (match, group1) { + return `_HSI_PC${group1}`; + } + ); + } + + console.log('Canvas name: ' + name); + + return images.filter(i => i.includes(name))[0]; } /** * Create a canvas from an image filename @@ -172,10 +187,9 @@ Common.createCanvas = async function (manifest, filename) { dn: 2 }; - const canvasName = filename.split('_')[namePos[manifest.technique]] + let canvasName = filename.split('_')[namePos[manifest.technique]] .replace(/\.\w{1,3}$/, ''); - canvas.generateID(manifest.resourceId, canvasName); let label = canvasName .replace(/c(\w{1,2})0+(\d+).*(\.\w{2,3})?$/i, function (str, c, number) { return `C${c}. ${number}`; @@ -183,8 +197,10 @@ Common.createCanvas = async function (manifest, filename) { // Add PCA to canvas label for HSI images if (manifest.technique === 'hsi') { label += ` ${filename.split('_')[3].replace(/\..*$/,'')}`; + canvasName += `${filename.split('_')[3].replace(/\..*$/,'')}`; } + canvas.generateID(manifest.resourceId, canvasName.toLowerCase()); canvas.label = label; let image = new Image(canvas.id);