Add getColorPalette() to ChamiloApi to return common array of colors

pull/2744/head
Yannick Warnier 7 years ago
parent c5280cbb77
commit bec38a5848
  1. 2
      main/inc/ajax/statistics.ajax.php
  2. 29
      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,33 @@ 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)
* @return array An array of string colors
*/
public static function getColorPalette($decimalOpacity = false, $wrapInRGBA = false)
{
// 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].')';
}
}
return $palette;
}
}

Loading…
Cancel
Save