Commit 896400091580f8060e87950c4f28945466797ee1
1 parent
40e4f314
add sort function on goods view
Showing
6 changed files
with
98 additions
and
66 deletions
Show diff stats
console/migrations/m151219_103804_goods_view.php
... | ... | @@ -17,7 +17,7 @@ class m151219_103804_goods_view extends Migration |
17 | 17 | `w_importers`.`name` as `importer_name`, |
18 | 18 | `t`.`rate` as rate, |
19 | 19 | `t`.`id` as currency_id, |
20 | - `w_importers`.`delivery`, | |
20 | + CAST(`w_importers`.`delivery` AS UNSIGNED ) as delivery, | |
21 | 21 | if (`w_details_description`.`description` = '', |
22 | 22 | if (`w_details_description`.`tecdoc_description` = '', |
23 | 23 | `w_details_description`.`supplier_description`, | ... | ... |
frontend/controllers/GoodsController.php
... | ... | @@ -22,12 +22,10 @@ class GoodsController extends Controller |
22 | 22 | |
23 | 23 | public function actionIndex($name, $id) |
24 | 24 | { |
25 | - | |
26 | 25 | $arr_name = explode('_', $name); |
27 | 26 | $brand = $arr_name[0]; |
28 | 27 | $article = $arr_name[1]; |
29 | 28 | |
30 | - | |
31 | 29 | $params = Yii::$app->request->getQueryParams(); |
32 | 30 | |
33 | 31 | // получим параметры сортировки из гет запроса |
... | ... | @@ -38,15 +36,12 @@ class GoodsController extends Controller |
38 | 36 | 'brand' => $brand]; |
39 | 37 | $arr = ['GoodsViewSearch' => $arr_values]; |
40 | 38 | |
41 | - if(empty( Yii::$app->user->identity )){ | |
39 | + if (empty(Yii::$app->user->identity)) { | |
42 | 40 | $margin_id = 1; |
43 | - }else{ | |
41 | + } else { | |
44 | 42 | $margin_id = Yii::$app->user->identity->margin_id; |
45 | 43 | } |
46 | 44 | |
47 | -// $arr = ['GoodsViewSearch' => ['name' => '0092S40090', | |
48 | -// 'brand' => 'BOSCH']]; | |
49 | - | |
50 | 45 | if (empty(Yii::$app->user->identity)) { |
51 | 46 | $margin_id = 1; |
52 | 47 | } else { |
... | ... | @@ -68,6 +63,8 @@ class GoodsController extends Controller |
68 | 63 | 'goods_data_provider' => $goods_provider, |
69 | 64 | 'crosses_data_provider' => $crosses_provider, |
70 | 65 | 'detailsModel' => $detailsModel, |
66 | + 'sort_params_or' => $sort_params_or, | |
67 | + 'sort_params_cross' => $sort_params_cross, | |
71 | 68 | ]); |
72 | 69 | } |
73 | 70 | |
... | ... | @@ -81,7 +78,7 @@ class GoodsController extends Controller |
81 | 78 | $default_sort_params = ['price' => SORT_DESC]; |
82 | 79 | $sort_params = []; |
83 | 80 | |
84 | - if ( empty( $params['sort'] ) ) { | |
81 | + if (empty($params['sort'])) { | |
85 | 82 | // нет параметров - сортируем по цене по убыванию |
86 | 83 | $sort_params = $default_sort_params; |
87 | 84 | |
... | ... | @@ -98,19 +95,11 @@ class GoodsController extends Controller |
98 | 95 | } |
99 | 96 | } |
100 | 97 | if ( empty( $sort_params ) ) { |
101 | - //$price_margin_id = Yii::$app->session->getFlash('price_margin_id',1); | |
102 | 98 | // если так и ненашли подходящих параметров, значит сортируем другую таблицу |
103 | - // а для этой вытащим из кеша или дефолтная сортировка | |
104 | - if ( Yii::$app->cache->exists( "sort_{$prefix}" ) ) { | |
105 | - $sort_params = Yii::$app->cache->get( "sort_{$prefix}" ); | |
106 | - } else { | |
107 | - $sort_params = $default_sort_params; | |
108 | - } | |
109 | - } else { | |
110 | - Yii::$app->cache->set( "sort_{$prefix}", $sort_params, 300 ); | |
99 | + // а для этой дефолтная сортировка | |
100 | + $sort_params = $default_sort_params; | |
111 | 101 | } |
112 | 102 | } |
113 | - | |
114 | 103 | return $sort_params; |
115 | 104 | } |
116 | 105 | ... | ... |
frontend/views/goods/index.php
... | ... | @@ -8,10 +8,12 @@ $sort = new Sort([ |
8 | 8 | 'box_or' => ['label' => 'Наличие'], |
9 | 9 | 'delivery_or' => ['label' => 'Срок'], |
10 | 10 | 'price_or' => [ |
11 | + 'default' => SORT_DESC, | |
11 | 12 | 'label' => 'Цена'], |
12 | 13 | 'box_cross' => ['label' => 'Наличие'], |
13 | 14 | 'delivery_cross' => ['label' => 'Срок'], |
14 | 15 | 'price_cross' => [ |
16 | + 'default' => SORT_DESC, | |
15 | 17 | 'label' => 'Цена'], |
16 | 18 | ], |
17 | 19 | ]); |
... | ... | @@ -20,7 +22,41 @@ $this->registerJsFile('/js/jquery.tablesorter.min.js'); |
20 | 22 | $this->registerJsFile('/js/goods.js'); |
21 | 23 | |
22 | 24 | $this->params['breadcrumbs'][] = $this->title; |
23 | -Pjax::begin(); | |
25 | + | |
26 | +// определим направление сортировки, для отображения стрелочек | |
27 | +// для оригинальной таблицы | |
28 | +if( empty($sort_params_or['price']) ){ | |
29 | + $price_or_class = ''; | |
30 | +}else{ | |
31 | + $price_or_class = ($sort_params_or['price'] == 4)? 'arrow_up': 'arrow_downA'; | |
32 | +} | |
33 | +if( empty($sort_params_or['delivery']) ){ | |
34 | + $delivery_or_class = ''; | |
35 | +}else{ | |
36 | + $delivery_or_class = ($sort_params_or['delivery'] == 4)? 'arrow_up': 'arrow_downA'; | |
37 | +} | |
38 | +if( empty($sort_params_or['box']) ){ | |
39 | + $box_or_class = ''; | |
40 | +}else{ | |
41 | + $box_or_class = ($sort_params_or['box'] == 4)? 'arrow_up': 'arrow_downA'; | |
42 | +} | |
43 | +// для кросс таблицы | |
44 | +if( empty($sort_params_cross['price']) ){ | |
45 | + $price_cross_class = ''; | |
46 | +}else{ | |
47 | + $price_cross_class = ($sort_params_cross['price'] == 4)? 'arrow_up': 'arrow_downA'; | |
48 | +} | |
49 | +if( empty($sort_params_cross['delivery']) ){ | |
50 | + $delivery_cross_class = ''; | |
51 | +}else{ | |
52 | + $delivery_cross_class = ($sort_params_cross['delivery'] == 4)? 'arrow_up': 'arrow_downA'; | |
53 | +} | |
54 | +if( empty($sort_params_cross['box']) ){ | |
55 | + $box_cross_class = ''; | |
56 | +}else{ | |
57 | + $box_cross_class = ($sort_params_cross['box'] == 4)? 'arrow_up': 'arrow_downA'; | |
58 | +} | |
59 | + | |
24 | 60 | ?> |
25 | 61 | |
26 | 62 | |
... | ... | @@ -106,15 +142,16 @@ Pjax::begin(); |
106 | 142 | <p class="currency opposite" id="grivna">UAH</p> |
107 | 143 | <p class="currency active_button_purple1" id="dollars">USD</p> |
108 | 144 | <p class="currency opposite" id="euro">EUR</p> |
145 | + <?php Pjax::begin(['id' => 'original']); ?> | |
109 | 146 | <table class="tovar_table" cellspacing="0" cellpadding="0" border="0"> |
110 | 147 | <tbody><tr class="name"> |
111 | 148 | <td class="small_width row_name">Фирма</td> |
112 | 149 | <td class="medium_width row_name">Номер детали</td> |
113 | 150 | <td class="large_width row_name">Описание</td> |
114 | 151 | <td class="row_select1 row_name"></td> |
115 | - <td class="right_large row_name link_sort arrow_up"><?= $sort->link('box_or') ?></td> | |
116 | - <td class="right_small row_name link_sort arrow_up"><?= $sort->link('delivery_or') ?></td> | |
117 | - <td class="right_medium row_name link_sort arrow_up"><?= $sort->link('price_or') ?></td> | |
152 | + <td class="right_large row_name link_sort <?= $box_or_class ?>"><?= $sort->link('box_or') ?></td> | |
153 | + <td class="right_small row_name link_sort <?= $delivery_or_class ?>"><?= $sort->link('delivery_or') ?></td> | |
154 | + <td class="right_medium row_name link_sort <?= $price_or_class ?>"><?= $sort->link('price_or') ?></td> | |
118 | 155 | </tr> |
119 | 156 | <?php |
120 | 157 | echo \yii\widgets\ListView::widget([ |
... | ... | @@ -126,9 +163,11 @@ Pjax::begin(); |
126 | 163 | ?> |
127 | 164 | |
128 | 165 | </tbody></table> |
129 | - | |
166 | + <?php Pjax::end();?> | |
130 | 167 | |
131 | 168 | </div> |
169 | + | |
170 | + <?php Pjax::begin(['id' => 'cross']); ?> | |
132 | 171 | <div class="second_section"> |
133 | 172 | <p class="bold_line">Замены искомого производителя</p> |
134 | 173 | <p </p> |
... | ... | @@ -139,9 +178,9 @@ Pjax::begin(); |
139 | 178 | <td class="medium_width row_name">Номер детали</td> |
140 | 179 | <td class="large_width row_name">Описание</td> |
141 | 180 | <td class="row_select1 row_name"></td> |
142 | - <td class="right_large row_name link_sort arrow_up"><?= $sort->link('box_cross') ?></td> | |
143 | - <td class="right_small row_name link_sort arrow_up"><?= $sort->link('delivery_cross') ?></td> | |
144 | - <td class="right_medium row_name link_sort arrow_up"><?= $sort->link('price_cross') ?></td> | |
181 | + <td class="right_large row_name link_sort <?= $box_cross_class ?>"><?= $sort->link('box_cross') ?></td> | |
182 | + <td class="right_small row_name link_sort <?= $delivery_cross_class ?>"><?= $sort->link('delivery_cross') ?></td> | |
183 | + <td class="right_medium row_name link_sort <?= $price_cross_class ?>"><?= $sort->link('price_cross') ?></td> | |
145 | 184 | </tr> |
146 | 185 | <?php |
147 | 186 | echo \yii\widgets\ListView::widget([ |
... | ... | @@ -157,12 +196,11 @@ Pjax::begin(); |
157 | 196 | <img src="/images/yellow_squere.jpg"><p>В наличии на центральном складе ItalAuto, в Киеве</p> |
158 | 197 | </div> |
159 | 198 | </div> |
199 | + <?php Pjax::end();?> | |
160 | 200 | </div> |
161 | 201 | |
162 | 202 | </div> |
163 | -<?php | |
164 | -Pjax::end(); | |
165 | -?> | |
203 | + | |
166 | 204 | |
167 | 205 | |
168 | 206 | <div class="modal fade" id="details_content_block" > | ... | ... |
17.4 KB
frontend/web/js/goods.js
1 | 1 | $(document).ready(function () { |
2 | 2 | // для таблицы кроссов, классы обозначаются через cross_ |
3 | 3 | var cross_prefix = ''; |
4 | - | |
5 | 4 | // по умолчанию - цены в долларах, остальные скрываем |
6 | 5 | var show_currency = ['usd']; |
7 | 6 | var hidden_currency = ['uah', 'eur']; |
8 | 7 | |
8 | + // первоначальная инициация цен | |
9 | + priceInitialisation(); | |
10 | + | |
11 | + // привяжем обработчик смены валюты | |
9 | 12 | $(document).on("click", ".currency", changeCurrency); |
10 | 13 | |
11 | - function changeCurrency() { | |
14 | + // привяжем обработчик обновления страницы pjax | |
15 | + $(document).on('pjax:complete', function() { | |
16 | + console.log(document.location); | |
17 | + priceInitialisation(); | |
18 | + }) | |
12 | 19 | |
13 | - if ($(this).attr('id') === 'grivna') { | |
14 | - show_currency = ['uah']; | |
15 | - hidden_currency = ['eur', 'usd']; | |
16 | - } else if ($(this).attr('id') === 'euro') { | |
17 | - show_currency = ['eur']; | |
18 | - hidden_currency = ['uah', 'usd']; | |
19 | - } else if ($(this).attr('id') === 'dollars') { | |
20 | - show_currency = ['usd']; | |
21 | - hidden_currency = ['uah', 'eur']; | |
22 | - } | |
20 | + | |
21 | + function changeCurrency() { | |
23 | 22 | $('.currency').removeClass('active_button_purple1'); |
24 | 23 | $(this).addClass('active_button_purple1'); |
24 | + // после смены валюты - покажем цены в выбранной валюте | |
25 | + priceInitialisation(); | |
26 | + } | |
25 | 27 | |
26 | - setVisiblePrice(); | |
28 | + function priceInitialisation() { | |
29 | + | |
30 | + // найдем текущую установленную валюту, и пересчитаем цены в ней | |
31 | + var current_currency = $('.active_button_purple1')[0]; | |
32 | + if (typeof current_currency === 'object'){ | |
33 | + | |
34 | + if (current_currency.getAttribute('id') === 'grivna') { | |
35 | + show_currency = ['uah']; | |
36 | + hidden_currency = ['eur', 'usd']; | |
37 | + } else if (current_currency.getAttribute('id') === 'euro') { | |
38 | + show_currency = ['eur']; | |
39 | + hidden_currency = ['uah', 'usd']; | |
40 | + } else if (current_currency.getAttribute('id') === 'dollars') { | |
41 | + show_currency = ['usd']; | |
42 | + hidden_currency = ['uah', 'eur']; | |
43 | + } | |
44 | + setVisiblePrice(); | |
45 | + } | |
27 | 46 | } |
28 | 47 | |
29 | 48 | function setVisiblePrice() { |
... | ... | @@ -72,7 +91,7 @@ $(document).ready(function () { |
72 | 91 | } |
73 | 92 | ); |
74 | 93 | }); |
75 | - | |
94 | + | |
76 | 95 | //открытие-закрытие карточки товара и смена текста на бирке карточки товара |
77 | 96 | function changeText() { |
78 | 97 | e = document.getElementById('button_grey_card'); |
... | ... | @@ -85,15 +104,16 @@ $(document).ready(function () { |
85 | 104 | $('.tovar_card').toggleClass('tovar_card_visible'); |
86 | 105 | $('.table').toggleClass('table_height'); |
87 | 106 | }); |
107 | + // модальная форма с инфой по тех-доку | |
108 | + $(document).on("click", '.tecdoc_id_info', function(e){ | |
109 | + var tecdoc_id = $(this).data('id'); | |
110 | + $.post( "/detail/get-details-for-item", {tecdoc_id:tecdoc_id},function( data ) { | |
111 | + $('#details_content').empty(); | |
112 | + $('#details_content').html(data); | |
88 | 113 | |
89 | - //стрелочки вниз | |
90 | - $(document).on( "click",'.link_sort', function () { | |
91 | - | |
92 | - $(this).find('.desc').toggleClass('arrow_downA'); | |
93 | - | |
94 | - }) | |
114 | + }); | |
95 | 115 | |
96 | -}); | |
116 | + });}); | |
97 | 117 | |
98 | 118 | |
99 | 119 | ... | ... |
frontend/web/js/main.js
... | ... | @@ -51,19 +51,4 @@ $(document).ready(function(){ |
51 | 51 | |
52 | 52 | |
53 | 53 | }); |
54 | - | |
55 | - $('.tecdoc_id_info').click(function(e){ | |
56 | - var tecdoc_id = $(this).data('id'); | |
57 | - $.post( "/detail/get-details-for-item", {tecdoc_id:tecdoc_id},function( data ) { | |
58 | - $('#details_content').empty(); | |
59 | - $('#details_content').html(data); | |
60 | - | |
61 | - | |
62 | - }); | |
63 | - | |
64 | - }); | |
65 | - | |
66 | - | |
67 | - | |
68 | - | |
69 | 54 | }); | ... | ... |