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';
#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() {

View File

@ -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);