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 {
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(

View File

@ -152,7 +152,10 @@ class _ClientListState extends State<ClientList> {
store.dispatch(SortClients(field)))),
],
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)))),
],
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(
padding: const EdgeInsets.all(12),
child: PaginatedDataTable(
onSelectAll: (value) {
final invoices = viewModel.invoiceList
.map<InvoiceEntity>(
(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<InvoiceEntity>(
(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,
),
),
));
}
};

View File

@ -186,7 +186,12 @@ class _PaymentListState extends State<PaymentList> {
store.dispatch(SortPayments(field)))),
],
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)))),
],
source: dataTableSource,
header: SizedBox(),
header: DatatableHeader(
entityType: EntityType.product,
),
),
));
}

View File

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