Reports
This commit is contained in:
parent
a5feba40c6
commit
fca0ea24db
|
|
@ -21,6 +21,7 @@ import 'package:invoiceninja_flutter/redux/static/static_state.dart';
|
|||
import 'package:invoiceninja_flutter/redux/auth/auth_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/reports/reports_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/product/product_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/client/client_state.dart';
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/dashboard_model.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
|
||||
class ViewReports extends AbstractNavigatorAction implements PersistUI {
|
||||
|
|
@ -11,3 +12,19 @@ class ViewReports extends AbstractNavigatorAction implements PersistUI {
|
|||
final bool force;
|
||||
final String report;
|
||||
}
|
||||
|
||||
class UpdateReportSettings implements PersistUI {
|
||||
UpdateReportSettings({
|
||||
this.report,
|
||||
this.dateRange,
|
||||
this.customStartDate,
|
||||
this.customEndDate,
|
||||
this.currencyId,
|
||||
});
|
||||
|
||||
final String report;
|
||||
final DateRange dateRange;
|
||||
final String customStartDate;
|
||||
final String customEndDate;
|
||||
final String currencyId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
import 'package:invoiceninja_flutter/redux/company/company_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/reports/reports_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/reports/reports_state.dart';
|
||||
|
||||
ReportsUIState reportsUIReducer(ReportsUIState state, dynamic action) {
|
||||
if (action is UpdateReportSettings) {
|
||||
return state.rebuild((b) => b
|
||||
..report = action.report ?? state.report
|
||||
..dateRange = action.dateRange ?? state.dateRange
|
||||
..customStartDate = action.customStartDate ?? state.customStartDate
|
||||
..customEndDate = action.customEndDate ?? state.customEndDate
|
||||
..currencyId = action.currencyId ?? state.currencyId);
|
||||
} else if (action is SelectCompany) {
|
||||
//return state.rebuild((b) => b..currencyId = action.company.jcurrencyId);
|
||||
// TODO re-enable
|
||||
return state;
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ abstract class ReportsUIState
|
|||
implements Built<ReportsUIState, ReportsUIStateBuilder> {
|
||||
factory ReportsUIState() {
|
||||
return _$ReportsUIState._(
|
||||
report: kReportActivity,
|
||||
dateRange: DateRange.last30Days,
|
||||
customStartDate: '',
|
||||
customEndDate: convertDateTimeToSqlDate(),
|
||||
|
|
@ -19,6 +20,8 @@ abstract class ReportsUIState
|
|||
|
||||
ReportsUIState._();
|
||||
|
||||
String get report;
|
||||
|
||||
DateRange get dateRange;
|
||||
|
||||
String get customStartDate;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ class _$ReportsUIStateSerializer
|
|||
Iterable<Object> serialize(Serializers serializers, ReportsUIState object,
|
||||
{FullType specifiedType = FullType.unspecified}) {
|
||||
final result = <Object>[
|
||||
'report',
|
||||
serializers.serialize(object.report,
|
||||
specifiedType: const FullType(String)),
|
||||
'dateRange',
|
||||
serializers.serialize(object.dateRange,
|
||||
specifiedType: const FullType(DateRange)),
|
||||
|
|
@ -49,6 +52,10 @@ class _$ReportsUIStateSerializer
|
|||
iterator.moveNext();
|
||||
final dynamic value = iterator.current;
|
||||
switch (key) {
|
||||
case 'report':
|
||||
result.report = serializers.deserialize(value,
|
||||
specifiedType: const FullType(String)) as String;
|
||||
break;
|
||||
case 'dateRange':
|
||||
result.dateRange = serializers.deserialize(value,
|
||||
specifiedType: const FullType(DateRange)) as DateRange;
|
||||
|
|
@ -73,6 +80,8 @@ class _$ReportsUIStateSerializer
|
|||
}
|
||||
|
||||
class _$ReportsUIState extends ReportsUIState {
|
||||
@override
|
||||
final String report;
|
||||
@override
|
||||
final DateRange dateRange;
|
||||
@override
|
||||
|
|
@ -86,11 +95,15 @@ class _$ReportsUIState extends ReportsUIState {
|
|||
(new ReportsUIStateBuilder()..update(updates)).build();
|
||||
|
||||
_$ReportsUIState._(
|
||||
{this.dateRange,
|
||||
{this.report,
|
||||
this.dateRange,
|
||||
this.customStartDate,
|
||||
this.customEndDate,
|
||||
this.currencyId})
|
||||
: super._() {
|
||||
if (report == null) {
|
||||
throw new BuiltValueNullFieldError('ReportsUIState', 'report');
|
||||
}
|
||||
if (dateRange == null) {
|
||||
throw new BuiltValueNullFieldError('ReportsUIState', 'dateRange');
|
||||
}
|
||||
|
|
@ -117,6 +130,7 @@ class _$ReportsUIState extends ReportsUIState {
|
|||
bool operator ==(Object other) {
|
||||
if (identical(other, this)) return true;
|
||||
return other is ReportsUIState &&
|
||||
report == other.report &&
|
||||
dateRange == other.dateRange &&
|
||||
customStartDate == other.customStartDate &&
|
||||
customEndDate == other.customEndDate &&
|
||||
|
|
@ -126,7 +140,9 @@ class _$ReportsUIState extends ReportsUIState {
|
|||
@override
|
||||
int get hashCode {
|
||||
return $jf($jc(
|
||||
$jc($jc($jc(0, dateRange.hashCode), customStartDate.hashCode),
|
||||
$jc(
|
||||
$jc($jc($jc(0, report.hashCode), dateRange.hashCode),
|
||||
customStartDate.hashCode),
|
||||
customEndDate.hashCode),
|
||||
currencyId.hashCode));
|
||||
}
|
||||
|
|
@ -134,6 +150,7 @@ class _$ReportsUIState extends ReportsUIState {
|
|||
@override
|
||||
String toString() {
|
||||
return (newBuiltValueToStringHelper('ReportsUIState')
|
||||
..add('report', report)
|
||||
..add('dateRange', dateRange)
|
||||
..add('customStartDate', customStartDate)
|
||||
..add('customEndDate', customEndDate)
|
||||
|
|
@ -146,6 +163,10 @@ class ReportsUIStateBuilder
|
|||
implements Builder<ReportsUIState, ReportsUIStateBuilder> {
|
||||
_$ReportsUIState _$v;
|
||||
|
||||
String _report;
|
||||
String get report => _$this._report;
|
||||
set report(String report) => _$this._report = report;
|
||||
|
||||
DateRange _dateRange;
|
||||
DateRange get dateRange => _$this._dateRange;
|
||||
set dateRange(DateRange dateRange) => _$this._dateRange = dateRange;
|
||||
|
|
@ -168,6 +189,7 @@ class ReportsUIStateBuilder
|
|||
|
||||
ReportsUIStateBuilder get _$this {
|
||||
if (_$v != null) {
|
||||
_report = _$v.report;
|
||||
_dateRange = _$v.dateRange;
|
||||
_customStartDate = _$v.customStartDate;
|
||||
_customEndDate = _$v.customEndDate;
|
||||
|
|
@ -194,6 +216,7 @@ class ReportsUIStateBuilder
|
|||
_$ReportsUIState build() {
|
||||
final _$result = _$v ??
|
||||
new _$ReportsUIState._(
|
||||
report: report,
|
||||
dateRange: dateRange,
|
||||
customStartDate: customStartDate,
|
||||
customEndDate: customEndDate,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import 'package:invoiceninja_flutter/redux/company/company_state.dart';
|
|||
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_reducer.dart';
|
||||
import 'package:invoiceninja_flutter/redux/group/group_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/reports/reports_reducer.dart';
|
||||
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_state.dart';
|
||||
|
|
@ -47,6 +48,7 @@ UIState uiReducer(UIState state, dynamic action) {
|
|||
..invoiceUIState.replace(invoiceUIReducer(state.invoiceUIState, action))
|
||||
..dashboardUIState
|
||||
.replace(dashboardUIReducer(state.dashboardUIState, action))
|
||||
..reportsUIState.replace(reportsUIReducer(state.reportsUIState, action))
|
||||
// STARTER: reducer - do not remove comment
|
||||
..userUIState.replace(userUIReducer(state.userUIState, action))
|
||||
..taxRateUIState.replace(taxRateUIReducer(state.taxRateUIState, action))
|
||||
|
|
|
|||
|
|
@ -53,8 +53,9 @@ class ReportsScreen extends StatelessWidget {
|
|||
children: <Widget>[
|
||||
AppDropdownButton(
|
||||
labelText: localization.report,
|
||||
value: null,
|
||||
onChanged: (dynamic value) => null,
|
||||
value: state.uiState.reportsUIState.report,
|
||||
onChanged: (dynamic value) =>
|
||||
viewModel.onSettingsChanged(value),
|
||||
items: [
|
||||
kReportActivity,
|
||||
kReportAging,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/reports/reports_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/reports/reports_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/reports/reports_screen.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
|
||||
|
|
@ -25,14 +27,24 @@ class ReportsScreenBuilder extends StatelessWidget {
|
|||
}
|
||||
|
||||
class ReportsScreenVM {
|
||||
ReportsScreenVM({@required this.state});
|
||||
ReportsScreenVM({
|
||||
@required this.state,
|
||||
@required this.onSettingsChanged,
|
||||
});
|
||||
|
||||
final AppState state;
|
||||
final Function(String report) onSettingsChanged;
|
||||
|
||||
static ReportsScreenVM fromStore(Store<AppState> store) {
|
||||
final state = store.state;
|
||||
|
||||
return ReportsScreenVM(
|
||||
state: state,
|
||||
onSettingsChanged: (String report) {
|
||||
store.dispatch(UpdateReportSettings(
|
||||
report: report,
|
||||
));
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue