Skip to content

Commit

Permalink
Extract methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Kyslik committed Mar 14, 2017
1 parent bbda0dd commit f04970d
Showing 1 changed file with 67 additions and 23 deletions.
90 changes: 67 additions & 23 deletions src/ColumnSortable/SortableLink.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,9 @@ public static function render(array $parameters)
Request::merge([$mergeTitleAs => $title]);
}

$icon = Config::get('columnsortable.default_icon_set');

foreach (Config::get('columnsortable.columns', []) as $value) {
if (in_array($sortColumn, $value['rows'])) {
$icon = $value['class'];
}
}

if (Request::get('sort') == $sortParameter && in_array(Request::get('order'), ['asc', 'desc'])) {
$icon .= (Request::get('order') === 'asc' ? Config::get('columnsortable.asc_suffix',
'-asc') : Config::get('columnsortable.desc_suffix', '-desc'));
$direction = Request::get('order') === 'desc' ? 'asc' : 'desc';
} else {
$icon = Config::get('columnsortable.sortable_icon');
$direction = Config::get('columnsortable.default_direction_unsorted', 'asc');
}

$iconAndTextSeparator = Config::get('columnsortable.icon_text_separator', '');
list($icon, $direction) = self::determineDirection($sortColumn, $sortParameter);

$clickableIcon = Config::get('columnsortable.clickable_icon', false);
$trailingTag = $iconAndTextSeparator . '<i class="' . $icon . '"></i>' . '</a>';
if ($clickableIcon === false) {
$trailingTag = '</a>' . $iconAndTextSeparator . '<i class="' . $icon . '"></i>';
}
$trailingTag = self::formTrailingTag($icon);

$anchorClass = self::getAnchorClass();

Expand Down Expand Up @@ -137,4 +116,69 @@ private static function getAnchorClass()
}
return '';
}


/**
* @param $sortColumn
*
* @return string
*/
private static function selectIcon($sortColumn)
{
$icon = Config::get('columnsortable.default_icon_set');

foreach (Config::get('columnsortable.columns', []) as $value) {
if (in_array($sortColumn, $value['rows'])) {
$icon = $value['class'];
}
}

return $icon;
}


/**
* @param $sortColumn
* @param $sortParameter
*
* @return array
*/
private static function determineDirection($sortColumn, $sortParameter)
{
$icon = self::selectIcon($sortColumn);

if (Request::get('sort') == $sortParameter && in_array(Request::get('order'), ['asc', 'desc'])) {
$icon .= (Request::get('order') === 'asc' ? Config::get('columnsortable.asc_suffix',
'-asc') : Config::get('columnsortable.desc_suffix', '-desc'));
$direction = Request::get('order') === 'desc' ? 'asc' : 'desc';

return [$icon, $direction];
} else {
$icon = Config::get('columnsortable.sortable_icon');
$direction = Config::get('columnsortable.default_direction_unsorted', 'asc');

return [$icon, $direction];
}
}


/**
* @param $icon
*
* @return string
*/
private static function formTrailingTag($icon)
{
$iconAndTextSeparator = Config::get('columnsortable.icon_text_separator', '');

$clickableIcon = Config::get('columnsortable.clickable_icon', false);
$trailingTag = $iconAndTextSeparator.'<i class="'.$icon.'"></i>'.'</a>';
if ($clickableIcon === false) {
$trailingTag = '</a>'.$iconAndTextSeparator.'<i class="'.$icon.'"></i>';

return $trailingTag;
}

return $trailingTag;
}
}

0 comments on commit f04970d

Please sign in to comment.