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

View File

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

View File

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

View File

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

View File

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