c80_yax 0.1.0.18 → 0.1.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -1
  3. data/app/assets/images/c80_yax/stripe.png +0 -0
  4. data/app/assets/javascripts/c80_yax/frontend/item_color_selector/item_color_selector.js +11 -4
  5. data/app/assets/javascripts/c80_yax/frontend/item_quantity_picker/app.js +11 -3
  6. data/app/assets/javascripts/c80_yax/frontend/item_quantity_picker/item_quantity_picker.js +27 -2
  7. data/app/decorators/c80_yax/item_decorator.rb +4 -1
  8. data/app/views/c80_yax/items/_color_selector.html.erb +2 -2
  9. data/app/views/c80_yax/items/_index.html.erb +4 -1
  10. data/config/routes.rb +1 -0
  11. data/engines/co/README.md +21 -17
  12. data/engines/co/app/admin/co/order_messages.rb +23 -0
  13. data/engines/co/app/assets/javascripts/co/_service/cookies_service.js +71 -2
  14. data/engines/co/app/assets/javascripts/co/add_to_cart/actions/add_row_to_cart.js +2 -2
  15. data/engines/co/app/assets/javascripts/co/add_to_cart/{xapp.js → app.js} +0 -0
  16. data/engines/co/app/assets/javascripts/co/add_to_cart/button_add_to_cart.js +1 -0
  17. data/engines/co/app/assets/javascripts/co/add_to_cart/service/collect_data_for_row.js +5 -1
  18. data/engines/co/app/assets/javascripts/co/add_to_cart_sm/actions/add_row_to_cart_sm.js +17 -0
  19. data/engines/co/app/assets/javascripts/co/add_to_cart_sm/app.js +17 -0
  20. data/engines/co/app/assets/javascripts/co/add_to_cart_sm/button_add_to_cart_sm.js +36 -0
  21. data/engines/co/app/assets/javascripts/co/add_to_cart_sm/service/collect_data_for_row_sm.js +37 -0
  22. data/engines/co/app/assets/javascripts/co/cart_page/app.js +2 -1
  23. data/engines/co/app/assets/javascripts/co/cart_page/cart_page.js +37 -1
  24. data/engines/co/app/assets/javascripts/co/cart_page/cart_table.js +35 -11
  25. data/engines/co/app/assets/javascripts/co/cart_page/message-order-form-ajax.js +53 -0
  26. data/engines/co/app/assets/javascripts/co/cart_page/support/row_maker.js +2 -2
  27. data/engines/co/app/assets/javascripts/co/cart_page/support/row_printer.js +43 -0
  28. data/engines/co/app/assets/javascripts/co/goto_cart/app.js +19 -0
  29. data/engines/co/app/assets/javascripts/co/goto_cart/button_goto_cart.js +40 -0
  30. data/engines/co/app/assets/stylesheets/co/cart_page/form.scss +142 -0
  31. data/engines/co/app/controllers/co/cart_controller.rb +27 -0
  32. data/engines/co/app/helpers/co/cart_page_helper.rb +24 -2
  33. data/engines/co/app/mailers/co/order_message_mailer.rb +29 -0
  34. data/engines/co/app/models/co/order_message.rb +5 -0
  35. data/engines/co/app/models/co/order_message_validator.rb +22 -0
  36. data/engines/co/app/views/co/_cart_page.html.erb +4 -6
  37. data/engines/co/app/views/co/cart/give_me_cart_order_form.js.erb +18 -0
  38. data/engines/co/app/views/co/cart/message_cart_order.js.erb +4 -0
  39. data/engines/co/app/views/co/cart/shared/_cart_order_form.html.erb +83 -0
  40. data/engines/co/app/views/co/cart/shared/_ok_message.html.erb +16 -0
  41. data/engines/co/app/views/co/order_message_mailer/mail_mess.html.erb +1 -0
  42. data/engines/co/config/routes.rb +4 -0
  43. data/engines/co/db/migrate/20170723095252_create_co_order_messages.rb +13 -0
  44. data/engines/co/lib/co/engine.rb +1 -1
  45. data/engines/of/lib/of/engine.rb +1 -1
  46. data/lib/c80_yax/version.rb +1 -1
  47. metadata +25 -4
  48. data/engines/co/app/assets/javascripts/co/add_to_cart/data_order_row.js +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b913c8fef54a107aba57e59348d9ce469a96e02
4
- data.tar.gz: d59d47ce6a4371c48f5c7e70ad7dd20fcdf114a4
3
+ metadata.gz: 041fbacb1e43b64b2db9667790ad9d1779569333
4
+ data.tar.gz: f7995f6e3f18f0aa3e869818c99eae75ced5622c
5
5
  SHA512:
6
- metadata.gz: 2a68312e1c25af4fda7ede582dee1fb6eb697e331e43d13214288eab7df7c7fe399a747b81019ceb9422688659aa367c2e11895c594acad9eb7f842763ed228e
7
- data.tar.gz: fe656f4d6f79951ad7eac7514b71fd8e9e856e39b434afb0448e068ebecaca0a7b2c0d95df52a74117f28e4934a571e4bba96be3646a89075f4759dd64345c5a
6
+ metadata.gz: 1668b05f1292d286d96dcc12ebf445bdbc503bb92fcdcbd215e7ec0296f91ba7101d1aadacff6d9dca1aa1258e54f2724716f8090fcafdb72c47623ba16981f9
7
+ data.tar.gz: 57a9bb1ac7b5053fe9f796ef4a0225c4ee2c69fd8b9473b6aaecd946b06c627e9bbf9f1ae32e8fafb75289e48e9931b5ffb6d24fdca5e09df77677bacd8f7ad4
data/Gemfile CHANGED
@@ -5,4 +5,5 @@ gemspec
5
5
 
6
6
  gem 'pack', path: 'engines/pack'
7
7
  gem 'ti', path: 'engines/ti'
8
- gem 'of', path: 'engines/of'
8
+ gem 'of', path: 'engines/of'
9
+ gem 'co', path: 'engines/co'
@@ -1,24 +1,29 @@
1
1
  "use strict";
2
2
 
3
+ // _color_selector.html.erb
4
+
3
5
  var ItemColorSelector = function(wrapper) {
4
6
 
5
7
  var _$wrapper;
6
8
  var _$lic;
7
9
  var _sel_color;
10
+ var _sel_color_title;
8
11
 
9
- var _get_sel_color = function() {
10
- return _sel_color;
12
+ var _get_sel_color = function(mark_return_title) {
13
+ return (mark_return_title) ? _sel_color_title:_sel_color;
11
14
  };
12
15
 
13
- var _set_sel_color = function(new_color) {
16
+ var _set_sel_color = function(new_color, new_color_title) {
14
17
  _sel_color = new_color;
18
+ _sel_color_title = new_color_title;
15
19
  };
16
20
 
17
21
  var _onClickColorBox = function(e) {
18
22
  e.preventDefault();
19
23
  var $t = $(e.target);
20
24
  var t_color = $t.data('color');
21
- _set_sel_color(t_color);
25
+ var t_color_title = $t.data('color_title');
26
+ _set_sel_color(t_color, t_color_title);
22
27
  _$lic.removeClass('active');
23
28
  $t.addClass('active');
24
29
  };
@@ -33,6 +38,8 @@ var ItemColorSelector = function(wrapper) {
33
38
 
34
39
  _$wrapper = $(wrapper);
35
40
  _$lic = _$wrapper.find('li.c');
41
+ _sel_color = '';
42
+ _sel_color_title = 'не указан';
36
43
 
37
44
  _fInitRadioBehaviour();
38
45
 
@@ -2,10 +2,18 @@
2
2
 
3
3
  var ITEM_QUANTITY_PICKERS = {};
4
4
 
5
- var _activate_q_picker = function() {
5
+ var _activate_q_picker = function(onChange) {
6
6
  $('.quantity_picker').each(function() {
7
- ITEM_QUANTITY_PICKERS[$(this).data('id')] =
8
- new ItemQuantityPicker(this);
7
+ var $t = $(this);
8
+ if ($t.data('initalized') == '1') return;
9
+ $t.data('initalized', '1');
10
+ var id = $t.data('id');
11
+ var ip = new ItemQuantityPicker(this);
12
+ ITEM_QUANTITY_PICKERS[ id ] = ip;
13
+
14
+ if (onChange !== undefined) {
15
+ ip.on_change(onChange);
16
+ }
9
17
  });
10
18
  };
11
19
 
@@ -5,9 +5,32 @@ var ItemQuantityPicker = function (wrapper){
5
5
  var _$wrapper;
6
6
  var _$less, _$great, _$input;
7
7
  var _cur_val;
8
+ var __callbacks;
9
+
10
+ var _on_change = function(func) {
11
+ if (__callbacks === null) return;
12
+ __callbacks.push(func);
13
+ };
14
+
15
+ var _call_on_change = function() {
16
+ if (__callbacks === null) return;
17
+
18
+ for (var i = 0; i < __callbacks.length; i++) {
19
+ if (__callbacks[i] !== undefined) {
20
+ __callbacks[i](_get_cur_val());
21
+ }
22
+ }
23
+ };
8
24
 
9
25
  var _set_cur_val = function (new_val){
10
- _cur_val = (new_val === 0) ? 1:new_val;
26
+ if (new_val !== _cur_val) {
27
+ if (new_val === 0) {
28
+ _cur_val = 1;
29
+ } else {
30
+ _cur_val = new_val;
31
+ _call_on_change();
32
+ }
33
+ }
11
34
  };
12
35
 
13
36
  var _get_cur_val = function() {
@@ -49,6 +72,7 @@ var ItemQuantityPicker = function (wrapper){
49
72
  _$great = _$wrapper.find('a.g');
50
73
  _$input = _$wrapper.find('input');
51
74
  _cur_val = _$input.val();
75
+ __callbacks = [];
52
76
 
53
77
  _fInitBehaviour();
54
78
 
@@ -57,7 +81,8 @@ var ItemQuantityPicker = function (wrapper){
57
81
  _fInit(wrapper);
58
82
 
59
83
  return {
60
- get_cur_val: _get_cur_val
84
+ get_cur_val: _get_cur_val,
85
+ on_change: _on_change
61
86
  }
62
87
 
63
88
  };
@@ -110,7 +110,10 @@ module C80Yax
110
110
  end
111
111
 
112
112
  def btn_order
113
- h.link_to '', '#', class: 'add_to_bucket_sm'
113
+ h.link_to '',
114
+ '#',
115
+ class: "add_to_bucket_sm add_to_bucket_sm_#{model.id}",
116
+ data: { id: model.id }
114
117
  end
115
118
 
116
119
 
@@ -2,8 +2,8 @@
2
2
  <li class="caption">Цвет: </li>
3
3
  <% colors.each do |color| %>
4
4
  <% style = "style='background-color: #{color.value}'".html_safe %>
5
- <% data = "data-color='#{color.value}'".html_safe %>
5
+ <% data = "data-color='#{color.value}' data-color_title='#{color.title}'".html_safe %>
6
6
  <% klass = "class='c c_#{color.id}'".html_safe %>
7
- <li <%=style%> <%=klass%> <%=data%></li>
7
+ <li title="<%= color.title %>" <%=style%> <%=klass%> <%=data%>></li>
8
8
  <% end %>
9
9
  </ul>
@@ -1,6 +1,9 @@
1
1
  <ul class="item_index">
2
2
  <% items.each do |item| %>
3
- <li class="li_item i_<%= item.id%>">
3
+ <li class="li_item i_<%= item.id%>"
4
+ data-item_url="<%= item.my_url %>"
5
+ data-title="<%= item.title %>"
6
+ data-image_url="<%= item.fetch_first_photo('thumb_md') %>">
4
7
  <%= item.main_image(thumb_size) %>
5
8
  <%= item.h3_title(thumb_size) %>
6
9
  <%= item.div_prices %>
data/config/routes.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  C80Yax::Engine.routes.draw do
2
2
  match 'admin_data_get_strsubcat_propnames', :to => 'admin_data#get_strsubcat_propnames', :via => :post
3
3
  mount Pack::Engine => '/'
4
+ mount Co::Engine => '/'
4
5
  match 'fetch_items', to: 'ajax#fetch_items', via: :get
5
6
  end
data/engines/co/README.md CHANGED
@@ -18,24 +18,29 @@
18
18
  * в виджете-кнопке должно обновиться количество
19
19
 
20
20
  #### При клике по виджету-кнопке "корзина":
21
- * открывается новая страница, содержащая таблицу и форму.
22
- * таблица:
23
- - картинка-ссылка до товара, новое окно
24
- - название
25
- - цвет
26
- - компонент выбора количества
27
- - сумма
28
- - кнопка "удалить"
29
- * строка "итого"
30
- * чекбокс "заказать доставку"
31
- * кнопка "очистить корзину"
32
- * форма:
21
+ * [X] открывается новая страница, содержащая таблицу и форму.
22
+ * [X] таблица:
23
+ - [X] картинка-ссылка до товара, новое окно
24
+ - [X] название
25
+ - [X] цвет
26
+ - [ ] компонент выбора количества
27
+ - [X] сумма
28
+ - [X] кнопка "удалить"
29
+
30
+ * [ ] строка "итого"
31
+ - [X] Должна содержать сумму цен всех строк
32
+ - [ ] должна пересчитываться при удалении строк из заказа
33
+ - [ ] должна пересчитываться при изменении кол-ва
34
+ * [X] чекбокс "заказать доставку"
35
+ * [X] кнопка "очистить корзину"
36
+
37
+ * [ ] форма:
33
38
  * ФИО
34
39
  * Мобильный
35
40
  * Дата получения
36
41
  * Населённый пункт
37
42
 
38
- * когда нажимаем кнопку "отправить", уходит письмо с текстом вида:
43
+ * [ ] когда нажимаем кнопку "отправить", уходит письмо с текстом вида:
39
44
 
40
45
  ```
41
46
  Заказ:
@@ -51,7 +56,6 @@
51
56
  * перед тем, как уходит письмо, создаётся Объект `order` содержащий `rows`
52
57
  - [ ] создать модель Order
53
58
  - [ ] создать модель Row
54
- - [ ]
55
59
 
56
60
  # Todo Добавить в Корзину
57
61
 
@@ -71,9 +75,9 @@
71
75
  - [X] реализовать js-компонент "опции"
72
76
  - [X] добавить в js-компонент `id` товара (среди множества виджетов необходимо распознать релевантный)
73
77
  - [X] добавить и испытать метод, выдающий текущий `value`
74
- - [ ] На основе собранной инфы должен создавать объект `DataOrderRow` и помещать его в cookie.
75
- - [ ] Находить на странице виджет-кнопку "корзина" и обновлять там количество `DataOrderRow` в корзине
76
- - [ ] реализовать js-компонент 'корзина'
78
+ - [X] На основе собранной инфы должен создавать объект `DataOrderRow` и помещать его в cookie.
79
+ - [ ] Находить на странице виджет "корзина-кнопка" и обновлять там количество `DataOrderRow` в корзине
80
+ - [ ] реализовать js-компонент 'корзина-кнопка'
77
81
  - [ ] Публичный setter: `set_count`
78
82
  - [X] Должен появиться `bootstrap modal` с кнопками "продолжить покупки", "перейти в корзину"
79
83
 
@@ -0,0 +1,23 @@
1
+ ActiveAdmin.register Co::OrderMessage, :as => 'OrderMessage' do
2
+
3
+ before_filter :skip_sidebar!, :only => :index
4
+
5
+ menu :label => 'Заказы',
6
+ :parent => 'x_c80_yax',
7
+ :priority => 20
8
+
9
+ index do
10
+ selectable_column
11
+ id_column
12
+ column :created_at
13
+ column :name
14
+ column :phone
15
+ column :comment do |msg|
16
+ msg.comment.html_safe if msg.comment.present?
17
+ end
18
+
19
+ actions
20
+ end
21
+
22
+
23
+ end
@@ -1,5 +1,19 @@
1
1
  var CookiesService = function() {
2
2
 
3
+ var Support = function() {
4
+ this.find_all_by_id = function(array, id) {
5
+ var res = [];
6
+ for (var i = 0; i < array.length; i++) {
7
+ if (array[i]['id'] === id) {
8
+ res.push(i);
9
+ }
10
+ }
11
+ return res;
12
+ }
13
+ };
14
+
15
+ var __ = new Support();
16
+
3
17
  var _create_cookie = function(name, value, days) {
4
18
  var expires = '';
5
19
 
@@ -32,7 +46,35 @@ var CookiesService = function() {
32
46
  this.cart_push = function(row_as_hash) {
33
47
  var cart = _read_cookie('cart3');
34
48
  if (cart === null) cart = [];
35
- cart.push(row_as_hash);
49
+
50
+ // если в корзине уже лежат товары этого id - найдём их все
51
+ var ids = __.find_all_by_id(cart, row_as_hash['id']);
52
+
53
+ if (ids.length !== 0) {
54
+ // пробежимся по этим товарам
55
+ var existent_row;
56
+ for (var i = 0; i < ids.length; i++) {
57
+ existent_row = cart[ids[i]];
58
+ // если цвет совпал - это товар того же цвета - мержим его
59
+ // console.log(existent_row['color']+'----'+row_as_hash['color']);
60
+ if (existent_row['color'] === row_as_hash['color']) {
61
+ var old_price = existent_row['price'];
62
+ var old_quantity = existent_row['q'];
63
+ var new_row = existent_row;
64
+ new_row['price'] = Number(old_price) + Number(row_as_hash['price']);
65
+ new_row['q'] = Number(old_quantity) + Number(row_as_hash['q']);
66
+ cart[ids[i]] = new_row;
67
+ break;
68
+ }
69
+ // если товар того же айди разного цвета - это разные товары, добавляем новый
70
+ else {
71
+ cart.push(row_as_hash);
72
+ }
73
+ }
74
+ } else {
75
+ cart.push(row_as_hash);
76
+ }
77
+
36
78
  _create_cookie('cart3', cart, 256);
37
79
  console.log('<CookiesService.cart_push>');
38
80
  };
@@ -43,13 +85,40 @@ var CookiesService = function() {
43
85
  }
44
86
 
45
87
  this.cart_clean = function() {
46
- console.log('<cart_clean>');
88
+ // console.log('<cart_clean>');
47
89
  var cart = _read_cookie('cart3');
48
90
  if (cart === null) return;
49
91
  cart = [];
50
92
  _create_cookie('cart3', cart, 256);
51
93
  };
52
94
 
95
+ this.cart_update_row = function(row_id, color, obj_with_new_values) {
96
+ // console.log('<cart_update_row> row_id: ' + row_id + "; color: " + color);
97
+ var cart = _read_cookie('cart3');
98
+ for (var i = 0, row; i < cart.length; i++) {
99
+ row = cart[i];
100
+ if (row['id'] !== row_id) continue;
101
+ if (row['color'] !== color) continue;
102
+ for (var key in obj_with_new_values) {
103
+ row[key] = obj_with_new_values[key];
104
+ }
105
+ cart[i] = row; // нужно ли так делать?
106
+ }
107
+ _create_cookie('cart3', cart, 256);
108
+ }
53
109
 
110
+ this.cart_remove_row = function(row_id, color) {
111
+ var cart = _read_cookie('cart3');
112
+ for (var i = 0, row; i < cart.length; i++) {
113
+ row = cart[i];
114
+ if (row['id'] !== row_id) continue;
115
+ if (row['color'] !== color) continue;
116
+ console.log('<cart_remove_row> id: ' + row_id + ", color: " + color);
117
+ cart.splice(i,1);
118
+ _create_cookie('cart3', cart, 256);
119
+ return true;
120
+ }
121
+ return false;
122
+ }
54
123
 
55
124
  };
@@ -4,8 +4,8 @@
4
4
  var AddRowToCart = function(item_id) {
5
5
  this.call = function() {
6
6
  var row_as_hash = new CollectDataForRow(item_id).call();
7
- console.log("<AddRowToCart.call> row_as_hash: " + row_as_hash);
8
- console.log(row_as_hash);
7
+ // console.log("<AddRowToCart.call> row_as_hash: " + row_as_hash);
8
+ // console.log(row_as_hash);
9
9
 
10
10
  coo.cart_push(row_as_hash);
11
11
 
@@ -11,6 +11,7 @@ var ButtonAddToCart = function(selector) {
11
11
  var c = new AddRowToCart(_item_id).call();
12
12
  if (c.result) {
13
13
  // com.showDouble(c.message);
14
+ ButtonGotoCart.refresh_count();
14
15
  com.showDouble('Продолжить покупки?');
15
16
  }
16
17
  };
@@ -8,9 +8,11 @@ var CollectDataForRow = function(item_id) {
8
8
  var $item_show = $('.item_show_'+item_id);
9
9
 
10
10
  var q = ITEM_QUANTITY_PICKERS[item_id].get_cur_val();
11
- var price = q * Number($item_show.find('.price_props p.cur span.pvalue').text().split(',').join('.'));
11
+ var price_per_item = Number($item_show.find('.price_props p.cur span.pvalue').text().split(',').join('.'));
12
+ var price = q * price_per_item;
12
13
  var title = $item_show.data('title');
13
14
  var color = ITEM_COLOR_SELECTOR[item_id].get_cur_val();
15
+ var color_title = ITEM_COLOR_SELECTOR[item_id].get_cur_val(true);
14
16
  var options = ITEM_OPTIONS[item_id].get_cur_val();
15
17
 
16
18
  return {
@@ -18,7 +20,9 @@ var CollectDataForRow = function(item_id) {
18
20
  title: title,
19
21
  q: q,
20
22
  color: color,
23
+ color_title: color_title,
21
24
  price: price,
25
+ price_per_item: price_per_item,
22
26
  image_url: $item_show.data('image_url'),
23
27
  item_url: $item_show.data('item_url'),
24
28
  options: {
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ // добавляет
4
+ var AddRowToCartSm = function(item_id) {
5
+ this.call = function() {
6
+ var row_as_hash = new CollectDataForRowSm(item_id).call();
7
+ console.log("<AddRowToCartSm.call> row_as_hash: " + row_as_hash);
8
+ console.log(row_as_hash);
9
+
10
+ coo.cart_push(row_as_hash);
11
+
12
+ return {
13
+ result: true,
14
+ message: '1 товар добавлено в корзину.'
15
+ }
16
+ }
17
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var $ss;
4
+
5
+ var _activate_cart_button_sm = function() {
6
+ $ss.each(function() {
7
+ new ButtonAddToCartSm(this);
8
+ });
9
+ };
10
+
11
+ $(document).ready(function() {
12
+ $ss = $('.add_to_bucket_sm');
13
+ if ($ss.length !== 0) {
14
+ // alert(ButtonAddToCart);
15
+ _activate_cart_button_sm();
16
+ }
17
+ });
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ var ButtonAddToCartSm = function(selector) {
4
+
5
+ var _$btn;
6
+ var _item_id;
7
+
8
+ var _onClickBtn = function(e) {
9
+ console.log('<_onClickBtn>');
10
+ e.preventDefault();
11
+ var c = new AddRowToCartSm(_item_id).call();
12
+ if (c.result) {
13
+ // com.showDouble(c.message);
14
+ com.showDouble('Продолжить покупки?');
15
+ ButtonGotoCart.refresh_count();
16
+ }
17
+ };
18
+
19
+ var _fInitBehaviour = function (){
20
+ if (_$btn.length <= 0) return;
21
+ _$btn.on('click', _onClickBtn);
22
+ };
23
+
24
+ /**
25
+ * selector = "add_to_bucket_sm_#{item.id}"
26
+ * @param selector
27
+ */
28
+ var _fInit = function (selector){
29
+ _$btn = $(selector);
30
+ _item_id = _$btn.data('id');
31
+ _fInitBehaviour();
32
+ };
33
+
34
+ _fInit(selector);
35
+
36
+ };
@@ -0,0 +1,37 @@
1
+ // собирает данные для строки после
2
+ // нажатия мелкой кнопки "в корзину"
3
+
4
+ var CollectDataForRowSm = function(item_id) {
5
+ this.call = function() {
6
+ console.log("<CollectDataForRowSm.call> item_id = " + item_id);
7
+
8
+ var $item_show = $('.li_item.i_'+item_id);
9
+
10
+ var q = 1;
11
+ var price_per_item = Number($item_show.find('.price_props p.cur span.pvalue').text().split(',').join('.'));
12
+ var price = q * price_per_item;
13
+ var title = $item_show.data('title');
14
+ var color = '';
15
+ var color_title = 'не указан';
16
+ var options = {delivery:false, super_colors:false, metallic:false};
17
+
18
+ return {
19
+ id: item_id,
20
+ title: title,
21
+ q: q,
22
+ color: color,
23
+ color_title: color_title,
24
+ price: price,
25
+ price_per_item: price_per_item,
26
+ image_url: $item_show.data('image_url'),
27
+ item_url: $item_show.data('item_url'),
28
+ options: {
29
+ mark_delivery: options['delivery'],
30
+ mark_super_colors: options['super_colors'],
31
+ mark_metallic: options['metallic']
32
+ }
33
+ }
34
+
35
+ }
36
+
37
+ };
@@ -1,8 +1,9 @@
1
1
  var $cart_page;
2
+ var aCartPage;
2
3
 
3
4
  $(document).ready(function() {
4
5
  $cart_page = $('div#cart_page');
5
6
  if ($cart_page.length !== 0) {
6
- new CartPage($cart_page);
7
+ aCartPage = new CartPage($cart_page);
7
8
  }
8
9
  });
@@ -5,12 +5,33 @@ var CartPage = function($cart_page) {
5
5
  var _cart_table;
6
6
  var _$clear_btn;
7
7
  var _$result_price_val;
8
+ var _$delivery_checkbox;
9
+ var _support;
10
+
8
11
  var _fill_table = function() {
9
12
  var cart = coo.cart_get();
10
13
  for (var i = 0; i < cart.length; i++) {
11
14
  _cart_table.add_row(cart[i]);
12
15
  }
13
16
  };
17
+ var _print_table = function() {
18
+ var res = '';
19
+ var cart = coo.cart_get();
20
+ for (var i = 0; i < cart.length; i++) {
21
+ res += _support.print_row(cart[i]);
22
+ }
23
+ res += _support.print_bottom_row({
24
+ order_price: _$result_price_val.text(),
25
+ deliver: _$delivery_checkbox[0].checked ? 'да':'нет'
26
+ });
27
+ res = "<table border='1' cellpadding='0' cellspacing='0'>" + res + "</table>";
28
+ return res;
29
+ };
30
+ var _print_table_to_comment = function() {
31
+ var ss = _print_table();
32
+ console.log(ss);
33
+ $cc.find('#mess_comment').val(ss);
34
+ }
14
35
  var _calc_result_price = function() {
15
36
  var cart = coo.cart_get();
16
37
  var result = 0;
@@ -23,7 +44,17 @@ var CartPage = function($cart_page) {
23
44
  e.preventDefault();
24
45
  _cart_table.clear();
25
46
  coo.cart_clean();
47
+ _calc_result_price();
48
+ _print_table_to_comment();
49
+ ButtonGotoCart.refresh_count();
26
50
  };
51
+ var _on_row_changed = function(row_id, color, obj_with_new_values) {
52
+ console.log('<_on_row_changed>');
53
+ coo.cart_update_row(row_id, color, obj_with_new_values);
54
+ _calc_result_price();
55
+ _print_table_to_comment();
56
+ ButtonGotoCart.refresh_count();
57
+ }
27
58
  var _fInitBehaviour = function (){
28
59
  _fill_table();
29
60
  _calc_result_price();
@@ -32,10 +63,15 @@ var CartPage = function($cart_page) {
32
63
  };
33
64
  var _fInit = function($cart_page) {
34
65
  _$cart_page = $cart_page;
35
- _cart_table = new CartTable(_$cart_page.find('table.cart_table'));
66
+ _cart_table = new CartTable(_$cart_page.find('table.cart_table'), _on_row_changed);
36
67
  _$clear_btn = $cart_page.find('.clear_btn');
37
68
  _$result_price_val = $cart_page.find('.bottom_row .result .val');
69
+ _$delivery_checkbox = $cart_page.find('.bottom_row div.checkbox input');
70
+ _support = new RowPrinter();
38
71
  _fInitBehaviour();
39
72
  };
40
73
  _fInit($cart_page);
74
+ return {
75
+ print_table_to_comment: _print_table_to_comment
76
+ }
41
77
  };