src/graph/Sequence.ts (35 lines of code) (raw):
import { SequenceEnt } from "../api/ents/SequenceEnt";
/**
* @class Sequence
*
* @classdesc Represents a sequence of ordered images.
*/
export class Sequence {
private _id: string;
private _imageIds: string[];
/**
* Create a new sequene instance.
*
* @param {SequenceEnt} sequence - Raw sequence data.
*/
constructor(sequence: SequenceEnt) {
this._id = sequence.id;
this._imageIds = sequence.image_ids;
}
/**
* Get id.
*
* @returns {string} Unique sequence id.
*/
public get id(): string {
return this._id;
}
/**
* Get ids.
*
* @returns {Array<string>} Array of ordered image ids in the sequence.
*/
public get imageIds(): string[] {
return this._imageIds;
}
/**
* Dispose the sequence.
*
* @description Disposes all cached assets.
*/
public dispose(): void {
this._id = null;
this._imageIds = null;
}
/**
* Find the next image id in the sequence with respect to
* the provided image id.
*
* @param {string} id - Reference image id.
* @returns {string} Next id in sequence if it exists, null otherwise.
*/
public findNext(id: string): string {
let i: number = this._imageIds.indexOf(id);
if ((i + 1) >= this._imageIds.length || i === -1) {
return null;
} else {
return this._imageIds[i + 1];
}
}
/**
* Find the previous image id in the sequence with respect to
* the provided image id.
*
* @param {string} id - Reference image id.
* @returns {string} Previous id in sequence if it exists, null otherwise.
*/
public findPrev(id: string): string {
let i: number = this._imageIds.indexOf(id);
if (i === 0 || i === -1) {
return null;
} else {
return this._imageIds[i - 1];
}
}
}