OSDN Git Service

Изменена стартовая страница, размещены сводные данные по подразделениям и по типам...
[invent/invent.git] / views / site / index.php
1 <?php
2
3 use yii\helpers\Html;
4 use yii\grid\GridView;
5 use yii\widgets\Pjax;
6
7 //use yii\db\Query;
8 //use yii\data\ActiveDataProvider;
9 use yii\data\SqlDataProvider;
10
11 use app\models\Regions;
12 use app\models\Locations;
13
14 /* @var $this yii\web\View */
15
16
17
18 //    $query = Regions::find()
19 //        ->joinWith(['locations as l'])
20 //        ->where(['locations.region_id' => 'regions.id'])
21 //        ->select('regions.*, l.name as lname');
22 //    $query = (new Query())
23 //        ->select(' regions.*, l.name as lname')
24 //        ->from('regions')
25 //        ->rightJoin(['locations as l on l.region_id = id']);
26
27 //    $dataProvider = new ActiveDataProvider([
28 //        'query' => $query,
29 //    ]);
30
31 //    $dataProvider->setSort([
32 //        'defaultOrder' => [
33 //            'name' => SORT_ASC,
34 //        ],
35 //    ]);
36
37     $count = Yii::$app->db->createCommand('
38         SELECT COUNT(*) FROM regions
39     ')->queryScalar();
40
41     $dataProvider = new SqlDataProvider([
42         'sql' => "
43             SELECT
44                 r.name AS rname,
45                 COUNT(i.id) AS icount
46             FROM regions AS r
47                 LEFT JOIN locations AS l
48                     ON l.region_id = r.id
49                 LEFT JOIN items AS i
50                     ON i.location_id = l.id
51             GROUP BY
52                 rname
53             ORDER BY
54                 rname
55         ",
56         'totalCount' => $count,
57         'pagination' => [
58             'pageSize' => 10,
59         ],
60         'sort' => [
61             'attributes' => [
62                 'rname',
63                 'icount',
64             ],
65         ],
66     ]);
67
68     $countg = Yii::$app->db->createCommand('
69         SELECT COUNT(*) FROM types
70     ')->queryScalar();
71
72     $dataProviderg = new SqlDataProvider([
73         'sql' => "
74             SELECT
75                 t.name AS tname,
76                 COUNT(i.id) AS icount
77             FROM types AS t
78                 LEFT JOIN items AS i
79                     ON i.type_id = t.id
80             GROUP BY
81                 tname
82             ORDER BY
83                 tname
84         ",
85         'totalCount' => $countg,
86         'pagination' => [
87             'pageSize' => 20,
88         ],
89         'sort' => [
90             'attributes' => [
91                 'tname',
92                 'icount',
93             ],
94         ],
95     ]);
96
97 $this->title = Yii::t('app','Inventory');
98 ?>
99 <div class="site-index">
100     <h2>Количество оборудования по подразделениям</h2>
101     <?= GridView::widget([
102         'dataProvider' => $dataProvider,
103         'columns' => [
104
105             [
106                 'attribute' => 'rname',
107                 'label' => Yii::t('regions', 'Regions'),
108                 'value' => 'rname'
109             ],
110             [
111                 'attribute' => 'icount',
112                 'label' => Yii::t('regions', 'Total items count'),
113                 'value' => 'icount',
114             ],
115         ],
116     ]);
117     ?>
118
119     <h2>Количество оборудования по типам</h2>
120     <?= GridView::widget([
121         'dataProvider' => $dataProviderg,
122         'columns' => [
123
124             [
125                 'attribute' => 'tname',
126                 'label' => Yii::t('types', 'Types'),
127                 'value' => 'tname'
128             ],
129             [
130                 'attribute' => 'icount',
131                 'label' => Yii::t('types', 'Total items count'),
132                 'value' => 'icount',
133             ],
134         ],
135     ]);
136     ?>
137
138 </div>