function flot_fields_views_plugin_style::preprocess_views_plugin_query_default in Flot 7
1 call to flot_fields_views_plugin_style::preprocess_views_plugin_query_default()
- flot_fields_views_plugin_style::preprocess in flot_views/
views/ flot_fields_views_plugin_style.inc - Theme template preprocessor.
File
- flot_views/
views/ flot_fields_views_plugin_style.inc, line 694 - Style plugin for views
Class
- flot_fields_views_plugin_style
- @file Style plugin for views
Code
function preprocess_views_plugin_query_default($vars, $input, &$output) {
// input
$yfields = $input['yfields'];
$fieldx = $input['fieldx'];
$group_fields = $input['group_fields'];
// output
$series = array();
$series_options = array();
$range = array();
$range['xaxis'] = $range['yaxis'] = array(
'min' => NULL,
'max' => NULL,
);
$ticks = array();
// Iterate over results to build data and ticks
foreach ($vars['rows'] as $id => $row) {
if (isset($row)) {
if (empty($yfields)) {
if (isset($fieldx->options['date_format'])) {
$datapoint = array(
$row->{$fieldx->field_alias} * 1000,
$row->{"count"},
);
}
else {
if (!in_array($row->{$fieldx->field_alias}, $ticks)) {
$ticks[] = $row->{$fieldx->field_alias};
}
$datapoint = array(
array_shift(array_keys($ticks, $row->{$fieldx->field_alias})),
$row->{"count"},
);
}
$range['xaxis']['min'] = is_null($range['xaxis']['min']) ? $row->{"count"} : min($row->{"count"}, $range['xaxis']['min']);
$range['xaxis']['max'] = is_null($range['xaxis']['max']) ? $row->{"count"} : max($row->{"count"}, $range['xaxis']['max']);
$series[$fieldx->field_alias][] = $datapoint;
}
else {
$labelfields = array();
foreach ($yfields as $fieldy) {
if ($fieldy->options['flot']['y']['function'] == 'label') {
$labelfields[] = $fieldy;
}
}
foreach ($yfields as $fieldy) {
//filter out non-numeric.
if ($fieldy->options['flot']['y']['function'] != 'label') {
$y_alias = $fieldy->field_alias . '_' . $fieldy->options['flot']['y']['function'];
// datetime fields need special care
// TODO: Also handle datetime for the Y axis, not just the X axis
if (isset($fieldx->options['date_format'])) {
$datapoint = array(
$row->{$fieldx->field_alias} * 1000,
$row->{$y_alias},
);
}
else {
if (!in_array($row->{$fieldx->field_alias}, $ticks)) {
$ticks[] = $row->{$fieldx->field_alias};
}
$datapoint = array(
array_shift(array_keys($ticks, $row->{$fieldx->field_alias})),
$row->{$y_alias},
);
}
$range['yaxis']['min'] = is_null($range['yaxis']['min']) ? $datapoint[1] : min($datapoint[1] - 1, $range['yaxis']['min']);
//-1 for padding
$range['yaxis']['max'] = is_null($range['yaxis']['max']) ? $datapoint[1] : max($datapoint[1] + 1, $range['yaxis']['max']);
//+1 for padding
$range['xaxis']['min'] = is_null($range['xaxis']['min']) ? $datapoint[0] : min($datapoint[0], $range['xaxis']['min']);
$range['xaxis']['max'] = is_null($range['xaxis']['max']) ? $datapoint[0] : max($datapoint[0], $range['xaxis']['max']);
if (empty($labelfields)) {
$serieskey = $fieldy->definition['title'] . ': ' . $row->{$fieldy->field_alias};
if (!empty($group_fields)) {
$serieskey = array();
foreach ($group_fields as $group_field) {
$serieskey[] = $group_field->definition['title'] . ': ' . $row->{$group_field->field_alias};
}
$serieskey = implode(', ', $serieskey);
}
}
else {
$serieskey = array();
foreach ($labelfields as $label_field) {
$serieskey[] = $label_field->definition['title'] . ': ' . $row->{$label_field->field_alias};
}
$serieskey = implode(', ', $serieskey);
}
$series[$serieskey][] = $datapoint;
$series_options[$serieskey] = $fieldy->options['flot']['y'];
}
}
}
}
}
$output = array(
'series' => $series,
'series_options' => $series_options,
'range' => $range,
'ticks' => $ticks,
);
}