1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/frontend/app/gallery/lightbox/infopanel/info-panel.lightbox.gallery.component.ts
2017-07-17 18:30:16 +02:00

92 lines
2.3 KiB
TypeScript

import {Component, ElementRef, EventEmitter, Input, Output} from "@angular/core";
import {PhotoDTO} from "../../../../../common/entities/PhotoDTO";
import {Config} from "../../../../../common/config/public/Config";
@Component({
selector: 'info-panel',
styleUrls: ['./info-panel.lightbox.gallery.component.css'],
templateUrl: './info-panel.lightbox.gallery.component.html',
})
export class InfoPanelLightboxComponent {
@Input() photo: PhotoDTO;
@Output('onClose') onClose = new EventEmitter();
public mapEnabled = true;
constructor(public elementRef: ElementRef) {
this.mapEnabled = Config.Client.Map.enabled;
}
calcMpx() {
return (this.photo.metadata.size.width * this.photo.metadata.size.height / 1000000).toFixed(2);
}
calcFileSize() {
let postFixes = ["B", "KB", "MB", "GB", "TB"];
let index = 0;
let size = this.photo.metadata.fileSize;
while (size > 1000 && index < postFixes.length - 1) {
size /= 1000;
index++;
}
return size.toFixed(2) + postFixes[index];
}
getCurrentYear() {
return (new Date()).getFullYear();
}
getYear() {
const date = new Date(this.photo.metadata.creationDate);
return date.getFullYear();
}
getDate() {
const date = new Date(this.photo.metadata.creationDate);
let locale = "en-us";
return date.toLocaleString(locale, {month: "long"}) + " " + date.getDate();
}
getTime() {
const date = new Date(this.photo.metadata.creationDate);
return date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
}
getDay() {
const date = new Date(this.photo.metadata.creationDate);
let locale = "en-us";
return date.toLocaleString(locale, {weekday: "long"});
}
toFraction(f) {
if (f > 1) {
return f;
}
return "1/" + (1 / f);
}
hasGPS() {
return this.photo.metadata.positionData && this.photo.metadata.positionData.GPSData &&
this.photo.metadata.positionData.GPSData.latitude && this.photo.metadata.positionData.GPSData.longitude
}
getPositionText(): string {
if (!this.photo.metadata.positionData) {
return "";
}
let str = this.photo.metadata.positionData.city ||
this.photo.metadata.positionData.state;
if (str.length != 0) {
str += ", ";
}
str += this.photo.metadata.positionData.country;
return str;
}
close() {
this.onClose.emit();
}
}