ObsidianSimpleTimeTracker/src/tracker.ts

66 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-09-27 16:06:40 +02:00
import { MarkdownSectionInformation } from "obsidian";
export class Tracker {
entries: Entry[] = [];
display(element: HTMLElement): void {
let list = element.createEl("ul");
for (let entry of this.entries)
list.createEl("li", { text: entry.toString() });
}
start(name: string): void {
// date constructor returns the current date
let entry = new Entry(name, new Date());
this.entries.push(entry);
}
end(): void {
}
save(): void {
// TODO save
JSON.stringify(this);
}
static load(json: string): Tracker {
if (json) {
try {
return JSON.parse(json);
} catch (e) {
console.log(`Failed to parse Tracker from ${json}`);
}
}
return new Tracker();
}
}
export class Entry {
private name: string;
private startTime: Date;
private endTime: Date;
constructor(name: string, startTime: Date) {
this.name = name;
this.startTime = startTime;
}
toString(): string {
let ret = "";
if (this.name)
ret += `${this.name}: `;
// if the days or months are different, we want to add the full date
if (this.startTime.getDay() != this.endTime.getDay() || this.startTime.getMonth() != this.endTime.getMonth()) {
ret += `${this.startTime.toLocaleString()} - ${this.endTime.toLocaleString()}`;
} else {
ret += `${this.startTime.toLocaleTimeString()} - ${this.endTime.toLocaleTimeString()}`;
}
return ret;
}
}