This commit is contained in:
Hillel Coren 2018-12-20 21:44:46 +02:00
parent 317cde29f6
commit 9cf788d48d
4 changed files with 46 additions and 87 deletions

View File

@ -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<List<int>([
TypedReducer<List<int>, EditTask>(editTaskTime),
TypedReducer<List<int>, EditTaskTime>(editTaskTime),
final editingTimeReducer = combineReducers<TaskTime>([
TypedReducer<TaskTime, EditTask>(editTaskTime),
TypedReducer<TaskTime, EditTaskTime>(editTaskTime),
]);
List<int> editTaskTime(
List<int> taskTime, dynamic action) {
return action.taskTime ?? [];
TaskTime editTaskTime(
TaskTime taskTime, dynamic action) {
return action.taskTime ?? TaskTime();
}
*/
Reducer<int> selectedIdReducer = combineReducers([

View File

@ -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<TimePicker> {
@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<TimePicker> {
}
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

View File

@ -97,52 +97,9 @@ class TimeEditDetails extends StatefulWidget {
}
class TimeEditDetailsState extends State<TimeEditDetails> {
List<TextEditingController> _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<TimeEditDetails> {
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<TimeEditDetails> {
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,
),
],
),

View File

@ -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<AppState> 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;
}