Created sample experiment page with form to take user input.
This commit is contained in:
@@ -1,16 +1,26 @@
|
|||||||
package com.example.refactoredapp.presentation.testRight
|
package com.example.refactoredapp.presentation.testRight
|
||||||
|
|
||||||
|
import android.R.attr.button
|
||||||
|
import android.content.res.ColorStateList
|
||||||
|
import android.content.res.Resources
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.graphics.LightingColorFilter
|
||||||
|
import android.graphics.PorterDuff
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.Button
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import com.example.refactoredapp.databinding.FragmentTestRightExpReferenceBinding
|
import com.example.refactoredapp.R
|
||||||
|
import com.example.refactoredapp.data.model.PatientDetails
|
||||||
|
import com.example.refactoredapp.databinding.FragmentTestRightExpSampleBinding
|
||||||
|
|
||||||
class TestRightExpSample : Fragment() {
|
class TestRightExpSample : Fragment() {
|
||||||
|
|
||||||
private lateinit var binding: FragmentTestRightExpReferenceBinding
|
private lateinit var binding: FragmentTestRightExpSampleBinding
|
||||||
private val viewModel: TestRightViewModel by activityViewModels()
|
private val viewModel: TestRightViewModel by activityViewModels()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
@@ -18,7 +28,62 @@ class TestRightExpSample : Fragment() {
|
|||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
// Inflate the layout for this fragment
|
// Inflate the layout for this fragment
|
||||||
binding = FragmentTestRightExpReferenceBinding.inflate(inflater, container, false)
|
binding = FragmentTestRightExpSampleBinding.inflate(inflater, container, false)
|
||||||
|
binding.btnUpdateReference.disable()
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
setupListeners()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupListeners() {
|
||||||
|
binding.btnAcquire.setOnClickListener {
|
||||||
|
val details = isValidInput()
|
||||||
|
if (details != null) {
|
||||||
|
viewModel.patientDetails = details
|
||||||
|
startAcquiring()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.etNameBlock.setOnClickListener { binding.etName.error = "" }
|
||||||
|
binding.etAgeBlock.setOnClickListener { binding.etAge.error = "" }
|
||||||
|
binding.etGenderBlock.setOnClickListener { binding.ddGender.error = "" }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startAcquiring() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isValidInput() : PatientDetails? {
|
||||||
|
val name = binding.etName.editText?.text?.trim()
|
||||||
|
if (name.isNullOrEmpty()){
|
||||||
|
binding.etName.error = getString(R.string.name_error)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
val age = binding.etAge.editText?.text?.trim()
|
||||||
|
if (age.isNullOrEmpty()){
|
||||||
|
binding.etAge.error = getString(R.string.age_error)
|
||||||
|
return null
|
||||||
|
} else if (age.toString().toInt() < 0 || age.toString().toInt() > 199) {
|
||||||
|
binding.etAge.error = getString(R.string.age_error_out_of_bound)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
val gender = binding.ddGender.editText?.text
|
||||||
|
if (gender.isNullOrEmpty()){
|
||||||
|
binding.ddGender.error = getString(R.string.gender_error)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return PatientDetails(name.toString(), age.toString().toInt(), gender.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Button.disable() {
|
||||||
|
backgroundTintList = ContextCompat.getColorStateList(requireActivity(), R.color.gray)
|
||||||
|
isClickable = false
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Button.enable() {
|
||||||
|
backgroundTintList = ContextCompat.getColorStateList(requireActivity(), R.color.purple_500)
|
||||||
|
// background.setColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY)
|
||||||
|
isClickable = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
package com.example.refactoredapp.presentation.testRight
|
package com.example.refactoredapp.presentation.testRight
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import android.util.Patterns
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.example.refactoredapp.data.Constants
|
import com.example.refactoredapp.data.Constants
|
||||||
|
import com.example.refactoredapp.data.model.PatientDetails
|
||||||
import com.example.refactoredapp.data.model.TestRightDeviceConstants
|
import com.example.refactoredapp.data.model.TestRightDeviceConstants
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -12,12 +15,15 @@ import kotlin.math.pow
|
|||||||
|
|
||||||
class TestRightViewModel : ViewModel() {
|
class TestRightViewModel : ViewModel() {
|
||||||
|
|
||||||
var isReferenceDone = false
|
|
||||||
var isServiceConnected = false
|
|
||||||
private val TAG = "TestRightViewModel"
|
private val TAG = "TestRightViewModel"
|
||||||
|
|
||||||
|
var isReferenceDone = false
|
||||||
|
var isServiceConnected = false
|
||||||
|
|
||||||
val isUsbConnected = MutableLiveData(false)
|
val isUsbConnected = MutableLiveData(false)
|
||||||
|
|
||||||
|
lateinit var patientDetails: PatientDetails
|
||||||
|
|
||||||
var deviceConstant: TestRightDeviceConstants? = null
|
var deviceConstant: TestRightDeviceConstants? = null
|
||||||
|
|
||||||
/* Contains wavelength -> pixel no.*/
|
/* Contains wavelength -> pixel no.*/
|
||||||
@@ -92,16 +98,28 @@ class TestRightViewModel : ViewModel() {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fun isValidInput() : Boolean{
|
||||||
// val dispatcher = TestCoroutineDispatcher()
|
// name = email.trim()
|
||||||
//
|
// return when {
|
||||||
// @Before
|
// email.isEmpty() -> {
|
||||||
// fun setup() {
|
// Log.d(TAG, "email is empty")
|
||||||
// Dispatchers.setMain(dispatcher)
|
// _emailError.value = context.getString(R.string.malformed_email_empty_error)
|
||||||
// }
|
// false
|
||||||
//
|
// }
|
||||||
// @After
|
// !Patterns.EMAIL_ADDRESS.matcher(email).matches() -> {
|
||||||
// fun tearDown() {
|
// Log.d(TAG, "email pattern mismatched")
|
||||||
// Dispatchers.resetMain()
|
// _emailError.value = context.getString(R.string.malformed_email_error)
|
||||||
|
// false
|
||||||
|
// }
|
||||||
|
// password.length < 6 -> {
|
||||||
|
// Log.d(TAG, "password is empty")
|
||||||
|
// _passwordError.value = context.getString(R.string.malformed_password_error)
|
||||||
|
// false
|
||||||
|
// }
|
||||||
|
// else -> {
|
||||||
|
// Log.d(TAG, "isValidInput: returning true")
|
||||||
|
// true
|
||||||
|
// }
|
||||||
|
// }
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
5
app/src/main/res/drawable/ic_baseline_create_24.xml
Normal file
5
app/src/main/res/drawable/ic_baseline_create_24.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#000000"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
|
||||||
|
</vector>
|
||||||
@@ -1,12 +1,222 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
tools:context=".presentation.testRight.TestRightExpSample">
|
tools:context=".presentation.testRight.TestRightExpSample">
|
||||||
|
|
||||||
<!-- TODO: Update blank fragment layout -->
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:text="@string/hello_blank_fragment" />
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_update_reference"
|
||||||
|
android:layout_width="216dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:clickable="false"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:text="@string/update_reference"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title"
|
||||||
|
style="@style/title1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:text="@string/Instructions"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/btn_update_reference" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_subtitle1"
|
||||||
|
style="@style/title2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:text="@string/step3"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_title" />
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:id="@+id/cv_sample_details"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
app:cardElevation="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_subtitle1">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_sample"
|
||||||
|
style="@style/title2"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:drawablePadding="8dp"
|
||||||
|
android:text="@string/enter_sample_details"
|
||||||
|
app:drawableStartCompat="@drawable/ic_baseline_create_24"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/et_name"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:hint="@string/sample_name"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_title_sample">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/et_name_block"
|
||||||
|
android:inputType="textPersonName"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/et_age"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:hint="@string/age"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/et_name">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/et_age_block"
|
||||||
|
android:inputType="number"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <com.google.android.material.textfield.TextInputLayout-->
|
||||||
|
<!-- android:id="@+id/et_gender"-->
|
||||||
|
<!-- style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"-->
|
||||||
|
<!-- android:layout_width="match_parent"-->
|
||||||
|
<!-- android:layout_height="wrap_content"-->
|
||||||
|
<!-- android:layout_margin="16dp"-->
|
||||||
|
<!-- android:hint="@string/gender"-->
|
||||||
|
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
||||||
|
<!-- app:layout_constraintEnd_toEndOf="parent"-->
|
||||||
|
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
||||||
|
<!-- app:layout_constraintTop_toBottomOf="@id/et_age">-->
|
||||||
|
|
||||||
|
<!-- <com.google.android.material.textfield.TextInputEditText-->
|
||||||
|
<!-- android:layout_width="match_parent"-->
|
||||||
|
<!-- android:layout_height="wrap_content" />-->
|
||||||
|
|
||||||
|
<!-- </com.google.android.material.textfield.TextInputLayout>-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- style="@style/Widget.Material3.TextInputLayout.FilledBox.ExposedDropdownMenu"-->
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/dd_gender"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:hint="@string/gender"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/et_age">
|
||||||
|
|
||||||
|
<AutoCompleteTextView
|
||||||
|
android:id="@+id/et_gender_block"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:inputType="none"
|
||||||
|
android:hint="@string/gender"
|
||||||
|
android:labelFor="@id/dd_gender"
|
||||||
|
app:simpleItems="@array/gender" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_subtitle2"
|
||||||
|
style="@style/title2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:text="@string/step4"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/cv_sample_details" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_subtitle3"
|
||||||
|
style="@style/title2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:text="@string/step5"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_subtitle2" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btn_acquire"
|
||||||
|
android:layout_width="216dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:clickable="false"
|
||||||
|
android:text="@string/acquire"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_subtitle3" />
|
||||||
|
|
||||||
|
<!-- <Button-->
|
||||||
|
<!-- android:id="@+id/btn_read"-->
|
||||||
|
<!-- android:layout_width="wrap_content"-->
|
||||||
|
<!-- android:layout_height="wrap_content"-->
|
||||||
|
<!-- android:text="@string/read"-->
|
||||||
|
<!-- android:layout_margin="16dp"-->
|
||||||
|
<!-- android:clickable="false"-->
|
||||||
|
<!-- app:layout_constraintTop_toBottomOf="@id/btn_set_reference"-->
|
||||||
|
<!-- app:layout_constraintStart_toStartOf="parent" />-->
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/progressBar"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:indeterminate="true"
|
||||||
|
android:indeterminateDrawable="@drawable/progressbar_drawable"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
</layout>
|
</layout>
|
||||||
@@ -6,6 +6,12 @@
|
|||||||
<item>Denovix</item>
|
<item>Denovix</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="gender">
|
||||||
|
<item>Male</item>
|
||||||
|
<item>Female</item>
|
||||||
|
<item>Other</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||||
<string name="select_the_test">Select the Test</string>
|
<string name="select_the_test">Select the Test</string>
|
||||||
<string name="set_reference">Set Reference</string>
|
<string name="set_reference">Set Reference</string>
|
||||||
@@ -15,10 +21,31 @@
|
|||||||
<string name="please_place">Please place the cuvette containing sample for reference before moving forward</string>
|
<string name="please_place">Please place the cuvette containing sample for reference before moving forward</string>
|
||||||
<string name="yes">Yes</string>
|
<string name="yes">Yes</string>
|
||||||
<string name="no">No</string>
|
<string name="no">No</string>
|
||||||
|
|
||||||
<string name="connect">Connect</string>
|
<string name="connect">Connect</string>
|
||||||
<string name="connected">Connected</string>
|
<string name="connected">Connected</string>
|
||||||
<string name="read">Read</string>
|
<string name="read">Read</string>
|
||||||
|
<string name="update_reference">Update Reference</string>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Instructions Text -->
|
||||||
<string name="Instructions">Instructions</string>
|
<string name="Instructions">Instructions</string>
|
||||||
<string name="step1"><b><u>Step 1</u> : </b> Place the cuvette containing reference/baseline sample for referencing.</string>
|
<string name="step1"><b><u>Step 1</u> : </b> Place the cuvette containing reference/baseline sample for referencing.</string>
|
||||||
<string name="step2"><b><u>Step 2</u> : </b> Press the button below to start the device reading values.</string>
|
<string name="step2"><b><u>Step 2</u> : </b> Press the button below to start the device reading values.</string>
|
||||||
|
|
||||||
|
<string name="step3"><b><u>Step 1</u> : </b> Enter the sample details to start.</string>
|
||||||
|
<string name="step4"><b><u>Step 2</u> : </b> Place the cuvette containing sample for experiment.</string>
|
||||||
|
<string name="step5"><b><u>Step 3</u> : </b> Press the button below to start the device reading values.</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="acquire">Acquire</string>
|
||||||
|
<string name="enter_sample_details">Enter Sample Details</string>
|
||||||
|
<string name="sample_name">Sample Name</string>
|
||||||
|
<string name="age">Age</string>
|
||||||
|
<string name="gender">Gender</string>
|
||||||
|
<string name="name_error">Name can\'t be empty</string>
|
||||||
|
<string name="age_error">Age can\'t be empty</string>
|
||||||
|
<string name="gender_error">Gender can\'t be empty</string>
|
||||||
|
<string name="age_error_out_of_bound">Age should be valid</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user