49 lines
1.1 KiB
JavaScript
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; |