I have created a wrapper extension for the Highcharts library, available here:
Yii Highcharts Extension
Yii Highcharts Repository
The extension is clean, compact, and supports configuration via either standard PHP arrays or a JSON string. Please let me know if you have any questions, comments, or suggestions.
You’re right. Highcharts is only free for non-commercial use. You can use my (PHP) code however you like, but I have no authority to grant you the same privilege for the packaged Highcharts JavaScript files. For those, I can only refer you to the Highcharts License and Pricing page.
My own advice would be to go ahead and purchase the Single Website license, which is (at the time of this post) only $80, and pass the expense on to your client. If you are the client, then it’s your call.
Monico, I posted the update. The Exporting module should now be enabled by default. For instructions on disabling the module, see the Tips section of the Documentation.
Hi, Milo. I appreciate your time to update this excellent Highchart wiget. Yes, I’ll test it this new update. I’ll write down if I have problems with it.
I had the same problem and made a small work-around.
I created a new file in components called CompatibleFunctions.php.
<?php
/*
* To use the needed PHP 5.3 functions in a PHP 5.2 environment
*
*/
// as of PHP 5.3.0 array_replace_recursive() does the work for us
if (function_exists('array_replace_recursive'))
{
return call_user_func_array('array_replace_recursive', func_get_args());
}
if (!function_exists('array_replace_recursive'))
{
function array_replace_recursive($array, $array1)
{
function recurse($array, $array1)
{
foreach ($array1 as $key => $value)
{
// create new key in $array, if it is empty or not an array
if (!isset($array[$key]) || (isset($array[$key]) && !is_array($array[$key])))
{
$array[$key] = array();
}
// overwrite the value in the base array
if (is_array($value))
{
$value = recurse($array[$key], $value);
}
$array[$key] = $value;
}
return $array;
}
// handle the arguments, merge one by one
$args = func_get_args();
$array = $args[0];
if (!is_array($array))
{
return $array;
}
for ($i = 1; $i < count($args); $i++)
{
if (is_array($args[$i]))
{
$array = recurse($array, $args[$i]);
}
}
return $array;
}
}
?>
And added this file to be loaded in the index.php of Yii.
<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/../framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
$compfunctions=dirname(__FILE__).'/protected/components/CompatibleFunctions.php';
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
require_once($compfunctions);
require_once($yii);
Yii::createWebApplication($config)->run();
Problem solved. After you upgrade to PHP 5.3 the original function will be used instead of this work-around one.
Thank you for the tip, Gaurav. That was an oversight on my part. I have updated the requirements section of the documentation and will add support for PHP 5.2 in the next release.
Here you go. The first 4 labels are cut off. At first I thought it was because of my use of a bar chart, so I’ve changed to a column chart. But as you can see, the problem is the same.
Edit:
It seems to be caused by differences in div sizes and SVG size.