Datatables
This commit is contained in:
parent
ce5a5d1aea
commit
044268c603
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
|
||||
),
|
||||
)),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
));
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
|
||||
),
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,7 +154,10 @@ class _ProductListState extends State<ProductList> {
|
|||
store.dispatch(SortProducts(field)))),
|
||||
],
|
||||
source: dataTableSource,
|
||||
header: SizedBox(),
|
||||
header: DatatableHeader(
|
||||
entityType: EntityType.product,
|
||||
),
|
||||
|
||||
),
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -189,7 +189,11 @@ class _ProjectListState extends State<ProjectList> {
|
|||
SortProjects(field)))),
|
||||
],
|
||||
source: dataTableSource,
|
||||
header: SizedBox(),
|
||||
header: DatatableHeader(
|
||||
entityType: EntityType.project,
|
||||
onClearPressed: widget
|
||||
.viewModel.onClearEntityFilterPressed,
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -173,7 +173,11 @@ class _VendorListState extends State<VendorList> {
|
|||
SortVendors(field)))),
|
||||
],
|
||||
source: dataTableSource,
|
||||
header: SizedBox(),
|
||||
header: DatatableHeader(
|
||||
entityType: EntityType.vendor,
|
||||
onClearPressed: widget
|
||||
.viewModel.onClearEntityFilterPressed,
|
||||
),
|
||||
),
|
||||
)),
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue