From 9cf788d48df0973e2cb883dedb6f46cc3a52592c Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 20 Dec 2018 21:44:46 +0200 Subject: [PATCH] Tasks --- lib/redux/task/task_reducer.dart | 16 +++--- lib/ui/app/forms/time_picker.dart | 18 +++--- lib/ui/task/edit/task_edit_times.dart | 73 +++++++----------------- lib/ui/task/edit/task_edit_times_vm.dart | 26 ++++----- 4 files changed, 46 insertions(+), 87 deletions(-) diff --git a/lib/redux/task/task_reducer.dart b/lib/redux/task/task_reducer.dart index e81eadc3d..c4e2d4dd7 100644 --- a/lib/redux/task/task_reducer.dart +++ b/lib/redux/task/task_reducer.dart @@ -10,21 +10,19 @@ EntityUIState taskUIReducer(TaskUIState state, dynamic action) { return state.rebuild((b) => b ..listUIState.replace(taskListReducer(state.listUIState, action)) ..editing.replace(editingReducer(state.editing, action)) - //..editingTime = editingTimeReducer(state.editingTime, action) + ..editingTime = editingTimeReducer(state.editingTime, action) ..selectedId = selectedIdReducer(state.selectedId, action)); } -/* -final editingTimeReducer = combineReducers([ - TypedReducer, EditTask>(editTaskTime), - TypedReducer, EditTaskTime>(editTaskTime), +final editingTimeReducer = combineReducers([ + TypedReducer(editTaskTime), + TypedReducer(editTaskTime), ]); -List editTaskTime( - List taskTime, dynamic action) { - return action.taskTime ?? []; +TaskTime editTaskTime( + TaskTime taskTime, dynamic action) { + return action.taskTime ?? TaskTime(); } -*/ Reducer selectedIdReducer = combineReducers([ diff --git a/lib/ui/app/forms/time_picker.dart b/lib/ui/app/forms/time_picker.dart index 8f371a732..5de7fd4b2 100644 --- a/lib/ui/app/forms/time_picker.dart +++ b/lib/ui/app/forms/time_picker.dart @@ -5,14 +5,14 @@ class TimePicker extends StatefulWidget { const TimePicker({ @required this.labelText, @required this.onSelected, - @required this.selectedDate, + @required this.timeOfDay, this.validator, this.autoValidate = false, }); final String labelText; - final DateTime selectedDate; - final Function(int) onSelected; + final TimeOfDay timeOfDay; + final Function(TimeOfDay) onSelected; final Function validator; final bool autoValidate; @@ -26,7 +26,7 @@ class _TimePickerState extends State { @override void didChangeDependencies() { _textController.text = formatDate( - widget.selectedDate.toIso8601String(), context, + _convertToDate(widget.timeOfDay).toIso8601String(), context, showDate: false, showTime: true); super.didChangeDependencies(); @@ -47,19 +47,17 @@ class _TimePickerState extends State { } void _showDatePicker() async { - final selectedDate = widget.selectedDate; + final selectedDate = widget.timeOfDay; final hour = selectedDate.hour; final minute = selectedDate.minute; final TimeOfDay selectedTime = await showTimePicker( context: context, initialTime: TimeOfDay(hour: hour, minute: minute)); - final date = DateTime(selectedDate.year, selectedDate.month, - selectedDate.day, selectedTime.hour, selectedTime.minute); - //final date = convertDateTimeToSqlDate(selectedDate); - _textController.text = formatDate(date.toIso8601String(), context, + _textController.text = formatDate( + _convertToDate(selectedTime).toIso8601String(), context, showTime: true, showDate: false); - widget.onSelected((date.millisecondsSinceEpoch / 1000).floor()); + widget.onSelected(selectedTime); } @override diff --git a/lib/ui/task/edit/task_edit_times.dart b/lib/ui/task/edit/task_edit_times.dart index 189e05cc3..36622fcfb 100644 --- a/lib/ui/task/edit/task_edit_times.dart +++ b/lib/ui/task/edit/task_edit_times.dart @@ -97,52 +97,9 @@ class TimeEditDetails extends StatefulWidget { } class TimeEditDetailsState extends State { - List _controllers = []; - - @override - void initState() { - super.initState(); - } - - @override - void didChangeDependencies() { - if (_controllers.isNotEmpty) { - return; - } - - _controllers = []; - - _controllers - .forEach((dynamic controller) => controller.addListener(_onChanged)); - - super.didChangeDependencies(); - } - - @override - void dispose() { - _controllers.forEach((dynamic controller) { - controller.removeListener(_onChanged); - controller.dispose(); - }); - - super.dispose(); - } - - void _onChanged() { - /* - final taskTime = widget.taskTime.rebuild((b) => b - ..productKey = _productKeyController.text.trim() - ..notes = _notesController.text.trim() - ..cost = parseDouble(_costController.text) - ..qty = parseDouble(_qtyController.text) - ..discount = parseDouble(_discountController.text) - ..customValue1 = _custom1Controller.text.trim() - ..customValue2 = _custom2Controller.text.trim()); - if (taskTime != widget.taskTime) { - widget.viewModel.onChangedTaskTime(taskTime, widget.index); - } - */ - } + String _date; + TimeOfDay _startTime; + TimeOfDay _endTime; @override Widget build(BuildContext context) { @@ -198,7 +155,15 @@ class TimeEditDetailsState extends State { icon: Icons.check_circle, label: localization.done, onPressed: () { - //viewModel.onDoneTaskTimePressed(); + final origTaskTime = widget.taskTime; + final date = DateTime.parse(_date); + final taskTime = TaskTime( + startDate: DateTime(date.year, date.month, date.day, + _startTime.hour, _startTime.minute), + endDate: DateTime(date.year, date.month, date.day, + _endTime.hour, _endTime.minute), + ); + widget.viewModel.onDoneTaskTimePressed(taskTime); Navigator.of(context).pop(); }, ), @@ -207,17 +172,21 @@ class TimeEditDetailsState extends State { DatePicker( labelText: localization.date, selectedDate: convertDateTimeToSqlDate(widget.taskTime.startDate), - onSelected: (date) { - //viewModel.onChanged(invoice.rebuild((b) => b..dueDate = date)); - }, + onSelected: (date) => _date = date, ), TimePicker( labelText: localization.startTime, - selectedDate: widget.taskTime.startDate, + timeOfDay: TimeOfDay( + hour: widget.taskTime.startDate.hour, + minute: widget.taskTime.startDate.minute), + onSelected: (timeOfDay) => _startTime = timeOfDay, ), TimePicker( labelText: localization.endTime, - selectedDate: widget.taskTime.endDate, + timeOfDay: TimeOfDay( + hour: widget.taskTime.endDate.hour, + minute: widget.taskTime.endDate.minute), + onSelected: (timeOfDay) => _endTime = timeOfDay, ), ], ), diff --git a/lib/ui/task/edit/task_edit_times_vm.dart b/lib/ui/task/edit/task_edit_times_vm.dart index 9138822c4..674233adb 100644 --- a/lib/ui/task/edit/task_edit_times_vm.dart +++ b/lib/ui/task/edit/task_edit_times_vm.dart @@ -25,7 +25,6 @@ class TaskEditTimesScreen extends StatelessWidget { } } - class TaskEditTimesVM { TaskEditTimesVM({ @required this.company, @@ -33,7 +32,6 @@ class TaskEditTimesVM { @required this.taskTime, @required this.onRemoveTaskTimePressed, @required this.onDoneTaskTimePressed, - @required this.onChangedTaskTime, }); factory TaskEditTimesVM.fromStore(Store store) { @@ -41,24 +39,20 @@ class TaskEditTimesVM { final task = state.taskUIState.editing; return TaskEditTimesVM( - company: state.selectedCompany, - task: task, - taskTime: state.taskUIState.editingTime, - onRemoveTaskTimePressed: (index) => - store.dispatch(DeleteTaskTime(index)), - onDoneTaskTimePressed: () => store.dispatch(EditTaskTime()), - onChangedTaskTime: (taskTime, index) { - /* - store.dispatch( - UpdateTaskTime(taskTime: taskTime, index: index)); - */ - }); + company: state.selectedCompany, + task: task, + taskTime: state.taskUIState.editingTime, + onRemoveTaskTimePressed: (index) => store.dispatch(DeleteTaskTime(index)), + onDoneTaskTimePressed: (taskTime) { + store.dispatch(UpdateTaskTime(taskTime: taskTime)); + store.dispatch(EditTaskTime()); + }, + ); } final CompanyEntity company; final TaskEntity task; final TaskTime taskTime; final Function(int) onRemoveTaskTimePressed; - final Function onDoneTaskTimePressed; - final Function(TaskTime, int) onChangedTaskTime; + final Function(TaskTime) onDoneTaskTimePressed; }