forked from kartik-v/yii2-grid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SerialColumn.php
125 lines (106 loc) · 3.56 KB
/
SerialColumn.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
/**
* @package yii2-grid
* @author Kartik Visweswaran <[email protected]>
* @copyright Copyright © Kartik Visweswaran, Krajee.com, 2014 - 2015
* @version 3.0.2
*/
namespace kartik\grid;
use Yii;
use yii\base\InvalidConfigException;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
/**
* Extends the Yii's SerialColumn for the Grid widget [[\kartik\widgets\GridView]]
* with various enhancements.
*
* SerialColumn displays a column of row numbers (1-based).
*
* @author Kartik Visweswaran <[email protected]>
* @since 1.0
*/
class SerialColumn extends \yii\grid\SerialColumn
{
use ColumnTrait;
/**
* @var boolean whether the column is hidden from display. This is different
* than the `visible` property, in the sense, that the column is rendered,
* but hidden from display. This will allow you to still export the column
* using the export function.
*/
public $hidden;
/**
* @var boolean|array whether the column is hidden in export output. If set to boolean `true`,
* it will hide the column for all export formats. If set as an array, it will accept the
* list of GridView export `formats` and hide output only for them.
*/
public $hiddenFromExport = false;
/**
* @var string the horizontal alignment of each column. Should be one of
* 'left', 'right', or 'center'.
*/
public $hAlign = GridView::ALIGN_CENTER;
/**
* @var string the vertical alignment of each column. Should be one of
* 'top', 'middle', or 'bottom'.
*/
public $vAlign = GridView::ALIGN_MIDDLE;
/**
* @var boolean whether to force no wrapping on all table cells in the column
* @see http://www.w3schools.com/cssref/pr_text_white-space.asp
*/
public $noWrap = false;
/**
* @var string the width of each column (matches the CSS width property).
* @see http://www.w3schools.com/cssref/pr_dim_width.asp
*/
public $width = '50px';
/**
* @var boolean|string whether the page summary is displayed above the footer for this column.
* If this is set to a string, it will be displayed as is. If it is set to `false` the summary
* will not be calculated and displayed.
*/
public $pageSummary = false;
/**
* @var string the summary function to call for the column
*/
public $pageSummaryFunc = GridView::F_SUM;
/**
* @var array HTML attributes for the page summary cell
*/
public $pageSummaryOptions = [];
/**
* @var boolean whether to just hide the page summary display but still calculate
* the summary based on `pageSummary` settings
*/
public $hidePageSummary = false;
/**
* @var boolean whether to merge the header title row and the filter row
* This will not render the filter for the column and can be used when `filter`
* is set to `false`. Defaults to `false`. This is only applicable when `filterPosition`
* for the grid is set to FILTER_POS_BODY.
*/
public $mergeHeader = true;
/**
* @var array of row data for the column for the current page
*/
private $_rows = [];
/**
* @inheritdoc
*/
public function init()
{
$this->parseFormat();
$this->parseVisibility();
parent::init();
$this->setPageRows();
}
/**
* @inheritdoc
*/
public function renderDataCell($model, $key, $index)
{
$options = $this->fetchContentOptions($model, $key, $index);
return Html::tag('td', $this->renderDataCellContent($model, $key, $index), $options);
}
}