greek-manifests/src/Manifest.js

49 lines
1.1 KiB
JavaScript

import IIIFResource from './IIIFResource.js';
import Sequence from "./Sequence.js";
/**
* @implements IIIFResource
*/
class Manifest {
id = '';
type = 'sc:Manifest';
resourceId = '';
/**
* @var {Sequence[]}
*/
sequences = [];
constructor(IIIFApiVersion, baseURL) {
this.context = `https://iiif.io/api/presentation/${IIIFApiVersion}/context.json`;
this.BASE_URL = baseURL;
}
/**
* @param {Sequence} sequence The Sequence object
*/
addSequence(sequence) {
this.sequences.push(sequence.toObject());
}
/**
* @param {string} resourceId From the request
*/
generateID(resourceId) {
this.id = `${this.BASE_URL}/iiif/${resourceId}/manifest` ;
this.resourceId = resourceId;
}
/**
* Object representation of this
* manifest
*
* @todo Implement
* @returns {object}
*/
toObject() {
return {
"@context" : this.context,
"@id" : this.id,
"@type" : this.type,
sequences: this.sequences,
}
}
}
export default Manifest;