resolve merge conflicts
This commit is contained in:
@@ -106,7 +106,7 @@ dependencies {
|
|||||||
implementation "androidx.fragment:fragment-ktx:1.6.2"
|
implementation "androidx.fragment:fragment-ktx:1.6.2"
|
||||||
|
|
||||||
// CSV read, write
|
// CSV read, write
|
||||||
implementation 'com.opencsv:opencsv:5.5'
|
implementation 'com.opencsv:opencsv:5.9'
|
||||||
|
|
||||||
// Barcode scanner
|
// Barcode scanner
|
||||||
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
|
||||||
|
|||||||
@@ -9,13 +9,13 @@ import java.io.IOException
|
|||||||
|
|
||||||
class LocalFileDataSource {
|
class LocalFileDataSource {
|
||||||
|
|
||||||
fun saveCsvToDisk(filepath: String, contents: ArrayList<Array<String>>){
|
fun saveCsvToDisk(filepath: String, contents: ArrayList<Array<String>>) {
|
||||||
val writer = CSVWriter(FileWriter(filepath))
|
val writer = CSVWriter(FileWriter(filepath))
|
||||||
writer.writeAll(contents) // data is adding to csv
|
writer.writeAll(contents) // data is adding to csv
|
||||||
writer.close()
|
writer.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveTextToDisk(filepath: String, contents: String){
|
fun saveTextToDisk(filepath: String, contents: String) {
|
||||||
val writer = FileWriter(File(filepath))
|
val writer = FileWriter(File(filepath))
|
||||||
|
|
||||||
writer.append(contents)
|
writer.append(contents)
|
||||||
@@ -23,7 +23,6 @@ class LocalFileDataSource {
|
|||||||
writer.close()
|
writer.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun exportDataToCSV(
|
fun exportDataToCSV(
|
||||||
fileName: String, dataList: List<HemoCubeTestData>
|
fileName: String, dataList: List<HemoCubeTestData>
|
||||||
): Boolean {
|
): Boolean {
|
||||||
@@ -57,16 +56,32 @@ class LocalFileDataSource {
|
|||||||
"resultData",
|
"resultData",
|
||||||
"led1Buffer",
|
"led1Buffer",
|
||||||
"led2Buffer",
|
"led2Buffer",
|
||||||
|
"led3Buffer",
|
||||||
|
"led4Buffer",
|
||||||
"led1Sample",
|
"led1Sample",
|
||||||
"led2Sample",
|
"led2Sample",
|
||||||
|
"led3Sample",
|
||||||
|
"led4Sample",
|
||||||
"led1Average",
|
"led1Average",
|
||||||
"led2Average",
|
"led2Average",
|
||||||
|
"led3Average",
|
||||||
|
"led4Average",
|
||||||
|
"abs1",
|
||||||
|
"abs2",
|
||||||
|
"abs3",
|
||||||
|
"abs4",
|
||||||
"deviceRatio",
|
"deviceRatio",
|
||||||
"calculatedRatio",
|
"calculatedRatio",
|
||||||
|
"predictedDenovixRatio",
|
||||||
"coefficients",
|
"coefficients",
|
||||||
"classificationResult",
|
"classificationResult",
|
||||||
|
"prdClassification",
|
||||||
"errorMessages",
|
"errorMessages",
|
||||||
"batteryLevel"
|
"batteryLevel",
|
||||||
|
"batteryCapacity",
|
||||||
|
"batteryMaxCapacity",
|
||||||
|
"batteryTemperature",
|
||||||
|
"batteryVoltage"
|
||||||
)
|
)
|
||||||
csvWriter.writeNext(header)
|
csvWriter.writeNext(header)
|
||||||
|
|
||||||
@@ -96,14 +111,32 @@ class LocalFileDataSource {
|
|||||||
data.resultData,
|
data.resultData,
|
||||||
data.led1Buffer?.toString() ?: "",
|
data.led1Buffer?.toString() ?: "",
|
||||||
data.led2Buffer?.toString() ?: "",
|
data.led2Buffer?.toString() ?: "",
|
||||||
|
data.led3Buffer?.toString() ?: "",
|
||||||
|
data.led4Buffer?.toString() ?: "",
|
||||||
data.led1Sample?.toString() ?: "",
|
data.led1Sample?.toString() ?: "",
|
||||||
data.led2Sample?.toString() ?: "",
|
data.led2Sample?.toString() ?: "",
|
||||||
|
data.led3Sample?.toString() ?: "",
|
||||||
|
data.led4Sample?.toString() ?: "",
|
||||||
data.led1Average?.toString() ?: "",
|
data.led1Average?.toString() ?: "",
|
||||||
data.led2Average?.toString() ?: "",
|
data.led2Average?.toString() ?: "",
|
||||||
|
data.led3Average?.toString() ?: "",
|
||||||
|
data.led4Average?.toString() ?: "",
|
||||||
|
data.abs1?.toString() ?: "",
|
||||||
|
data.abs2?.toString() ?: "",
|
||||||
|
data.abs3?.toString() ?: "",
|
||||||
|
data.abs4?.toString() ?: "",
|
||||||
data.deviceRatio?.toString() ?: "",
|
data.deviceRatio?.toString() ?: "",
|
||||||
data.calculatedRatio?.toString() ?: "",
|
data.calculatedRatio?.toString() ?: "",
|
||||||
|
data.predictedDenovixRatio?.toString() ?: "",
|
||||||
data.coefficients ?: "",
|
data.coefficients ?: "",
|
||||||
data.classificationResult
|
data.classificationResult,
|
||||||
|
data.prdClassification,
|
||||||
|
data.errorMessages,
|
||||||
|
data.batteryLevel,
|
||||||
|
data.batteryCapacity,
|
||||||
|
data.batteryMaxCapacity,
|
||||||
|
data.batteryTemperature,
|
||||||
|
data.batteryVoltage
|
||||||
)
|
)
|
||||||
csvWriter.writeNext(row)
|
csvWriter.writeNext(row)
|
||||||
}
|
}
|
||||||
@@ -124,6 +157,4 @@ class LocalFileDataSource {
|
|||||||
|
|
||||||
return folder
|
return folder
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -176,4 +176,10 @@ object AppModule {
|
|||||||
fun provideLocalFileDataSource(): LocalFileDataSource {
|
fun provideLocalFileDataSource(): LocalFileDataSource {
|
||||||
return LocalFileDataSource()
|
return LocalFileDataSource()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideLocalFileDataSource(): LocalFileDataSource {
|
||||||
|
return LocalFileDataSource()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ import android.content.SharedPreferences
|
|||||||
import android.os.BatteryManager
|
import android.os.BatteryManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@@ -84,6 +85,7 @@ class HomeFragment : Fragment() {
|
|||||||
binding.btnQuickCapture.visibility = View.VISIBLE
|
binding.btnQuickCapture.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkUnprocessedCSVData()
|
||||||
viewModel.allUserData.observe(viewLifecycleOwner) { userData ->
|
viewModel.allUserData.observe(viewLifecycleOwner) { userData ->
|
||||||
deleteIncompleteRegistrations(userData)
|
deleteIncompleteRegistrations(userData)
|
||||||
}
|
}
|
||||||
@@ -175,6 +177,10 @@ class HomeFragment : Fragment() {
|
|||||||
)
|
)
|
||||||
startActivity(i)
|
startActivity(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.downloadCSV.setOnClickListener {
|
||||||
|
showDownloadDialog(requireContext())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkForTokenAndUpdate() {
|
private fun checkForTokenAndUpdate() {
|
||||||
@@ -529,6 +535,14 @@ class HomeFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun checkUnprocessedCSVData() {
|
||||||
|
hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
|
||||||
|
val downloadDataVisibility =
|
||||||
|
if (userDataList.any { !it.isCSVCreated && it.testStatus == true }) View.VISIBLE else View.GONE
|
||||||
|
binding.downloadCSV.visibility = downloadDataVisibility
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun showUploadDialog(context: Context) {
|
private fun showUploadDialog(context: Context) {
|
||||||
val builder = AlertDialog.Builder(context)
|
val builder = AlertDialog.Builder(context)
|
||||||
builder.setTitle(R.string.upload_db_registration_title)
|
builder.setTitle(R.string.upload_db_registration_title)
|
||||||
@@ -546,6 +560,23 @@ class HomeFragment : Fragment() {
|
|||||||
dialog.show()
|
dialog.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// private fun showDownloadDialog(context: Context) {
|
||||||
|
// val builder = AlertDialog.Builder(context)
|
||||||
|
// builder.setTitle(R.string.download_db_registration_title)
|
||||||
|
// builder.setMessage(R.string.download_db_registration_message)
|
||||||
|
//
|
||||||
|
// builder.setPositiveButton(R.string.downloadcsv) { dialog, _ ->
|
||||||
|
// downloadLocalDBData(dialog)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// builder.setNegativeButton(R.string.cancel) { dialog, _ ->
|
||||||
|
// dialog.dismiss()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// val dialog = builder.create()
|
||||||
|
// dialog.show()
|
||||||
|
// }
|
||||||
|
|
||||||
private fun uploadLocalDBData(dialog: DialogInterface) {
|
private fun uploadLocalDBData(dialog: DialogInterface) {
|
||||||
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
|
viewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
|
||||||
if (userDataList.isEmpty()) {
|
if (userDataList.isEmpty()) {
|
||||||
@@ -583,6 +614,28 @@ class HomeFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// private fun downloadLocalDBData(dialog: DialogInterface) {
|
||||||
|
// hemoCubeViewModel.allUserData.observe(viewLifecycleOwner) { userDataList ->
|
||||||
|
// val downloadList = mutableListOf<HemoCubeTestData>()
|
||||||
|
//
|
||||||
|
// userDataList.forEach { userData ->
|
||||||
|
// if (!userData.isCSVCreated) {
|
||||||
|
// downloadList.add(userData) // Add the userData to downloadList
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if (downloadList.isNotEmpty()) {
|
||||||
|
// // Call ViewModel function to create CSV with filtered data
|
||||||
|
// hemoCubeViewModel.createCSV(downloadList, requireContext())
|
||||||
|
// Toast.makeText(requireContext(), "Done", Toast.LENGTH_SHORT).show()
|
||||||
|
// } else {
|
||||||
|
// Toast.makeText(requireContext(), "Failed", Toast.LENGTH_SHORT).show()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// dialog.dismiss()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
private fun deleteIncompleteRegistrations(userDataList: List<UserData>) {
|
private fun deleteIncompleteRegistrations(userDataList: List<UserData>) {
|
||||||
userDataList.forEach { userData ->
|
userDataList.forEach { userData ->
|
||||||
if (userData.csvPath.isEmpty()) {
|
if (userData.csvPath.isEmpty()) {
|
||||||
|
|||||||
@@ -446,26 +446,6 @@ class HemoCubeViewModel @Inject constructor(
|
|||||||
return true // Assuming success, you might want to modify this based on your actual logic
|
return true // Assuming success, you might want to modify this based on your actual logic
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getCurrentDate(): String {
|
|
||||||
val dateFormat = SimpleDateFormat("dd-MM-yy", Locale.getDefault())
|
|
||||||
val currentDate = Date()
|
|
||||||
return dateFormat.format(currentDate)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun createCSV(hemoCubeTestData: List<HemoCubeTestData>, appContext: Context) =
|
|
||||||
viewModelScope.launch {
|
|
||||||
val fileName = "HPOS${getCurrentDate()}.csv"
|
|
||||||
if (localFileDataSource.exportDataToCSV(fileName, hemoCubeTestData)) {
|
|
||||||
hemoCubeTestData.forEach { data ->
|
|
||||||
data.localFlag = true
|
|
||||||
hemoCubeDao.updateCSVFieldById(
|
|
||||||
data._id,
|
|
||||||
true
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getBatteryLevel(): Float? {
|
fun getBatteryLevel(): Float? {
|
||||||
val batteryPct: Float? = batteryStatus?.let { intent ->
|
val batteryPct: Float? = batteryStatus?.let { intent ->
|
||||||
val level: Int =
|
val level: Int =
|
||||||
@@ -533,4 +513,24 @@ class HemoCubeViewModel @Inject constructor(
|
|||||||
|
|
||||||
return maxCapacity
|
return maxCapacity
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun createCSV(hemoCubeTestData: List<HemoCubeTestData>, appContext: Context) =
|
||||||
|
viewModelScope.launch {
|
||||||
|
val fileName = "HPOS${getCurrentDate()}.csv"
|
||||||
|
if (localFileDataSource.exportDataToCSV(fileName, hemoCubeTestData)) {
|
||||||
|
hemoCubeTestData.forEach { data ->
|
||||||
|
data.localFlag = true
|
||||||
|
hemoCubeDao.updateCSVFieldById(
|
||||||
|
data._id,
|
||||||
|
true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getCurrentDate(): String {
|
||||||
|
return SimpleDateFormat(
|
||||||
|
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
||||||
|
).format(Calendar.getInstance().time)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5
app/src/main/res/drawable/download_csv.xml
Normal file
5
app/src/main/res/drawable/download_csv.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="@color/primary"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@color/primary" android:pathData="M19,9h-4V3H9v6H5l7,7 7,-7zM5,18v2h14v-2H5z"/>
|
||||||
|
</vector>
|
||||||
@@ -18,11 +18,24 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
|
android:id="@+id/downloadCSV"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="32dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:backgroundTint="@color/primary"
|
||||||
|
android:contentDescription="@string/downloadcsv"
|
||||||
|
android:src="@drawable/download_csv"
|
||||||
|
app:elevation="1dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/internetNotAvailableCL"
|
android:id="@+id/internetNotAvailableCL"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:visibility="visible"
|
android:visibility="gone"
|
||||||
android:padding="24dp">
|
android:padding="24dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -31,6 +44,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:layout_marginTop="24dp"
|
||||||
android:text="@string/internet_not_available_please_enter_the_user_id_manually"
|
android:text="@string/internet_not_available_please_enter_the_user_id_manually"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
@@ -117,7 +131,7 @@
|
|||||||
android:id="@+id/internetAvailableCL"
|
android:id="@+id/internetAvailableCL"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:visibility="gone"
|
android:visibility="visible"
|
||||||
android:padding="24dp">
|
android:padding="24dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|||||||
@@ -189,6 +189,8 @@
|
|||||||
<string name="user_id_error_message">उपयोगकर्ता आईडी 18 अंकों की होनी चाहिए और कृपया रक्त समूह का चयन करें</string>
|
<string name="user_id_error_message">उपयोगकर्ता आईडी 18 अंकों की होनी चाहिए और कृपया रक्त समूह का चयन करें</string>
|
||||||
<string name="upload_db_registration_title">डीबी टेस्ट अपलोड करें</string>
|
<string name="upload_db_registration_title">डीबी टेस्ट अपलोड करें</string>
|
||||||
<string name="upload_db_registration_message">क्या आप स्थानीय डीबी टेस्ट को क्लाउड पर अपलोड करना चाहते हैं?</string>
|
<string name="upload_db_registration_message">क्या आप स्थानीय डीबी टेस्ट को क्लाउड पर अपलोड करना चाहते हैं?</string>
|
||||||
|
<string name="download_db_registration_title">डाउनलोड डीबी टेस्ट</string>
|
||||||
|
<string name="download_db_registration_message">क्या आप लोकल डीबी टेस्ट्स को सीएसवी प्रारूप में डाउनलोड करना चाहते हैं?</string>
|
||||||
<string name="upload">अपलोड</string>
|
<string name="upload">अपलोड</string>
|
||||||
<string name="cancel">रद्द करें</string>
|
<string name="cancel">रद्द करें</string>
|
||||||
<string name="upload_success_message">अपलोड सफलता पूर्वक हुआ</string>
|
<string name="upload_success_message">अपलोड सफलता पूर्वक हुआ</string>
|
||||||
@@ -266,4 +268,5 @@
|
|||||||
<string name="ok">ठीक है</string>
|
<string name="ok">ठीक है</string>
|
||||||
<string name="deviceinfo">डिवाइस जानकारी</string>
|
<string name="deviceinfo">डिवाइस जानकारी</string>
|
||||||
|
|
||||||
|
<string name="downloadcsv">सीएसवी डाउनलोड करें</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -188,6 +188,8 @@
|
|||||||
<string name="user_id_error_message">ಬಳಕೆದಾರ ಐಡಿ 18 ಅಂಕಗಳಿರಬೇಕು ಮತ್ತು ದಯವಿಟ್ಟು ರಕ್ತ ಗುಂಪುವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</string>
|
<string name="user_id_error_message">ಬಳಕೆದಾರ ಐಡಿ 18 ಅಂಕಗಳಿರಬೇಕು ಮತ್ತು ದಯವಿಟ್ಟು ರಕ್ತ ಗುಂಪುವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</string>
|
||||||
<string name="upload_db_registration_title">ಸ್ಥಾನಿಕ DB ಪರೀಕ್ಷೆಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ</string>
|
<string name="upload_db_registration_title">ಸ್ಥಾನಿಕ DB ಪರೀಕ್ಷೆಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ</string>
|
||||||
<string name="upload_db_registration_message">ನೀವು ಸ್ಥಾನಿಕ DB ಪರೀಕ್ಷೆಗಳನ್ನು ಕ್ಲೌಡ್ಗೆ ಅಪ್ಲೋಡ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ?</string>
|
<string name="upload_db_registration_message">ನೀವು ಸ್ಥಾನಿಕ DB ಪರೀಕ್ಷೆಗಳನ್ನು ಕ್ಲೌಡ್ಗೆ ಅಪ್ಲೋಡ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ?</string>
|
||||||
|
<string name="download_db_registration_title">ಡೌನ್ಲೋಡ್ ಡಿಬಿ ಟೆಸ್ಟ್ಗಳು</string>
|
||||||
|
<string name="download_db_registration_message">ನೀವು ಲೋಕಲ್ ಡಿಬಿ ಟೆಸ್ಟ್ಗಳನ್ನು CSV ಆಕರದಲ್ಲಿ ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ?</string>
|
||||||
<string name="upload">ಅಪ್ಲೋಡ್ ಮಾಡಿ</string>
|
<string name="upload">ಅಪ್ಲೋಡ್ ಮಾಡಿ</string>
|
||||||
<string name="cancel">ರದ್ದು ಮಾಡಿ</string>
|
<string name="cancel">ರದ್ದು ಮಾಡಿ</string>
|
||||||
<string name="upload_success_message">ಯಶಸ್ವಿಯಾಗಿ ಅಪ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</string>
|
<string name="upload_success_message">ಯಶಸ್ವಿಯಾಗಿ ಅಪ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</string>
|
||||||
@@ -265,6 +267,7 @@
|
|||||||
<string name="app_language">ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ</string>
|
<string name="app_language">ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ</string>
|
||||||
<string name="add_blood_group">ರಕ್ತ ಗುಂಡನ್ನು ಸೇರಿಸಿ</string>
|
<string name="add_blood_group">ರಕ್ತ ಗುಂಡನ್ನು ಸೇರಿಸಿ</string>
|
||||||
<string name="ok">ಸರಿ</string>
|
<string name="ok">ಸರಿ</string>
|
||||||
|
<string name="downloadcsv">CSV ಡೌನ್ಲೋಡ್ ಮಾಡಿ</string>
|
||||||
<!-- Add translations for other strings -->
|
<!-- Add translations for other strings -->
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -191,6 +191,8 @@
|
|||||||
<string name="user_id_error_message">User ID should be 18 digits and please select the blood group</string>
|
<string name="user_id_error_message">User ID should be 18 digits and please select the blood group</string>
|
||||||
<string name="upload_db_registration_title">Upload DB Tests</string>
|
<string name="upload_db_registration_title">Upload DB Tests</string>
|
||||||
<string name="upload_db_registration_message">Do you want to upload the local DB tests to the cloud?</string>
|
<string name="upload_db_registration_message">Do you want to upload the local DB tests to the cloud?</string>
|
||||||
|
<string name="download_db_registration_title">Download DB Tests</string>
|
||||||
|
<string name="download_db_registration_message">Do you want to download the local DB tests in CSV format?</string>
|
||||||
<string name="upload">Upload</string>
|
<string name="upload">Upload</string>
|
||||||
<string name="cancel">Cancel</string>
|
<string name="cancel">Cancel</string>
|
||||||
|
|
||||||
@@ -271,4 +273,5 @@
|
|||||||
<string name="select_language">Select your preferred language</string>
|
<string name="select_language">Select your preferred language</string>
|
||||||
<string name="app_language">App Language</string>
|
<string name="app_language">App Language</string>
|
||||||
<string name="ok">OK</string>
|
<string name="ok">OK</string>
|
||||||
|
<string name="downloadcsv">Download CSV</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user