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