Dashboard
This commit is contained in:
parent
5898bb0d21
commit
1c69b7ab8c
|
|
@ -101,8 +101,13 @@ class DashboardPanels extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _invoiceChart(BuildContext context) {
|
Widget _buildChart(
|
||||||
if (!viewModel.state.invoiceState.isLoaded) {
|
{BuildContext context,
|
||||||
|
String title,
|
||||||
|
List<ChartDataGroup> currentData,
|
||||||
|
List<ChartDataGroup> previousData,
|
||||||
|
bool isLoaded}) {
|
||||||
|
if (!isLoaded) {
|
||||||
return LoadingIndicator(useCard: true);
|
return LoadingIndicator(useCard: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -110,20 +115,8 @@ class DashboardPanels extends StatelessWidget {
|
||||||
final settings = viewModel.dashboardUIState;
|
final settings = viewModel.dashboardUIState;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
|
|
||||||
final data = memoizedChartInvoices(state.selectedCompany,
|
currentData.forEach((dataGroup) {
|
||||||
settings, state.invoiceState.map, state.clientState.map);
|
final index = currentData.indexOf(dataGroup);
|
||||||
|
|
||||||
List<ChartDataGroup> offsetData;
|
|
||||||
if (settings.enableComparison) {
|
|
||||||
offsetData = memoizedChartInvoices(
|
|
||||||
state.selectedCompany,
|
|
||||||
settings.rebuild((b) => b..offset += 1),
|
|
||||||
state.invoiceState.map,
|
|
||||||
state.clientState.map);
|
|
||||||
}
|
|
||||||
|
|
||||||
data.forEach((dataGroup) {
|
|
||||||
final index = data.indexOf(dataGroup);
|
|
||||||
dataGroup.chartSeries = <Series<dynamic, DateTime>>[
|
dataGroup.chartSeries = <Series<dynamic, DateTime>>[
|
||||||
charts.Series<ChartMoneyData, DateTime>(
|
charts.Series<ChartMoneyData, DateTime>(
|
||||||
domainFn: (ChartMoneyData chartData, _) => chartData.date,
|
domainFn: (ChartMoneyData chartData, _) => chartData.date,
|
||||||
|
|
@ -131,25 +124,23 @@ class DashboardPanels extends StatelessWidget {
|
||||||
colorFn: (ChartMoneyData chartData, _) =>
|
colorFn: (ChartMoneyData chartData, _) =>
|
||||||
charts.MaterialPalette.blue.shadeDefault,
|
charts.MaterialPalette.blue.shadeDefault,
|
||||||
id: DashboardChart.PERIOD_CURRENT,
|
id: DashboardChart.PERIOD_CURRENT,
|
||||||
displayName: settings.enableComparison
|
displayName: settings.enableComparison ? localization.current : title,
|
||||||
? localization.current
|
|
||||||
: localization.invoices,
|
|
||||||
data: dataGroup.rawSeries,
|
data: dataGroup.rawSeries,
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
if (settings.enableComparison) {
|
if (settings.enableComparison) {
|
||||||
final List<ChartMoneyData> previousData = [];
|
final List<ChartMoneyData> previous = [];
|
||||||
final currentSeries = dataGroup.rawSeries;
|
final currentSeries = dataGroup.rawSeries;
|
||||||
final offsetSeries = offsetData[index].rawSeries;
|
final previousSeries = previousData[index].rawSeries;
|
||||||
|
|
||||||
dataGroup.previousTotal = offsetData[index].total;
|
dataGroup.previousTotal = previousData[index].total;
|
||||||
|
|
||||||
for (int i = 0;
|
for (int i = 0;
|
||||||
i < min(currentSeries.length, offsetSeries.length);
|
i < min(currentSeries.length, previousSeries.length);
|
||||||
i++) {
|
i++) {
|
||||||
previousData.add(ChartMoneyData(currentSeries[i].date,
|
previous.add(
|
||||||
offsetSeries[i].amount));
|
ChartMoneyData(currentSeries[i].date, previousSeries[i].amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
dataGroup.chartSeries.add(
|
dataGroup.chartSeries.add(
|
||||||
|
|
@ -160,40 +151,59 @@ class DashboardPanels extends StatelessWidget {
|
||||||
charts.MaterialPalette.gray.shadeDefault,
|
charts.MaterialPalette.gray.shadeDefault,
|
||||||
id: DashboardChart.PERIOD_PREVIOUS,
|
id: DashboardChart.PERIOD_PREVIOUS,
|
||||||
displayName: localization.previous,
|
displayName: localization.previous,
|
||||||
data: previousData,
|
data: previous,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return DashboardChart(
|
return DashboardChart(
|
||||||
data: data,
|
data: currentData,
|
||||||
title: localization.invoices,
|
title: title,
|
||||||
currencyId: settings.currencyId > 0
|
currencyId: settings.currencyId > 0
|
||||||
? settings.currencyId
|
? settings.currencyId
|
||||||
: state.selectedCompany.currencyId,
|
: state.selectedCompany.currencyId,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _paymentChart(BuildContext context) {
|
Widget _invoiceChart(BuildContext context) {
|
||||||
if (!viewModel.state.paymentState.isLoaded) {
|
final isLoaded = viewModel.state.invoiceState.isLoaded;
|
||||||
return LoadingIndicator(useCard: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
final localization = AppLocalization.of(context);
|
|
||||||
final settings = viewModel.dashboardUIState;
|
final settings = viewModel.dashboardUIState;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
|
final currentData = memoizedChartInvoices(state.selectedCompany, settings,
|
||||||
|
state.invoiceState.map, state.clientState.map);
|
||||||
|
|
||||||
final data = memoizedChartPayments(
|
List<ChartDataGroup> previousData;
|
||||||
|
if (settings.enableComparison) {
|
||||||
|
previousData = memoizedChartInvoices(
|
||||||
|
state.selectedCompany,
|
||||||
|
settings.rebuild((b) => b..offset += 1),
|
||||||
|
state.invoiceState.map,
|
||||||
|
state.clientState.map);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _buildChart(
|
||||||
|
context: context,
|
||||||
|
currentData: currentData,
|
||||||
|
previousData: previousData,
|
||||||
|
isLoaded: isLoaded,
|
||||||
|
title: AppLocalization.of(context).invoices);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _paymentChart(BuildContext context) {
|
||||||
|
final isLoaded = viewModel.state.paymentState.isLoaded;
|
||||||
|
final settings = viewModel.dashboardUIState;
|
||||||
|
final state = viewModel.state;
|
||||||
|
final currentData = memoizedChartPayments(
|
||||||
state.selectedCompany,
|
state.selectedCompany,
|
||||||
settings,
|
settings,
|
||||||
state.invoiceState.map,
|
state.invoiceState.map,
|
||||||
state.clientState.map,
|
state.clientState.map,
|
||||||
viewModel.state.paymentState.map);
|
viewModel.state.paymentState.map);
|
||||||
|
|
||||||
List<ChartDataGroup> offsetData;
|
List<ChartDataGroup> previousData;
|
||||||
if (settings.enableComparison) {
|
if (settings.enableComparison) {
|
||||||
offsetData = memoizedChartPayments(
|
previousData = memoizedChartPayments(
|
||||||
state.selectedCompany,
|
state.selectedCompany,
|
||||||
settings.rebuild((b) => b..offset += 1),
|
settings.rebuild((b) => b..offset += 1),
|
||||||
state.invoiceState.map,
|
state.invoiceState.map,
|
||||||
|
|
@ -201,135 +211,36 @@ class DashboardPanels extends StatelessWidget {
|
||||||
viewModel.state.paymentState.map);
|
viewModel.state.paymentState.map);
|
||||||
}
|
}
|
||||||
|
|
||||||
data.forEach((dataGroup) {
|
return _buildChart(
|
||||||
final index = data.indexOf(dataGroup);
|
context: context,
|
||||||
dataGroup.chartSeries = <Series<dynamic, DateTime>>[
|
currentData: currentData,
|
||||||
charts.Series<ChartMoneyData, DateTime>(
|
previousData: previousData,
|
||||||
domainFn: (ChartMoneyData chartData, _) => chartData.date,
|
isLoaded: isLoaded,
|
||||||
measureFn: (ChartMoneyData chartData, _) => chartData.amount,
|
title: AppLocalization.of(context).payments);
|
||||||
colorFn: (ChartMoneyData chartData, _) =>
|
|
||||||
charts.MaterialPalette.blue.shadeDefault,
|
|
||||||
id: DashboardChart.PERIOD_CURRENT,
|
|
||||||
displayName: settings.enableComparison
|
|
||||||
? localization.current
|
|
||||||
: localization.payments,
|
|
||||||
data: dataGroup.rawSeries,
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
if (settings.enableComparison) {
|
|
||||||
final List<ChartMoneyData> previousData = [];
|
|
||||||
final currentSeries = dataGroup.rawSeries;
|
|
||||||
final offsetSeries = offsetData[index].rawSeries;
|
|
||||||
|
|
||||||
dataGroup.previousTotal = offsetData[index].total;
|
|
||||||
|
|
||||||
for (int i = 0;
|
|
||||||
i < min(currentSeries.length, offsetSeries.length);
|
|
||||||
i++) {
|
|
||||||
previousData.add(ChartMoneyData(currentSeries[i].date,
|
|
||||||
offsetSeries[i].amount));
|
|
||||||
}
|
|
||||||
|
|
||||||
dataGroup.chartSeries.add(
|
|
||||||
charts.Series<ChartMoneyData, DateTime>(
|
|
||||||
domainFn: (ChartMoneyData chartData, _) => chartData.date,
|
|
||||||
measureFn: (ChartMoneyData chartData, _) => chartData.amount,
|
|
||||||
colorFn: (ChartMoneyData chartData, _) =>
|
|
||||||
charts.MaterialPalette.gray.shadeDefault,
|
|
||||||
id: DashboardChart.PERIOD_PREVIOUS,
|
|
||||||
displayName: localization.previous,
|
|
||||||
data: previousData,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return DashboardChart(
|
|
||||||
data: data,
|
|
||||||
title: localization.payments,
|
|
||||||
currencyId: settings.currencyId > 0
|
|
||||||
? settings.currencyId
|
|
||||||
: state.selectedCompany.currencyId,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _quoteChart(BuildContext context) {
|
Widget _quoteChart(BuildContext context) {
|
||||||
if (!viewModel.state.quoteState.isLoaded) {
|
final isLoaded = viewModel.state.quoteState.isLoaded;
|
||||||
return LoadingIndicator(useCard: true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (viewModel.state.quoteState.list.isEmpty) {
|
|
||||||
return Container();
|
|
||||||
}
|
|
||||||
|
|
||||||
final localization = AppLocalization.of(context);
|
|
||||||
final settings = viewModel.dashboardUIState;
|
final settings = viewModel.dashboardUIState;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
|
final currentData = memoizedChartQuotes(state.selectedCompany, settings,
|
||||||
|
state.quoteState.map, state.clientState.map);
|
||||||
|
|
||||||
final data = memoizedChartQuotes(state.selectedCompany,
|
List<ChartDataGroup> previousData;
|
||||||
settings, state.quoteState.map, state.clientState.map);
|
|
||||||
|
|
||||||
List<ChartDataGroup> offsetData;
|
|
||||||
if (settings.enableComparison) {
|
if (settings.enableComparison) {
|
||||||
offsetData = memoizedChartQuotes(
|
previousData = memoizedChartQuotes(
|
||||||
state.selectedCompany,
|
state.selectedCompany,
|
||||||
settings.rebuild((b) => b..offset += 1),
|
settings.rebuild((b) => b..offset += 1),
|
||||||
state.quoteState.map,
|
state.quoteState.map,
|
||||||
state.clientState.map);
|
state.clientState.map);
|
||||||
}
|
}
|
||||||
|
|
||||||
data.forEach((dataGroup) {
|
return _buildChart(
|
||||||
final index = data.indexOf(dataGroup);
|
context: context,
|
||||||
dataGroup.chartSeries = <Series<dynamic, DateTime>>[
|
currentData: currentData,
|
||||||
charts.Series<ChartMoneyData, DateTime>(
|
previousData: previousData,
|
||||||
domainFn: (ChartMoneyData chartData, _) => chartData.date,
|
isLoaded: isLoaded,
|
||||||
measureFn: (ChartMoneyData chartData, _) => chartData.amount,
|
title: AppLocalization.of(context).quotes);
|
||||||
colorFn: (ChartMoneyData chartData, _) =>
|
|
||||||
charts.MaterialPalette.blue.shadeDefault,
|
|
||||||
id: DashboardChart.PERIOD_CURRENT,
|
|
||||||
displayName: settings.enableComparison
|
|
||||||
? localization.current
|
|
||||||
: localization.quotes,
|
|
||||||
data: dataGroup.rawSeries,
|
|
||||||
)
|
|
||||||
];
|
|
||||||
|
|
||||||
if (settings.enableComparison) {
|
|
||||||
final List<ChartMoneyData> previousData = [];
|
|
||||||
final currentSeries = dataGroup.rawSeries;
|
|
||||||
final offsetSeries = offsetData[index].rawSeries;
|
|
||||||
|
|
||||||
dataGroup.previousTotal = offsetData[index].total;
|
|
||||||
|
|
||||||
for (int i = 0;
|
|
||||||
i < min(currentSeries.length, offsetSeries.length);
|
|
||||||
i++) {
|
|
||||||
previousData.add(ChartMoneyData(currentSeries[i].date,
|
|
||||||
offsetSeries[i].amount));
|
|
||||||
}
|
|
||||||
|
|
||||||
dataGroup.chartSeries.add(
|
|
||||||
charts.Series<ChartMoneyData, DateTime>(
|
|
||||||
domainFn: (ChartMoneyData chartData, _) => chartData.date,
|
|
||||||
measureFn: (ChartMoneyData chartData, _) => chartData.amount,
|
|
||||||
colorFn: (ChartMoneyData chartData, _) =>
|
|
||||||
charts.MaterialPalette.gray.shadeDefault,
|
|
||||||
id: DashboardChart.PERIOD_PREVIOUS,
|
|
||||||
displayName: localization.previous,
|
|
||||||
data: previousData,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return DashboardChart(
|
|
||||||
data: data,
|
|
||||||
title: localization.quotes,
|
|
||||||
currencyId: settings.currencyId > 0
|
|
||||||
? settings.currencyId
|
|
||||||
: state.selectedCompany.currencyId,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue