public function configureView(ViewDataTable $view)
{
if ($view->isViewDataTableId(Sparklines::ID)) {
/** @var Sparklines $view */
$view->requestConfig->apiMethodToRequestDataTable = 'API.get';
$this->addSparklineColumns($view);
$view->config->addTranslations($this->getSparklineTranslations());
$numberFormatter = NumberFormatter::getInstance();
$view->config->filters[] = function (DataTable $table) use($view, $numberFormatter) {
$firstRow = $table->getFirstRow();
if ($firstRow->getColumn('nb_pageviews') + $firstRow->getColumn('nb_downloads') + $firstRow->getColumn('nb_outlinks') == 0 && $firstRow->getColumn('nb_actions') > 0) {
$view->config->removeSparklineMetric(array('nb_downloads', 'nb_uniq_downloads'));
$view->config->removeSparklineMetric(array('nb_outlinks', 'nb_uniq_outlinks'));
$view->config->removeSparklineMetric(array('nb_pageviews', 'nb_uniq_pageviews'));
$view->config->removeSparklineMetric(array('nb_searches', 'nb_keywords'));
} else {
$view->config->removeSparklineMetric(array('nb_actions'));
}
$nbUsers = $firstRow->getColumn('nb_users');
if (!is_numeric($nbUsers) || 0 >= $nbUsers) {
$view->config->replaceSparklineMetric(array('nb_users'), '');
}
$avgGenerationTime = $firstRow->getColumn('avg_time_generation');
if (false === $avgGenerationTime) {
// fix avgGenerationTime is not formatted if value is false
/** @var Formatter $formatter */
$formatter = StaticContainer::get('Piwik\\Metrics\\Formatter');
$avgGenerationTime = $formatter->getPrettyTimeFromSeconds($avgGenerationTime, true);
$firstRow->setColumn('avg_time_generation', $avgGenerationTime);
}
$numberMetrics = array('nb_visits', 'nb_uniq_visitors', 'nb_uniq_visitors', 'nb_users', 'nb_actions', 'nb_pageviews', 'nb_uniq_pageviews', 'nb_searches', 'nb_keywords', 'nb_downloads', 'nb_uniq_downloads', 'nb_outlinks', 'nb_uniq_outlinks', 'max_actions');
foreach ($numberMetrics as $metric) {
$value = $firstRow->getColumn($metric);
if (false !== $value) {
$firstRow->setColumn($metric, $numberFormatter->formatNumber($value));
}
}
$value = $firstRow->getColumn('bounce_rate');
if (false !== $value) {
$firstRow->setColumn('bounce_rate', $numberFormatter->formatPercent($value, $precision = 1));
}
$value = $firstRow->getColumn('nb_actions_per_visit');
if (false !== $value) {
$firstRow->setColumn('nb_actions_per_visit', $numberFormatter->formatNumber($value, $maxFraction = 1));
}
};
}
}