private function filterTable($withUser = 5) { $dataTable = new DataTable(); $dataTable->addRowsFromArray(array(array(Row::COLUMNS => array('label' => 'val1', Metrics::INDEX_NB_USERS => 0)), array(Row::COLUMNS => array('label' => 'val2')), array(Row::COLUMNS => array('label' => 'val2 5w ö?', Metrics::INDEX_NB_USERS => $withUser)))); $dataTable->filter($this->filter, array($idSite = 1, $period = 'day', $date = 'today')); return $dataTable->getColumn(Metrics::INDEX_NB_USERS); }
/** * Utility function that adds a visit percent column to a data table, * regardless of whether the data table is an data table array or just * a data table. * * @param DataTable $dataTable The data table to modify. */ private static function addVisitsPercentColumn($dataTable) { if ($dataTable instanceof DataTable\Map) { foreach ($dataTable->getDataTables() as $table) { self::addVisitsPercentColumn($table); } } else { $totalVisits = array_sum($dataTable->getColumn(Metrics::INDEX_NB_VISITS)); $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('nb_visits_percentage', 'nb_visits', $totalVisits)); } }
private function assertRows($expectedLabels, DataTable $dataTable) { $this->assertEquals($expectedLabels, $dataTable->getColumn('label')); $this->assertEquals(count($expectedLabels), $dataTable->getRowsCount()); }
/** * Common filters for Page URLs and Page Titles * * @param DataTable|DataTable\Simple|DataTable\Map $dataTable */ protected function filterPageDatatable($dataTable) { $columnsToRemove = array('bounce_rate'); $dataTable->queueFilter('ColumnDelete', array($columnsToRemove)); // Average time on page = total time on page / number visits on that page $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_time_on_page', 'sum_time_spent', 'nb_visits', 0)); // Bounce rate = single page visits on this page / visits started on this page $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('bounce_rate', 'entry_bounce_count', 'entry_nb_visits', 0)); // % Exit = Number of visits that finished on this page / visits on this page $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('exit_rate', 'exit_nb_visits', 'nb_visits', 0)); // Handle performance analytics $hasTimeGeneration = array_sum($dataTable->getColumn(Metrics::INDEX_PAGE_SUM_TIME_GENERATION)) > 0; if ($hasTimeGeneration) { // Average generation time = total generation time / number of pageviews $precisionAvgTimeGeneration = 3; $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_time_generation', 'sum_time_generation', 'nb_hits_with_time_generation', $precisionAvgTimeGeneration)); $dataTable->queueFilter('ColumnDelete', array(array('sum_time_generation'))); } else { // No generation time: remove it from the API output and add it to empty_columns metadata, so that // the columns can also be removed from the view $dataTable->filter('ColumnDelete', array(array(Metrics::INDEX_PAGE_SUM_TIME_GENERATION, Metrics::INDEX_PAGE_NB_HITS_WITH_TIME_GENERATION, Metrics::INDEX_PAGE_MIN_TIME_GENERATION, Metrics::INDEX_PAGE_MAX_TIME_GENERATION))); if ($dataTable instanceof DataTable) { $emptyColumns = $dataTable->getMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME); if (!is_array($emptyColumns)) { $emptyColumns = array(); } $emptyColumns[] = 'sum_time_generation'; $emptyColumns[] = 'avg_time_generation'; $emptyColumns[] = 'min_time_generation'; $emptyColumns[] = 'max_time_generation'; $dataTable->setMetadata(DataTable::EMPTY_COLUMNS_METADATA_NAME, $emptyColumns); } } }
/** * @return bool */ protected function isReportContainsUnsetVisitsColumns(DataTable $report) { $visits = $report->getColumn('nb_visits'); $isVisitsMetricsSometimesUnset = in_array(false, $visits); return $isVisitsMetricsSometimesUnset; }
/** * @param DataTable|DataTable\Map $dataTable * @param $visualization */ protected function initChartObjectData($dataTable, $visualization) { // We apply a filter to the DataTable, decoding the label column (useful for keywords for example) $dataTable->filter('ColumnCallbackReplace', array('label', 'urldecode')); $xLabels = $dataTable->getColumn('label'); $columnNames = $this->properties['columns_to_display']; if (($labelColumnIndex = array_search('label', $columnNames)) !== false) { unset($columnNames[$labelColumnIndex]); } $columnNameToTranslation = $columnNameToValue = array(); foreach ($columnNames as $columnName) { $columnNameToTranslation[$columnName] = @$this->properties['translations'][$columnName]; $columnNameToValue[$columnName] = $dataTable->getColumn($columnName); } $visualization->dataTable = $dataTable; $visualization->properties = $this->properties; $visualization->setAxisXLabels($xLabels); $visualization->setAxisYValues($columnNameToValue); $visualization->setAxisYLabels($columnNameToTranslation); $units = $this->getUnitsForColumnsToDisplay(); $visualization->setAxisYUnits($units); }
protected function assertOrder($expectedOrder) { $this->assertEquals($expectedOrder, $this->table->getColumn('label')); $this->assertEquals(count($expectedOrder), $this->table->getRowsCount()); }
private function assertOrder(DataTable $table, $expectedOrder) { $this->assertEquals($expectedOrder, $table->getColumn('label')); $this->assertEquals(count($expectedOrder), $table->getRowsCount()); }
/** * @param DataTable|DataTable\Map $dataTable * @param $visualization */ protected function initChartObjectData($dataTable, $visualization) { $xLabels = $dataTable->getColumn('label'); $columnNames = $this->properties['columns_to_display']; if (($labelColumnIndex = array_search('label', $columnNames)) !== false) { unset($columnNames[$labelColumnIndex]); } $columnNameToTranslation = $columnNameToValue = array(); foreach ($columnNames as $columnName) { $columnNameToTranslation[$columnName] = @$this->properties['translations'][$columnName]; $columnNameToValue[$columnName] = $dataTable->getColumn($columnName); } $visualization->dataTable = $dataTable; $visualization->properties = $this->properties; $visualization->setAxisXLabels($xLabels); $visualization->setAxisYValues($columnNameToValue); $visualization->setAxisYLabels($columnNameToTranslation); $units = $this->getUnitsForColumnsToDisplay(); $visualization->setAxisYUnits($units); }