У меня есть график с диапазоном столбцов, и я хочу определить цвет одной столбчатой ​​линии. Если вы видите второй набор на картинке. в зависимости от определенного состояния я бы хотел изменить его на другой цвет. $schedule[] = array($date_from, ( date('Y-m-d',strtotime($model['ProjectEndDate'])) > date('Y-m-d') )? $today*1000 : $date_to);, если endate не больше, чем сегодня, измените цвет на красный.

enter image description here

Как мне это сделать?

в поле зрения

$('#container').highcharts({
    'chart':{
        'type':'columnrange',
        'inverted':true,
            },
    'exporting':{
        'enabled':true
        },

    'title':{
        'text':'Projects incomplete in 2013'
        },
    'xAxis':{
        'categories':<?=$cat?>
        },
    'yAxis':{
        'title':'Date',
        'type':'datetime',
        'dateTimeLabelFormats':{                
            'month':'%b'
        },
        'min':Date.UTC(2013,00,01)
    },

    'tooltip':{
        formatter: function(){  
                return '<b>' +this.series.name + ':</b> '+ Highcharts.dateFormat('%e %b, %Y', this.point.low) + ' - ' +  Highcharts.dateFormat('%e %b, %Y', this.point.high) +'<br/>' ;
              }  
        },
    'legend':{
        'enabled':false
        },
    'series':[
                {
                    'name':'Start - End',
                    'data':<?=$data?>
                    },
                    {
                    'name':'Forecast',
                    'data':<?=$schedule?>,
                    'color': 'green'    
                    },
                    {
                    'name':'Actual',
                    'data':<?=$complete?>,
                    'color': 'yellow'   
                    }
                ]

});

В моем контроллере у меня есть

public function actionGraph(){      

        $command = Yii::app()->db->createCommand("
                SELECT
                    view_webprojectreport.PROJECT,
                    view_webprojectreport.StartDATE,
                    view_webprojectreport.ProjectEndDate,
                    view_webprojectreport.PERCENT,
                    view_webprojectreport.ASAAREA
                FROM
                    view_webprojectreport
                WHERE
                view_webprojectreport.StartDATE >= '2013' AND
                view_webprojectreport.ProjectEndDate IS NOT NULL AND
                view_webprojectreport.PERCENT < 100
                ORDER BY
                view_webprojectreport.PERCENT DESC
                ")->queryAll();

        $series = array();
        $cat = array();
        $totalLength = array();
        $schedule = array();
        $complete = array();

        foreach ($command as $key => $model) {
            $cat[] = $model['PROJECT'];
            $date_from = (strtotime($model['StartDATE']) + 1*86400)*1000;
            $date_to = (strtotime($model['ProjectEndDate']) + 1*86400)*1000;            
            $totalLength[] = array($date_from,$date_to);            

            $today = time();
            $startdate = strtotime($model['StartDATE']); 
            $enddate = strtotime($model['ProjectEndDate']); 
            $diff_total = $enddate - $startdate;
            $diff_today = $today - $startdate;
            $percentage_date=round(($diff_today/$diff_total)*100,2);


            $duration = ( ((strtotime($model['ProjectEndDate']) + 1*86400)*1000) - ((strtotime($model['StartDATE']) + 1*86400)*1000) );         
            $burn = ((time() )*1000) - ((strtotime($model['StartDATE']) + 1*86400)*1000);
            $pBurned = $burn/$duration;
            $time = $time = strtotime( ($date_from + $pBurned) );

            //echo date('Y-m-d') . " : " . date('Y-m-d',strtotime($model['ProjectEndDate'])) . "<br>";
            // place check for calculating if project end date is in past
            $schedule[] = array($date_from, ( date('Y-m-d',strtotime($model['ProjectEndDate'])) > date('Y-m-d') )? $today*1000 : $date_to); 




            $percentage_to_get = round((float)$model['PERCENT'],2);
            $percentage_of_days =  ((int)$model['PERCENT'] == 0)? 0 : floor($diff_total/100*$percentage_to_get);
            //echo date('Y-m-d', $startdate) . " : " . date('Y-m-d', $startdate + $percentage_of_days ) . "<br>";
            //echo $startdate . " : " . ($startdate + $percentage_of_days) . "<br>";
            $percentComplete = (($startdate + $percentage_of_days)+ 1*86400)*1000;  

            $complete[] = array($date_from,$percentComplete);

        }


        $series = array("series"=>array(
                array(
                    'name'=>'Start - End',
                    'data'=>$totalLength
                    ),
                array(
                    'name'=>'Forecast',
                    'data'=>$schedule,
                    'color'=> 'green'   
                    ),
                array(
                    'name'=>'Actual',
                    'data'=>$complete,
                    'color'=> 'yellow'  
                    )
                ));

        print_r($series);
        $this->render('graph',array(                
                'cat'=>json_encode($cat),
                "data"=>json_encode($totalLength),
                "schedule"=>json_encode($schedule),
                "complete"=>json_encode($complete),
                "series"=>json_encode($series)
        ));
    }

вывод расписания

[[1357689600000,1372064004000],[1360972800000,1.3686588e+12],[1359158400000,1372064004000],[1.3630464e+12,1365721200000],[1359417600000,1372064004000],[1.3709916e+12,1372064004000],[1.3686588e+12,1372064004000],[1.3681404e+12,1372064004000],[1.3699548e+12,1372064004000],[1366930800000,1372064004000]]

Как мне добавить в это цвет?

$schedule[] = array($date_from, ( date('Y-m-d',strtotime($model['ProjectEndDate'])) > date('Y-m-d') )? $today*1000 : $date_to);

Я нашел http://jsfiddle.net/Q2JMF/2/ и пытаюсь реализовать, но не работающий. график ничего не отображает

Мой пример на jsfiddle http://jsfiddle.net/shorif2000/z4HXX/ 2 /

3
shorif2000 21 Июн 2013 в 20:07

1 ответ

Лучший ответ