From b378a73da67a6ae4d17f9d6f63b4b3b6e6589acb Mon Sep 17 00:00:00 2001 From: Yannick Warnier Date: Fri, 2 Nov 2018 18:12:03 -0500 Subject: [PATCH] Add getColorPalette() to ChamiloApi to return common array of colors --- main/inc/ajax/statistics.ajax.php | 16 +++------- .../CoreBundle/Component/Utils/ChamiloApi.php | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/main/inc/ajax/statistics.ajax.php b/main/inc/ajax/statistics.ajax.php index 561d3fd56d..4e25c97039 100644 --- a/main/inc/ajax/statistics.ajax.php +++ b/main/inc/ajax/statistics.ajax.php @@ -6,6 +6,8 @@ */ require_once __DIR__.'/../global.inc.php'; +use Chamilo\CoreBundle\Component\Utils\ChamiloApi; + api_protect_admin_script(); $action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null; @@ -154,17 +156,7 @@ switch ($action) { $list['labels'][] = $tick; } - // Get the common colors from the palette used for pchart - $paletteFile = api_get_path(SYS_CODE_PATH).'palettes/pchart/default.color'; - $palette = file($paletteFile); - // 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); - } + $palette = ChamiloApi::getColorPalette(true, true); $list['datasets'][0]['label'] = get_lang('Tools'); $list['datasets'][0]['borderColor'] = "rgba(255,255,255,1)"; @@ -173,7 +165,7 @@ switch ($action) { foreach ($all as $tick => $tock) { $j = $i % count($palette); $list['datasets'][0]['data'][] = $tock; - $list['datasets'][0]['backgroundColor'][] = 'rgba('.$palette[$j].')'; + $list['datasets'][0]['backgroundColor'][] = $palette[$j]; $i++; } diff --git a/src/Chamilo/CoreBundle/Component/Utils/ChamiloApi.php b/src/Chamilo/CoreBundle/Component/Utils/ChamiloApi.php index 3f30a2737a..076379a37f 100644 --- a/src/Chamilo/CoreBundle/Component/Utils/ChamiloApi.php +++ b/src/Chamilo/CoreBundle/Component/Utils/ChamiloApi.php @@ -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; + } }