Изменить вывод старшей диаграммы для отображения даты начала и окончания - PullRequest
0 голосов
/ 25 марта 2012

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

Мой код выглядит следующим образом:

<script type="text/javascript">
    var chart;
    $(document).ready(function () {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'line',
                marginRight: 130,
                marginBottom: 25
            },
            title: {
                text: '<?php echo $type ?>',
                x: -20 //center
            },
            xAxis: {
                categories: [ <? php
                $start = $_POST["dateStart"];

                $dates = array();

                for ($i = 0, $days = date('t', strtotime($start)); $i < $days; ++$i) {
                    $dates[] = date('Y-m-d', strtotime($start.' + '.$i.' day'));
                }
                echo "'".implode("', '", $dates)."'"; ?> ]
            },
            yAxis: {
                title: {
                    text: 'Total Amount'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function () {
                    return '<b>' + this.series.name + '</b><br/>' + this.x + ': ' + this.y;
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'top',
                x: -10,
                y: 100,
                borderWidth: 0
            },
            series: [ <? php
            foreach($array as $legend = > $data) {
                echo '{';
                echo "name: '".$legend."',";
                $values = array();
                for ($i = 0; $i < $days; ++$i) {
                    $date = date('Y-m-d', strtotime($start.' + '.$i.' day'));
                    $values[] = isset($data[$date]) ? $data[$date] : 0;
                }
                echo 'data: ['.implode(', ', $values).'],';

                echo '},';
            } ?> ]
        });
    });

Спасибо

1 Ответ

0 голосов
/ 29 марта 2012

Обратите внимание, что следующее НЕ является безопасным. Вы должны ВСЕГДА проводить проверку работоспособности данных, предоставленных пользователем.

   xAxis: {
        categories: [ <? php
        $start = $_POST["dateStart"];
        $end = $_POST["dateEnd"];

        $dates = array();
        $current=$start;

        while($current<=$end){
            $dates[]=$current;
            $current=date('Y-m-d', strtotime($current.' + 1 day'));
        }

        echo "'".implode("', '", $dates)."'"; ?> ]
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...