Tasks
This commit is contained in:
parent
27b086313e
commit
49511fd1ca
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue