График Rest Api данных не обновляется в режиме реального времени, - PullRequest
0 голосов
/ 09 февраля 2020

Первая загрузка данных корректна, но график второй раз не обновляет данные. Он снова и снова показывает данные предыдущего графика.

 public class OpdIpdAnalysis extends AppCompatActivity implements NetworkReceiver.ConnectionChangeCallback {

 AnyChartView anyChartView;
 Set set1;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_opd_ipd_analysis);

        anyChartView = findViewById(R.id.anyChartLineChart);
        anyChartView.setProgressBar(myProgressBar);

    }

    private void anyChartGraphViewData(Response<OpdIpdModel.ModelResponse> response) {

        Cartesian cartesian = AnyChart.line();
        cartesian.animation(true);
        cartesian.padding(5d, 10d, 1d, 5d);

        cartesian.crosshair().enabled(true);
        cartesian.crosshair()
                .yLabel(true)
                // TODO ystroke
                .yStroke((Stroke) null, null, null, (String) null, (String) null);

        cartesian.tooltip().positionMode(TooltipPositionMode.POINT);
        cartesian.title("MIS Report of comparing OPD and IPD data.");

        //cartesian.yAxis(0).title("Number of Patient admitted in");
        cartesian.xAxis(0).labels().padding(1d, 1d, 1d, 1d);
        cartesian.xAxis(0).labels().fontSize(8);

        /* Customization Done  */

        List<DataEntry> entries1 = new ArrayList<>();
        //List<DataEntry> entries2 = new ArrayList<>();
        final List<String> xLabel = new ArrayList<>();


        if (response.body() != null) {
            for (OpdIpdModel opdIpdModel : response.body().getOpdIpdComparison()) {

                xLabel.add(opdIpdModel.getYear().shortValue() + "-" + opdIpdModel.getMonthString());

                entries1.add(new CustomDataEntry(xLabel, opdIpdModel.getoPD(), opdIpdModel.getiPD()));
                //entries2.add(new CustomDataEntry(xLabel, opdIpdModel.getoPD(), opdIpdModel.getiPD()));
            }
        }

        set1 = Set.instantiate();
        set1.data(entries1);
        Mapping series1Mapping = set1.mapAs("{ x: 'x', value: 'value1' }");

        //set2 = Set.instantiate();
        //set2.data(entries2);
        Mapping series2Mapping = set1.mapAs("{ x: 'x', value: 'value2' }");


        Line series1 = cartesian.line(series1Mapping);
        series1.name("OPD");
        series1.hovered().markers().enabled(true);
        series1.hovered().markers()
                .type(MarkerType.CIRCLE)
                .size(5d);
        series1.tooltip()
                .position("right")
                .anchor(Anchor.LEFT_CENTER)
                .offsetX(0d)
                .offsetY(0d);

        Line series2 = cartesian.line(series2Mapping);
        series2.name("IPD");
        series2.hovered().markers().enabled(true);
        series2.hovered().markers()
                .type(MarkerType.CIRCLE)
                .size(5d);
        series2.tooltip()
                .position("right")
                .anchor(Anchor.LEFT_CENTER)
                .offsetX(0d)
                .offsetY(0d);

        cartesian.legend().enabled(true);
        cartesian.legend().fontSize(10d);
        cartesian.legend().padding(0d, 0d, 10d, 0d);
        cartesian.interactivity().hoverMode(HoverMode.BY_X);
        //cartesian.xZoom(3);
        cartesian.xScroller(true);
        //cartesian.notifyDataChanged();

        anyChartView.setZoomEnabled(true);
        anyChartView.setChart(cartesian);
        anyChartView.refreshDrawableState();
        anyChartView.invalidate();
        //anyChartView.notify();
    }

private class CustomDataEntry extends ValueDataEntry {

        CustomDataEntry(List<String> x, Number value, Number value2) {
            super(String.valueOf(x), value);
            setValue("value1", value);
            setValue("value2", value2);
        }

    }

    private void allOpdIpdData(String department_id) {

        call = service.getAllOpdIpdData("/Report/GetOpdIpdComparison?departmentId=" + department_id);
        call.enqueue(new Callback<OpdIpdModel.ModelResponse>() {
            @Override
            public void onResponse(@NotNull Call<OpdIpdModel.ModelResponse> call, @NotNull Response<OpdIpdModel.ModelResponse> response) {
                myProgressBar.setVisibility(View.GONE);
                if (response.isSuccessful() && response.body() != null) {

                    updateUI(response.body().getOpdIpdComparison());
                    //graphData(response);
                    /*if (anyChartView != null && anyChartView.isEnabled()){
                        anyChartView.clear();
                    }*/
                    anyChartGraphViewData(response);

                } else {

                    if (response.code() == 401) {

                    }
                }
            }

            @Override
            public void onFailure(@NotNull Call<OpdIpdModel.ModelResponse> call, @NotNull Throwable t) {

            }
        });
    }

    }

Я использую пробную версию, как перезагрузить линейную диаграмму с новыми данными?

Любая идея, почему это происходит и как Чтобы решить эту проблему?

Пожалуйста, помогите мне решить эту проблему.

Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2020

Нет необходимости пересоздавать диаграмму для обновления данных. Все, что вам нужно, это применить новые данные к существующему графику. Эта же проблема была поднята ранее, и решение было предоставлено в моих комментариях ниже. Пожалуйста, отметьте эту ветку , это должно помочь вам.

...