/*
* Copyright (c) 2014. The Trustees of Indiana University.
*
* This version of the code is licensed under the MPL 2.0 Open Source license with additional
* healthcare disclaimer. If the user is an entity intending to commercialize any application
* that uses this code in a for-profit venture, please contact the copyright holder.
*/
package com.muzima.adapters.observations;
import android.os.AsyncTask;
import android.os.Build;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.muzima.R;
import com.muzima.api.model.Observation;
import com.muzima.controller.ConceptController;
import com.muzima.controller.ObservationController;
import com.muzima.model.observation.ConceptWithObservations;
import com.muzima.utils.BackgroundTaskHelper;
import com.muzima.utils.DateUtils;
import com.muzima.utils.Fonts;
import com.muzima.utils.StringUtils;
public class ObservationsByConceptAdapter extends ObservationsAdapter<ConceptWithObservations> {
private static final String TAG = "ObservationsByConceptAdapter";
public ObservationsByConceptAdapter(FragmentActivity activity, int itemCohortsList,
ConceptController conceptController,
ObservationController observationController) {
super(activity, itemCohortsList, null,conceptController, observationController);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ObservationsByConceptViewHolder holder;
if (convertView == null) {
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
convertView = layoutInflater.inflate(R.layout.item_observation_by_concept_list, parent, false);
holder = new ObservationsByConceptViewHolder();
holder.headerText = (TextView) convertView
.findViewById(R.id.observation_header);
holder.observationLayout = (LinearLayout) convertView
.findViewById(R.id.observation_layout);
convertView.setTag(holder);
} else {
holder = (ObservationsByConceptViewHolder) convertView.getTag();
}
holder.renderItem(getItem(position));
return convertView;
}
@Override
public void reloadData() {
cancelBackgroundQueryTask();
AsyncTask<Void,?,?> backgroundQueryTask = new ObservationsByConceptBackgroundTask(this,
new ConceptsByPatient(conceptController, observationController, patientUuid));
BackgroundTaskHelper.executeInParallel(backgroundQueryTask);
setRunningBackgroundQueryTask(backgroundQueryTask);
}
public void search(String term) {
cancelBackgroundQueryTask();
AsyncTask<Void,?,?> backgroundQueryTask = new ObservationsByConceptBackgroundTask(this,
new ConceptsBySearch(conceptController,observationController, patientUuid, term));
BackgroundTaskHelper.executeInParallel(backgroundQueryTask);
setRunningBackgroundQueryTask(backgroundQueryTask);
}
protected class ObservationsByConceptViewHolder extends ViewHolder{
TextView headerText;
public ObservationsByConceptViewHolder() {
super();
}
private void renderItem(ConceptWithObservations item) {
int conceptColor = observationController.getConceptColor(item.getConcept().getUuid());
headerText.setBackgroundColor(conceptColor);
addEncounterObservations(item.getObservations());
headerText.setText(getConceptDisplay(item.getConcept()));
}
@Override
protected void setObservation(LinearLayout layout, Observation observation) {
int conceptColor = observationController.getConceptColor(observation.getConcept().getUuid());
String observationConceptType = observation.getConcept().getConceptType().getName();
TextView observationValue = (TextView) layout.findViewById(R.id.observation_value);
ImageView observationComplexHolder = (ImageView) layout.findViewById(R.id.observation_complex);
if (StringUtils.equals(observationConceptType, "Complex")){
observationValue.setVisibility(View.GONE);
observationComplexHolder.setVisibility(View.VISIBLE);
} else {
observationValue.setVisibility(View.VISIBLE);
observationComplexHolder.setVisibility(View.GONE);
observationValue.setText(observation.getValueAsString());
observationValue.setTypeface(Fonts.roboto_medium(getContext()));
observationValue.setTextColor(conceptColor);
}
View divider = layout.findViewById(R.id.divider);
divider.setBackgroundColor(conceptColor);
TextView observationDateView = (TextView) layout.findViewById(R.id.observation_date);
observationDateView.setText(DateUtils.getMonthNameFormattedDate(observation.getObservationDatetime()));
observationDateView.setTypeface(Fonts.roboto_light(getContext()));
observationDateView.setTextColor(conceptColor);
}
@Override
protected int getObservationLayout() {
return R.layout.item_observation_by_concept;
}
@Override
protected int getObservationElementHeight() {
return R.dimen.observation_element_by_concept_height;
}
}
}