This commit is contained in:
Hillel Coren 2018-12-20 22:44:41 +02:00
parent 27b086313e
commit 49511fd1ca
7 changed files with 192 additions and 20 deletions

View File

@ -114,6 +114,7 @@ Serializers _$serializers = (new Serializers().toBuilder()
..add(TaskItemResponse.serializer) ..add(TaskItemResponse.serializer)
..add(TaskListResponse.serializer) ..add(TaskListResponse.serializer)
..add(TaskState.serializer) ..add(TaskState.serializer)
..add(TaskTime.serializer)
..add(TaskUIState.serializer) ..add(TaskUIState.serializer)
..add(TaxRateEntity.serializer) ..add(TaxRateEntity.serializer)
..add(TimezoneEntity.serializer) ..add(TimezoneEntity.serializer)

View File

@ -52,18 +52,32 @@ class TaskFields {
static const String isDeleted = 'isDeleted'; static const String isDeleted = 'isDeleted';
} }
class TaskTime {
TaskTime({this.startDate, this.endDate});
final DateTime startDate; abstract class TaskTime implements Built<TaskTime, TaskTimeBuilder> {
final DateTime endDate;
factory TaskTime({DateTime startDate, DateTime endDate}) {
return _$TaskTime._(
startDate: startDate ?? DateTime.now().toUtc(),
endDate: endDate,
);
}
TaskTime._();
DateTime get startDate;
@nullable
DateTime get endDate;
Duration get duration => (endDate ?? DateTime.now()).difference(startDate); Duration get duration => (endDate ?? DateTime.now()).difference(startDate);
List<dynamic> get asList => <dynamic>[ List<dynamic> get asList =>
<dynamic>[
(startDate.millisecondsSinceEpoch / 1000).floor(), (startDate.millisecondsSinceEpoch / 1000).floor(),
endDate != null ? (endDate.millisecondsSinceEpoch / 1000).floor() : 0 endDate != null ? (endDate.millisecondsSinceEpoch / 1000).floor() : 0
]; ];
static Serializer<TaskTime> get serializer => _$taskTimeSerializer;
} }
abstract class TaskEntity extends Object abstract class TaskEntity extends Object
@ -78,7 +92,9 @@ abstract class TaskEntity extends Object
clientId: null, clientId: null,
projectId: null, projectId: null,
timeLog: isRunning timeLog: isRunning
? '[[${(DateTime.now().millisecondsSinceEpoch / 1000).floor()},0]]' ? '[[${(DateTime
.now()
.millisecondsSinceEpoch / 1000).floor()},0]]'
: '', : '',
isRunning: false, isRunning: false,
customValue1: '', customValue1: '',

View File

@ -23,6 +23,7 @@ Serializer<TaskListResponse> _$taskListResponseSerializer =
new _$TaskListResponseSerializer(); new _$TaskListResponseSerializer();
Serializer<TaskItemResponse> _$taskItemResponseSerializer = Serializer<TaskItemResponse> _$taskItemResponseSerializer =
new _$TaskItemResponseSerializer(); new _$TaskItemResponseSerializer();
Serializer<TaskTime> _$taskTimeSerializer = new _$TaskTimeSerializer();
Serializer<TaskEntity> _$taskEntitySerializer = new _$TaskEntitySerializer(); Serializer<TaskEntity> _$taskEntitySerializer = new _$TaskEntitySerializer();
class _$TaskListResponseSerializer class _$TaskListResponseSerializer
@ -109,6 +110,56 @@ class _$TaskItemResponseSerializer
} }
} }
class _$TaskTimeSerializer implements StructuredSerializer<TaskTime> {
@override
final Iterable<Type> types = const [TaskTime, _$TaskTime];
@override
final String wireName = 'TaskTime';
@override
Iterable serialize(Serializers serializers, TaskTime object,
{FullType specifiedType = FullType.unspecified}) {
final result = <Object>[
'startDate',
serializers.serialize(object.startDate,
specifiedType: const FullType(DateTime)),
];
if (object.endDate != null) {
result
..add('endDate')
..add(serializers.serialize(object.endDate,
specifiedType: const FullType(DateTime)));
}
return result;
}
@override
TaskTime deserialize(Serializers serializers, Iterable serialized,
{FullType specifiedType = FullType.unspecified}) {
final result = new TaskTimeBuilder();
final iterator = serialized.iterator;
while (iterator.moveNext()) {
final key = iterator.current as String;
iterator.moveNext();
final dynamic value = iterator.current;
switch (key) {
case 'startDate':
result.startDate = serializers.deserialize(value,
specifiedType: const FullType(DateTime)) as DateTime;
break;
case 'endDate':
result.endDate = serializers.deserialize(value,
specifiedType: const FullType(DateTime)) as DateTime;
break;
}
}
return result.build();
}
}
class _$TaskEntitySerializer implements StructuredSerializer<TaskEntity> { class _$TaskEntitySerializer implements StructuredSerializer<TaskEntity> {
@override @override
final Iterable<Type> types = const [TaskEntity, _$TaskEntity]; final Iterable<Type> types = const [TaskEntity, _$TaskEntity];
@ -457,6 +508,94 @@ class TaskItemResponseBuilder
} }
} }
class _$TaskTime extends TaskTime {
@override
final DateTime startDate;
@override
final DateTime endDate;
factory _$TaskTime([void updates(TaskTimeBuilder b)]) =>
(new TaskTimeBuilder()..update(updates)).build();
_$TaskTime._({this.startDate, this.endDate}) : super._() {
if (startDate == null) {
throw new BuiltValueNullFieldError('TaskTime', 'startDate');
}
}
@override
TaskTime rebuild(void updates(TaskTimeBuilder b)) =>
(toBuilder()..update(updates)).build();
@override
TaskTimeBuilder toBuilder() => new TaskTimeBuilder()..replace(this);
@override
bool operator ==(Object other) {
if (identical(other, this)) return true;
return other is TaskTime &&
startDate == other.startDate &&
endDate == other.endDate;
}
@override
int get hashCode {
return $jf($jc($jc(0, startDate.hashCode), endDate.hashCode));
}
@override
String toString() {
return (newBuiltValueToStringHelper('TaskTime')
..add('startDate', startDate)
..add('endDate', endDate))
.toString();
}
}
class TaskTimeBuilder implements Builder<TaskTime, TaskTimeBuilder> {
_$TaskTime _$v;
DateTime _startDate;
DateTime get startDate => _$this._startDate;
set startDate(DateTime startDate) => _$this._startDate = startDate;
DateTime _endDate;
DateTime get endDate => _$this._endDate;
set endDate(DateTime endDate) => _$this._endDate = endDate;
TaskTimeBuilder();
TaskTimeBuilder get _$this {
if (_$v != null) {
_startDate = _$v.startDate;
_endDate = _$v.endDate;
_$v = null;
}
return this;
}
@override
void replace(TaskTime other) {
if (other == null) {
throw new ArgumentError.notNull('other');
}
_$v = other as _$TaskTime;
}
@override
void update(void updates(TaskTimeBuilder b)) {
if (updates != null) updates(this);
}
@override
_$TaskTime build() {
final _$result =
_$v ?? new _$TaskTime._(startDate: startDate, endDate: endDate);
replace(_$result);
return _$result;
}
}
class _$TaskEntity extends TaskEntity { class _$TaskEntity extends TaskEntity {
@override @override
final String description; final String description;

View File

@ -10,7 +10,7 @@ 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.replace(editingTimeReducer(state.editingTime, action))
..selectedId = selectedIdReducer(state.selectedId, action)); ..selectedId = selectedIdReducer(state.selectedId, action));
} }

View File

@ -44,7 +44,7 @@ abstract class TaskUIState extends Object with EntityUIState implements Built<Ta
return _$TaskUIState._( return _$TaskUIState._(
listUIState: ListUIState(TaskFields.updatedAt, sortAscending: false), listUIState: ListUIState(TaskFields.updatedAt, sortAscending: false),
editing: TaskEntity(), editing: TaskEntity(),
//editingTIme: [], editingTime: TaskTime(),
selectedId: 0, selectedId: 0,
); );
} }

View File

@ -135,8 +135,8 @@ class _$TaskUIStateSerializer implements StructuredSerializer<TaskUIState> {
specifiedType: const FullType(TaskEntity)) as TaskEntity); specifiedType: const FullType(TaskEntity)) as TaskEntity);
break; break;
case 'editingTime': case 'editingTime':
result.editingTime = serializers.deserialize(value, result.editingTime.replace(serializers.deserialize(value,
specifiedType: const FullType(TaskTime)) as TaskTime; specifiedType: const FullType(TaskTime)) as TaskTime);
break; break;
case 'selectedId': case 'selectedId':
result.selectedId = serializers.deserialize(value, result.selectedId = serializers.deserialize(value,
@ -338,9 +338,11 @@ class TaskUIStateBuilder implements Builder<TaskUIState, TaskUIStateBuilder> {
TaskEntityBuilder get editing => _$this._editing ??= new TaskEntityBuilder(); TaskEntityBuilder get editing => _$this._editing ??= new TaskEntityBuilder();
set editing(TaskEntityBuilder editing) => _$this._editing = editing; set editing(TaskEntityBuilder editing) => _$this._editing = editing;
TaskTime _editingTime; TaskTimeBuilder _editingTime;
TaskTime get editingTime => _$this._editingTime; TaskTimeBuilder get editingTime =>
set editingTime(TaskTime editingTime) => _$this._editingTime = editingTime; _$this._editingTime ??= new TaskTimeBuilder();
set editingTime(TaskTimeBuilder editingTime) =>
_$this._editingTime = editingTime;
int _selectedId; int _selectedId;
int get selectedId => _$this._selectedId; int get selectedId => _$this._selectedId;
@ -357,7 +359,7 @@ class TaskUIStateBuilder implements Builder<TaskUIState, TaskUIStateBuilder> {
TaskUIStateBuilder get _$this { TaskUIStateBuilder get _$this {
if (_$v != null) { if (_$v != null) {
_editing = _$v.editing?.toBuilder(); _editing = _$v.editing?.toBuilder();
_editingTime = _$v.editingTime; _editingTime = _$v.editingTime?.toBuilder();
_selectedId = _$v.selectedId; _selectedId = _$v.selectedId;
_listUIState = _$v.listUIState?.toBuilder(); _listUIState = _$v.listUIState?.toBuilder();
_$v = null; _$v = null;
@ -385,7 +387,7 @@ class TaskUIStateBuilder implements Builder<TaskUIState, TaskUIStateBuilder> {
_$result = _$v ?? _$result = _$v ??
new _$TaskUIState._( new _$TaskUIState._(
editing: _editing?.build(), editing: _editing?.build(),
editingTime: editingTime, editingTime: _editingTime?.build(),
selectedId: selectedId, selectedId: selectedId,
listUIState: listUIState.build()); listUIState: listUIState.build());
} catch (_) { } catch (_) {
@ -393,6 +395,8 @@ class TaskUIStateBuilder implements Builder<TaskUIState, TaskUIStateBuilder> {
try { try {
_$failedField = 'editing'; _$failedField = 'editing';
_editing?.build(); _editing?.build();
_$failedField = 'editingTime';
_editingTime?.build();
_$failedField = 'listUIState'; _$failedField = 'listUIState';
listUIState.build(); listUIState.build();

View File

@ -101,6 +101,19 @@ class TimeEditDetailsState extends State<TimeEditDetails> {
TimeOfDay _startTime; TimeOfDay _startTime;
TimeOfDay _endTime; TimeOfDay _endTime;
@override
void didChangeDependencies() {
_date = widget.taskTime.startDate.toIso8601String();
_startTime = TimeOfDay(
hour: widget.taskTime.startDate.hour,
minute: widget.taskTime.startDate.minute);
_endTime = TimeOfDay(
hour: widget.taskTime.endDate.hour,
minute: widget.taskTime.endDate.minute);
super.didChangeDependencies();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
@ -155,7 +168,6 @@ class TimeEditDetailsState extends State<TimeEditDetails> {
icon: Icons.check_circle, icon: Icons.check_circle,
label: localization.done, label: localization.done,
onPressed: () { onPressed: () {
final origTaskTime = widget.taskTime;
final date = DateTime.parse(_date); final date = DateTime.parse(_date);
final taskTime = TaskTime( final taskTime = TaskTime(
startDate: DateTime(date.year, date.month, date.day, startDate: DateTime(date.year, date.month, date.day,