Skip to content

Commit

Permalink
Annual coverage report cso UI
Browse files Browse the repository at this point in the history
Signed-off-by: Ephraim Muhia <emuhia@ona.io>
  • Loading branch information
Ephraim Muhia committed Dec 22, 2017
1 parent 3b2a503 commit 2a6050c
Show file tree
Hide file tree
Showing 12 changed files with 433 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,33 @@
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import org.smartregister.domain.FetchStatus;
import org.smartregister.immunization.db.VaccineRepo;
import org.smartregister.path.R;
import org.smartregister.path.adapter.SpinnerAdapter;
import org.smartregister.path.helper.SpinnerHelper;
import org.smartregister.path.toolbar.LocationSwitcherToolbar;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Random;

import util.PathConstants;

/**
* Created by keyman on 21/12/17.
*/
Expand Down Expand Up @@ -40,6 +59,7 @@ public void onClick(View v) {

((TextView) toolbar.findViewById(R.id.title)).setText(getString(R.string.annual_coverage_report_cso));

updateListViewHeader();
}

@Override
Expand All @@ -53,6 +73,21 @@ public void onResume() {
final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
LinearLayout hia2 = (LinearLayout) drawer.findViewById(R.id.coverage_reports);
hia2.setBackgroundColor(getResources().getColor(R.color.tintcolor));

updateReportList();

List<Date> dates = new ArrayList<>();

Calendar c = Calendar.getInstance();
dates.add(c.getTime());

for (int i = 0; i < 5; i++) {
c.add(Calendar.YEAR, -1);
dates.add(c.getTime());

}

updateReportDates(dates);
}

@Override
Expand Down Expand Up @@ -80,4 +115,117 @@ protected Class onBackActivity() {
return null;
}

private void updateListViewHeader() {
// Add header
ListView listView = (ListView) findViewById(R.id.list_view);
View view = getLayoutInflater().inflate(R.layout.coverage_report_header, null);
listView.addHeaderView(view);
}

private void updateReportList() {
final List<VaccineRepo.Vaccine> vaccineList = VaccineRepo.getVaccines(PathConstants.EntityType.CHILD);
Collections.sort(vaccineList, new Comparator<VaccineRepo.Vaccine>() {
@Override
public int compare(VaccineRepo.Vaccine lhs, VaccineRepo.Vaccine rhs) {
return lhs.display().compareToIgnoreCase(rhs.display());
}
});

vaccineList.remove(VaccineRepo.Vaccine.bcg2);
vaccineList.remove(VaccineRepo.Vaccine.ipv);
vaccineList.remove(VaccineRepo.Vaccine.measles1);
vaccineList.remove(VaccineRepo.Vaccine.measles2);
vaccineList.remove(VaccineRepo.Vaccine.mr1);
vaccineList.remove(VaccineRepo.Vaccine.mr2);

vaccineList.add(VaccineRepo.Vaccine.measles1);

if (vaccineList == null || vaccineList.isEmpty()) {
return;
}

BaseAdapter baseAdapter = new BaseAdapter() {
@Override
public int getCount() {
return vaccineList.size();
}

@Override
public Object getItem(int position) {
return vaccineList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
LayoutInflater inflater =
AnnualCoverageReportCsoActivity.this.getLayoutInflater();
if (convertView == null) {
view = inflater.inflate(R.layout.cohort_coverage_report_item, null);
} else {
view = convertView;
}

VaccineRepo.Vaccine vaccine = vaccineList.get(position);
String display = vaccine.display();
if (vaccine.equals(VaccineRepo.Vaccine.measles1)) {
display = VaccineRepo.Vaccine.measles1.display() + " / " + VaccineRepo.Vaccine.mr1.display();
}

TextView vaccineTextView = (TextView) view.findViewById(R.id.vaccine);
vaccineTextView.setText(display);

Random r = new Random();
int Low = 0;
int High = 100;
int result = r.nextInt(High - Low) + Low;

TextView vaccinatedTextView = (TextView) view.findViewById(R.id.vaccinated);
vaccinatedTextView.setText(String.valueOf(result));

TextView coverageTextView = (TextView) view.findViewById(R.id.coverage);
coverageTextView.setText(String.format(getString(R.string.coverage_percentage),
result));

return view;
}
};

ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(baseAdapter);
}

private void updateReportDates(List<Date> dates) {
if (dates != null && !dates.isEmpty()) {
View reportDateSpinnerView = findViewById(R.id.cohort_spinner);
if (reportDateSpinnerView != null) {
SpinnerHelper reportDateSpinner = new SpinnerHelper(reportDateSpinnerView);
SpinnerAdapter dataAdapter = new SpinnerAdapter(this, R.layout.item_spinner, dates, new SimpleDateFormat("yyyy"));
dataAdapter.setFirstSuffix(getString(R.string.in_progress));
dataAdapter.setDropDownViewResource(R.layout.item_spinner_drop_down);
reportDateSpinner.setAdapter(dataAdapter);

reportDateSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Object tag = view.getTag();
if (tag != null && tag instanceof Date) {
updateReportList();
}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand All @@ -18,13 +17,15 @@
import org.smartregister.domain.FetchStatus;
import org.smartregister.immunization.db.VaccineRepo;
import org.smartregister.path.R;
import org.smartregister.path.adapter.SpinnerAdapter;
import org.smartregister.path.helper.SpinnerHelper;
import org.smartregister.path.toolbar.LocationSwitcherToolbar;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Random;
Expand All @@ -36,8 +37,6 @@
*/
public class CohortCoverageReportActivity extends BaseActivity {

private static final SimpleDateFormat MMMYYYY = new SimpleDateFormat("MMMM yyyy");

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -120,12 +119,30 @@ protected Class onBackActivity() {
private void updateListViewHeader() {
// Add header
ListView listView = (ListView) findViewById(R.id.list_view);
View view = getLayoutInflater().inflate(R.layout.cohort_coverage_report_header, null);
View view = getLayoutInflater().inflate(R.layout.coverage_report_header, null);
listView.addHeaderView(view);
}

private void updateReportList() {

final List<VaccineRepo.Vaccine> vaccineList = VaccineRepo.getVaccines(PathConstants.EntityType.CHILD);
Collections.sort(vaccineList, new Comparator<VaccineRepo.Vaccine>() {
@Override
public int compare(VaccineRepo.Vaccine lhs, VaccineRepo.Vaccine rhs) {
return lhs.display().compareToIgnoreCase(rhs.display());
}
});

vaccineList.remove(VaccineRepo.Vaccine.bcg2);
vaccineList.remove(VaccineRepo.Vaccine.ipv);
vaccineList.remove(VaccineRepo.Vaccine.measles1);
vaccineList.remove(VaccineRepo.Vaccine.measles2);
vaccineList.remove(VaccineRepo.Vaccine.mr1);
vaccineList.remove(VaccineRepo.Vaccine.mr2);


vaccineList.add(VaccineRepo.Vaccine.measles1);
vaccineList.add(VaccineRepo.Vaccine.measles2);


if (vaccineList == null || vaccineList.isEmpty()) {
Expand Down Expand Up @@ -160,9 +177,17 @@ public View getView(int position, View convertView, ViewGroup parent) {
}

VaccineRepo.Vaccine vaccine = vaccineList.get(position);
String display = vaccine.display();
if (vaccine.equals(VaccineRepo.Vaccine.measles1)) {
display = VaccineRepo.Vaccine.measles1.display() + " / " + VaccineRepo.Vaccine.mr1.display();
}

if (vaccine.equals(VaccineRepo.Vaccine.measles2)) {
display = VaccineRepo.Vaccine.measles2.display() + " / " + VaccineRepo.Vaccine.mr2.display();
}

TextView vaccineTextView = (TextView) view.findViewById(R.id.vaccine);
vaccineTextView.setText(vaccine.display());
vaccineTextView.setText(display);

Random r = new Random();
int Low = 0;
Expand All @@ -189,7 +214,7 @@ private void updateReportDates(List<Date> dates) {
View reportDateSpinnerView = findViewById(R.id.cohort_spinner);
if (reportDateSpinnerView != null) {
SpinnerHelper reportDateSpinner = new SpinnerHelper(reportDateSpinnerView);
SpinnerAdapter dataAdapter = new SpinnerAdapter(this, R.layout.item_spinner, dates);
SpinnerAdapter dataAdapter = new SpinnerAdapter(this, R.layout.item_spinner, dates, new SimpleDateFormat("MMMM yyyy"));
dataAdapter.setDropDownViewResource(R.layout.item_spinner_drop_down);
reportDateSpinner.setAdapter(dataAdapter);

Expand All @@ -211,55 +236,4 @@ public void onNothingSelected(AdapterView<?> parent) {
}
}


////////////////////////////////////////////////////////////////
// Inner classes
////////////////////////////////////////////////////////////////

private class SpinnerAdapter extends ArrayAdapter<Date> {

SpinnerAdapter(Context context, int resource, List<Date> objects) {
super(context, resource, objects);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = getLayoutInflater().inflate(R.layout.item_spinner, parent, false);
} else {
view = convertView;
}

if (view instanceof TextView) {
TextView textView = (TextView) view;
Date date = getItem(position);

String dateString = MMMYYYY.format(date);
textView.setText(dateString);
textView.setTag(date);
}
return view;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = getLayoutInflater().inflate(R.layout.item_spinner_drop_down, parent, false);
} else {
view = convertView;
}

if (view instanceof TextView) {
TextView textView = (TextView) view;
Date date = getItem(position);

String dateString = MMMYYYY.format(date);
textView.setText(dateString);
textView.setTag(date);
}
return view;
}
}
}

0 comments on commit 2a6050c

Please sign in to comment.