From d707457cb8aa85e271635df45140ed3615713ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= Date: Thu, 2 Nov 2023 15:16:02 +0100 Subject: [PATCH] Correct order and labels for canvases --- src/Manifest.js | 8 ++++++-- src/common.js | 26 ++++++++++++++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Manifest.js b/src/Manifest.js index d269da1..b3ebed9 100644 --- a/src/Manifest.js +++ b/src/Manifest.js @@ -12,6 +12,7 @@ class Manifest { #type = 'sc:Manifest'; #label = ''; resourceId = ''; + #technique = ''; /** * @var {Sequence[]} */ @@ -21,6 +22,9 @@ class Manifest { this.context = `https://iiif.io/api/presentation/${IIIFApiVersion}/context.json`; this.BASE_URL = baseURL; } + get technique() { + return this.#technique; + } /** * @param {Sequence} sequence The Sequence object */ @@ -28,11 +32,13 @@ class Manifest { this.sequences.push(sequence.toObject()); } /** + * @todo Technique shouldn't be set here... * @param {string} resourceId From the request */ generateID(resourceId) { this.id = `${this.BASE_URL}/${resourceId}/manifest` ; this.resourceId = resourceId; + this.#technique = resourceId.split('-')[2]; } /** * Create IIIF label for this manifest @@ -43,8 +49,6 @@ class Manifest { /** * Object representation of this * manifest - * - * @todo Implement * @returns {object} */ toObject() { diff --git a/src/common.js b/src/common.js index 0a1d850..bebe2e0 100644 --- a/src/common.js +++ b/src/common.js @@ -6,7 +6,7 @@ import Manifest from './Manifest.js'; import Sequence from './Sequence.js'; import Canvas from './Canvas.js'; import Image from './Image.js'; -import ManifestMetadata from './Metadata.js'; +//import ManifestMetadata from './Metadata.js'; const Common = {}; const TECH_NAMES = { @@ -80,19 +80,22 @@ Common.createCanvas = async function (manifest, filename) { process.env.IIIF_API_VERSION, process.env.BASE_URL ); - const canvasName = filename.split('_')[1]; + const namePos = { + nir: 1, + do: 3, + dn: 3 + }; + const canvasName = filename.split('_')[namePos[manifest.technique]] + .replace(/\.\w{1,3}$/, ''); canvas.generateID(manifest.resourceId, canvasName); canvas.label = canvasName - .replace(/c(\w+)0+(\d+)/, function (str, c, number) { + .replace(/c(\w{1,2})0+(\d+).*(\.\w{2,3})?$/i, function (str, c, number) { return `C${c}. ${number}`; }); let image = new Image(canvas.id); image.generateID(process.env.IMAGE_SERVER_URL, filename); - // DEBUG - console.log(image.id); - const imgSize = await this.getImageSize(image.id); image.setSize(imgSize.height, imgSize.width); @@ -115,6 +118,17 @@ Common.populateCanvases = async function (manifest, images) { // There's only one sequence sequence.generateID(manifest.resourceId, 0); + // Camice e copertina all'inizio per DN e DO + if (manifest.technique.startsWith('d')) { + images = [].concat( + images + .filter(i => i.includes('camice') || i.includes('copertina')) + .reverse(), + images + .filter(i => !i.includes('camice') && !i.includes('copertina')) + ); + } + for (let img of images) { let canvas = await this.createCanvas(manifest, img); sequence.addCanvas(canvas);