public static synchronized void refreshNoiseIfOlderThan(long timestamp) { if (noise_processed_till_timestamp < timestamp) { Log.d(TAG, "Refreshing Noise as Older: " + JoH.dateTimeText((long) noise_processed_till_timestamp) + " vs " + JoH.dateTimeText(timestamp)); // new only the last hour worth of data for this, simple mode should work for this calculation (new BgGraphBuilder(xdrip.getAppContext(), System.currentTimeMillis() - 60 * 60 * 1000, System.currentTimeMillis() + 5 * 60 * 1000, 24, true)).addBgReadingValues(true); } }
addBgReadingValues(simple); lines.addAll(motionLine()); lines.addAll(basalLines()); lines.addAll(heartLines()); lines.addAll(stepsLines()); lines.addAll(predictiveLines()); Line[] calib = calibrationValuesLine(); Line[] treatments = treatmentValuesLine(); for (Line subLine : autoSplitLine(treatments[2], 10)) { if (avg2value > 0) lines.add(avg2Line()); if (avg1value > 0) lines.add(avg1Line()); lines.add(idealLine()); lines.add(libreTrendLine()); lines.add(minShowLine()); lines.add(maxShowLine()); lines.add(highLine()); lines.add(predictiveHighLine()); lines.add(lowLine()); lines.add(predictiveLowLine());
public LineChartData lineData() { LineChartData lineData = new LineChartData(defaultLines()); lineData.setAxisYLeft(yAxis()); lineData.setAxisXBottom(chartXAxis()); return lineData; }
public List<Line> defaultLines() { addBgReadingValues(); List<Line> lines = new ArrayList<Line>(); Line[] calib = calibrationValuesLine(); lines.add(calib[0]); // white circle of calib in background lines.add(minShowLine()); lines.add(maxShowLine()); lines.add(highLine()); lines.add(lowLine()); if (prefs.getBoolean("show_filtered_curve", false)) { final ArrayList<Line> filtered_lines = filteredLines(); for (Line thisline : filtered_lines) { lines.add(thisline); } } // these last entries cannot be moved if // the point size change in previewLineData is to work lines.add(inRangeValuesLine()); lines.add(lowValuesLine()); lines.add(highValuesLine()); lines.add(rawInterpretedLine()); lines.add(calib[1]); // red dot of calib in foreground return lines; }
public Bitmap build() { List<Line> lines = new ArrayList<>(); bgGraphBuilder.defaultLines(true); // simple mode lines.add(bgGraphBuilder.inRangeValuesLine()); lines.add(bgGraphBuilder.lowValuesLine()); lines.add(bgGraphBuilder.highValuesLine()); for (Line line : bgGraphBuilder.filteredLines()) { line.setHasPoints(false); lines.add(line); Line line = bgGraphBuilder.lowLine(); line.setFilled(false); lines.add(line); } else { lines.add(bgGraphBuilder.lowLine()); lines.add(bgGraphBuilder.highLine()); if (useSmallDots) { for(Line line: lines) if (showAxes) { if (height<=SCALE_TRIGGER) { Axis xaxis = bgGraphBuilder.chartXAxis(); xaxis.setTextSize(4); } else { Axis yaxis = bgGraphBuilder.yAxis(); yaxis.setTextSize(6); lineData.setAxisYLeft(yaxis); Axis xaxis = bgGraphBuilder.chartXAxis();
private void setupCharts() { dateButton1.setText(dateFormatter.format(date1.getTime())); Calendar endDate = (GregorianCalendar) date1.clone(); endDate.add(Calendar.DATE, noDays); int numValues = noDays * (60 / 2) * 24; // LimiTTer sample rate 1 per 2 minutes BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(this, date1.getTimeInMillis(), endDate.getTimeInMillis(), numValues, false); chart = (LineChartView) findViewById(R.id.chart); chart.setZoomType(ZoomType.HORIZONTAL); previewChart = (PreviewLineChartView) findViewById(R.id.chart_preview); previewChart.setZoomType(ZoomType.HORIZONTAL); chart.setLineChartData(bgGraphBuilder.lineData()); chart.setOnValueTouchListener(bgGraphBuilder.getOnValueSelectTooltipListener(this)); previewChart.setLineChartData(bgGraphBuilder.previewLineData(chart.getLineChartData())); previewChart.setViewportCalculationEnabled(true); chart.setViewportCalculationEnabled(true); previewChart.setViewportChangeListener(new ViewportListener()); chart.setViewportChangeListener(new ChartViewPortListener()); setupStatistics(date1.getTimeInMillis(), endDate.getTimeInMillis()); }
private static void displayCurrentInfo(AppWidgetManager appWidgetManager, int appWidgetId, Context context, RemoteViews views) { BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(context); BgReading lastBgreading = BgReading.lastNoSenssor(); stringEstimate = bgGraphBuilder.unitized_string(estimate); } else { stringEstimate = bgGraphBuilder.unitized_string(estimate); views.setTextViewText(R.id.widgetDelta, bgGraphBuilder.unitizedDeltaString(true, true, Home.get_follower())); } else { views.setTextViewText(R.id.widgetDelta, "--"); views.setTextViewText(R.id.widgetDelta, bgGraphBuilder.unitizedDeltaStringRaw(true, true, estimated_delta)); views.setViewVisibility(R.id.widgetStatusLine, View.GONE); if (bgGraphBuilder.unitized(estimate) <= bgGraphBuilder.lowMark) { views.setTextColor(R.id.widgetBg, Color.parseColor("#C30909")); views.setTextColor(R.id.widgetDelta, Color.parseColor("#C30909")); views.setTextColor(R.id.widgetArrow, Color.parseColor("#C30909")); } else if (bgGraphBuilder.unitized(estimate) >= bgGraphBuilder.highMark) { views.setTextColor(R.id.widgetBg, Color.parseColor("#FFBB33")); views.setTextColor(R.id.widgetDelta, Color.parseColor("#FFBB33"));
public void start() { if (mService == null) { Log.e(TAG, "SERVICE IS NULL - CANNOT START!"); return; } if (run_service_in_foreground) { Log.d(TAG, "should be moving to foreground"); // mHandler.post(new Runnable() { // @Override // public void run() { // TODO use constants final long end = System.currentTimeMillis() + (60000 * 5); final long start = end - (60000 * 60 * 3) - (60000 * 10); foregroundStatus(); Log.d(TAG, "CALLING START FOREGROUND: " + mService.getClass().getSimpleName()); mService.startForeground(ongoingNotificationId, new Notifications().createOngoingNotification(new BgGraphBuilder(mContext, start, end), mContext)); // } // }); } }
protected void refreshView(View view) { LineChartView chart = (LineChartView) view.findViewById(R.id.example_linechart); BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(getContext()); chart.setLineChartData(bgGraphBuilder.lineData()); Viewport viewport = chart.getMaximumViewport(); chart.setViewportCalculationEnabled(false); chart.setInteractive(false); chart.setCurrentViewport(viewport); chart.setPadding(0, 0, 0, 0); chart.setLeft(0); chart.setTop(0); Log.d(TAG, "onBindExampleChart: refreshview " + chart.getHeight()); }
private void addBgReadingValues() { addBgReadingValues(true); }
@NonNull private Axis xAxis() { List<AxisValue> axisValues = new ArrayList<AxisValue>(); final java.text.DateFormat timeFormat = hourFormat(); timeFormat.setTimeZone(TimeZone.getDefault()); GregorianCalendar calendar = new GregorianCalendar(); calendar.setTimeInMillis(start_time); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); if (calendar.getTimeInMillis()<start_time){ calendar.add(Calendar.HOUR, 1); } while (calendar.getTimeInMillis()<end_time){ axisValues.add(new AxisValue((calendar.getTimeInMillis() / FUZZER), (timeFormat.format(calendar.getTimeInMillis())).toCharArray())); calendar.add(Calendar.HOUR, 1); } Axis axis = new Axis(); axis.setValues(axisValues); axis.setHasLines(true); return axis; }
final double low_occurs_at = BgGraphBuilder.getCurrentLowOccursAt();
public synchronized List<Line> defaultLines(boolean simple) {//KS TODO support simple return defaultLines(); }
public Line highLine(){ return highLine(LINE_VISIBLE);}
public Bitmap build() { List<Line> lines = new ArrayList<>(); bgGraphBuilder.defaultLines(true); // simple mode lines.add(bgGraphBuilder.inRangeValuesLine()); lines.add(bgGraphBuilder.lowValuesLine()); lines.add(bgGraphBuilder.highValuesLine()); for (Line line : bgGraphBuilder.filteredLines()) { line.setHasPoints(false); lines.add(line); Line line = bgGraphBuilder.lowLine(); line.setFilled(false); lines.add(line); } else { lines.add(bgGraphBuilder.lowLine()); lines.add(bgGraphBuilder.highLine()); if (useSmallDots) { for(Line line: lines) if (showAxes) { if (height<=SCALE_TRIGGER) { Axis xaxis = bgGraphBuilder.chartXAxis(); xaxis.setTextSize(4); } else { Axis yaxis = bgGraphBuilder.yAxis(); yaxis.setTextSize(6); lineData.setAxisYLeft(yaxis); Axis xaxis = bgGraphBuilder.chartXAxis();
private void setupCharts() { dateButton1.setText(dateFormatter.format(date1.getTime())); Calendar endDate = (GregorianCalendar) date1.clone(); endDate.add(Calendar.DATE, noDays); int numValues = noDays * (60 / 2) * 24; // LimiTTer sample rate 1 per 2 minutes BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(this, date1.getTimeInMillis(), endDate.getTimeInMillis(), numValues, false); chart = (LineChartView) findViewById(R.id.chart); chart.setZoomType(ZoomType.HORIZONTAL); previewChart = (PreviewLineChartView) findViewById(R.id.chart_preview); previewChart.setZoomType(ZoomType.HORIZONTAL); chart.setLineChartData(bgGraphBuilder.lineData()); chart.setOnValueTouchListener(bgGraphBuilder.getOnValueSelectTooltipListener(this)); previewChart.setLineChartData(bgGraphBuilder.previewLineData(chart.getLineChartData())); previewChart.setViewportCalculationEnabled(true); chart.setViewportCalculationEnabled(true); previewChart.setViewportChangeListener(new ViewportListener()); chart.setViewportChangeListener(new ChartViewPortListener()); setupStatistics(date1.getTimeInMillis(), endDate.getTimeInMillis()); }
private static void displayCurrentInfo(AppWidgetManager appWidgetManager, int appWidgetId, Context context, RemoteViews views) { BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(context); BgReading lastBgreading = BgReading.lastNoSenssor(); stringEstimate = bgGraphBuilder.unitized_string(estimate); } else { stringEstimate = bgGraphBuilder.unitized_string(estimate); views.setTextViewText(R.id.widgetDelta, bgGraphBuilder.unitizedDeltaString(true, true, Home.get_follower())); } else { views.setTextViewText(R.id.widgetDelta, "--"); views.setTextViewText(R.id.widgetDelta, bgGraphBuilder.unitizedDeltaStringRaw(true, true, estimated_delta)); views.setViewVisibility(R.id.widgetStatusLine, View.GONE); if (bgGraphBuilder.unitized(estimate) <= bgGraphBuilder.lowMark) { views.setTextColor(R.id.widgetBg, Color.parseColor("#C30909")); views.setTextColor(R.id.widgetDelta, Color.parseColor("#C30909")); views.setTextColor(R.id.widgetArrow, Color.parseColor("#C30909")); } else if (bgGraphBuilder.unitized(estimate) >= bgGraphBuilder.highMark) { views.setTextColor(R.id.widgetBg, Color.parseColor("#FFBB33")); views.setTextColor(R.id.widgetDelta, Color.parseColor("#FFBB33"));
private void resendData(long since) { Log.d(TAG, "resendData ENTER"); forceGoogleApiConnect(); final long startTime = since == 0 ? new Date().getTime() - (60000 * 60 * 24) : since; Log.d(TAG, "resendData googleApiClient connected ENTER, sending since: " + JoH.dateTimeText(startTime)); final BgReading last_bg = BgReading.last(); if (last_bg != null) { List<BgReading> graph_bgs = BgReading.latestForGraph(60, startTime); BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(getApplicationContext()); if (!graph_bgs.isEmpty()) { final int battery = PowerStateReceiver.getBatteryLevel(getApplicationContext()); DataMap entries = dataMap(last_bg, mPrefs, bgGraphBuilder, battery); final ArrayList<DataMap> dataMaps = new ArrayList<>(graph_bgs.size()); for (BgReading bg : graph_bgs) { dataMaps.add(dataMap(bg, mPrefs, bgGraphBuilder, battery)); } entries.putLong("time", new Date().getTime()); // MOST IMPORTANT LINE FOR TIMESTAMP entries.putDataMapArrayList("entries", dataMaps); if (mPrefs.getBoolean("extra_status_line", false)) { entries.putString("extra_status_line", StatusLine.extraStatusLine()); } new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient).executeOnExecutor(xdrip.executor, entries); } } }
protected void refreshView(View view) { LineChartView chart = (LineChartView) view.findViewById(R.id.example_linechart); BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(getContext()); chart.setLineChartData(bgGraphBuilder.lineData()); Viewport viewport = chart.getMaximumViewport(); chart.setViewportCalculationEnabled(false); chart.setInteractive(false); chart.setCurrentViewport(viewport); chart.setPadding(0, 0, 0, 0); chart.setLeft(0); chart.setTop(0); Log.d(TAG, "onBindExampleChart: refreshview " + chart.getHeight()); }
private void addBgReadingValues() { addBgReadingValues(true); }