ovdashboard/ui/src/components/calendar/event.ts

30 lines
No EOL
887 B
TypeScript

import { DateTime, Duration } from "luxon";
export default class Event {
public summary: string;
public description: string;
public start: DateTime;
public duration: Duration;
public constructor(json_data: Record<string, string>) {
this.summary = json_data["summary"];
this.description = json_data["description"];
this.start = DateTime.fromISO(json_data["dtstart"]);
const end = DateTime.fromISO(json_data["dtend"]);
this.duration = end.diff(this.start);
}
public get hash(): string {
const str = JSON.stringify(this);
// from https://gist.github.com/jlevy/c246006675becc446360a798e2b2d781
let hash = 0;
for (let i = 0; i < str.length; i++) {
const char = str.charCodeAt(i);
hash = (hash << 5) - hash + char;
hash &= hash; // Convert to 32bit integer
}
return new Uint32Array([hash])[0].toString(36);
}
}