function getDataAndScale(&$dbHandler, $argsObj)
{
    $resultsCfg = config_get('results');
    $obj = new stdClass();
    $items = array();
    $totals = null;
    $metricsMgr = new tlTestPlanMetrics($dbHandler);
    $dummy = $metricsMgr->getStatusTotalsByKeywordForRender($argsObj->tplan_id);
    $obj->canDraw = false;
    if (!is_null($dummy)) {
        $dataSet = $dummy->info;
        $obj->canDraw = !is_null($dataSet) && count($dataSet) > 0;
    }
    if ($obj->canDraw) {
        // Process to enable alphabetical order
        foreach ($dataSet as $keyword_id => $elem) {
            $item_descr[$elem['name']] = $keyword_id;
        }
        ksort($item_descr);
        foreach ($item_descr as $name => $keyword_id) {
            $items[] = htmlspecialchars($name);
            foreach ($dataSet[$keyword_id]['details'] as $status => $value) {
                $totals[$status][] = $value['qty'];
            }
        }
    }
    $obj->xAxis = new stdClass();
    $obj->xAxis->values = $items;
    $obj->xAxis->serieName = 'Serie8';
    $obj->series_color = null;
    $obj->scale = new stdClass();
    $obj->scale->maxY = 0;
    $obj->scale->minY = 0;
    $obj->scale->divisions = 0;
    if (!is_null($totals)) {
        // in this array position we will find minimun value after an rsort
        $minPos = count($dataSet) - 1;
        $obj->scale->maxY = 0;
        $obj->scale->minY = 0;
        foreach ($totals as $status => $values) {
            $obj->chart_data[] = $values;
            $obj->series_label[] = lang_get($resultsCfg['status_label'][$status]);
            if (isset($resultsCfg['charts']['status_colour'][$status])) {
                $obj->series_color[] = $resultsCfg['charts']['status_colour'][$status];
            }
        }
    }
    return $obj;
}
$gui = initializeGui($db, $args, $tplan_mgr);
$mailCfg = buildMailCfg($gui);
$metricsMgr = new tlTestPlanMetrics($db);
$dummy = $metricsMgr->getStatusTotalsByTopLevelTestSuiteForRender($args->tplan_id);
if (is_null($dummy)) {
    // no test cases -> no report
    $gui->do_report['status_ok'] = 0;
    $gui->do_report['msg'] = lang_get('report_tspec_has_no_tsuites');
    tLog('Overall Metrics page: no test cases defined');
} else {
    // do report
    $gui->statistics->testsuites = $dummy->info;
    $gui->do_report['status_ok'] = 1;
    $gui->do_report['msg'] = '';
    $items2loop = array('testsuites', 'keywords');
    $keywordsMetrics = $metricsMgr->getStatusTotalsByKeywordForRender($args->tplan_id);
    $gui->statistics->keywords = !is_null($keywordsMetrics) ? $keywordsMetrics->info : null;
    if ($gui->showPlatforms) {
        $items2loop[] = 'platform';
        $platformMetrics = $metricsMgr->getStatusTotalsByPlatformForRender($args->tplan_id);
        $gui->statistics->platform = !is_null($platformMetrics) ? $platformMetrics->info : null;
    }
    if ($gui->testprojectOptions->testPriorityEnabled) {
        $items2loop[] = 'priorities';
        $filters = null;
        $opt = array('getOnlyAssigned' => false);
        $priorityMetrics = $metricsMgr->getStatusTotalsByPriorityForRender($args->tplan_id, $filters, $opt);
        $gui->statistics->priorities = !is_null($priorityMetrics) ? $priorityMetrics->info : null;
    }
    foreach ($items2loop as $item) {
        if (!is_null($gui->statistics->{$item})) {