pull/2744/head
Alex Aragón 7 years ago
commit 1c0e27458f
  1. 2
      main/inc/ajax/statistics.ajax.php
  2. 40
      src/CoreBundle/Component/Utils/ChamiloApi.php

@ -8,6 +8,8 @@ use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
*/
require_once __DIR__.'/../global.inc.php';
use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
api_protect_admin_script();
$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;

@ -289,4 +289,44 @@ class ChamiloApi
return api_get_path(WEB_CSS_PATH).'editor_content.css';
}
/**
* Get a list of colors from the palette at main/palette/pchart/default.color
* and return it as an array of strings
* @param bool $decimalOpacity Whether to return the opacity as 0..100 or 0..1
* @param bool $wrapInRGBA Whether to return it as 1,1,1,100 or rgba(1,1,1,100)
* @param int $fillUpTo If the number of colors is smaller than this number, generate more colors
* @return array An array of string colors
*/
public static function getColorPalette(
$decimalOpacity = false,
$wrapInRGBA = false,
$fillUpTo = null
) {
// Get the common colors from the palette used for pchart
$paletteFile = api_get_path(SYS_CODE_PATH).'palettes/pchart/default.color';
$palette = file($paletteFile);
if ($decimalOpacity) {
// Because the pchart palette has transparency as integer values
// (0..100) and chartjs uses percentage (0.0..1.0), we need to divide
// the last value by 100, which is a bit overboard for just one chart
foreach ($palette as $index => $color) {
$components = preg_split('/,/', trim($color));
$components[3] = round($components[3] / 100, 1);
$palette[$index] = join(',', $components);
}
}
if ($wrapInRGBA) {
foreach ($palette as $index => $color) {
$palette[$index] = 'rgba('.$palette[$index].')';
}
}
// If we want more colors, loop through existing colors
$count = count($palette);
if (isset($fillUpTo) && $fillUpTo > $count) {
for ($i = $count; $i < $fillUpTo; $i++) {
$palette[$i] = $palette[$i%$count];
}
}
return $palette;
}
}

Loading…
Cancel
Save