Dashboard

This commit is contained in:
unknown 2018-05-22 12:08:20 -07:00
parent 0820d09eab
commit c2cd649c38
3 changed files with 83 additions and 13 deletions

View File

@ -35,8 +35,24 @@ class BaseItemResponse extends Object with _$BaseItemResponseSerializerMixin {
class DashboardEntity extends Object with _$DashboardEntitySerializerMixin { class DashboardEntity extends Object with _$DashboardEntitySerializerMixin {
double paidToDate; double paidToDate;
int paidToDateCurrency;
double balances;
int balancesCurrency;
double averageInvoice;
int averageInvoiceCurrency;
int invoicesSent;
int activeClients;
DashboardEntity([this.paidToDate]); DashboardEntity([
this.paidToDate,
this.paidToDateCurrency,
this.balances,
this.balancesCurrency,
this.averageInvoice,
this.averageInvoiceCurrency,
this.invoicesSent,
this.activeClients,
]);
factory DashboardEntity.fromJson(Map<String, dynamic> json) => _$DashboardEntityFromJson(json); factory DashboardEntity.fromJson(Map<String, dynamic> json) => _$DashboardEntityFromJson(json);
} }

View File

@ -23,11 +23,35 @@ abstract class _$BaseItemResponseSerializerMixin {
} }
DashboardEntity _$DashboardEntityFromJson(Map<String, dynamic> json) => DashboardEntity _$DashboardEntityFromJson(Map<String, dynamic> json) =>
new DashboardEntity((json['paidToDate'] as num)?.toDouble()); new DashboardEntity(
(json['paidToDate'] as num)?.toDouble(),
json['paidToDateCurrency'] as int,
(json['balances'] as num)?.toDouble(),
json['balancesCurrency'] as int,
(json['averageInvoice'] as num)?.toDouble(),
json['averageInvoiceCurrency'] as int,
json['invoicesSent'] as int,
json['activeClients'] as int);
abstract class _$DashboardEntitySerializerMixin { abstract class _$DashboardEntitySerializerMixin {
double get paidToDate; double get paidToDate;
Map<String, dynamic> toJson() => <String, dynamic>{'paidToDate': paidToDate}; int get paidToDateCurrency;
double get balances;
int get balancesCurrency;
double get averageInvoice;
int get averageInvoiceCurrency;
int get invoicesSent;
int get activeClients;
Map<String, dynamic> toJson() => <String, dynamic>{
'paidToDate': paidToDate,
'paidToDateCurrency': paidToDateCurrency,
'balances': balances,
'balancesCurrency': balancesCurrency,
'averageInvoice': averageInvoice,
'averageInvoiceCurrency': averageInvoiceCurrency,
'invoicesSent': invoicesSent,
'activeClients': activeClients
};
} }
ProductEntity _$ProductEntityFromJson(Map<String, dynamic> json) => ProductEntity _$ProductEntityFromJson(Map<String, dynamic> json) =>

View File

@ -15,15 +15,45 @@ class DashboardPanels extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
print('building...'); return ListView(
return AppLoading(builder: (context, loading) { padding: EdgeInsets.only(left: 12.0, right: 12.0, top: 20.0),
return loading children: <Widget>[
? LoadingIndicator(key: NinjaKeys.productsLoading) DashboardPanel(
: _buildPanels(); 'Total Revenue', Icons.credit_card, this.dashboard.paidToDate),
}); DashboardPanel(
} 'Average Invoice', Icons.email, this.dashboard.averageInvoice),
DashboardPanel(
Text _buildPanels() { 'Outstanding', Icons.schedule, this.dashboard.balances),
return Text('Paid to Date: ' + dashboard.paidToDate.toString()); DashboardPanel(
'Invoices Sent', Icons.send, this.dashboard.invoicesSent, false),
DashboardPanel(
'Active Clients', Icons.people, this.dashboard.activeClients, false),
]
);
}
}
class DashboardPanel extends StatelessWidget {
DashboardPanel(this.title, this.icon, this.amount, [this.isMoney = true]);
final String title;
final IconData icon;
final num amount;
final bool isMoney;
@override
Widget build(BuildContext context) {
return Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
leading: Icon(this.icon),
title: Text(this.title),
trailing: Text(this.amount.toStringAsFixed(this.isMoney ? 2 : 0)),
),
],
),
);
} }
} }