Skip to content

Commit

Permalink
Merge branch 'bugfix/service-sort-by-display_name-8716'
Browse files Browse the repository at this point in the history
fixes #8716
  • Loading branch information
lippserd committed Mar 13, 2015
2 parents e17f9d7 + dbb5aba commit a932f9d
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 19 deletions.
30 changes: 23 additions & 7 deletions library/Icinga/Data/SimpleQuery.php
Expand Up @@ -161,6 +161,26 @@ public function setOrderColumns(array $orderColumns)
throw new IcingaException('This function does nothing and will be removed');
}

/**
* Split order field into its field and sort direction
*
* @param string $field
*
* @return array
*/
public function splitOrder($field)
{
$fieldAndDirection = explode(' ', $field, 2);
if (count($fieldAndDirection) === 1) {
$direction = null;
} else {
$field = $fieldAndDirection[0];
$direction = (strtoupper(trim($fieldAndDirection[1])) === 'DESC') ?
Sortable::SORT_DESC : Sortable::SORT_ASC;
}
return array($field, $direction);
}

/**
* Sort result set by the given field (and direction)
*
Expand All @@ -177,13 +197,9 @@ public function setOrderColumns(array $orderColumns)
public function order($field, $direction = null)
{
if ($direction === null) {
$fieldAndDirection = explode(' ', $field, 2);
if (count($fieldAndDirection) === 1) {
$direction = self::SORT_ASC;
} else {
$field = $fieldAndDirection[0];
$direction = (strtoupper(trim($fieldAndDirection[1])) === 'DESC') ?
Sortable::SORT_DESC : Sortable::SORT_ASC;
list($field, $direction) = $this->splitOrder($field);
if ($direction === null) {
$direction = Sortable::SORT_ASC;
}
} else {
switch (($direction = strtoupper($direction))) {
Expand Down
3 changes: 2 additions & 1 deletion modules/monitoring/library/Monitoring/DataView/DataView.php
Expand Up @@ -242,14 +242,15 @@ public function sort($column = null, $order = null)
$order = (strtoupper($order) === static::SORT_ASC) ? 'ASC' : 'DESC';

foreach ($sortColumns['columns'] as $column) {
list($column, $direction) = $this->query->splitOrder($column);
if (! $this->isValidFilterTarget($column)) {
throw new QueryException(
mt('monitoring', 'The sort column "%s" is not allowed in "%s".'),
$column,
get_class($this)
);
}
$this->query->order($column, $order);
$this->query->order($column, $direction !== null ? $direction : $order);
}
$this->isSorted = true;
return $this;
Expand Down
8 changes: 4 additions & 4 deletions modules/monitoring/library/Monitoring/DataView/HostStatus.php
Expand Up @@ -92,10 +92,10 @@ public function getSortRules()
return array(
'host_severity' => array(
'columns' => array(
'host_severity',
'host_last_state_change',
),
'order' => self::SORT_DESC
'host_severity DESC',
'host_last_state_change DESC',
'host_display_name ASC'
)
),
'host_display_name' => array(
'order' => self::SORT_ASC
Expand Down
23 changes: 16 additions & 7 deletions modules/monitoring/library/Monitoring/DataView/ServiceStatus.php
Expand Up @@ -125,18 +125,27 @@ public function getSortRules()
return array(
'service_severity' => array(
'columns' => array(
'service_severity',
'service_last_state_change'
),
'order' => self::SORT_DESC
'service_severity DESC',
'service_last_state_change DESC',
'service_display_name ASC',
'host_display_name ASC'
)
),
'host_severity' => array(
'service_display_name' => array(
'columns' => array(
'host_severity',
'host_last_state_change',
'service_display_name',
'host_display_name'
),
'order' => self::SORT_ASC
),
'host_severity' => array(
'columns' => array(
'host_severity DESC',
'host_last_state_change DESC',
'host_display_name ASC',
'service_display_name ASC'
)
),
'host_display_name' => array(
'columns' => array(
'host_display_name',
Expand Down

0 comments on commit a932f9d

Please sign in to comment.