PDF preview

This commit is contained in:
Hillel Coren 2021-07-25 17:30:48 +03:00
parent 1d97dd29b4
commit 93bcff1165
5 changed files with 65 additions and 43 deletions

View File

@ -26,7 +26,7 @@ class CreditEditItemsScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StoreConnector<AppState, CreditEditItemsVM>( return StoreConnector<AppState, CreditEditItemsVM>(
converter: (Store<AppState> store) { converter: (Store<AppState> store) {
return CreditEditItemsVM.fromStore(store, isTasks); return CreditEditItemsVM.fromStore(store, onChanged, isTasks);
}, },
builder: (context, viewModel) { builder: (context, viewModel) {
if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) {
@ -34,7 +34,6 @@ class CreditEditItemsScreen extends StatelessWidget {
viewModel: viewModel, viewModel: viewModel,
entityViewModel: this.viewModel, entityViewModel: this.viewModel,
isTasks: isTasks, isTasks: isTasks,
onChanged: onChanged,
); );
} else { } else {
return InvoiceEditItems( return InvoiceEditItems(
@ -72,15 +71,19 @@ class CreditEditItemsVM extends EntityEditItemsVM {
onMovedInvoiceItem: onMovedInvoiceItem, onMovedInvoiceItem: onMovedInvoiceItem,
); );
factory CreditEditItemsVM.fromStore(Store<AppState> store, bool isTasks) { factory CreditEditItemsVM.fromStore(
Store<AppState> store, Function onChanged, bool isTasks) {
return CreditEditItemsVM( return CreditEditItemsVM(
state: store.state, state: store.state,
company: store.state.company, company: store.state.company,
invoice: store.state.creditUIState.editing, invoice: store.state.creditUIState.editing,
invoiceItemIndex: store.state.creditUIState.editingItemIndex, invoiceItemIndex: store.state.creditUIState.editingItemIndex,
onRemoveInvoiceItemPressed: (index) => onRemoveInvoiceItemPressed: (index) {
store.dispatch(DeleteCreditItem(index)), store.dispatch(DeleteCreditItem(index));
onDoneInvoiceItemPressed: () => store.dispatch(EditCreditItem()), },
onDoneInvoiceItemPressed: () {
store.dispatch(EditCreditItem());
},
onChangedInvoiceItem: (creditItem, index) { onChangedInvoiceItem: (creditItem, index) {
final credit = store.state.creditUIState.editing; final credit = store.state.creditUIState.editing;
if (index == credit.lineItems.length) { if (index == credit.lineItems.length) {
@ -94,9 +97,11 @@ class CreditEditItemsVM extends EntityEditItemsVM {
.dispatch(UpdateCreditItem(creditItem: creditItem, index: index)); .dispatch(UpdateCreditItem(creditItem: creditItem, index: index));
} }
}, },
onMovedInvoiceItem: (oldIndex, newIndex) => store.dispatch( onMovedInvoiceItem: (oldIndex, newIndex) {
store.dispatch(
MoveCreditItem(oldIndex: oldIndex, newIndex: newIndex), MoveCreditItem(oldIndex: oldIndex, newIndex: newIndex),
), );
},
); );
} }
} }

View File

@ -23,13 +23,11 @@ class InvoiceEditItemsDesktop extends StatefulWidget {
@required this.viewModel, @required this.viewModel,
@required this.entityViewModel, @required this.entityViewModel,
@required this.isTasks, @required this.isTasks,
@required this.onChanged,
}); });
final EntityEditItemsVM viewModel; final EntityEditItemsVM viewModel;
final EntityEditVM entityViewModel; final EntityEditVM entityViewModel;
final bool isTasks; final bool isTasks;
final Function onChanged;
@override @override
_InvoiceEditItemsDesktopState createState() => _InvoiceEditItemsDesktopState createState() =>
@ -57,16 +55,13 @@ class _InvoiceEditItemsDesktopState extends State<InvoiceEditItemsDesktop> {
if (index == lineItems.length) { if (index == lineItems.length) {
viewModel.onChangedInvoiceItem(lineItem, index); viewModel.onChangedInvoiceItem(lineItem, index);
widget.onChanged();
} else if (lineItem != lineItems[index]) { } else if (lineItem != lineItems[index]) {
if (debounce) { if (debounce) {
_debouncer.run(() { _debouncer.run(() {
viewModel.onChangedInvoiceItem(lineItem, index); viewModel.onChangedInvoiceItem(lineItem, index);
widget.onChanged();
}); });
} else { } else {
viewModel.onChangedInvoiceItem(lineItem, index); viewModel.onChangedInvoiceItem(lineItem, index);
widget.onChanged();
} }
} }
} }

View File

@ -25,7 +25,7 @@ class InvoiceEditItemsScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StoreConnector<AppState, InvoiceEditItemsVM>( return StoreConnector<AppState, InvoiceEditItemsVM>(
converter: (Store<AppState> store) { converter: (Store<AppState> store) {
return InvoiceEditItemsVM.fromStore(store, isTasks); return InvoiceEditItemsVM.fromStore(store, onChanged, isTasks);
}, },
builder: (context, viewModel) { builder: (context, viewModel) {
if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) {
@ -33,7 +33,6 @@ class InvoiceEditItemsScreen extends StatelessWidget {
viewModel: viewModel, viewModel: viewModel,
entityViewModel: this.viewModel, entityViewModel: this.viewModel,
isTasks: isTasks, isTasks: isTasks,
onChanged: onChanged,
); );
} else { } else {
return InvoiceEditItems( return InvoiceEditItems(
@ -97,17 +96,25 @@ class InvoiceEditItemsVM extends EntityEditItemsVM {
onMovedInvoiceItem: onMovedInvoiceItem, onMovedInvoiceItem: onMovedInvoiceItem,
); );
factory InvoiceEditItemsVM.fromStore(Store<AppState> store, bool isTasks) { factory InvoiceEditItemsVM.fromStore(
Store<AppState> store,
Function onChanged,
bool isTasks,
) {
return InvoiceEditItemsVM( return InvoiceEditItemsVM(
state: store.state, state: store.state,
company: store.state.company, company: store.state.company,
invoice: store.state.invoiceUIState.editing, invoice: store.state.invoiceUIState.editing,
invoiceItemIndex: store.state.invoiceUIState.editingItemIndex, invoiceItemIndex: store.state.invoiceUIState.editingItemIndex,
addLineItem: () => addLineItem: () {
store.dispatch(AddInvoiceItem(invoiceItem: InvoiceItemEntity())), store.dispatch(AddInvoiceItem(invoiceItem: InvoiceItemEntity()));
onChanged();
},
deleteLineItem: null, deleteLineItem: null,
onRemoveInvoiceItemPressed: (index) => onRemoveInvoiceItemPressed: (index) {
store.dispatch(DeleteInvoiceItem(index)), store.dispatch(DeleteInvoiceItem(index));
onChanged();
},
clearSelectedInvoiceItem: () => store.dispatch(EditInvoiceItem()), clearSelectedInvoiceItem: () => store.dispatch(EditInvoiceItem()),
onChangedInvoiceItem: (invoiceItem, index) { onChangedInvoiceItem: (invoiceItem, index) {
final invoice = store.state.invoiceUIState.editing; final invoice = store.state.invoiceUIState.editing;
@ -121,10 +128,14 @@ class InvoiceEditItemsVM extends EntityEditItemsVM {
store.dispatch( store.dispatch(
UpdateInvoiceItem(invoiceItem: invoiceItem, index: index)); UpdateInvoiceItem(invoiceItem: invoiceItem, index: index));
} }
onChanged();
}, },
onMovedInvoiceItem: (oldIndex, newIndex) => store.dispatch( onMovedInvoiceItem: (oldIndex, newIndex) {
store.dispatch(
MoveInvoiceItem(oldIndex: oldIndex, newIndex: newIndex), MoveInvoiceItem(oldIndex: oldIndex, newIndex: newIndex),
), );
onChanged();
},
); );
} }
} }

View File

@ -24,7 +24,7 @@ class QuoteEditItemsScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StoreConnector<AppState, QuoteEditItemsVM>( return StoreConnector<AppState, QuoteEditItemsVM>(
converter: (Store<AppState> store) { converter: (Store<AppState> store) {
return QuoteEditItemsVM.fromStore(store); return QuoteEditItemsVM.fromStore(store, onChanged);
}, },
builder: (context, viewModel) { builder: (context, viewModel) {
if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) {
@ -32,7 +32,6 @@ class QuoteEditItemsScreen extends StatelessWidget {
viewModel: viewModel, viewModel: viewModel,
entityViewModel: this.viewModel, entityViewModel: this.viewModel,
isTasks: false, isTasks: false,
onChanged: onChanged,
); );
} else { } else {
return InvoiceEditItems( return InvoiceEditItems(
@ -70,15 +69,19 @@ class QuoteEditItemsVM extends EntityEditItemsVM {
onMovedInvoiceItem: onMovedInvoiceItem, onMovedInvoiceItem: onMovedInvoiceItem,
); );
factory QuoteEditItemsVM.fromStore(Store<AppState> store) { factory QuoteEditItemsVM.fromStore(
Store<AppState> store, Function onChanged) {
return QuoteEditItemsVM( return QuoteEditItemsVM(
state: store.state, state: store.state,
company: store.state.company, company: store.state.company,
invoice: store.state.quoteUIState.editing, invoice: store.state.quoteUIState.editing,
invoiceItemIndex: store.state.quoteUIState.editingItemIndex, invoiceItemIndex: store.state.quoteUIState.editingItemIndex,
onRemoveInvoiceItemPressed: (index) => onRemoveInvoiceItemPressed: (index) {
store.dispatch(DeleteQuoteItem(index)), store.dispatch(DeleteQuoteItem(index));
onDoneInvoiceItemPressed: () => store.dispatch(EditQuoteItem()), },
onDoneInvoiceItemPressed: () {
store.dispatch(EditQuoteItem());
},
onChangedInvoiceItem: (quoteItem, index) { onChangedInvoiceItem: (quoteItem, index) {
final quote = store.state.quoteUIState.editing; final quote = store.state.quoteUIState.editing;
if (index == quote.lineItems.length) { if (index == quote.lineItems.length) {
@ -87,9 +90,11 @@ class QuoteEditItemsVM extends EntityEditItemsVM {
store.dispatch(UpdateQuoteItem(quoteItem: quoteItem, index: index)); store.dispatch(UpdateQuoteItem(quoteItem: quoteItem, index: index));
} }
}, },
onMovedInvoiceItem: (oldIndex, newIndex) => store.dispatch( onMovedInvoiceItem: (oldIndex, newIndex) {
store.dispatch(
MoveQuoteItem(oldIndex: oldIndex, newIndex: newIndex), MoveQuoteItem(oldIndex: oldIndex, newIndex: newIndex),
), );
},
); );
} }
} }

View File

@ -26,7 +26,7 @@ class RecurringInvoiceEditItemsScreen extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StoreConnector<AppState, RecurringInvoiceEditItemsVM>( return StoreConnector<AppState, RecurringInvoiceEditItemsVM>(
converter: (Store<AppState> store) { converter: (Store<AppState> store) {
return RecurringInvoiceEditItemsVM.fromStore(store, isTasks); return RecurringInvoiceEditItemsVM.fromStore(store, onChanged, isTasks);
}, },
builder: (context, viewModel) { builder: (context, viewModel) {
if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) { if (viewModel.state.prefState.isEditorFullScreen(EntityType.invoice)) {
@ -34,7 +34,6 @@ class RecurringInvoiceEditItemsScreen extends StatelessWidget {
viewModel: viewModel, viewModel: viewModel,
entityViewModel: this.viewModel, entityViewModel: this.viewModel,
isTasks: isTasks, isTasks: isTasks,
onChanged: onChanged,
); );
} else { } else {
return InvoiceEditItems( return InvoiceEditItems(
@ -73,16 +72,19 @@ class RecurringInvoiceEditItemsVM extends EntityEditItemsVM {
); );
factory RecurringInvoiceEditItemsVM.fromStore( factory RecurringInvoiceEditItemsVM.fromStore(
Store<AppState> store, bool isTasks) { Store<AppState> store, Function onChanged, bool isTasks) {
return RecurringInvoiceEditItemsVM( return RecurringInvoiceEditItemsVM(
state: store.state, state: store.state,
company: store.state.company, company: store.state.company,
invoice: store.state.recurringInvoiceUIState.editing, invoice: store.state.recurringInvoiceUIState.editing,
invoiceItemIndex: store.state.recurringInvoiceUIState.editingItemIndex, invoiceItemIndex: store.state.recurringInvoiceUIState.editingItemIndex,
onRemoveInvoiceItemPressed: (index) => onRemoveInvoiceItemPressed: (index) {
store.dispatch(DeleteRecurringInvoiceItem(index)), store.dispatch(DeleteRecurringInvoiceItem(index));
onDoneInvoiceItemPressed: () => onChanged();
store.dispatch(EditRecurringInvoiceItem()), },
onDoneInvoiceItemPressed: () {
store.dispatch(EditRecurringInvoiceItem());
},
onChangedInvoiceItem: (item, index) { onChangedInvoiceItem: (item, index) {
final invoice = store.state.recurringInvoiceUIState.editing; final invoice = store.state.recurringInvoiceUIState.editing;
if (index == invoice.lineItems.length) { if (index == invoice.lineItems.length) {
@ -94,10 +96,14 @@ class RecurringInvoiceEditItemsVM extends EntityEditItemsVM {
} else { } else {
store.dispatch(UpdateRecurringInvoiceItem(item: item, index: index)); store.dispatch(UpdateRecurringInvoiceItem(item: item, index: index));
} }
onChanged();
}, },
onMovedInvoiceItem: (oldIndex, newIndex) => store.dispatch( onMovedInvoiceItem: (oldIndex, newIndex) {
store.dispatch(
MoveRecurringInvoiceItem(oldIndex: oldIndex, newIndex: newIndex), MoveRecurringInvoiceItem(oldIndex: oldIndex, newIndex: newIndex),
), );
onChanged();
},
); );
} }
} }