From fc732b4397dd799b744001bec5c30bdbc9b510d5 Mon Sep 17 00:00:00 2001 From: Gius95 Date: Thu, 6 Dec 2018 11:51:42 +0100 Subject: [PATCH] Completato FIltroVenditaAvanzato --- .../core/di/BindableString.java | 9 ++ .../core/expansion/RunnableArgs.java | 2 +- .../core/expansion/RunnableArgss.java | 6 + .../gest/vendita/MainVenditaFragment.java | 7 +- .../dialogs/DialogVenditaFiltroAvanzato.java | 109 ++++++++++++------ .../VersamentoMerceFragment.java | 4 + .../layout/dialog_vendita_filtro_avanzato.xml | 2 +- 7 files changed, 102 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgss.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableString.java b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableString.java index 288df64f..0a3a9a7b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/di/BindableString.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/di/BindableString.java @@ -26,6 +26,9 @@ public class BindableString extends BaseObservable { return value == null || value.isEmpty(); } + public void refresh() { + notifyChange(); + } @@ -38,4 +41,10 @@ public class BindableString extends BaseObservable { } }); } + + public static void resetListeners(BindableString bindableString){ + String oldValue = bindableString.get(); + bindableString = new BindableString(); + bindableString.set(oldValue); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgs.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgs.java index 4e2285e0..fd726a32 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgs.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgs.java @@ -4,4 +4,4 @@ public interface RunnableArgs { void run(T data); -} +} \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgss.java b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgss.java new file mode 100644 index 00000000..8969733d --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/expansion/RunnableArgss.java @@ -0,0 +1,6 @@ +package it.integry.integrywmsnative.core.expansion; + +public interface RunnableArgss { + + void run(S data1, T data2); +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 511b72ac..265847d5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -36,6 +36,7 @@ import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter; import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato; +import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO; @@ -55,6 +56,8 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR private List mOriginalOrderList; private List groupedOrdiniInevasi; + private DialogVenditaFiltroAvanzatoViewModel mAppliedFilterViewModel; + public MainVenditaFragment() { } @@ -334,7 +337,9 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR @Override public void onFilterClick() { - DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, filteredOrderList -> { + DialogVenditaFiltroAvanzato.make(getActivity(), mOriginalOrderList, mAppliedFilterViewModel, (filteredOrderList, filter) -> { + + mAppliedFilterViewModel = filter; if(filteredOrderList != null){ diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java index 7c4baf06..7e17df9e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/dialogs/DialogVenditaFiltroAvanzato.java @@ -7,7 +7,9 @@ import android.content.DialogInterface; import android.databinding.DataBindingUtil; import android.support.design.widget.BottomSheetBehavior; import android.view.LayoutInflater; +import android.view.View; import android.widget.ArrayAdapter; +import android.widget.Button; import com.annimon.stream.Stream; import com.annimon.stream.function.Predicate; @@ -18,7 +20,7 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.di.BindableString; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding; @@ -31,7 +33,7 @@ public class DialogVenditaFiltroAvanzato { private AlertDialog currentAlert; private Context currentContext; - private RunnableArgs> currentOnFilterDone; + private RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone; private List currentOrderList; private List currentFilteredOrderList; @@ -42,16 +44,22 @@ public class DialogVenditaFiltroAvanzato { private Predicate currentTermConsPredicate = null; private Predicate currentAutomezzoPredicate = null; - public static AlertDialog make(final Context context, final List ordersList, RunnableArgs> onDismiss) { - return new DialogVenditaFiltroAvanzato(context, ordersList, onDismiss).currentAlert; + private boolean firstInit = true; + + public static AlertDialog make(final Context context, final List ordersList, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert; } - private DialogVenditaFiltroAvanzato(final Context context, final List ordersList, RunnableArgs> onDismiss) { + public static AlertDialog make(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { + return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert; + } + + private DialogVenditaFiltroAvanzato(final Context context, final List ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss, DialogVenditaFiltroAvanzatoViewModel> onDismiss) { currentContext = context; currentOrderList = ordersList; currentOnFilterDone = onDismiss; - DialogVenditaFiltroAvanzatoViewModel viewModel = new DialogVenditaFiltroAvanzatoViewModel(); + DialogVenditaFiltroAvanzatoViewModel viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel(); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); @@ -61,26 +69,36 @@ public class DialogVenditaFiltroAvanzato { .setView(contentView.getRoot()) .setPositiveButton(context.getText(R.string.confirm), null) .setNegativeButton(context.getText(R.string.abort), null) - .setNeutralButton(context.getText(R.string.reset), (dialogInterface, i) -> { - resetAll(viewModel); - }); + .setNeutralButton(context.getText(R.string.reset), null); contentView.setViewmodel(viewModel); - initViewModel(viewModel); + initViewModel(viewModel, contentView); initView(contentView, viewModel); currentAlert = alertDialog.create(); currentAlert.setCanceledOnTouchOutside(false); + + currentAlert.setOnShowListener(dialogInterface -> { + + Button button = ((AlertDialog) dialogInterface).getButton(AlertDialog.BUTTON_NEUTRAL); + button.setOnClickListener(view -> { + // TODO Do something + resetAll(viewModel); + }); + }); + + currentAlert.setOnDismissListener(dialogInterface -> { - if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList); + if(currentOnFilterDone != null) currentOnFilterDone.run(currentFilteredOrderList, viewModel); }); refreshList(); } private void resetAll(DialogVenditaFiltroAvanzatoViewModel viewModel) { + viewModel.numOrds.set(null); viewModel.numOrds.set(null); viewModel.cliente.set(null); viewModel.dataConsegna.set(null); @@ -143,67 +161,96 @@ public class DialogVenditaFiltroAvanzato { } - private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel) { + private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel, DialogVenditaFiltroAvanzatoBinding bindings) { + firstInit = true; + + BindableString.resetListeners(viewModel.numOrds); BindableString.registerListener(viewModel.numOrds, value -> { if(UtilityString.isNullOrEmpty(value)) currentNumOrdsPredicate = null; else { - String numOrdTrimmed = value.replaceAll(" ", ""); - String[] numOrdsSplitted = numOrdTrimmed.split(","); + //String numOrdTrimmed = value.replaceAll(" ", ""); + String[] numOrdsSplitted = value.split("[,\\ ]"); - List numOrdsInteger = Stream.of(numOrdsSplitted) - .withoutNulls() - .map(Integer::parseInt).toList(); - currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); + try{ + List numOrdsInteger = Stream.of(numOrdsSplitted) + .filter(x -> !UtilityString.isNullOrEmpty(x)) + .map(Integer::parseInt).toList(); + + currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd()); + + bindings.inputNumOrds.setErrorEnabled(false); + bindings.inputNumOrds.setError(""); + } catch (NumberFormatException ex) { + currentNumOrdsPredicate = null; + + bindings.inputNumOrds.setErrorEnabled(true); + bindings.inputNumOrds.setError(currentContext.getResources().getString(R.string.error)); + } + } - refreshList(); + if(!firstInit) refreshList(); }); + viewModel.numOrds.refresh(); - + BindableString.resetListeners(viewModel.cliente); BindableString.registerListener(viewModel.cliente, value -> { if(UtilityString.isNullOrEmpty(value)) currentClientePredicate = null; else { currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(value); } - refreshList(); + if(!firstInit) refreshList(); }); + viewModel.cliente.refresh(); + + BindableString.resetListeners(viewModel.dataConsegna); BindableString.registerListener(viewModel.dataConsegna, value -> { if(UtilityString.isNullOrEmpty(value)) currentDataConsPredicate = null; else { currentDataConsPredicate = o -> o.getDataConsD().equals(viewModel.dataConsegnaDate); } - refreshList(); + if(!firstInit) refreshList(); }); + viewModel.dataConsegna.refresh(); + + BindableString.resetListeners(viewModel.terminiConsegna); BindableString.registerListener(viewModel.terminiConsegna, value -> { if(UtilityString.isNullOrEmpty(value)) currentTermConsPredicate = null; else { - currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().toLowerCase().contains(value); + currentTermConsPredicate = o -> o.getTermCons() != null && o.getTermCons().equalsIgnoreCase(value); } - refreshList(); + if(!firstInit) refreshList(); }); + viewModel.terminiConsegna.refresh(); + + BindableString.resetListeners(viewModel.automezzo); BindableString.registerListener(viewModel.automezzo, value -> { if(UtilityString.isNullOrEmpty(value)) currentAutomezzoPredicate = null; else { currentAutomezzoPredicate = o -> o.getCodAuto().toLowerCase().contains(value); } - refreshList(); + if(!firstInit) refreshList(); }); + viewModel.automezzo.refresh(); + + if(firstInit) refreshList(); + firstInit = false; } @@ -233,9 +280,9 @@ public class DialogVenditaFiltroAvanzato { Stream tmpStream = Stream.of(currentOrderList) .filter(x -> (currentNumOrdsPredicate == null || (currentNumOrdsPredicate != null && currentNumOrdsPredicate.test(x))) && - (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && - (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && - (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) + (currentClientePredicate == null || (currentClientePredicate != null && currentClientePredicate.test(x))) && + (currentDataConsPredicate == null || (currentDataConsPredicate != null && currentDataConsPredicate.test(x))) && + (currentTermConsPredicate == null || (currentTermConsPredicate != null && currentTermConsPredicate.test(x))) ); currentFilteredOrderList = tmpStream.toList(); @@ -258,12 +305,6 @@ public class DialogVenditaFiltroAvanzato { (currentAutomezzoPredicate == null || (currentAutomezzoPredicate != null && currentAutomezzoPredicate.test(x))) ); - //if(currentNumOrdsPredicate != null) tmpStream = tmpStream.filter(currentNumOrdsPredicate); - //if(currentClientePredicate != null) tmpStream = tmpStream.filter(currentClientePredicate); - //if(currentDataConsPredicate != null) tmpStream = tmpStream.filter(currentDataConsPredicate); - //if(currentTermConsPredicate != null) tmpStream = tmpStream.filter(currentTermConsPredicate); - //if(currentClientePredicate != null) tmpStream = tmpStream.filter(currentClientePredicate); - currentFilteredOrderList = tmpStream.toList(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java new file mode 100644 index 00000000..2c6170a9 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/VersamentoMerceFragment.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.gest.versamento_merce; + +public class VersamentoMerceFragment { +} diff --git a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml index 219bbeea..1661e884 100644 --- a/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml +++ b/app/src/main/res/layout/dialog_vendita_filtro_avanzato.xml @@ -40,7 +40,7 @@