From 044268c603abc89fb99a013211058faeefff3af6 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 16 Jan 2020 19:04:09 +0200 Subject: [PATCH] Datatables --- lib/ui/app/tables/entity_datatable.dart | 4 +-- lib/ui/client/client_list.dart | 5 ++- lib/ui/expense/expense_list.dart | 7 +++- lib/ui/invoice/invoice_list.dart | 48 ++++++++++++------------- lib/ui/payment/payment_list.dart | 7 +++- lib/ui/product/product_list.dart | 5 ++- lib/ui/project/project_list.dart | 6 +++- lib/ui/task/task_list.dart | 6 +++- lib/ui/vendor/vendor_list.dart | 6 +++- 9 files changed, 61 insertions(+), 33 deletions(-) diff --git a/lib/ui/app/tables/entity_datatable.dart b/lib/ui/app/tables/entity_datatable.dart index 560fd1738..4aa2d0cc1 100644 --- a/lib/ui/app/tables/entity_datatable.dart +++ b/lib/ui/app/tables/entity_datatable.dart @@ -92,7 +92,7 @@ class EntityDataTableSource extends DataTableSource { } class DatatableHeader extends StatelessWidget { - const DatatableHeader({this.entityType, this.onClearPressed}); + const DatatableHeader({@required this.entityType, this.onClearPressed}); final EntityType entityType; final Function() onClearPressed; @@ -103,7 +103,7 @@ class DatatableHeader extends StatelessWidget { final listUIState = state.getListState(entityType); String message = ''; - if (listUIState.filterEntityId != null) { + if (onClearPressed != null && listUIState.filterEntityId != null) { final entity = state.getEntityMap( listUIState.filterEntityType)[listUIState.filterEntityId]; message = ListFilterMessage.getMessage( diff --git a/lib/ui/client/client_list.dart b/lib/ui/client/client_list.dart index fdf2be6e4..734269fc9 100644 --- a/lib/ui/client/client_list.dart +++ b/lib/ui/client/client_list.dart @@ -152,7 +152,10 @@ class _ClientListState extends State { store.dispatch(SortClients(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.client, + onClearPressed: viewModel.onClearEntityFilterPressed, + ), ), )); } diff --git a/lib/ui/expense/expense_list.dart b/lib/ui/expense/expense_list.dart index 09513c2f6..abea99ce2 100644 --- a/lib/ui/expense/expense_list.dart +++ b/lib/ui/expense/expense_list.dart @@ -190,7 +190,12 @@ class _ExpenseListState extends State { store.dispatch(SortExpenses(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.expense, + onClearPressed: widget + .viewModel.onClearEntityFilterPressed, + ), + ), )), ), diff --git a/lib/ui/invoice/invoice_list.dart b/lib/ui/invoice/invoice_list.dart index a1ebf39fa..dfa77df3a 100644 --- a/lib/ui/invoice/invoice_list.dart +++ b/lib/ui/invoice/invoice_list.dart @@ -172,30 +172,30 @@ class _EntityListState extends State { child: Padding( padding: const EdgeInsets.all(12), child: PaginatedDataTable( - onSelectAll: (value) { - final invoices = viewModel.invoiceList - .map( - (invoiceId) => viewModel.invoiceMap[invoiceId]) - .where((invoice) => - value != listUIState.isSelected(invoice.id)) - .toList(); - handleInvoiceAction( - context, invoices, EntityAction.toggleMultiselect); - }, - columns: [ - if (!listUIState.isInMultiselect()) - DataColumn(label: SizedBox()), - ...viewModel.tableColumns.map((field) => DataColumn( - label: Text(AppLocalization.of(context).lookup(field)), - numeric: EntityPresenter.isFieldNumeric(field), - onSort: (int columnIndex, bool ascending) => - store.dispatch(SortInvoices(field)))), - ], - source: dataTableSource, - header: DatatableHeader( - entityType: EntityType.invoice, - onClearPressed: viewModel.onClearEntityFilterPressed, - )), + onSelectAll: (value) { + final invoices = viewModel.invoiceList + .map( + (invoiceId) => viewModel.invoiceMap[invoiceId]) + .where( + (invoice) => value != listUIState.isSelected(invoice.id)) + .toList(); + handleInvoiceAction( + context, invoices, EntityAction.toggleMultiselect); + }, + columns: [ + if (!listUIState.isInMultiselect()) DataColumn(label: SizedBox()), + ...viewModel.tableColumns.map((field) => DataColumn( + label: Text(AppLocalization.of(context).lookup(field)), + numeric: EntityPresenter.isFieldNumeric(field), + onSort: (int columnIndex, bool ascending) => + store.dispatch(SortInvoices(field)))), + ], + source: dataTableSource, + header: DatatableHeader( + entityType: EntityType.invoice, + onClearPressed: viewModel.onClearEntityFilterPressed, + ), + ), )); } }; diff --git a/lib/ui/payment/payment_list.dart b/lib/ui/payment/payment_list.dart index 6f361af1f..ac57f5552 100644 --- a/lib/ui/payment/payment_list.dart +++ b/lib/ui/payment/payment_list.dart @@ -186,7 +186,12 @@ class _PaymentListState extends State { store.dispatch(SortPayments(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.payment, + onClearPressed: widget + .viewModel.onClearEntityFilterPressed, + ), + ), )); } diff --git a/lib/ui/product/product_list.dart b/lib/ui/product/product_list.dart index 78eb660bc..7809e7e7c 100644 --- a/lib/ui/product/product_list.dart +++ b/lib/ui/product/product_list.dart @@ -154,7 +154,10 @@ class _ProductListState extends State { store.dispatch(SortProducts(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.product, + ), + ), )); } diff --git a/lib/ui/project/project_list.dart b/lib/ui/project/project_list.dart index 6ae96380b..3e6fc48c9 100644 --- a/lib/ui/project/project_list.dart +++ b/lib/ui/project/project_list.dart @@ -189,7 +189,11 @@ class _ProjectListState extends State { SortProjects(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.project, + onClearPressed: widget + .viewModel.onClearEntityFilterPressed, + ), ), )), ), diff --git a/lib/ui/task/task_list.dart b/lib/ui/task/task_list.dart index d2b8488cf..3b64643d7 100644 --- a/lib/ui/task/task_list.dart +++ b/lib/ui/task/task_list.dart @@ -185,7 +185,11 @@ class _TaskListState extends State { .dispatch(SortTasks(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.task, + onClearPressed: widget + .viewModel.onClearEntityFilterPressed, + ), ), )), ), diff --git a/lib/ui/vendor/vendor_list.dart b/lib/ui/vendor/vendor_list.dart index 3ae999eaa..9c56b6e0a 100644 --- a/lib/ui/vendor/vendor_list.dart +++ b/lib/ui/vendor/vendor_list.dart @@ -173,7 +173,11 @@ class _VendorListState extends State { SortVendors(field)))), ], source: dataTableSource, - header: SizedBox(), + header: DatatableHeader( + entityType: EntityType.vendor, + onClearPressed: widget + .viewModel.onClearEntityFilterPressed, + ), ), )), ),