Startzeitpunkt auf letzten Endzeitpunkt setzen
This commit is contained in:
parent
d63f8cb7b2
commit
dfde062ebd
51
src/ui.ts
51
src/ui.ts
@ -158,6 +158,8 @@ export class TimetrackerUi {
|
||||
</div>
|
||||
<div class="tt-actions">
|
||||
<button id="tt-active-start-save">Save active start</button>
|
||||
<button id="tt-active-start-now">Reset to now</button>
|
||||
<button id="tt-active-start-last-end">Use last end</button>
|
||||
</div>
|
||||
</div>`
|
||||
: ""}
|
||||
@ -277,6 +279,16 @@ export class TimetrackerUi {
|
||||
return;
|
||||
}
|
||||
|
||||
if (target.id === "tt-active-start-now") {
|
||||
this.resetActiveStartToNow();
|
||||
return;
|
||||
}
|
||||
|
||||
if (target.id === "tt-active-start-last-end") {
|
||||
this.setActiveStartToLastEnd();
|
||||
return;
|
||||
}
|
||||
|
||||
if (target.id === "tt-edit-save") {
|
||||
this.saveEditDraft();
|
||||
return;
|
||||
@ -452,6 +464,45 @@ export class TimetrackerUi {
|
||||
}
|
||||
}
|
||||
|
||||
private resetActiveStartToNow(): void {
|
||||
try {
|
||||
this.service.updateActiveStart(Date.now());
|
||||
this.activeStartDraft = null;
|
||||
this.isEditingActiveStart = false;
|
||||
this.render();
|
||||
logseq.App.showMsg("Active start reset to now.", "success");
|
||||
} catch (error) {
|
||||
logseq.App.showMsg((error as Error).message, "error");
|
||||
}
|
||||
}
|
||||
|
||||
private setActiveStartToLastEnd(): void {
|
||||
const entries = this.service.getState().entries;
|
||||
if (!entries.length) {
|
||||
logseq.App.showMsg("No entries available.", "warning");
|
||||
return;
|
||||
}
|
||||
|
||||
const latestEndedAtEpochMs = entries.reduce((latest, entry) => {
|
||||
return Math.max(latest, entry.endedAtEpochMs);
|
||||
}, Number.NEGATIVE_INFINITY);
|
||||
|
||||
if (!Number.isFinite(latestEndedAtEpochMs)) {
|
||||
logseq.App.showMsg("No valid end timestamp found.", "error");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
this.service.updateActiveStart(latestEndedAtEpochMs);
|
||||
this.activeStartDraft = null;
|
||||
this.isEditingActiveStart = false;
|
||||
this.render();
|
||||
logseq.App.showMsg("Active start set to last end time.", "success");
|
||||
} catch (error) {
|
||||
logseq.App.showMsg((error as Error).message, "error");
|
||||
}
|
||||
}
|
||||
|
||||
private escapeHtml(value: string): string {
|
||||
return value
|
||||
.replace(/&/g, "&")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user