45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
import Canvas from '../src/Canvas.js';
|
|
import Image from '../src/Image.js';
|
|
import Manifest from '../src/Manifest.js';
|
|
import Common from '../src/common.js';
|
|
/**
|
|
* Generate a canvas object to serve
|
|
* @todo Use createCanvas from Common?
|
|
* @todo Pass a Manifest object, not a manifest id
|
|
* @param {string} manifestId The corresponding manifest's id
|
|
* @param {number|string} name The canvas name
|
|
*/
|
|
export default async function generateCanvas(manifestId, name) {
|
|
const IIIF_API_VERSION = process.env.IIIF_API_VERSION;
|
|
const BASE_URL = process.env.BASE_URL;
|
|
|
|
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 label = name
|
|
.replace(/c(\w{1,2})0+(\d+).*(\.\w{2,3})?$/i, function (str, c, number) {
|
|
return `C${c}. ${number}`;
|
|
});
|
|
// Add PCA to canvas label for HSI images
|
|
if (manifest.technique === 'hsi') {
|
|
label += ` ${filename.split('_')[3].replace(/\..*$/,'')}`;
|
|
}
|
|
canvas.label = label;
|
|
|
|
const image = new Image(canvas.id);
|
|
image.generateID(process.env.IMAGE_SERVER_URL, await Common.getImageName(canvas));
|
|
const imgSize = await Common.getImageSize(image.id);
|
|
image.setSize(imgSize.height, imgSize.width);
|
|
|
|
canvas.setThumbnail(
|
|
imgSize.thumb.height,
|
|
imgSize.thumb.width,
|
|
image.id
|
|
);
|
|
|
|
canvas.addImage(image);
|
|
|
|
return canvas.toObject();
|
|
} |