Transactions
This commit is contained in:
parent
6d3c906b67
commit
0dc6dc711e
|
|
@ -23,11 +23,15 @@ class InvoiceListItem extends StatelessWidget {
|
||||||
@required this.invoice,
|
@required this.invoice,
|
||||||
this.filter,
|
this.filter,
|
||||||
this.showCheckbox = true,
|
this.showCheckbox = true,
|
||||||
|
this.forceCheckbox = false,
|
||||||
|
this.forceChecked = false,
|
||||||
});
|
});
|
||||||
|
|
||||||
final InvoiceEntity invoice;
|
final InvoiceEntity invoice;
|
||||||
final String filter;
|
final String filter;
|
||||||
final bool showCheckbox;
|
final bool showCheckbox;
|
||||||
|
final bool forceCheckbox;
|
||||||
|
final bool forceChecked;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
@ -37,8 +41,11 @@ class InvoiceListItem extends StatelessWidget {
|
||||||
final uiState = state.uiState;
|
final uiState = state.uiState;
|
||||||
final invoiceUIState = uiState.invoiceUIState;
|
final invoiceUIState = uiState.invoiceUIState;
|
||||||
final listUIState = state.getUIState(invoice.entityType).listUIState;
|
final listUIState = state.getUIState(invoice.entityType).listUIState;
|
||||||
final isInMultiselect = showCheckbox && listUIState.isInMultiselect();
|
final isInMultiselect =
|
||||||
final isChecked = isInMultiselect && listUIState.isSelected(invoice.id);
|
forceCheckbox || (showCheckbox && listUIState.isInMultiselect());
|
||||||
|
final isChecked = forceCheckbox
|
||||||
|
? forceChecked
|
||||||
|
: isInMultiselect && listUIState.isSelected(invoice.id);
|
||||||
final textStyle = TextStyle(fontSize: 16);
|
final textStyle = TextStyle(fontSize: 16);
|
||||||
final localization = AppLocalization.of(context);
|
final localization = AppLocalization.of(context);
|
||||||
final filterMatch = filter != null && filter.isNotEmpty
|
final filterMatch = filter != null && filter.isNotEmpty
|
||||||
|
|
@ -69,11 +76,13 @@ class InvoiceListItem extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
return DismissibleEntity(
|
return DismissibleEntity(
|
||||||
isSelected: isDesktop(context) &&
|
isSelected: forceCheckbox
|
||||||
invoice.id ==
|
? forceChecked
|
||||||
(uiState.isEditing
|
: isDesktop(context) &&
|
||||||
? invoiceUIState.editing.id
|
invoice.id ==
|
||||||
: invoiceUIState.selectedId),
|
(uiState.isEditing
|
||||||
|
? invoiceUIState.editing.id
|
||||||
|
: invoiceUIState.selectedId),
|
||||||
showCheckbox: showCheckbox,
|
showCheckbox: showCheckbox,
|
||||||
userCompany: state.userCompany,
|
userCompany: state.userCompany,
|
||||||
entity: invoice,
|
entity: invoice,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/search_text.dart';
|
import 'package:invoiceninja_flutter/ui/app/search_text.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/invoice/invoice_list_item.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/transaction/view/transaction_view_vm.dart';
|
import 'package:invoiceninja_flutter/ui/transaction/view/transaction_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/formatting.dart';
|
||||||
|
|
@ -53,7 +55,10 @@ class _TransactionViewState extends State<TransactionView> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
ListDivider(),
|
ListDivider(),
|
||||||
Expanded(child: _MatchInvoices()),
|
Expanded(
|
||||||
|
child: _MatchInvoices(
|
||||||
|
viewModel: viewModel,
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -61,7 +66,12 @@ class _TransactionViewState extends State<TransactionView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MatchInvoices extends StatefulWidget {
|
class _MatchInvoices extends StatefulWidget {
|
||||||
const _MatchInvoices({Key key}) : super(key: key);
|
const _MatchInvoices({
|
||||||
|
Key key,
|
||||||
|
@required this.viewModel,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final TransactionViewVM viewModel;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_MatchInvoices> createState() => __MatchInvoicesState();
|
State<_MatchInvoices> createState() => __MatchInvoicesState();
|
||||||
|
|
@ -70,12 +80,23 @@ class _MatchInvoices extends StatefulWidget {
|
||||||
class __MatchInvoicesState extends State<_MatchInvoices> {
|
class __MatchInvoicesState extends State<_MatchInvoices> {
|
||||||
TextEditingController _filterController;
|
TextEditingController _filterController;
|
||||||
FocusNode _focusNode;
|
FocusNode _focusNode;
|
||||||
|
List<InvoiceEntity> _invoices;
|
||||||
|
String _filter;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_filterController = TextEditingController();
|
_filterController = TextEditingController();
|
||||||
_focusNode = FocusNode();
|
_focusNode = FocusNode();
|
||||||
|
|
||||||
|
updateInvoiceList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateInvoiceList() {
|
||||||
|
final invoiceState = widget.viewModel.state.invoiceState;
|
||||||
|
_invoices = invoiceState.map.values.toList();
|
||||||
|
_invoices
|
||||||
|
.sort((invoiceA, invoiceB) => invoiceB.date.compareTo(invoiceA.date));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -111,9 +132,15 @@ class __MatchInvoicesState extends State<_MatchInvoices> {
|
||||||
),
|
),
|
||||||
ListDivider(),
|
ListDivider(),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: ListView.builder(
|
child: ListView.separated(
|
||||||
itemCount: 1,
|
separatorBuilder: (context, index) => ListDivider(),
|
||||||
itemBuilder: (BuildContext context, int index) => SizedBox(),
|
itemCount: _invoices.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
return InvoiceListItem(
|
||||||
|
invoice: _invoices[index],
|
||||||
|
forceCheckbox: true,
|
||||||
|
);
|
||||||
|
},
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue