Correct order and labels for canvases

This commit is contained in:
Nicolò P 2023-11-02 15:16:02 +01:00
parent 735c02f9c7
commit d707457cb8
2 changed files with 26 additions and 8 deletions

View File

@ -12,6 +12,7 @@ class Manifest {
#type = 'sc:Manifest'; #type = 'sc:Manifest';
#label = ''; #label = '';
resourceId = ''; resourceId = '';
#technique = '';
/** /**
* @var {Sequence[]} * @var {Sequence[]}
*/ */
@ -21,6 +22,9 @@ class Manifest {
this.context = `https://iiif.io/api/presentation/${IIIFApiVersion}/context.json`; this.context = `https://iiif.io/api/presentation/${IIIFApiVersion}/context.json`;
this.BASE_URL = baseURL; this.BASE_URL = baseURL;
} }
get technique() {
return this.#technique;
}
/** /**
* @param {Sequence} sequence The Sequence object * @param {Sequence} sequence The Sequence object
*/ */
@ -28,11 +32,13 @@ class Manifest {
this.sequences.push(sequence.toObject()); this.sequences.push(sequence.toObject());
} }
/** /**
* @todo Technique shouldn't be set here...
* @param {string} resourceId From the request * @param {string} resourceId From the request
*/ */
generateID(resourceId) { generateID(resourceId) {
this.id = `${this.BASE_URL}/${resourceId}/manifest` ; this.id = `${this.BASE_URL}/${resourceId}/manifest` ;
this.resourceId = resourceId; this.resourceId = resourceId;
this.#technique = resourceId.split('-')[2];
} }
/** /**
* Create IIIF label for this manifest * Create IIIF label for this manifest
@ -43,8 +49,6 @@ class Manifest {
/** /**
* Object representation of this * Object representation of this
* manifest * manifest
*
* @todo Implement
* @returns {object} * @returns {object}
*/ */
toObject() { toObject() {

View File

@ -6,7 +6,7 @@ import Manifest from './Manifest.js';
import Sequence from './Sequence.js'; import Sequence from './Sequence.js';
import Canvas from './Canvas.js'; import Canvas from './Canvas.js';
import Image from './Image.js'; import Image from './Image.js';
import ManifestMetadata from './Metadata.js'; //import ManifestMetadata from './Metadata.js';
const Common = {}; const Common = {};
const TECH_NAMES = { const TECH_NAMES = {
@ -80,19 +80,22 @@ Common.createCanvas = async function (manifest, filename) {
process.env.IIIF_API_VERSION, process.env.IIIF_API_VERSION,
process.env.BASE_URL 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.generateID(manifest.resourceId, canvasName);
canvas.label = 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}`; return `C${c}. ${number}`;
}); });
let image = new Image(canvas.id); let image = new Image(canvas.id);
image.generateID(process.env.IMAGE_SERVER_URL, filename); image.generateID(process.env.IMAGE_SERVER_URL, filename);
// DEBUG
console.log(image.id);
const imgSize = await this.getImageSize(image.id); const imgSize = await this.getImageSize(image.id);
image.setSize(imgSize.height, imgSize.width); image.setSize(imgSize.height, imgSize.width);
@ -115,6 +118,17 @@ Common.populateCanvases = async function (manifest, images) {
// There's only one sequence // There's only one sequence
sequence.generateID(manifest.resourceId, 0); 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) { for (let img of images) {
let canvas = await this.createCanvas(manifest, img); let canvas = await this.createCanvas(manifest, img);
sequence.addCanvas(canvas); sequence.addCanvas(canvas);