function views_aggregator_range_diff in Views Aggregator Plus 8
Aggregates a field group as a difference between min and max.
Example: 5.5 (min) and 14.9 (max) will render 9.4.
Parameters
array $groups: An array of groups of rows, each group indexed by group value.
object $field_handler: The handler for the view column.
Return value
array An array of values, one for each group, plus the 'column' group.
File
- views_aggregator_more_functions/
views_aggregator_more_functions.module, line 72 - views_aggregator_more_functions.module
Code
function views_aggregator_range_diff(array $groups, $field_handler) {
$values = [];
foreach ($groups as $group => $rows) {
$is_first = TRUE;
foreach ($rows as $num => $row) {
$value = views_aggregator_get_cell($field_handler, $num, FALSE);
if ($is_first) {
$minimum = $maximum = $value;
$is_first = FALSE;
}
elseif (isset($value) && $value < $minimum) {
$minimum = $value;
}
elseif (isset($value) && $value > $maximum) {
$maximum = $value;
}
}
$values[$group] = [
$maximum - $minimum,
];
if (!isset($minimum_column) || $minimum < $minimum_column) {
$minimum_column = $minimum;
}
if (!isset($maximum_column) || $maximum > $maximum_column) {
$maximum_column = $maximum;
}
}
$values['column'] = [
$maximum - $minimum,
];
return $values;
}