1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2024-12-14 11:23:17 +02:00
pigallery2/frontend/app/gallery/Photo.ts

64 lines
1.9 KiB
TypeScript
Raw Normal View History

2017-03-18 01:11:53 +02:00
import {PhotoDTO} from "../../../common/entities/PhotoDTO";
import {Utils} from "../../../common/Utils";
import {IconPhoto} from "./IconPhoto";
2017-06-04 15:25:08 +02:00
import {Config} from "../../../common/config/public/Config";
export class Photo extends IconPhoto {
2017-03-18 01:11:53 +02:00
constructor(photo: PhotoDTO, public renderWidth: number, public renderHeight: number) {
super(photo);
}
2017-03-18 01:11:53 +02:00
thumbnailLoaded() {
if (!this.isThumbnailAvailable()) {
this.photo.readyThumbnails = this.photo.readyThumbnails || [];
this.photo.readyThumbnails.push(this.getThumbnailSize());
2017-03-18 01:11:53 +02:00
}
}
2017-03-18 01:11:53 +02:00
getThumbnailSize() {
let renderSize = Math.sqrt(this.renderWidth * this.renderHeight);
2017-07-15 12:47:11 +02:00
return Utils.findClosest(renderSize, Config.Client.Thumbnail.thumbnailSizes);
}
2017-03-18 01:11:53 +02:00
getReplacementThumbnailSize(): number {
2017-03-18 01:11:53 +02:00
if (this.replacementSizeCache === false) {
this.replacementSizeCache = null;
2017-03-18 01:11:53 +02:00
let size = this.getThumbnailSize();
if (!!this.photo.readyThumbnails) {
for (let i = 0; i < this.photo.readyThumbnails.length; i++) {
if (this.photo.readyThumbnails[i] < size) {
this.replacementSizeCache = this.photo.readyThumbnails[i];
break;
}
2017-03-18 01:11:53 +02:00
}
}
2017-03-18 01:11:53 +02:00
}
return <number>this.replacementSizeCache;
}
2017-03-18 01:11:53 +02:00
isReplacementThumbnailAvailable() {
return this.getReplacementThumbnailSize() !== null;
}
2017-03-18 01:11:53 +02:00
isThumbnailAvailable() {
return this.photo.readyThumbnails && this.photo.readyThumbnails.indexOf(this.getThumbnailSize()) != -1;
}
2017-03-18 01:11:53 +02:00
getReplacementThumbnailPath() {
let size = this.getReplacementThumbnailSize();
return Utils.concatUrls("/api/gallery/content/", this.photo.directory.path, this.photo.directory.name, this.photo.name, "thumbnail", size.toString());
2017-03-18 01:11:53 +02:00
}
2017-03-18 01:11:53 +02:00
getThumbnailPath() {
let size = this.getThumbnailSize();
return Utils.concatUrls("/api/gallery/content/", this.photo.directory.path, this.photo.directory.name, this.photo.name, "thumbnail", size.toString());
}
2017-03-18 01:11:53 +02:00
}