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(TaskListResponse.serializer)
..add(TaskState.serializer)
..add(TaskTime.serializer)
..add(TaskUIState.serializer)
..add(TaxRateEntity.serializer)
..add(TimezoneEntity.serializer)

View File

@ -13,7 +13,7 @@ part 'task_model.g.dart';
abstract class TaskListResponse
implements Built<TaskListResponse, TaskListResponseBuilder> {
factory TaskListResponse([void updates(TaskListResponseBuilder b)]) =
_$TaskListResponse;
_$TaskListResponse;
TaskListResponse._();
@ -26,7 +26,7 @@ abstract class TaskListResponse
abstract class TaskItemResponse
implements Built<TaskItemResponse, TaskItemResponseBuilder> {
factory TaskItemResponse([void updates(TaskItemResponseBuilder b)]) =
_$TaskItemResponse;
_$TaskItemResponse;
TaskItemResponse._();
@ -52,18 +52,32 @@ class TaskFields {
static const String isDeleted = 'isDeleted';
}
class TaskTime {
TaskTime({this.startDate, this.endDate});
final DateTime startDate;
final DateTime endDate;
abstract class TaskTime implements Built<TaskTime, TaskTimeBuilder> {
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);
List<dynamic> get asList => <dynamic>[
List<dynamic> get asList =>
<dynamic>[
(startDate.millisecondsSinceEpoch / 1000).floor(),
endDate != null ? (endDate.millisecondsSinceEpoch / 1000).floor() : 0
];
static Serializer<TaskTime> get serializer => _$taskTimeSerializer;
}
abstract class TaskEntity extends Object
@ -78,7 +92,9 @@ abstract class TaskEntity extends Object
clientId: null,
projectId: null,
timeLog: isRunning
? '[[${(DateTime.now().millisecondsSinceEpoch / 1000).floor()},0]]'
? '[[${(DateTime
.now()
.millisecondsSinceEpoch / 1000).floor()},0]]'
: '',
isRunning: false,
customValue1: '',
@ -119,7 +135,7 @@ abstract class TaskEntity extends Object
final taskTime = TaskTime(
startDate: convertTimestampToDate(startDate),
endDate:
endDate > 0 ? convertTimestampToDate(endDate) : DateTime.now());
endDate > 0 ? convertTimestampToDate(endDate) : DateTime.now());
details.add(taskTime);
});
@ -129,7 +145,7 @@ abstract class TaskEntity extends Object
String addTaskTime(TaskTime time) {
final List<dynamic> taskTimes =
timeLog.isNotEmpty ? jsonDecode(timeLog) : <dynamic>[];
timeLog.isNotEmpty ? jsonDecode(timeLog) : <dynamic>[];
taskTimes.add(time.asList);
return jsonEncode(taskTimes);

View File

@ -23,6 +23,7 @@ Serializer<TaskListResponse> _$taskListResponseSerializer =
new _$TaskListResponseSerializer();
Serializer<TaskItemResponse> _$taskItemResponseSerializer =
new _$TaskItemResponseSerializer();
Serializer<TaskTime> _$taskTimeSerializer = new _$TaskTimeSerializer();
Serializer<TaskEntity> _$taskEntitySerializer = new _$TaskEntitySerializer();
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> {
@override
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 {
@override
final String description;

View File

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

View File

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

View File

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

View File

@ -101,6 +101,19 @@ class TimeEditDetailsState extends State<TimeEditDetails> {
TimeOfDay _startTime;
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
Widget build(BuildContext context) {
final localization = AppLocalization.of(context);
@ -155,7 +168,6 @@ class TimeEditDetailsState extends State<TimeEditDetails> {
icon: Icons.check_circle,
label: localization.done,
onPressed: () {
final origTaskTime = widget.taskTime;
final date = DateTime.parse(_date);
final taskTime = TaskTime(
startDate: DateTime(date.year, date.month, date.day,