Categories
This commit is contained in:
parent
8b3a730b06
commit
dfecd093e8
|
|
@ -72,6 +72,26 @@ List<String> filteredExpenseCategoriesSelector(
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var memoizedCalculateExpenseCategoryAmount = memo2(
|
||||||
|
(String categoryId, BuiltMap<String, ExpenseEntity> expenseMap) =>
|
||||||
|
calculateExpenseCategoryAmount(
|
||||||
|
categoryId: categoryId, expenseMap: expenseMap));
|
||||||
|
|
||||||
|
double calculateExpenseCategoryAmount({
|
||||||
|
String categoryId,
|
||||||
|
BuiltMap<String, ExpenseEntity> expenseMap,
|
||||||
|
}) {
|
||||||
|
double total = 0;
|
||||||
|
|
||||||
|
expenseMap.forEach((expenseId, expense) {
|
||||||
|
if (expense.categoryId == categoryId) {
|
||||||
|
total += expense.amount;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
bool hasExpenseCategoryChanges(ExpenseCategoryEntity expenseCategory,
|
bool hasExpenseCategoryChanges(ExpenseCategoryEntity expenseCategory,
|
||||||
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap) =>
|
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap) =>
|
||||||
expenseCategory.isNew
|
expenseCategory.isNew
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/expense_category/expense_category_selectors.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/expense_category/view/expense_category_view_vm.dart';
|
import 'package:invoiceninja_flutter/ui/expense_category/view/expense_category_view_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
import 'package:invoiceninja_flutter/ui/app/view_scaffold.dart';
|
||||||
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||||
|
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||||
|
|
||||||
class ExpenseCategoryView extends StatefulWidget {
|
class ExpenseCategoryView extends StatefulWidget {
|
||||||
const ExpenseCategoryView({
|
const ExpenseCategoryView({
|
||||||
|
|
@ -22,13 +26,21 @@ class _ExpenseCategoryViewState extends State<ExpenseCategoryView> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final viewModel = widget.viewModel;
|
final viewModel = widget.viewModel;
|
||||||
final expenseCategory = viewModel.expenseCategory;
|
final expenseCategory = viewModel.expenseCategory;
|
||||||
|
final localization = AppLocalization.of(context);
|
||||||
|
final amount = memoizedCalculateExpenseCategoryAmount(
|
||||||
|
expenseCategory.id, viewModel.state.expenseState.map);
|
||||||
|
|
||||||
return ViewScaffold(
|
return ViewScaffold(
|
||||||
isFilter: widget.isFilter,
|
isFilter: widget.isFilter,
|
||||||
entity: expenseCategory,
|
entity: expenseCategory,
|
||||||
onBackPressed: () => viewModel.onBackPressed(),
|
onBackPressed: () => viewModel.onBackPressed(),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
children: <Widget>[],
|
children: <Widget>[
|
||||||
|
EntityHeader(
|
||||||
|
entity: expenseCategory,
|
||||||
|
label: localization.total,
|
||||||
|
value: formatNumber(amount, context)),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue