Skip to content

Commit a6727bb

Browse files
committed
Handle active timer with no end value
1 parent 3d9e616 commit a6727bb

File tree

3 files changed

+80
-32
lines changed

3 files changed

+80
-32
lines changed

src/tracker.ts

+26-10
Original file line numberDiff line numberDiff line change
@@ -309,35 +309,51 @@ class EditableField {
309309
class EditableTimestampField extends EditableField {
310310
settings: SimpleTimeTrackerSettings;
311311
constructor(row: HTMLTableRowElement, indent: number, value: string, settings: SimpleTimeTrackerSettings) {
312-
const timestamp = Number(value);
313-
value = timestamp > 0 ? formatTimestamp(timestamp, settings) : "";
312+
if (value) {
313+
const timestamp = Number(value);
314+
value = timestamp > 0 ? formatTimestamp(timestamp, settings) : "";
315+
}
314316
super(row, indent, value);
315317
this.settings = settings;
316318
}
317319
beginEdit(value: string) {
318-
value = formatEditableTimestamp(Number(value), this.settings);
320+
if (value) {
321+
value = formatEditableTimestamp(Number(value), this.settings);
322+
}
319323
super.beginEdit(value);
320324
}
321325
endEdit(): string {
322326
const value = this.box.getValue();
323-
const timestamp = unformatEditableTimestamp(value, this.settings);
324-
const displayValue = formatTimestamp(timestamp, this.settings);
327+
let displayValue = value;
328+
if (value) {
329+
const timestamp = unformatEditableTimestamp(value, this.settings);
330+
displayValue = formatTimestamp(timestamp, this.settings);
331+
}
325332
this.label.setText(displayValue);
326333
this.box.inputEl.hide();
327334
this.label.hidden = false;
328335
return value;
329336
}
330337
getTimestamp(): number {
331-
return unformatEditableTimestamp(this.box.getValue(), this.settings);
338+
if (this.box.getValue()) {
339+
return unformatEditableTimestamp(this.box.getValue(), this.settings);
340+
} else {
341+
return null;
342+
}
332343
}
333344
}
334345

346+
function nullableNumberToString(value: number) {
347+
if (value == null) return '';
348+
return String(value);
349+
}
350+
335351
function addEditableTableRow(tracker: Tracker, entry: Entry, table: HTMLTableElement, newSegmentNameBox: TextComponent, running: boolean, file: string, getSectionInfo: () => MarkdownSectionInformation, settings: SimpleTimeTrackerSettings, indent: number) {
336352
let row = table.createEl("tr");
337353

338354
let nameField = new EditableField(row, indent, entry.name);
339-
let startField = new EditableTimestampField(row, indent, String(entry.startTime), settings);
340-
let endField = new EditableTimestampField(row, indent, String(entry.endTime), settings);
355+
let startField = new EditableTimestampField(row, indent, nullableNumberToString(entry.startTime), settings);
356+
let endField = new EditableTimestampField(row, indent, nullableNumberToString(entry.endTime), settings);
341357

342358
row.createEl("td", { text: entry.endTime || entry.subEntries ? formatDuration(getDuration(entry), settings) : "" });
343359

@@ -367,8 +383,8 @@ function addEditableTableRow(tracker: Tracker, entry: Entry, table: HTMLTableEle
367383
editButton.setIcon("lucide-pencil");
368384
} else {
369385
nameField.beginEdit(entry.name);
370-
startField.beginEdit(String(entry.startTime));
371-
endField.beginEdit(String(entry.endTime));
386+
startField.beginEdit(nullableNumberToString(entry.startTime));
387+
endField.beginEdit(nullableNumberToString(entry.endTime));
372388
editButton.setIcon("lucide-check");
373389
}
374390
});

test-vault/.obsidian/plugins/simple-time-tracker/main

+27-11
Large diffs are not rendered by default.

test-vault/.obsidian/plugins/simple-time-tracker/main.js

+27-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)