@@ -309,35 +309,51 @@ class EditableField {
309
309
class EditableTimestampField extends EditableField {
310
310
settings : SimpleTimeTrackerSettings ;
311
311
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
+ }
314
316
super ( row , indent , value ) ;
315
317
this . settings = settings ;
316
318
}
317
319
beginEdit ( value : string ) {
318
- value = formatEditableTimestamp ( Number ( value ) , this . settings ) ;
320
+ if ( value ) {
321
+ value = formatEditableTimestamp ( Number ( value ) , this . settings ) ;
322
+ }
319
323
super . beginEdit ( value ) ;
320
324
}
321
325
endEdit ( ) : string {
322
326
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
+ }
325
332
this . label . setText ( displayValue ) ;
326
333
this . box . inputEl . hide ( ) ;
327
334
this . label . hidden = false ;
328
335
return value ;
329
336
}
330
337
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
+ }
332
343
}
333
344
}
334
345
346
+ function nullableNumberToString ( value : number ) {
347
+ if ( value == null ) return '' ;
348
+ return String ( value ) ;
349
+ }
350
+
335
351
function addEditableTableRow ( tracker : Tracker , entry : Entry , table : HTMLTableElement , newSegmentNameBox : TextComponent , running : boolean , file : string , getSectionInfo : ( ) => MarkdownSectionInformation , settings : SimpleTimeTrackerSettings , indent : number ) {
336
352
let row = table . createEl ( "tr" ) ;
337
353
338
354
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 ) ;
341
357
342
358
row . createEl ( "td" , { text : entry . endTime || entry . subEntries ? formatDuration ( getDuration ( entry ) , settings ) : "" } ) ;
343
359
@@ -367,8 +383,8 @@ function addEditableTableRow(tracker: Tracker, entry: Entry, table: HTMLTableEle
367
383
editButton . setIcon ( "lucide-pencil" ) ;
368
384
} else {
369
385
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 ) ) ;
372
388
editButton . setIcon ( "lucide-check" ) ;
373
389
}
374
390
} ) ;
0 commit comments