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 return state.rebuild((b) => b
..listUIState.replace(taskListReducer(state.listUIState, action)) ..listUIState.replace(taskListReducer(state.listUIState, action))
..editing.replace(editingReducer(state.editing, action)) ..editing.replace(editingReducer(state.editing, action))
//..editingTime = editingTimeReducer(state.editingTime, action) ..editingTime = editingTimeReducer(state.editingTime, action)
..selectedId = selectedIdReducer(state.selectedId, action)); ..selectedId = selectedIdReducer(state.selectedId, action));
} }
/* final editingTimeReducer = combineReducers<TaskTime>([
final editingTimeReducer = combineReducers<List<int>([ TypedReducer<TaskTime, EditTask>(editTaskTime),
TypedReducer<List<int>, EditTask>(editTaskTime), TypedReducer<TaskTime, EditTaskTime>(editTaskTime),
TypedReducer<List<int>, EditTaskTime>(editTaskTime),
]); ]);
List<int> editTaskTime( TaskTime editTaskTime(
List<int> taskTime, dynamic action) { TaskTime taskTime, dynamic action) {
return action.taskTime ?? []; return action.taskTime ?? TaskTime();
} }
*/
Reducer<int> selectedIdReducer = combineReducers([ Reducer<int> selectedIdReducer = combineReducers([

View File

@ -5,14 +5,14 @@ class TimePicker extends StatefulWidget {
const TimePicker({ const TimePicker({
@required this.labelText, @required this.labelText,
@required this.onSelected, @required this.onSelected,
@required this.selectedDate, @required this.timeOfDay,
this.validator, this.validator,
this.autoValidate = false, this.autoValidate = false,
}); });
final String labelText; final String labelText;
final DateTime selectedDate; final TimeOfDay timeOfDay;
final Function(int) onSelected; final Function(TimeOfDay) onSelected;
final Function validator; final Function validator;
final bool autoValidate; final bool autoValidate;
@ -26,7 +26,7 @@ class _TimePickerState extends State<TimePicker> {
@override @override
void didChangeDependencies() { void didChangeDependencies() {
_textController.text = formatDate( _textController.text = formatDate(
widget.selectedDate.toIso8601String(), context, _convertToDate(widget.timeOfDay).toIso8601String(), context,
showDate: false, showTime: true); showDate: false, showTime: true);
super.didChangeDependencies(); super.didChangeDependencies();
@ -47,19 +47,17 @@ class _TimePickerState extends State<TimePicker> {
} }
void _showDatePicker() async { void _showDatePicker() async {
final selectedDate = widget.selectedDate; final selectedDate = widget.timeOfDay;
final hour = selectedDate.hour; final hour = selectedDate.hour;
final minute = selectedDate.minute; final minute = selectedDate.minute;
final TimeOfDay selectedTime = await showTimePicker( final TimeOfDay selectedTime = await showTimePicker(
context: context, initialTime: TimeOfDay(hour: hour, minute: minute)); context: context, initialTime: TimeOfDay(hour: hour, minute: minute));
final date = DateTime(selectedDate.year, selectedDate.month, _textController.text = formatDate(
selectedDate.day, selectedTime.hour, selectedTime.minute); _convertToDate(selectedTime).toIso8601String(), context,
//final date = convertDateTimeToSqlDate(selectedDate);
_textController.text = formatDate(date.toIso8601String(), context,
showTime: true, showDate: false); showTime: true, showDate: false);
widget.onSelected((date.millisecondsSinceEpoch / 1000).floor()); widget.onSelected(selectedTime);
} }
@override @override

View File

@ -97,52 +97,9 @@ class TimeEditDetails extends StatefulWidget {
} }
class TimeEditDetailsState extends State<TimeEditDetails> { class TimeEditDetailsState extends State<TimeEditDetails> {
List<TextEditingController> _controllers = []; String _date;
TimeOfDay _startTime;
@override TimeOfDay _endTime;
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);
}
*/
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -198,7 +155,15 @@ class TimeEditDetailsState extends State<TimeEditDetails> {
icon: Icons.check_circle, icon: Icons.check_circle,
label: localization.done, label: localization.done,
onPressed: () { 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(); Navigator.of(context).pop();
}, },
), ),
@ -207,17 +172,21 @@ class TimeEditDetailsState extends State<TimeEditDetails> {
DatePicker( DatePicker(
labelText: localization.date, labelText: localization.date,
selectedDate: convertDateTimeToSqlDate(widget.taskTime.startDate), selectedDate: convertDateTimeToSqlDate(widget.taskTime.startDate),
onSelected: (date) { onSelected: (date) => _date = date,
//viewModel.onChanged(invoice.rebuild((b) => b..dueDate = date));
},
), ),
TimePicker( TimePicker(
labelText: localization.startTime, labelText: localization.startTime,
selectedDate: widget.taskTime.startDate, timeOfDay: TimeOfDay(
hour: widget.taskTime.startDate.hour,
minute: widget.taskTime.startDate.minute),
onSelected: (timeOfDay) => _startTime = timeOfDay,
), ),
TimePicker( TimePicker(
labelText: localization.endTime, 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 { class TaskEditTimesVM {
TaskEditTimesVM({ TaskEditTimesVM({
@required this.company, @required this.company,
@ -33,7 +32,6 @@ class TaskEditTimesVM {
@required this.taskTime, @required this.taskTime,
@required this.onRemoveTaskTimePressed, @required this.onRemoveTaskTimePressed,
@required this.onDoneTaskTimePressed, @required this.onDoneTaskTimePressed,
@required this.onChangedTaskTime,
}); });
factory TaskEditTimesVM.fromStore(Store<AppState> store) { factory TaskEditTimesVM.fromStore(Store<AppState> store) {
@ -41,24 +39,20 @@ class TaskEditTimesVM {
final task = state.taskUIState.editing; final task = state.taskUIState.editing;
return TaskEditTimesVM( return TaskEditTimesVM(
company: state.selectedCompany, company: state.selectedCompany,
task: task, task: task,
taskTime: state.taskUIState.editingTime, taskTime: state.taskUIState.editingTime,
onRemoveTaskTimePressed: (index) => onRemoveTaskTimePressed: (index) => store.dispatch(DeleteTaskTime(index)),
store.dispatch(DeleteTaskTime(index)), onDoneTaskTimePressed: (taskTime) {
onDoneTaskTimePressed: () => store.dispatch(EditTaskTime()), store.dispatch(UpdateTaskTime(taskTime: taskTime));
onChangedTaskTime: (taskTime, index) { store.dispatch(EditTaskTime());
/* },
store.dispatch( );
UpdateTaskTime(taskTime: taskTime, index: index));
*/
});
} }
final CompanyEntity company; final CompanyEntity company;
final TaskEntity task; final TaskEntity task;
final TaskTime taskTime; final TaskTime taskTime;
final Function(int) onRemoveTaskTimePressed; final Function(int) onRemoveTaskTimePressed;
final Function onDoneTaskTimePressed; final Function(TaskTime) onDoneTaskTimePressed;
final Function(TaskTime, int) onChangedTaskTime;
} }