Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added the masked character support and Referenced field #663

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public class JsonFormConstants {
public static final String BEHAVIOUR = "behaviour";
public static final String RESULT = "result";
public static final String VALUE = "value";
public static final String V_EQUALS = "v_equals";
public static final String KEYS = "keys";
public static final String SECOND_VALUE = "second_value";
public static final String OPENMRS_ENTITY_PARENT = "openmrs_entity_parent";
Expand Down Expand Up @@ -148,6 +149,7 @@ public class JsonFormConstants {
public static final String EXPANDED = "expanded";
public static final String EXPAND_ON_TEXT_CHANGE = "expand_on_text_change";
public static final String NUMBER = "number";
public static final String PASSWORD = "password";
public static final String TOP_MARGIN = "top_margin";
public static final String BOTTOM_MARGIN = "bottom_margin";
public static final String LEFT_MARGIN = "left_margin";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.vijay.jsonwizard.validators.edittext;

import androidx.annotation.NonNull;

import com.rengwuxian.materialedittext.MaterialEditText;
import com.rengwuxian.materialedittext.validation.METValidator;

import org.jetbrains.annotations.NotNull;

public class ReferenceFieldValidator extends METValidator {
MaterialEditText referenceField;
public ReferenceFieldValidator(@NonNull @NotNull String errorMessage,MaterialEditText referenceField) {
super(errorMessage);
this.referenceField = referenceField;
}

@Override
public boolean isValid(@NonNull @NotNull CharSequence charSequence, boolean isEmpty) {
if(!isEmpty) {
String referenceText = referenceField.getText().toString();
return referenceText.equals(charSequence.toString());
}
return true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this return true?? What is the reference field has a some text and it not empty itself?

}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,12 @@
package com.vijay.jsonwizard.widgets;

import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_CUMULATIVE_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MAX_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MIN_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.KEY;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATED_FIELDS;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATIVE_VALIDATION_EXCEPTION;
import static com.vijay.jsonwizard.constants.JsonFormConstants.STEP1;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_CUMULATIVE_TOTAL;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MAX;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MIN;
import static com.vijay.jsonwizard.utils.FormUtils.fields;
import static com.vijay.jsonwizard.utils.FormUtils.getFieldJSONObject;

import android.content.Context;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.method.PasswordTransformationMethod;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -43,6 +31,7 @@
import com.vijay.jsonwizard.validators.edittext.MaxNumericValidator;
import com.vijay.jsonwizard.validators.edittext.MinLengthValidator;
import com.vijay.jsonwizard.validators.edittext.MinNumericValidator;
import com.vijay.jsonwizard.validators.edittext.ReferenceFieldValidator;
import com.vijay.jsonwizard.validators.edittext.ReferenceValidator;
import com.vijay.jsonwizard.validators.edittext.RelativeNumericValidator;
import com.vijay.jsonwizard.validators.edittext.RequiredValidator;
Expand All @@ -60,6 +49,19 @@

import timber.log.Timber;

import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_CUMULATIVE_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MAX_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.DEFAULT_RELATIVE_MIN_VALIDATION_ERR;
import static com.vijay.jsonwizard.constants.JsonFormConstants.KEY;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATED_FIELDS;
import static com.vijay.jsonwizard.constants.JsonFormConstants.RELATIVE_VALIDATION_EXCEPTION;
import static com.vijay.jsonwizard.constants.JsonFormConstants.STEP1;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_CUMULATIVE_TOTAL;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MAX;
import static com.vijay.jsonwizard.constants.JsonFormConstants.V_RELATIVE_MIN;
import static com.vijay.jsonwizard.utils.FormUtils.fields;
import static com.vijay.jsonwizard.utils.FormUtils.getFieldJSONObject;

public class EditTextFactory implements FormWidgetFactory {

public static final int MIN_LENGTH = 0;
Expand Down Expand Up @@ -117,7 +119,6 @@ protected List<View> attachJson(String stepName, Context context, JsonFormFragme
RelativeLayout editTextLayout = rootLayout.findViewById(R.id.edit_text_layout);
MaterialEditText editText = editTextLayout.findViewById(R.id.edit_text);
ImageView editButton = editTextLayout.findViewById(R.id.material_edit_text_edit_button);

FormUtils.setEditButtonAttributes(jsonObject, editText, editButton, listener);
attachLayout(stepName, context, formFragment, jsonObject, editText, editButton);

Expand Down Expand Up @@ -179,6 +180,7 @@ public void run() {
FormUtils.toggleEditTextVisibility(jsonObject, editText);

addRequiredValidator(jsonObject, editText);
addEqualsValidator(formFragment,jsonObject,editText);
addLengthValidator(jsonObject, editText);
addRegexValidator(jsonObject, editText);
addEmailValidator(jsonObject, editText);
Expand All @@ -190,15 +192,19 @@ public void run() {
addCumulativeTotalValidator(jsonObject, formFragment, editText, stepName, (JsonApi) context);
// edit type check
String editType = jsonObject.optString(JsonFormConstants.EDIT_TYPE);
editText.setSingleLine(false);
if (!TextUtils.isEmpty(editType)) {
if (JsonFormConstants.NUMBER.equals(editType)) {
editText.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
} else if (JsonFormConstants.NAME.equals(editType)) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
}
}
else if (JsonFormConstants.PASSWORD.equals(editType))
{
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}

editText.setSingleLine(false);
}
editText.addTextChangedListener(new GenericTextWatcher(stepName, formFragment, editText));
attachRefreshLogic(context, jsonObject, editText);
}
Expand All @@ -212,6 +218,15 @@ private void attachInfoIcon(String stepName, JSONObject jsonObject, RelativeLayo

}

private void addEqualsValidator(JsonFormFragment formFragment,JSONObject jsonObject, MaterialEditText editText) throws JSONException {
JSONObject requiredObject = jsonObject.optJSONObject(JsonFormConstants.V_EQUALS);
if (requiredObject != null) {
String referencedValue = requiredObject.optString(JsonFormConstants.VALUE,"");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Check for empty string here
  • Check for null in the line after this.

MaterialEditText referencedEditText = (MaterialEditText) formFragment.getJsonApi().getFormDataView(referencedValue);
editText.addValidator(new ReferenceFieldValidator(requiredObject.getString(JsonFormConstants.ERR),referencedEditText));
FormUtils.setRequiredOnHint(editText);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that this is not a required field configuration, is FormUtils.setRequiredOnHint() supposed to be here?

}
}
private void addRequiredValidator(JSONObject jsonObject, MaterialEditText editText) throws JSONException {
JSONObject requiredObject = jsonObject.optJSONObject(JsonFormConstants.V_REQUIRED);
if (requiredObject != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.os.Build;
import android.text.InputType;
import android.text.TextUtils;
import android.text.method.PasswordTransformationMethod;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
Expand Down Expand Up @@ -144,6 +145,10 @@ protected void makeFromJson(String stepName, Context context, JsonFormFragment f
} else if ("name".equals(editType)) {
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
}
else if ("password".equals(editType))
{
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}

editText.addTextChangedListener(new GenericTextWatcher(stepName, formFragment, editText));
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION_NAME=3.1.1-SNAPSHOT
VERSION_NAME=3.1.3-SNAPSHOT
VERSION_CODE=1
GROUP=org.smartregister
POM_SETTING_DESCRIPTION=OpenSRP Client Native Form Json Wizard
Expand Down