DonutChart

This example shows how to create beautiful DonutChart

The above example shows you how to create PieChart and DonutChart using ApexCharts package. In this example, for purpose of chart demonstration only, we do use mock-up data from array. As you can see, the KoolReport's widget in general support dataSource could be DataStore, Process, DataSource or even simple array.

<?php

require_once "../../../../load.koolreport.php";
require_once "MyReport.php";

$report = new MyReport;
$report->run()->render();
<?php

class MyReport extends \koolreport\KoolReport
{

}
<div class="report-content">
    <div class="text-center">
        <h1>DonutChart</h1>
        <p class="lead">
            This example shows how to create beautiful DonutChart
        </p>
    </div>
    <style>
        .apexcharts-canvas {
            margin: 0 auto;
        }

        .actions {
            top: -10px;
            position: relative;
            z-index: 10;
            max-width: 400px;
            margin: 0 auto;
        }

        button {
            color: #fff;
            background: #20b2aa;
            padding: 5px 10px;
            margin: 2px;
            font-weight: bold;
            font-size: 13px;
            border-radius: 5px;
        }

        p {
            margin: 10px 0;
        }

        @media only screen and (max-width: 480px) {
            .actions {
                margin-top: 0;
                left: 0
            }
        }
    </style>
    <div style="margin-bottom:50px;">
        <?php
        $data = [
            [
                'value'
            ],
            [
                44
            ],
            [
                55
            ],
            [
                13
            ],
            [
                33
            ]
        ];
        \koolreport\apexcharts\DonutChart::create(array(
            "name" => "DonutChart1",
            // "title" => "Pie Chart",
            "dataSource" => $data,
            "columns" => array(
                "value"
            ),
            "options" => [
                'responsive | 0' => [
                    'breakpoint' => 480,
                    'options' => [
                        'chart | width' => 200,
                        'legend | show' => false,
                    ]
                ],
                'legend' => [
                    'position' => 'right',
                    'offsetY' => 0,
                ]
            ],
            // "showLegend" => false,
            "showLabel" => true,
            // "height" => "600px",
            // "width" => "85%",
            "maxWidth" => "450px",
            "onReady" => "function() {
                // console.log('apexcharts object ready');
                // chart = DonutChart1.chart();
            }"
        ));
        ?>

        <div class="actions">
            <button id="add">
                + ADD
            </button>

            <button id="remove">
                - REMOVE
            </button>

            <button id="randomize">
                RANDOMIZE
            </button>

            <button id="reset">
                RESET
            </button>
        </div>
    </div>

</div>

<script>
    // Replace Math.random() with a pseudo-random number generator to get reproducible results in e2e tests
    // Based on https://gist.github.com/blixt/f17b47c62508be59987b
    var _seed = 42;
    Math.random = function() {
        _seed = _seed * 16807 % 2147483647;
        return (_seed - 1) / 2147483646;
    };

    var chart = null;
    KoolReport.load.onDone(function() {
        chart = DonutChart1.chart();
    });

    function appendData() {
        var arr = chart.w.globals.series.slice()
        arr.push(Math.floor(Math.random() * (100 - 1 + 1)) + 1)
        return arr;
    }

    function removeData() {
        var arr = chart.w.globals.series.slice()
        arr.pop()
        return arr;
    }

    function randomize() {
        return chart.w.globals.series.map(function() {
            return Math.floor(Math.random() * (100 - 1 + 1)) + 1
        })
    }

    function reset() {
        return DonutChart1_settings.series
    }

    document.querySelector("#randomize").addEventListener("click", function() {
        chart.updateSeries(randomize())
    })

    document.querySelector("#add").addEventListener("click", function() {
        chart.updateSeries(appendData())
    })

    document.querySelector("#remove").addEventListener("click", function() {
        chart.updateSeries(removeData())
    })

    document.querySelector("#reset").addEventListener("click", function() {
        chart.updateSeries(reset())
    })
</script>

What People Are Saying

"KoolReport helps me very much in creating data report for my corporate! Keep up your good work!"
-- Alain Melsens

"The first use of your product. I was impressed by its easiness and powerfulness. This product is a great and amazing."
-- Dr. Lew Choy Onn

"Fantastic framework for reporting!"
-- Greg Schneider

Download KoolReport Get KoolReport Pro