OSDN Git Service

074e95931c35f1f48f59c1b48fcdf53addad06fd
[invent/invent.git] / views / items / index.php
1 <?php
2
3 use yii\helpers\Html;
4 use yii\grid\GridView;
5 use yii\widgets\Pjax;
6 use yii\helpers\Url;
7 use yii\widgets\DetailView;
8 use yii\helpers\ArrayHelper;
9 use app\models\Status;
10
11 /* @var $this yii\web\View */
12 /* @var $searchModel app\models\ItemsSearch */
13 /* @var $dataProvider yii\data\ActiveDataProvider */
14
15 $this->title = Yii::t('items', 'Items');
16 $this->params[ 'breadcrumbs' ][] = $this->title;
17
18 ?>
19 <div class="items-index">
20
21     <h1><?= Html::encode($this->title) ?></h1>
22
23 <script language="JavaScript">
24     function markToPrint(href)
25     {
26         url = href.attr("href");
27         var ids = $("input[name='selection[]']");
28         var res = '';
29         for ( var i = 0; i < ids.length; i++)
30         {
31             if (ids[ i ][ "checked" ] == true)
32             {
33                 res += "&id[]=" + ids[ i ][ "value" ];
34             }
35         }
36         href.attr("href", url + res);
37         return false;
38     }
39 </script>
40
41     <p>
42         <?php // Кнопки на форме ?>
43         <?= Html::a(Yii::t('items', 'Create Items'),
44             [ 'create' ],
45             [ 'class' => 'btn btn-success' ]) ?>
46         <?= Html::a(Yii::t('items', 'Print Items'),
47             Url::to([ 'print' ], 'http'),
48             [ 'class' => 'btn btn-warning',
49                 'target' => '_blank'
50             ]) ?>
51         <?= Html::a(Yii::t('items', 'Start checking'),
52             [ 'start_checking' ],
53             [ 'class' => 'btn btn-info',
54             ]) ?>
55     </p>
56
57     <?= GridView::widget([
58         'dataProvider' => $dataProvider, // Источник данных
59         'filterModel' => $searchModel,   // Модель поиска
60         'rowOptions' => function($model) // Функция окраски неинвентаризированных предметов/оборудования
61             {
62                 if ($model->checked == false)     // Критерий проверки планируется
63                 {
64                     return [ 'class' => 'danger' ]; // Отметка неинвентаризированной строки
65                 } else
66                 if ($model->statusName == 'Списано')
67                 {
68                     return [ 'class' => 'info' ];
69                 }
70             },
71         'columns' => [
72             // Нумератор строк
73             [ 'class' => 'yii\grid\SerialColumn' ],
74
75             // Инвентарный номер
76             [ 'attribute' => 'invent',
77                 'value' => function ($data)
78                     {
79                         return showUrlUpdate($data->invent, $data);
80                     },
81                 'format' => 'raw',
82             ],
83
84             // Серийный номер
85             [ 'attribute' => 'serial',
86                 'value' => function ($data)
87                     {
88                         return showUrlUpdate($data->serial, $data);
89                     },
90                 'format' => 'raw',
91             ],
92
93             // Модель
94             [ 'attribute' => 'model',
95                 'value' => function ($data)
96                     {
97                         return showUrlUpdate($data->model, $data);
98                     },
99                 'format' => 'raw',
100             ],
101
102             /* // Идентификатор записи
103             [ 'attribute' => 'id',
104                 'value' => function ($data)
105                     {
106                         return showUrlUpdate($data->id, $data);
107                     },
108                 'format' => 'raw',
109             ], // */
110
111             /* // Сетевое имя
112             [ 'attribute' => 'name',
113                 'value' => function ($data)
114                     {
115                         return showUrlUpdate($data->name, $data);
116                     },
117                 'format' => 'raw',
118             ], // */
119
120             // Название подразделения
121             [ 'attribute' =>'regionName',
122                 'value' => function($data)
123                     {
124                         return showUrlUpdate($data->regionName .  ' (' . $data->locationName . ')', $data);
125                     },
126                 'format' => 'raw',
127             ],
128
129             // Состояние
130             [ 'attribute' => 'statusName',
131                 'filter' => Html::activeDropDownList(
132                     $searchModel,
133                     'statusName',
134                     ArrayHelper::merge(
135                         [ '' => Yii::t('app', 'All statuses') ],
136                         ArrayHelper::map(Status::find()->orderBy('name')->all(), 'name', 'name')),
137                     [ 'class' => 'form-control' ],
138                 ),
139                 'value' => function ($data)
140                     {
141                         return showUrlUpdate($data->statusName, $data);
142                     },
143                 'format' => 'raw',
144             ],
145
146             /* // Операционная система
147             [ 'attribute' => 'os',
148                 'value' => function ($data)
149                     {
150                         return showUrlUpdate($data->os, $data->id);
151                     },
152                 'format' => 'raw',
153             ], // */
154
155             /* // МАС - адрес
156             [ 'attribute' => 'mac',
157                 'value' => function ($data)
158                     {
159                         return showUrlUpdate($data->mac, $data);
160                     },
161                 'format' => 'raw',
162             ], // */
163
164             /* // Код товара
165             [ 'attribute' => 'product',
166                 'value' => function ($data)
167                     {
168                         return showUrlUpdate($data->product, $data);
169                     },
170                 'format' => 'raw',
171             ], // */
172
173             /* // Номер модели
174             [ 'attribute' => 'modelnumber',
175                 'value' => function ($data)
176                     {
177                         return showUrlUpdate($data->modelnumber, $data);
178                     },
179                 'format' => 'raw',
180             ], // */
181
182             /* // Примечания
183             [ 'attribute' => 'comment',
184                 'value' => function ($data)
185                     {
186                         return showUrlUpdate($data->comment, $data);
187                     },
188                 'format' => 'raw',
189             ], // */
190
191             // Чекбоксы для выбора предметов/оборудования для печати QR меток
192             [ 'class' => 'yii\grid\CheckboxColumn',
193                 'checkboxOptions' => function($model, $key, $index, $column)
194                     {
195                         return [ 'value' => $model->id, ];
196                     },
197             ],
198
199             // Кнопки действий {view} {update} {delete} {print}
200             [ 'class' => 'yii\grid\ActionColumn',
201                 'template' => '{delete} {print}',
202                 'buttons' => [
203                     'print' => function ($url, $model, $key)
204                         {
205                             return Html::a('<span class="glyphicon glyphicon-print"></span>',
206                                 [ 'print', 'id[]' => $model->id ],
207                                 [ 'target' => '_blank',
208                                     'onclick' => 'markToPrint($(this));',
209                                     'title' => Yii::t('items', 'Print selected labels'),
210                                 ]);
211                         },
212                 ],
213             ],
214         ],
215     ]); ?>
216
217 </div>