diff --git a/app/src/main/java/com/fieldbook/tracker/activities/FieldDetailFragment.kt b/app/src/main/java/com/fieldbook/tracker/activities/FieldDetailFragment.kt index 2899553e7..7ca5f9496 100644 --- a/app/src/main/java/com/fieldbook/tracker/activities/FieldDetailFragment.kt +++ b/app/src/main/java/com/fieldbook/tracker/activities/FieldDetailFragment.kt @@ -75,6 +75,7 @@ class FieldDetailFragment : Fragment(), FieldSyncController { private lateinit var sortOrderChip: Chip private lateinit var traitCountChip: Chip private lateinit var observationCountChip: Chip + private lateinit var trialNameChip: Chip private lateinit var detailRecyclerView: RecyclerView private var adapter: FieldDetailAdapter? = null @@ -99,6 +100,7 @@ class FieldDetailFragment : Fragment(), FieldSyncController { traitCountChip = rootView.findViewById(R.id.traitCountChip) observationCountChip = rootView.findViewById(R.id.observationCountChip) detailRecyclerView = rootView.findViewById(R.id.fieldDetailRecyclerView) + trialNameChip = rootView.findViewById(R.id.trialNameChip) fieldId = arguments?.getInt("fieldId") loadFieldDetails() @@ -278,6 +280,12 @@ class FieldDetailFragment : Fragment(), FieldSyncController { } } entryCount = "${entryCount} ${field.observation_level}" + + trialNameChip.visibility = View.GONE + trialNameChip.text = field.trial_name + if (trialNameChip.text.isNotBlank()) { + trialNameChip.visibility = View.VISIBLE + } } // val sortOrder = field.exp_sort.takeIf { !it.isNullOrBlank() } ?: getString(R.string.field_default_sort_order) diff --git a/app/src/main/java/com/fieldbook/tracker/activities/brapi/io/BrapiStudyImportActivity.kt b/app/src/main/java/com/fieldbook/tracker/activities/brapi/io/BrapiStudyImportActivity.kt index 366bda62b..076a997a1 100644 --- a/app/src/main/java/com/fieldbook/tracker/activities/brapi/io/BrapiStudyImportActivity.kt +++ b/app/src/main/java/com/fieldbook/tracker/activities/brapi/io/BrapiStudyImportActivity.kt @@ -524,6 +524,10 @@ class BrapiStudyImportActivity : ThemedActivity(), CoroutineScope by MainScope() override fun getLocation(id: String): String { return cacheModels.studies.firstOrNull { it.study.studyDbId == id }?.study?.locationName ?: "" } + + override fun getTrialName(id: String): String { + return cacheModels.studies.firstOrNull { it.study.studyDbId == id }?.study?.trialName ?: "" + } }) (studyList.adapter as StudyAdapter).submitList(studyModels) @@ -647,6 +651,7 @@ class BrapiStudyImportActivity : ThemedActivity(), CoroutineScope by MainScope() details.studyName = study.studyName details.commonCropName = study.commonCropName details.numberOfPlots = units.size + details.trialName = study.trialName details.traits = observationVariables[study.studyDbId]?.toList() ?.map { it.toTraitObject(this@BrapiStudyImportActivity) } ?: listOf() @@ -679,7 +684,7 @@ class BrapiStudyImportActivity : ThemedActivity(), CoroutineScope by MainScope() level, primaryId, secondaryId, - sortOrder + sortOrder, ) } } diff --git a/app/src/main/java/com/fieldbook/tracker/adapters/StudyAdapter.kt b/app/src/main/java/com/fieldbook/tracker/adapters/StudyAdapter.kt index 327dea20f..00367cd07 100644 --- a/app/src/main/java/com/fieldbook/tracker/adapters/StudyAdapter.kt +++ b/app/src/main/java/com/fieldbook/tracker/adapters/StudyAdapter.kt @@ -27,6 +27,7 @@ class StudyAdapter(private val studyLoader: StudyLoader) : fun getObservationUnits(id: String, position: Int): HashSet? fun getGermplasm(id: String, position: Int): HashSet? fun getLocation(id: String): String + fun getTrialName(id: String): String } data class Model( @@ -47,11 +48,17 @@ class StudyAdapter(private val studyLoader: StudyLoader) : holder.traitCountChip.text = studyLoader.getObservationVariables(id, position)?.size?.toString() ?: "0" holder.unitCountChip.text = studyLoader.getObservationUnits(id, position)?.size?.toString() ?: "" holder.locationChip.text = studyLoader.getLocation(id) - + holder.trialChip.text = studyLoader.getTrialName(id) if (holder.traitCountChip.text.isNotBlank() && holder.unitCountChip.text.isNotBlank()) { holder.progressBar.visibility = View.GONE } + + if (holder.trialChip.text.isNotBlank()) { + holder.trialChip.visibility = View.VISIBLE + } else { + holder.trialChip.visibility = View.GONE + } } } @@ -65,6 +72,7 @@ class StudyAdapter(private val studyLoader: StudyLoader) : var traitCountChip: Chip = v.findViewById(R.id.list_item_study_traits_chip) var locationChip: Chip = v.findViewById(R.id.list_item_study_location_chip) var progressBar: ProgressBar = v.findViewById(R.id.list_item_study_pb) + var trialChip: Chip = v.findViewById(R.id.list_item_trial_chip) } class DiffCallback : DiffUtil.ItemCallback() { diff --git a/app/src/main/java/com/fieldbook/tracker/brapi/model/BrapiStudyDetails.java b/app/src/main/java/com/fieldbook/tracker/brapi/model/BrapiStudyDetails.java index 5bab8578c..bb6131ab9 100644 --- a/app/src/main/java/com/fieldbook/tracker/brapi/model/BrapiStudyDetails.java +++ b/app/src/main/java/com/fieldbook/tracker/brapi/model/BrapiStudyDetails.java @@ -15,6 +15,7 @@ public class BrapiStudyDetails { private List> values; private List traits; private List observations; + private String trialName; public static void merge(BrapiStudyDetails sd1, BrapiStudyDetails sd2) { if (sd2.getStudyDbId() != null) @@ -37,6 +38,8 @@ public static void merge(BrapiStudyDetails sd1, BrapiStudyDetails sd2) { sd1.setTraits(sd2.getTraits()); if (sd2.getObservations() != null) sd1.setObservations(sd2.getObservations()); + if (sd2.getTrialName() != null) + sd1.setTrialName(sd2.getTrialName()); } public String getCommonCropName() { @@ -115,4 +118,11 @@ public void setValues(List> values) { public void setObservations(List observations) { this.observations = observations; } + public String getTrialName() { + return trialName; + } + + public void setTrialName(String trialName) { + this.trialName = trialName; + } } \ No newline at end of file diff --git a/app/src/main/java/com/fieldbook/tracker/brapi/service/BrAPIServiceV2.java b/app/src/main/java/com/fieldbook/tracker/brapi/service/BrAPIServiceV2.java index 8eb8c9298..f01f973ac 100644 --- a/app/src/main/java/com/fieldbook/tracker/brapi/service/BrAPIServiceV2.java +++ b/app/src/main/java/com/fieldbook/tracker/brapi/service/BrAPIServiceV2.java @@ -1545,7 +1545,7 @@ public BrapiControllerResponse saveStudyDetails(BrapiStudyDetails studyDetails, field.setCount(studyDetails.getNumberOfPlots().toString()); field.setObservation_level(observationLevel); field.setImport_format(ImportFormat.BRAPI); - + field.setTrial_name(studyDetails.getTrialName()); // Get our host url if (BrAPIService.getHostUrl(context) != null) { field.setExp_source(BrAPIService.getHostUrl(context)); diff --git a/app/src/main/java/com/fieldbook/tracker/database/dao/StudyDao.kt b/app/src/main/java/com/fieldbook/tracker/database/dao/StudyDao.kt index f9af5eefb..d5ab3e9b5 100644 --- a/app/src/main/java/com/fieldbook/tracker/database/dao/StudyDao.kt +++ b/app/src/main/java/com/fieldbook/tracker/database/dao/StudyDao.kt @@ -187,6 +187,7 @@ class StudyDao { it.attribute_count = this["attribute_count"]?.toString() it.trait_count = this["trait_count"]?.toString() it.observation_count = this["observation_count"]?.toString() + it.trial_name = this["trial_name"]?.toString() } fun getAllFieldObjects(sortOrder: String): ArrayList = withDatabase { db -> @@ -235,6 +236,7 @@ class StudyDao { import_format, study_source, study_sort_name, + trial_name, count, (SELECT COUNT(*) FROM observation_units_attributes WHERE study_id = Studies.${Study.PK}) AS attribute_count, (SELECT COUNT(DISTINCT observation_variable_name) FROM observations WHERE study_id = Studies.${Study.PK} AND observation_variable_db_id > 0) AS trait_count, @@ -359,6 +361,7 @@ class StudyDao { put("study_source", e.exp_source) put("count", e.count) put("observation_levels", e.observation_level) + put("trial_name", e.trial_name) }).toInt() try { diff --git a/app/src/main/java/com/fieldbook/tracker/objects/FieldObject.java b/app/src/main/java/com/fieldbook/tracker/objects/FieldObject.java index d559be992..f686bca7b 100644 --- a/app/src/main/java/com/fieldbook/tracker/objects/FieldObject.java +++ b/app/src/main/java/com/fieldbook/tracker/objects/FieldObject.java @@ -28,6 +28,15 @@ public class FieldObject { private String attribute_count; private String trait_count; private String observation_count; + private String trial_name; + + public String getTrial_name() { + return trial_name; + } + + public void setTrial_name(String trial_name) { + this.trial_name = trial_name; + } public static class TraitDetail { private final String traitName; diff --git a/app/src/main/res/drawable/ic_trial.xml b/app/src/main/res/drawable/ic_trial.xml new file mode 100644 index 000000000..6def6bc09 --- /dev/null +++ b/app/src/main/res/drawable/ic_trial.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_field_detail.xml b/app/src/main/res/layout/fragment_field_detail.xml index 2f8874a76..560bb67ef 100644 --- a/app/src/main/res/layout/fragment_field_detail.xml +++ b/app/src/main/res/layout/fragment_field_detail.xml @@ -1,6 +1,7 @@ + + + + +