Skip to content

Commit

Permalink
mylife: smoother myhealth examination input validation (fixes #5264) (#…
Browse files Browse the repository at this point in the history
…5305)

Co-authored-by: dogi <[email protected]>
  • Loading branch information
pavi38 and dogi authored Feb 20, 2025
1 parent 95fbfb1 commit 3c9e398
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 35 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
applicationId "org.ole.planet.myplanet"
minSdkVersion 26
targetSdkVersion 34
versionCode 2319
versionName "0.23.19"
versionCode 2320
versionName "0.23.20"
ndkVersion '21.3.6528147'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
initExamination()
validateFields()
findViewById<View>(R.id.btn_save).setOnClickListener {
if(!allowSubmission){
scrollToView(activityAddExaminationBinding.etBloodpressure)
}
if (!isValidInput || !allowSubmission) {
Utilities.toast(this, getString(R.string.invalid_input))
return@setOnClickListener
}
saveData()
Expand Down Expand Up @@ -269,6 +271,13 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
super.finish()
}

private fun scrollToView(view: View) {
activityAddExaminationBinding.rootScrollView.post {
activityAddExaminationBinding.rootScrollView.smoothScrollTo(0, view.top)
view.requestFocus()
}
}

private val hasInfo: Boolean
get() = !TextUtils.isEmpty("${activityAddExaminationBinding.etAllergies.text}") ||
!TextUtils.isEmpty("${activityAddExaminationBinding.etDiag.text}") ||
Expand All @@ -281,25 +290,39 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
!TextUtils.isEmpty("${activityAddExaminationBinding.etXray.text}")
private val isValidInput: Boolean
get() {
val isValidTemp = getFloat("${activityAddExaminationBinding.etTemperature.text}".trim { it <= ' ' }) in 30.0..40.0 ||
getFloat("${activityAddExaminationBinding.etTemperature.text}".trim { it <= ' ' }) == 0f
val isValidPulse = getInt("${activityAddExaminationBinding.etPulseRate.text}".trim { it <= ' ' }) in 40..120 ||
getFloat("${activityAddExaminationBinding.etPulseRate.text}".trim { it <= ' ' }) == 0f
val isValidHeight = getFloat("${activityAddExaminationBinding.etHeight.text}".trim { it <= ' ' }) in 1.0..250.0 ||
getFloat("${activityAddExaminationBinding.etHeight.text}".trim { it <= ' ' }) == 0f
val isValidWeight = getFloat("${activityAddExaminationBinding.etWeight.text}".trim { it <= ' ' }) in 1.0..150.0 ||
getFloat("${activityAddExaminationBinding.etWeight.text}".trim { it <= ' ' }) == 0f
val scrollView = activityAddExaminationBinding.rootScrollView

val isValidTemp = (getFloat("${activityAddExaminationBinding.etTemperature.text}".trim { it <= ' ' }) in 30.0..40.0 ||
getFloat("${activityAddExaminationBinding.etTemperature.text}".trim { it <= ' ' }) == 0f) &&
"${activityAddExaminationBinding.etTemperature.text}".trim { it <= ' ' }.isNotEmpty()
val isValidPulse = (getInt("${activityAddExaminationBinding.etPulseRate.text}".trim { it <= ' ' }) in 40..120 ||
getFloat("${activityAddExaminationBinding.etPulseRate.text}".trim { it <= ' ' }) == 0f) &&
"${activityAddExaminationBinding.etPulseRate.text}".trim { it <= ' ' }.isNotEmpty()
val isValidHeight = (getFloat("${activityAddExaminationBinding.etHeight.text}".trim { it <= ' ' }) in 1.0..250.0 ||
getFloat("${activityAddExaminationBinding.etHeight.text}".trim { it <= ' ' }) == 0f) &&
"${activityAddExaminationBinding.etHeight.text}".trim { it <= ' ' }.isNotEmpty()
val isValidWeight = (getFloat("${activityAddExaminationBinding.etWeight.text}".trim { it <= ' ' }) in 1.0..150.0 ||
getFloat("${activityAddExaminationBinding.etWeight.text}".trim { it <= ' ' }) == 0f) &&
"${activityAddExaminationBinding.etWeight.text}".trim { it <= ' ' }.isNotEmpty()
if (!isValidTemp) {
activityAddExaminationBinding.etTemperature.error = getString(R.string.invalid_input_must_be_between_30_and_40)
scrollToView(activityAddExaminationBinding.etTemperature)
Utilities.toast(this, getString(R.string.invalid_input_must_be_between_30_and_40))
}
if (!isValidPulse) {
activityAddExaminationBinding.etPulseRate.error = getString(R.string.invalid_input_must_be_between_40_and_120)
Utilities.toast(this, getString(R.string.invalid_input_must_be_between_40_and_120))
scrollToView(activityAddExaminationBinding.etPulseRate)
}
if (!isValidHeight) {
activityAddExaminationBinding.etHeight.error = getString(R.string.invalid_input_must_be_between_1_and_250)
Utilities.toast(this, getString(R.string.invalid_input_must_be_between_1_and_250))
scrollToView(activityAddExaminationBinding.etHeight)
}
if (!isValidWeight) {
activityAddExaminationBinding.etWeight.error = getString(R.string.invalid_input_must_be_between_1_and_150)
Utilities.toast(this, getString(R.string.invalid_input_must_be_between_1_and_150))
scrollToView(activityAddExaminationBinding.etWeight)
}
return isValidTemp && isValidHeight && isValidPulse && isValidWeight
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_add_examination.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
tools:context=".ui.myhealth.AddExaminationActivity">

<androidx.core.widget.NestedScrollView
android:id = "@+id/rootScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">

Expand Down
8 changes: 4 additions & 4 deletions app/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@
<string name="bp_must_be_between_60_40_and_300_200">يجب أن يكون ضغط الدم بين 60/40 و 300/200</string>
<string name="systolic_and_diastolic_must_be_numbers">يجب أن تكون القيم النبضية والانبساطية أرقام</string>
<string name="added_successfully">تمت الإضافة بنجاح</string>
<string name="invalid_input_must_be_between_30_and_40">إدخال غير صالح، يجب أن يكون بين 30 و 40</string>
<string name="invalid_input_must_be_between_40_and_120">إدخال غير صالح، يجب أن يكون بين 40 و 120</string>
<string name="invalid_input_must_be_between_1_and_250">إدخال غير صالح، يجب أن يكون بين 1 و 250</string>
<string name="invalid_input_must_be_between_1_and_150">إدخال غير صالح، يجب أن يكون بين 1 و 150</string>
<string name="invalid_input_must_be_between_30_and_40">يجب أن تكون درجة حرارة الجسم بين 30 و40</string>
<string name="invalid_input_must_be_between_40_and_120">معدل النبض يجب أن يكون بين 40 و120</string>
<string name="invalid_input_must_be_between_1_and_250">يجب أن يكون الارتفاع بين 1 و 250</string>
<string name="invalid_input_must_be_between_1_and_150">الوزن يجب أن يكون بين 1 و 150</string>
<string name="unable_to_add_health_record">غير قادر على إضافة سجل صحي</string>
<string name="are_you_sure_you_want_to_exit_your_data_will_be_lost">هل أنت متأكد أنك تريد إلغاء إضافة هذا المورد؟ سيتم فقدان البيانات الخاصة بك</string>
<string name="yes_i_want_to_exit">"نعم، أرغب في الخروج. "</string>
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@
<string name="bp_must_be_between_60_40_and_300_200">La presión arterial debe estar entre 60/40 y 300/200</string>
<string name="systolic_and_diastolic_must_be_numbers">Sistólica y diastólica deben ser números</string>
<string name="added_successfully">Agregado exitosamente</string>
<string name="invalid_input_must_be_between_30_and_40">Entrada inválida, debe estar entre 30 y 40</string>
<string name="invalid_input_must_be_between_40_and_120">Entrada inválida, debe estar entre 40 y 120</string>
<string name="invalid_input_must_be_between_1_and_250">Entrada inválida, debe estar entre 1 y 250</string>
<string name="invalid_input_must_be_between_1_and_150">Entrada inválida, debe estar entre 1 y 150</string>
<string name="invalid_input_must_be_between_30_and_40">La temperatura corporal, debe estar entre 30 y 40</string>
<string name="invalid_input_must_be_between_40_and_120">frecuencia del pulso, debe estar entre 40 y 120</string>
<string name="invalid_input_must_be_between_1_and_250">altura, debe estar entre 1 y 250</string>
<string name="invalid_input_must_be_between_1_and_150">Peso, debe estar entre 1 y 150</string>
<string name="unable_to_add_health_record">No se puede agregar el registro de salud.</string>
<string name="are_you_sure_you_want_to_exit_your_data_will_be_lost">¿Está seguro de que desea cancelar la adición de este recurso? Tus datos se perderán</string>
<string name="yes_i_want_to_exit">"Sí, quiero salir. "</string>
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@
<string name="bp_must_be_between_60_40_and_300_200">La tension artérielle doit être entre 60/40 et 300/200</string>
<string name="systolic_and_diastolic_must_be_numbers">La systolique et la diastolique doivent être des nombres</string>
<string name="added_successfully">Ajouté avec succès</string>
<string name="invalid_input_must_be_between_30_and_40">Entrée invalide, doit être entre 30 et 40</string>
<string name="invalid_input_must_be_between_40_and_120">Entrée invalide, doit être entre 40 et 120</string>
<string name="invalid_input_must_be_between_1_and_250">Entrée invalide, doit être entre 1 et 250</string>
<string name="invalid_input_must_be_between_1_and_150">Entrée invalide, doit être entre 1 et 150</string>
<string name="invalid_input_must_be_between_30_and_40">la température corporelle, doit être entre 30 et 40</string>
<string name="invalid_input_must_be_between_40_and_120">fréquence du pouls, doit être entre 40 et 120</string>
<string name="invalid_input_must_be_between_1_and_250">Hauteur, doit être entre 1 et 250</string>
<string name="invalid_input_must_be_between_1_and_150">Poids, doit être entre 1 et 150</string>
<string name="unable_to_add_health_record">Impossible d\'ajouter un dossier de santé.</string>
<string name="are_you_sure_you_want_to_exit_your_data_will_be_lost">Êtes-vous sûr de vouloir annuler l\'ajout de cette ressource ? Vos données seront perdues</string>
<string name="yes_i_want_to_exit">"Oui, je veux quitter. "</string>
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/res/values-ne/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@
<string name="bp_must_be_between_60_40_and_300_200">रक्तचाप ६०/४० र ३००/२०० को बीचमा हुनुपर्छ</string>
<string name="systolic_and_diastolic_must_be_numbers">सिस्टोलिक र डायस्टोलिक अंशांकीय हुनुपर्छ</string>
<string name="added_successfully">सफलतापूर्वक थपियो</string>
<string name="invalid_input_must_be_between_30_and_40">अमान्य इनपुट, ३० र ४० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_40_and_120">अमान्य इनपुट, ४० र १२० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_1_and_250">अमान्य इनपुट, १ र २५० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_1_and_150">अमान्य इनपुट, १ र १५० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_30_and_40">शरीरको तापमान, ३० र ४० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_40_and_120">पल्स दर, ४० र १२० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_1_and_250">उचाइ, १ र २५० को बीचमा हुनुपर्छ</string>
<string name="invalid_input_must_be_between_1_and_150">वजन, १ र १५० को बीचमा हुनुपर्छ</string>
<string name="unable_to_add_health_record">स्वास्थ्य रेकर्ड थप्न सकिएन।</string>
<string name="are_you_sure_you_want_to_exit_your_data_will_be_lost">के तपाईं यो स्रोत थप्न रद्द गर्न निश्चित हुनुहुन्छ? तपाईंको डाटा हराउनेछ</string>
<string name="yes_i_want_to_exit">"हो, म बाहिर निस्कन चाहन्छु। "</string>
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/res/values-so/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@
<string name="bp_must_be_between_60_40_and_300_200">Dhacdo dheecaan waa in uu ka dhiman yahay 60/40 ilaa 300/200</string>
<string name="systolic_and_diastolic_must_be_numbers">Dhacdo dheecaanka iyo dheecaanku waa in ay yihiin lambarka</string>
<string name="added_successfully">Ku daray si guul ah</string>
<string name="invalid_input_must_be_between_30_and_40">Galin waajib ah, waa in lagu jiro 30 ilaa 40</string>
<string name="invalid_input_must_be_between_40_and_120">Galin waajib ah, waa in lagu jiro 40 ilaa 120</string>
<string name="invalid_input_must_be_between_1_and_250">Galin waajib ah, waa in lagu jiro 1 ilaa 250</string>
<string name="invalid_input_must_be_between_1_and_150">Galin waajib ah, waa in lagu jiro 1 ilaa 150</string>
<string name="invalid_input_must_be_between_30_and_40">heerkulka jidhka, waa in lagu jiro 30 ilaa 40</string>
<string name="invalid_input_must_be_between_40_and_120">heerka garaaca garaaca, waa in lagu jiro 40 ilaa 120</string>
<string name="invalid_input_must_be_between_1_and_250">Dhererka, waa in lagu jiro 1 ilaa 250</string>
<string name="invalid_input_must_be_between_1_and_150">Miisaanka, waa in lagu jiro 1 ilaa 150</string>
<string name="unable_to_add_health_record">Lama helayno diiwaan caafimaad</string>
<string name="are_you_sure_you_want_to_exit_your_data_will_be_lost">Ma hubtaa inaad rabto inaad tirtirto ku darista kheyraadkan? Xogtaadu way lumi doontaa</string>
<string name="yes_i_want_to_exit">"Haa, waxaan rabaa inaan ka cabsado. "</string>
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -779,10 +779,10 @@
<string name="bp_must_be_between_60_40_and_300_200">Bp must be between 60/40 and 300/200</string>
<string name="systolic_and_diastolic_must_be_numbers">Systolic and diastolic must be numbers</string>
<string name="added_successfully">Added successfully</string>
<string name="invalid_input_must_be_between_30_and_40">Invalid input , must be between 30 and 40</string>
<string name="invalid_input_must_be_between_40_and_120">Invalid input , must be between 40 and 120</string>
<string name="invalid_input_must_be_between_1_and_250">Invalid input , must be between 1 and 250</string>
<string name="invalid_input_must_be_between_1_and_150">Invalid input , must be between 1 and 150</string>
<string name="invalid_input_must_be_between_30_and_40">Body temperature, must be between 30 and 40</string>
<string name="invalid_input_must_be_between_40_and_120">Pulse rate, must be between 40 and 120</string>
<string name="invalid_input_must_be_between_1_and_250">Height, must be between 1 and 250</string>
<string name="invalid_input_must_be_between_1_and_150">Weight, must be between 1 and 150</string>
<string name="unable_to_add_health_record">Unable to add health record.</string>
<string name="are_you_sure_you_want_to_exit_your_data_will_be_lost">Are you sure you want to cancel adding this resource? Your data will be lost</string>
<string name="yes_i_want_to_exit">"Yes, I want to exit. "</string>
Expand Down

0 comments on commit 3c9e398

Please sign in to comment.