Datatables

This commit is contained in:
Hillel Coren 2020-01-16 19:04:09 +02:00
parent ce5a5d1aea
commit 044268c603
9 changed files with 61 additions and 33 deletions

View File

@ -92,7 +92,7 @@ class EntityDataTableSource extends DataTableSource {
} }
class DatatableHeader extends StatelessWidget { class DatatableHeader extends StatelessWidget {
const DatatableHeader({this.entityType, this.onClearPressed}); const DatatableHeader({@required this.entityType, this.onClearPressed});
final EntityType entityType; final EntityType entityType;
final Function() onClearPressed; final Function() onClearPressed;
@ -103,7 +103,7 @@ class DatatableHeader extends StatelessWidget {
final listUIState = state.getListState(entityType); final listUIState = state.getListState(entityType);
String message = ''; String message = '';
if (listUIState.filterEntityId != null) { if (onClearPressed != null && listUIState.filterEntityId != null) {
final entity = state.getEntityMap( final entity = state.getEntityMap(
listUIState.filterEntityType)[listUIState.filterEntityId]; listUIState.filterEntityType)[listUIState.filterEntityId];
message = ListFilterMessage.getMessage( message = ListFilterMessage.getMessage(

View File

@ -152,7 +152,10 @@ class _ClientListState extends State<ClientList> {
store.dispatch(SortClients(field)))), store.dispatch(SortClients(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.client,
onClearPressed: viewModel.onClearEntityFilterPressed,
),
), ),
)); ));
} }

View File

@ -190,7 +190,12 @@ class _ExpenseListState extends State<ExpenseList> {
store.dispatch(SortExpenses(field)))), store.dispatch(SortExpenses(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.expense,
onClearPressed: widget
.viewModel.onClearEntityFilterPressed,
),
), ),
)), )),
), ),

View File

@ -172,30 +172,30 @@ class _EntityListState extends State<InvoiceList> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
child: PaginatedDataTable( child: PaginatedDataTable(
onSelectAll: (value) { onSelectAll: (value) {
final invoices = viewModel.invoiceList final invoices = viewModel.invoiceList
.map<InvoiceEntity>( .map<InvoiceEntity>(
(invoiceId) => viewModel.invoiceMap[invoiceId]) (invoiceId) => viewModel.invoiceMap[invoiceId])
.where((invoice) => .where(
value != listUIState.isSelected(invoice.id)) (invoice) => value != listUIState.isSelected(invoice.id))
.toList(); .toList();
handleInvoiceAction( handleInvoiceAction(
context, invoices, EntityAction.toggleMultiselect); context, invoices, EntityAction.toggleMultiselect);
}, },
columns: [ columns: [
if (!listUIState.isInMultiselect()) if (!listUIState.isInMultiselect()) DataColumn(label: SizedBox()),
DataColumn(label: SizedBox()), ...viewModel.tableColumns.map((field) => DataColumn(
...viewModel.tableColumns.map((field) => DataColumn( label: Text(AppLocalization.of(context).lookup(field)),
label: Text(AppLocalization.of(context).lookup(field)), numeric: EntityPresenter.isFieldNumeric(field),
numeric: EntityPresenter.isFieldNumeric(field), onSort: (int columnIndex, bool ascending) =>
onSort: (int columnIndex, bool ascending) => store.dispatch(SortInvoices(field)))),
store.dispatch(SortInvoices(field)))), ],
], source: dataTableSource,
source: dataTableSource, header: DatatableHeader(
header: DatatableHeader( entityType: EntityType.invoice,
entityType: EntityType.invoice, onClearPressed: viewModel.onClearEntityFilterPressed,
onClearPressed: viewModel.onClearEntityFilterPressed, ),
)), ),
)); ));
} }
}; };

View File

@ -186,7 +186,12 @@ class _PaymentListState extends State<PaymentList> {
store.dispatch(SortPayments(field)))), store.dispatch(SortPayments(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.payment,
onClearPressed: widget
.viewModel.onClearEntityFilterPressed,
),
), ),
)); ));
} }

View File

@ -154,7 +154,10 @@ class _ProductListState extends State<ProductList> {
store.dispatch(SortProducts(field)))), store.dispatch(SortProducts(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.product,
),
), ),
)); ));
} }

View File

@ -189,7 +189,11 @@ class _ProjectListState extends State<ProjectList> {
SortProjects(field)))), SortProjects(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.project,
onClearPressed: widget
.viewModel.onClearEntityFilterPressed,
),
), ),
)), )),
), ),

View File

@ -185,7 +185,11 @@ class _TaskListState extends State<TaskList> {
.dispatch(SortTasks(field)))), .dispatch(SortTasks(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.task,
onClearPressed: widget
.viewModel.onClearEntityFilterPressed,
),
), ),
)), )),
), ),

View File

@ -173,7 +173,11 @@ class _VendorListState extends State<VendorList> {
SortVendors(field)))), SortVendors(field)))),
], ],
source: dataTableSource, source: dataTableSource,
header: SizedBox(), header: DatatableHeader(
entityType: EntityType.vendor,
onClearPressed: widget
.viewModel.onClearEntityFilterPressed,
),
), ),
)), )),
), ),