16.06.2017
compile 'com.android.support:multidex:1.0.1'
dexOptions {
javaMaxHeapSize "4g"
}
multiDexEnabled true
android:id="@+id/frame"
android:padding="5dp"
android:background="@color/layoutBackground"
<com.github.mikephil.charting.charts.LineChart
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/chart"
android:visibility="gone"></com.github.mikephil.charting.charts.LineChart>
<include
layout="@layout/loading_animation"
android:visibility="gone"
android:id="@+id/loading_animation">
</include>
<include
layout="@layout/empty_item"
android:visibility="gone"
android:id="@+id/empty_item"/>
private String location, devicetype, post_id, datum, einheit;
private LineChart chart;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//Intent abfangen
Intent intent = getIntent();
if(intent != null){
location = intent.getStringExtra(MainActivity.EXTRA_LOCATION);
devicetype = intent.getStringExtra(MainActivity.EXTRA_DEVICETYPE);
post_id = intent.getStringExtra(MainActivity.EXTRA_ID);
datum = intent.getStringExtra(MainActivity.EXTRA_START_DATE);
einheit = intent.getStringExtra(MainActivity.EXTRA_UNIT);
}
chart = (LineChart) findViewById(R.id.chart);
setTitle(datum);
loadDayData(datum);
@Override
public boolean onSupportNavigateUp(){
super.onSupportNavigateUp();
onBackPressed();
getSupportFragmentManager().popBackStack();
return true;
}
/**
* Zeigt den Verlauf des Sensors am angegebenen Datum an
* @param datum das Datum
*/
private void loadDayData(String datum){
findViewById(R.id.loading_animation).setVisibility(View.VISIBLE);
chart.setVisibility(GONE);
final Map<String, String> requestData = new HashMap<>();
requestData.put("action", "getgraphdata");
requestData.put("room", location);
requestData.put("type", devicetype);
requestData.put("id", post_id);
requestData.put("von", datum);
requestData.put("bis", datum);
requestData.put("username", SaveData.getUsername(getApplicationContext()));
requestData.put("password", SaveData.getPassword(getApplicationContext()));
HTTPRequest.sendRequest(getApplicationContext(), requestData, SaveData.getServerIp(getApplicationContext()),
new HTTPRequest.HTTPRequestCallback() {
@Override
public void onRequestResult(String result) {
findViewById(R.id.loading_animation).setVisibility(GONE);
findViewById(R.id.empty_item).setVisibility(GONE);
switch(result){
case "wrongdata":
Dialogs.fehlermeldung("Anmeldung nicht möglich!\nBitte logge dich erneut ein.",
findViewById(R.id.frame));
break;
case "unknownuser":
Dialogs.fehlermeldung("Dieser Benutzer existiert nicht!\nBitte logge dich erneut ein.",
findViewById(R.id.frame));
break;
case "nopermission":
Dialogs.fehlermeldung("Du hast dazu keine Berechtigung.",
findViewById(R.id.frame));
break;
default:
try{
JSONObject object = new JSONObject(result);
JSONArray values = object.getJSONArray("values");
einheit = object.getString("einheit");
double[] valueList = new double[values.length()];
String[] timeList = new String[values.length()];
for(int i = 0; i < values.length(); i++){
JSONObject c = values.getJSONObject(i);
valueList[i] = c.getDouble("value");
timeList[i] = c.getString("time");
}
showValueCourse(valueList, timeList);
}
catch(Exception e){
e.printStackTrace();
onError("");
}
break;
}
}
@Override
public void onError(String msg) {
findViewById(R.id.loading_animation).setVisibility(GONE);
chart.setVisibility(GONE);
findViewById(R.id.empty_item).setVisibility(View.VISIBLE);
((ImageView)findViewById(R.id.empty_icon)).setImageResource(Icons.getDrawerIcon("overview"));
((TextView)findViewById(R.id.empty_title)).setText("Fehler beim Laden");
((TextView)findViewById(R.id.empty_info)).setText("Die Verlaufsdaten konnten nicht geladen werden");
}
});
}
private void showValueCourse(double[] values, String[] time){
ArrayList<Entry> vals = new ArrayList<>();
final ArrayList<String> times = new ArrayList<>();
for(int i = 0; i < values.length; i++){
vals.add(new Entry(i, (float) values[i]));
times.add(time[i]);
}
//Einstellungen des Graphen
String title = "Werteverlauf";
if(einheit != null){
title = "Werteverlauf in "+einheit;
}
LineDataSet valueLine = new LineDataSet(vals, title);
valueLine.setMode(LineDataSet.Mode.CUBIC_BEZIER);
valueLine.setCubicIntensity(0.2f);
valueLine.setAxisDependency(YAxis.AxisDependency.LEFT);
valueLine.setColor(getResources().getColor(R.color.colorPrimary));
valueLine.setDrawCircles(false);
valueLine.setLineWidth(1.5f);
valueLine.setDrawValues(false);
Legend legend = chart.getLegend();
legend.setTextSize(20);
LineData chartLineData = new LineData(valueLine);
//Graph anzeigen
chart.animateY(500);
chart.setData(chartLineData);
chart.getDescription().setEnabled(false);
chart.setScaleYEnabled(false);
XAxis xAxis = chart.getXAxis();
xAxis.setTextSize(12f);
xAxis.setGranularity(1f);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
try{
return times.get((int) value);
}catch(Exception e){
e.printStackTrace();
return String.valueOf(value);
}
}
});
chart.invalidate();
chart.setVisibility(View.VISIBLE);
}
//ValueCourseActivity starten
Intent intent = new Intent(GraphActivity.this, ValueCourseActivity.class);
intent.putExtra(MainActivity.EXTRA_START_DATE, dayList.get(index).getDate());
intent.putExtra(MainActivity.EXTRA_DEVICETYPE, devicetype);
intent.putExtra(MainActivity.EXTRA_ID, post_id);
intent.putExtra(MainActivity.EXTRA_LOCATION, location);
intent.putExtra(MainActivity.EXTRA_UNIT, einheit);
startActivity(intent);
catch(Exception e){
e.printStackTrace();
}
Dieser Beitrag hat dir gefallen?
Dann abonniere doch unseren Newsletter!