jQWidgets Forums

jQuery UI Widgets Forums Chart In Stacked chart Hide legend if not data for particular data Reply To: In Stacked chart Hide legend if not data for particular data


Dimitar
Participant

Hello arunthatham,

You can use the recursive function addhandler demonstrated in the following example as a workaround:

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
    <script type="text/javascript" src="../../scripts/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxdraw.js"></script>
    <script type="text/javascript" src="../../jqwidgets/jqxchart.core.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            // prepare chart data as an array
            var sampleData = [
                    { Day: 'Monday', Running: 30, Swimming: 5, Cycling: 25, Riding: 10 },
                    { Day: 'Tuesday', Running: 25, Swimming: 25, Cycling: 0, Riding: 15 },
                    { Day: 'Wednesday', Running: 30, Swimming: 5, Cycling: 25, Riding: 25 },
                    { Day: 'Thursday', Running: 35, Swimming: 25, Cycling: 45, Riding: 15 },
                    { Day: 'Friday', Running: 5, Swimming: 20, Cycling: 25, Riding: 5 },
                    { Day: 'Saturday', Running: 30, Swimming: 0, Cycling: 30, Riding: 30 },
                    { Day: 'Sunday', Running: 60, Swimming: 45, Cycling: 5, Riding: 20 }
            ];

            // prepare jqxChart settings
            var settings = {
                title: "Fitness & exercise weekly scorecard",
                description: "Time spent in vigorous exercise by activity",
                enableAnimations: true,
                showLegend: true,
                padding: { left: 5, top: 5, right: 5, bottom: 5 },
                titlePadding: { left: 90, top: 0, right: 0, bottom: 10 },
                source: sampleData,
                xAxis:
                    {
                        dataField: 'Day',
                        showTickMarks: true,
                        tickMarksInterval: 1,
                        tickMarksColor: '#888888',
                        unitInterval: 1,
                        showGridLines: false,
                        gridLinesInterval: 1,
                        gridLinesColor: '#888888',
                        axisSize: 'auto'
                    },
                colorScheme: 'scheme06',
                seriesGroups:
                    [
                        {
                            type: 'stackedcolumn',
                            columnsGapPercent: 100,
                            seriesGapPercent: 5,
                            valueAxis:
                            {
                                unitInterval: 10,
                                minValue: 0,
                                maxValue: 120,
                                displayValueAxis: true,
                                description: 'Time in minutes',
                                tickMarksColor: '#888888'
                            },
                            series: [
                                    { dataField: 'Running', displayText: 'Running' },
                                    { dataField: 'Swimming', displayText: 'Swimming' }
                            ]
                        },
                          {
                              type: 'stackedcolumn',
                              columnsGapPercent: 100,
                              seriesGapPercent: 5,
                              valueAxis:
                              {
                                  unitInterval: 10,
                                  minValue: 0,
                                  maxValue: 120,
                                  visible: false,
                                  displayValueAxis: true,
                                  description: 'Time in minutes',
                                  tickMarksColor: '#888888'
                              },
                              series: [
                                      { dataField: 'Riding', displayText: 'Riding' },
                                      { dataField: 'Cycling', displayText: 'Cycling' }
                              ]
                          }
                    ]
            };

            // setup the chart
            $('#chartContainer').jqxChart(settings);

            function addhandler() {
                $('#chartContainer .jqx-chart-legend-text').eq(0).parent().hide();
                $('#chartContainer .jqx-chart-legend-text').parent().click(function () {
                    addhandler();
                });
            }

            $('#chartContainer .jqx-chart-legend-text').eq(0).parent().hide();
            $('#chartContainer .jqx-chart-legend-text').parent().click(function () {
                addhandler();
            });
        });
    </script>
</head>
<body class='default'>
    <div id='chartContainer' style="width: 850px; height: 500px;" />
</body>
</html>

Best Regards,
Dimitar

jQWidgets team
http://www.jqwidgets.com/