Skip to content

Commit 11e0395

Browse files
authored
feat: datetime picker for end field in TaskDialog (#353)
1 parent 2a398a9 commit 11e0395

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

backend/controllers/edit_task.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ func EditTaskHandler(w http.ResponseWriter, r *http.Request) {
7979
return
8080
}
8181

82+
end, err = utils.ConvertISOToTaskwarriorFormat(end)
83+
if err != nil {
84+
http.Error(w, fmt.Sprintf("Invalid end date format: %v", err), http.StatusBadRequest)
85+
return
86+
}
87+
8288
logStore := models.GetLogStore()
8389
job := Job{
8490
Name: "Edit Task",

frontend/src/components/HomeComponents/Tasks/TaskDialog.tsx

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -432,19 +432,17 @@ export const TaskDialog = ({
432432
<TableCell>
433433
{editState.isEditingEndDate ? (
434434
<div className="flex items-center gap-2">
435-
<DatePicker
435+
<DateTimePicker
436436
date={
437437
editState.editedEndDate &&
438438
editState.editedEndDate !== ''
439439
? (() => {
440440
try {
441441
const dateStr =
442442
editState.editedEndDate.includes('T')
443-
? editState.editedEndDate.split('T')[0]
444-
: editState.editedEndDate;
445-
const parsed = new Date(
446-
dateStr + 'T00:00:00'
447-
);
443+
? editState.editedEndDate
444+
: editState.editedEndDate + 'T00:00:00';
445+
const parsed = new Date(dateStr);
448446
return isNaN(parsed.getTime())
449447
? undefined
450448
: parsed;
@@ -454,14 +452,16 @@ export const TaskDialog = ({
454452
})()
455453
: undefined
456454
}
457-
onDateChange={(date) =>
455+
onDateTimeChange={(date, hasTime) =>
458456
onUpdateState({
459457
editedEndDate: date
460-
? format(date, 'yyyy-MM-dd')
458+
? hasTime
459+
? date.toISOString()
460+
: format(date, 'yyyy-MM-dd')
461461
: '',
462462
})
463463
}
464-
placeholder="Select end date"
464+
placeholder="Select end date and time"
465465
/>
466466
<Button
467467
variant="ghost"
@@ -498,11 +498,7 @@ export const TaskDialog = ({
498498
onClick={() => {
499499
onUpdateState({
500500
isEditingEndDate: true,
501-
editedEndDate: task.end
502-
? task.end.includes('T')
503-
? task.end.split('T')[0]
504-
: task.end
505-
: '',
501+
editedEndDate: task.end || '',
506502
});
507503
}}
508504
>

frontend/src/components/HomeComponents/Tasks/__tests__/Tasks.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,7 @@ describe('Tasks Component', () => {
11031103

11041104
test.each([
11051105
['Wait', 'Wait:', 'Pick a date'],
1106-
['End', 'End:', 'Select end date'],
1106+
['End', 'End:', 'Select end date and time'],
11071107
['Due', 'Due:', 'Select due date and time'],
11081108
['Start', 'Start:', 'Select start date and time'],
11091109
['Entry', 'Entry:', 'Pick a date'],

0 commit comments

Comments
 (0)