From cef117088ff33c2cfef0c4d0f179238dc63b65f1 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 10 Feb 2022 21:59:32 +0200 Subject: [PATCH] Add desktop state/status filters --- lib/ui/app/multiselect.dart | 2 +- lib/ui/credit/credit_screen.dart | 3 ++ lib/ui/design/design_screen.dart | 3 ++ lib/ui/document/document_screen.dart | 3 ++ lib/ui/expense/expense_screen.dart | 39 ++++++++++++------- .../expense_category_screen.dart | 3 ++ 6 files changed, 37 insertions(+), 16 deletions(-) diff --git a/lib/ui/app/multiselect.dart b/lib/ui/app/multiselect.dart index bdb7f825e..8095a533a 100644 --- a/lib/ui/app/multiselect.dart +++ b/lib/ui/app/multiselect.dart @@ -25,7 +25,7 @@ class _SelectRow extends StatelessWidget { selected: selected, title: child, dense: true, - contentPadding: EdgeInsets.symmetric(horizontal: 2), + contentPadding: EdgeInsets.symmetric(horizontal: 4), onTap: () { onChange(!selected); _theState.notify(); diff --git a/lib/ui/credit/credit_screen.dart b/lib/ui/credit/credit_screen.dart index b8f6142f4..b74ec7f44 100644 --- a/lib/ui/credit/credit_screen.dart +++ b/lib/ui/credit/credit_screen.dart @@ -46,6 +46,9 @@ class CreditScreen extends StatelessWidget { onFilterChanged: (value) { store.dispatch(FilterCredits(value)); }, + onSelectedState: (EntityState state, value) { + store.dispatch(FilterCreditsByState(state)); + }, ), onCheckboxPressed: () { if (store.state.creditListState.isInMultiselect()) { diff --git a/lib/ui/design/design_screen.dart b/lib/ui/design/design_screen.dart index 5ca2a7b3d..e8bbd00a9 100644 --- a/lib/ui/design/design_screen.dart +++ b/lib/ui/design/design_screen.dart @@ -46,6 +46,9 @@ class DesignScreen extends StatelessWidget { onFilterChanged: (value) { store.dispatch(FilterDesigns(value)); }, + onSelectedState: (EntityState state, value) { + store.dispatch(FilterDesignsByState(state)); + }, ), onCheckboxPressed: () { if (store.state.designListState.isInMultiselect()) { diff --git a/lib/ui/document/document_screen.dart b/lib/ui/document/document_screen.dart index 7143f158f..ffe5f2015 100644 --- a/lib/ui/document/document_screen.dart +++ b/lib/ui/document/document_screen.dart @@ -44,6 +44,9 @@ class DocumentScreen extends StatelessWidget { onFilterChanged: (value) { store.dispatch(FilterDocuments(value)); }, + onSelectedState: (EntityState state, value) { + store.dispatch(FilterDocumentsByState(state)); + }, ), onCheckboxPressed: () { if (store.state.documentListState.isInMultiselect()) { diff --git a/lib/ui/expense/expense_screen.dart b/lib/ui/expense/expense_screen.dart index 2010b28be..accf4abaf 100644 --- a/lib/ui/expense/expense_screen.dart +++ b/lib/ui/expense/expense_screen.dart @@ -36,6 +36,22 @@ class ExpenseScreen extends StatelessWidget { final userCompany = state.userCompany; final localization = AppLocalization.of(context); + final statuses = [ + ExpenseStatusEntity().rebuild((b) => b + ..id = kExpenseStatusLogged + ..name = localization.logged), + ExpenseStatusEntity().rebuild( + (b) => b + ..id = kExpenseStatusPending + ..name = localization.pending, + ), + ExpenseStatusEntity().rebuild( + (b) => b + ..id = kExpenseStatusInvoiced + ..name = localization.invoiced, + ), + ]; + return ListScaffold( entityType: EntityType.expense, onHamburgerLongPress: () => store.dispatch(StartExpenseMultiselect()), @@ -47,6 +63,13 @@ class ExpenseScreen extends StatelessWidget { onFilterChanged: (value) { store.dispatch(FilterExpenses(value)); }, + statuses: statuses, + onSelectedState: (EntityState state, value) { + store.dispatch(FilterExpensesByState(state)); + }, + onSelectedStatus: (EntityStatus status, value) { + store.dispatch(FilterExpensesByStatus(status)); + }, ), onCheckboxPressed: () { if (store.state.expenseListState.isInMultiselect()) { @@ -86,21 +109,7 @@ class ExpenseScreen extends StatelessWidget { onSelectedState: (EntityState state, value) { store.dispatch(FilterExpensesByState(state)); }, - statuses: [ - ExpenseStatusEntity().rebuild((b) => b - ..id = kExpenseStatusLogged - ..name = localization.logged), - ExpenseStatusEntity().rebuild( - (b) => b - ..id = kExpenseStatusPending - ..name = localization.pending, - ), - ExpenseStatusEntity().rebuild( - (b) => b - ..id = kExpenseStatusInvoiced - ..name = localization.invoiced, - ), - ], + statuses: statuses, onSelectedStatus: (EntityStatus status, value) { store.dispatch(FilterExpensesByStatus(status)); }, diff --git a/lib/ui/expense_category/expense_category_screen.dart b/lib/ui/expense_category/expense_category_screen.dart index 3d406674b..0b35e0ef9 100644 --- a/lib/ui/expense_category/expense_category_screen.dart +++ b/lib/ui/expense_category/expense_category_screen.dart @@ -56,6 +56,9 @@ class ExpenseCategoryScreen extends StatelessWidget { onFilterChanged: (value) { store.dispatch(FilterExpenseCategories(value)); }, + onSelectedState: (EntityState state, value) { + store.dispatch(FilterExpenseCategoriesByState(state)); + }, ), body: ExpenseCategoryListBuilder(), bottomNavigationBar: AppBottomBar(