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>
|
||||||
<div class="tt-actions">
|
<div class="tt-actions">
|
||||||
<button id="tt-active-start-save">Save active start</button>
|
<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>
|
||||||
</div>`
|
</div>`
|
||||||
: ""}
|
: ""}
|
||||||
@ -277,6 +279,16 @@ export class TimetrackerUi {
|
|||||||
return;
|
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") {
|
if (target.id === "tt-edit-save") {
|
||||||
this.saveEditDraft();
|
this.saveEditDraft();
|
||||||
return;
|
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 {
|
private escapeHtml(value: string): string {
|
||||||
return value
|
return value
|
||||||
.replace(/&/g, "&")
|
.replace(/&/g, "&")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user