Completato FIltroVenditaAvanzato
This commit is contained in:
parent
93cd8227c1
commit
fc732b4397
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,4 +4,4 @@ public interface RunnableArgs<T> {
|
||||
|
||||
void run(T data);
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,6 @@
|
||||
package it.integry.integrywmsnative.core.expansion;
|
||||
|
||||
public interface RunnableArgss<S, T> {
|
||||
|
||||
void run(S data1, T data2);
|
||||
}
|
||||
@ -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<OrdineVenditaInevasoDTO> mOriginalOrderList;
|
||||
private List<OrdineVenditaGroupedInevasoDTO> 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){
|
||||
|
||||
|
||||
@ -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<List<OrdineVenditaInevasoDTO>> currentOnFilterDone;
|
||||
private RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> currentOrderList;
|
||||
private List<OrdineVenditaInevasoDTO> currentFilteredOrderList;
|
||||
@ -42,16 +44,22 @@ public class DialogVenditaFiltroAvanzato {
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentTermConsPredicate = null;
|
||||
private Predicate<OrdineVenditaInevasoDTO> currentAutomezzoPredicate = null;
|
||||
|
||||
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) {
|
||||
return new DialogVenditaFiltroAvanzato(context, ordersList, onDismiss).currentAlert;
|
||||
private boolean firstInit = true;
|
||||
|
||||
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
return new DialogVenditaFiltroAvanzato(context, ordersList, null, onDismiss).currentAlert;
|
||||
}
|
||||
|
||||
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, RunnableArgs<List<OrdineVenditaInevasoDTO>> onDismiss) {
|
||||
public static AlertDialog make(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
|
||||
return new DialogVenditaFiltroAvanzato(context, ordersList, baseViewModel, onDismiss).currentAlert;
|
||||
}
|
||||
|
||||
private DialogVenditaFiltroAvanzato(final Context context, final List<OrdineVenditaInevasoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgss<List<OrdineVenditaInevasoDTO>, 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<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
|
||||
.withoutNulls()
|
||||
.map(Integer::parseInt).toList();
|
||||
|
||||
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
|
||||
try{
|
||||
List<Integer> 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<OrdineVenditaInevasoDTO> 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();
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
package it.integry.integrywmsnative.gest.versamento_merce;
|
||||
|
||||
public class VersamentoMerceFragment {
|
||||
}
|
||||
@ -40,7 +40,7 @@
|
||||
<android.support.design.widget.TextInputEditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:inputType="number|text"
|
||||
android:hint="@string/num_ords"
|
||||
app:binding="@{viewmodel.numOrds}"/>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user