-1

Below iam trying to add the values from FireStore to LineChart but chart shows blank,Where as reference.get methods is retreiving data and saving in my model but its not adding up in series data

if i manually add data in the seriesData.add() it populates in the chart, i dont know where i am doing wrong

Please help me guys.

private void initChart() {

        SimpleDateFormat localDateFormat;
        localDateFormat = new SimpleDateFormat("MMMM-yyyy");
        String date1 = localDateFormat.format(date);

        Cartesian cartesian = AnyChart.line();

        cartesian.animation(true);

        cartesian.padding(10d, 20d, 5d, 20d);

        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("Furnace Kwh Reading for the month of "+date1);

        cartesian.yAxis(0).title("Reading");
        cartesian.xAxis(0).labels().padding(5d, 5d, 5d, 5d);
        SimpleDateFormat localDateFormat2;
        localDateFormat2 = new SimpleDateFormat("dd-yy");

        List<DataEntry> seriesData = new ArrayList<>();
        reference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                    Energy_cons_model model=documentSnapshot.toObject(Energy_cons_model.class);

                    String da= localDateFormat2.format(model.getTs());
                    int ip1= Math.toIntExact(model.getHpdc1());
                    int ip2= Math.toIntExact(model.getHpdc2());
                    int ip3= Math.toIntExact(model.getHpdc3());

                    seriesData.add(new CustomDataEntry(da,ip1,ip2,ip3,model.getGspm2B()));
                }

            }
        });

   

        Set set = Set.instantiate();
        set.data(seriesData);
        // Number ip3,Number gspm2b,Number gspm3b1,Number gspm3b2,Number gspm3b3,Number roto
        Mapping series1Mapping = set.mapAs("{ x: 'x', value: 'value' }");
        Mapping series2Mapping = set.mapAs("{ x: 'x', value: 'value2' }");
        Mapping series3Mapping = set.mapAs("{ x: 'x', value: 'value3' }");
        Mapping series4Mapping = set.mapAs("{ x: 'x', value: 'value4' }");

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

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

        Line series3 = cartesian.line(series3Mapping);
        series3.name("HPDC-3");
        series3.hovered().markers().enabled(true);
        series3.hovered().markers()
                .type(MarkerType.CIRCLE)
                .size(4d);
        series3.tooltip()
                .position("right")
                .anchor(Anchor.LEFT_CENTER)
                .offsetX(5d)
                .offsetY(5d);

        Line series4 = cartesian.line(series4Mapping);
        series4.name("2B");
        series4.hovered().markers().enabled(true);
        series4.hovered().markers()
                .type(MarkerType.CIRCLE)
                .size(4d);
        series4.tooltip()
                .position("right")
                .anchor(Anchor.LEFT_CENTER)
                .offsetX(5d)
                .offsetY(5d);


        cartesian.legend().enabled(true);
        cartesian.legend().fontSize(13d);
        cartesian.legend().padding(0d, 0d, 10d, 0d);

        anyChartView.setChart(cartesian);

    }

below is my CustomValues class

private class CustomDataEntry extends ValueDataEntry {

        CustomDataEntry(String x, Number value, Number value2, Number value3,Number value4) {
            super(x, value);
            setValue("value2", value2);
            setValue("value3", value3);
            setValue("value4", value4);
        }


  [1]: https://i.stack.imgur.com/bC16K.png
  [2]: https://i.stack.imgur.com/n9b1t.png
  • What exactly in this code doesn't work the way you expect? Tell us what is wrong with shared code. Do you have any errors? – Alex Mamo Feb 20 '22 at 14:04
  • I don’t get any errors , but when running the chart doesn’t get populated with the values I received from firestore, the chart fully blank, I tried debugging to check weather the firestore values is being received in onScuess method and it’s received but it’s not reflected in the chart , but if i add values manually for example seriesData.add(new CustomDataEntry(“1234”, 12,34,33,77); the graph shows correctly – santosh kumar Feb 22 '22 at 07:32
  • Is your onSuccess even triggered? – Alex Mamo Feb 22 '22 at 09:27
  • @Alex Mamo yes its tirgering https://i.stack.imgur.com/bC16K.png – santosh kumar Feb 23 '22 at 04:56
  • As I see, you're getting data from Firebase. So most likely the issue is related to the chart. – Alex Mamo Feb 23 '22 at 06:48

1 Answers1

0

I think issue is you are initializing dataset of chart before getting tiger.

public void updateChart(List<DataEntry> seriesData)
{
    Set set = Set.instantiate();
    set.data(seriesData);
    // Number ip3,Number gspm2b,Number gspm3b1,Number gspm3b2,Number gspm3b3,Number roto
    Mapping series1Mapping = set.mapAs("{ x: 'x', value: 'value' }");
    Mapping series2Mapping = set.mapAs("{ x: 'x', value: 'value2' }");
    Mapping series3Mapping = set.mapAs("{ x: 'x', value: 'value3' }");
    Mapping series4Mapping = set.mapAs("{ x: 'x', value: 'value4' }");

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

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

    Line series3 = cartesian.line(series3Mapping);
    series3.name("HPDC-3");
    series3.hovered().markers().enabled(true);
    series3.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    series3.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    Line series4 = cartesian.line(series4Mapping);
    series4.name("2B");
    series4.hovered().markers().enabled(true);
    series4.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    series4.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);


    cartesian.legend().enabled(true);
    cartesian.legend().fontSize(13d);
    cartesian.legend().padding(0d, 0d, 10d, 0d);

    anyChartView.setChart(cartesian);
}

Call update function.

        reference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                List<DataEntry> seriesData = new ArrayList<>();
                for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                    Energy_cons_model model=documentSnapshot.toObject(Energy_cons_model.class);

                    String da= localDateFormat2.format(model.getTs());
                    int ip1= Math.toIntExact(model.getHpdc1());
                    int ip2= Math.toIntExact(model.getHpdc2());
                    int ip3= Math.toIntExact(model.getHpdc3());

                    seriesData.add(new CustomDataEntry(da,ip1,ip2,ip3,model.getGspm2B()));
                }
               updateChart(seriesData);
            }
        });
Ashvin solanki
  • 4,802
  • 3
  • 25
  • 65