@@ -202,8 +202,12 @@ function formatTimestamp(timestamp: number, settings: SimpleTimeTrackerSettings)
202
202
return moment . unix ( timestamp ) . format ( settings . timestampFormat ) ;
203
203
}
204
204
205
- function unFormatTimestamp ( formatted : string , settings : SimpleTimeTrackerSettings ) : number {
206
- return moment ( formatted , settings . timestampFormat ) . unix ( ) ;
205
+ function formatEditableTimestamp ( timestamp : number , settings : SimpleTimeTrackerSettings ) {
206
+ return moment . unix ( timestamp ) . format ( settings . editableTimestampFormat ) ;
207
+ }
208
+
209
+ function unformatEditableTimestamp ( formatted : string , settings : SimpleTimeTrackerSettings ) : number {
210
+ return moment ( formatted , settings . editableTimestampFormat ) . unix ( ) ;
207
211
}
208
212
209
213
function formatDuration ( totalTime : number , settings : SimpleTimeTrackerSettings ) : string {
@@ -294,24 +298,46 @@ class EditableField {
294
298
this . box . inputEl . show ( ) ;
295
299
}
296
300
endEdit ( ) : string {
297
- let value = this . box . getValue ( )
301
+ const value = this . box . getValue ( ) ;
298
302
this . label . setText ( value ) ;
299
303
this . box . inputEl . hide ( ) ;
300
304
this . label . hidden = false ;
301
305
return value ;
302
306
}
303
307
}
304
308
309
+ class EditableTimestampField extends EditableField {
310
+ settings : SimpleTimeTrackerSettings ;
311
+ constructor ( row : HTMLTableRowElement , indent : number , value : string , settings : SimpleTimeTrackerSettings ) {
312
+ const timestamp = Number ( value ) ;
313
+ value = timestamp > 0 ? formatTimestamp ( timestamp , settings ) : "" ;
314
+ super ( row , indent , value ) ;
315
+ this . settings = settings ;
316
+ }
317
+ beginEdit ( value : string ) {
318
+ value = formatEditableTimestamp ( Number ( value ) , this . settings ) ;
319
+ super . beginEdit ( value ) ;
320
+ }
321
+ endEdit ( ) : string {
322
+ const value = this . box . getValue ( ) ;
323
+ const timestamp = unformatEditableTimestamp ( value , this . settings ) ;
324
+ const displayValue = formatTimestamp ( timestamp , this . settings ) ;
325
+ this . label . setText ( displayValue ) ;
326
+ this . box . inputEl . hide ( ) ;
327
+ this . label . hidden = false ;
328
+ return value ;
329
+ }
330
+ getTimestamp ( ) : number {
331
+ return unformatEditableTimestamp ( this . box . getValue ( ) , this . settings ) ;
332
+ }
333
+ }
334
+
305
335
function addEditableTableRow ( tracker : Tracker , entry : Entry , table : HTMLTableElement , newSegmentNameBox : TextComponent , running : boolean , file : string , getSectionInfo : ( ) => MarkdownSectionInformation , settings : SimpleTimeTrackerSettings , indent : number ) {
306
336
let row = table . createEl ( "tr" ) ;
307
337
308
338
let nameField = new EditableField ( row , indent , entry . name ) ;
309
-
310
- let startValue = entry . startTime ? formatTimestamp ( entry . startTime , settings ) : "" ;
311
- let startField = new EditableField ( row , indent , startValue ) ;
312
-
313
- let endValue = entry . endTime ? formatTimestamp ( entry . endTime , settings ) : "" ;
314
- let endField = new EditableField ( row , indent , endValue ) ;
339
+ let startField = new EditableTimestampField ( row , indent , String ( entry . startTime ) , settings ) ;
340
+ let endField = new EditableTimestampField ( row , indent , String ( entry . endTime ) , settings ) ;
315
341
316
342
row . createEl ( "td" , { text : entry . endTime || entry . subEntries ? formatDuration ( getDuration ( entry ) , settings ) : "" } ) ;
317
343
@@ -333,14 +359,16 @@ function addEditableTableRow(tracker: Tracker, entry: Entry, table: HTMLTableEle
333
359
. onClick ( async ( ) => {
334
360
if ( nameField . editing ( ) ) {
335
361
entry . name = nameField . endEdit ( ) ;
336
- entry . startTime = unFormatTimestamp ( startField . endEdit ( ) , settings ) ;
337
- entry . endTime = unFormatTimestamp ( endField . endEdit ( ) , settings ) ;
362
+ startField . endEdit ( ) ;
363
+ entry . startTime = startField . getTimestamp ( ) ;
364
+ endField . endEdit ( ) ;
365
+ entry . endTime = endField . getTimestamp ( ) ;
338
366
await saveTracker ( tracker , this . app , file , getSectionInfo ( ) ) ;
339
367
editButton . setIcon ( "lucide-pencil" ) ;
340
368
} else {
341
369
nameField . beginEdit ( entry . name ) ;
342
- startField . beginEdit ( formatTimestamp ( entry . startTime , settings ) ) ;
343
- endField . beginEdit ( formatTimestamp ( entry . endTime , settings ) ) ;
370
+ startField . beginEdit ( String ( entry . startTime ) ) ;
371
+ endField . beginEdit ( String ( entry . endTime ) ) ;
344
372
editButton . setIcon ( "lucide-check" ) ;
345
373
}
346
374
} ) ;
0 commit comments