Test Failed
Push — master ( c9e883...d4b66a )
by Alexey
05:06
created

cart.js ➔ ... ➔ $.each   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 1
b 0
f 0
1
/**
2
 * Ecommerce Classes
3
 */
4
inji.Ecommerce = {
5
  Cart: new function () {
6
    this.addItem = function (itemOfferPriceId, count, btn, callback) {
7
      inji.Server.request({
8
        url: 'ecommerce/cart/add',
9
        data: {
10
          itemOfferPriceId: itemOfferPriceId,
11
          count: count
12
        },
13
        success: function (data) {
14
          if (callback) {
15
            callback(data, btn);
16
          }
17
          inji.Server.request({
18
            url: 'ecommerce/cart/getCart',
19
            success: function (data) {
20
              $("#cart,.cartplace").html(data);
21
            }
22
          });
23
        }
24
      }, btn);
25
    };
26
    this.calcSum = function () {
27
      var form = $('.ecommerce .cart-order_page form');
28
      var formData = new FormData(form[0]);
29
      $('.ecommerce .cart-order_page').prepend($('<div style = "position:absolute;width:' + $('.ecommerce .cart-order_page').width() + 'px;height:' + $('.ecommerce .cart-order_page').height() + 'px;background-color: rgba(255, 255, 255, 0.4);z-index:1000000"></div>'));
30
      inji.Server.request({
31
        url: form.attr('action'),
32
        type: 'POST',
33
        data: formData,
34
        dataType: 'html',
35
        processData: false,
36
        success: function (data) {
37
          $('.ecommerce .cart-order_page').html($(data).find('.ecommerce .cart-order_page').html());
38
          if($(data).find('.alert').length>0){
39
            $.each($(data).find('.alert'),function () {
40
              //$('.ecommerce .cart-order_page').prepend(this.outerHTML)
41
            })
42
          }
43
        }
44
      });
45
    };
46
    this.delItem = function (cart_item_id) {
47
      var form = $('.ecommerce .cart-order_page form');
48
      $('.cart_item_id' + cart_item_id).remove();
49
      var formData = new FormData(form[0]);
50
      $('.ecommerce .cart-order_page').prepend($('<div style = "position:absolute;width:' + $('.ecommerce .cart-order_page').width() + 'px;height:' + $('.ecommerce .cart-order_page').height() + 'px;background-color: rgba(255, 255, 255, 0.4);z-index:1000000"></div>'));
51
      inji.Server.request({
52
        url: form.attr('action'),
53
        type: 'POST',
54
        data: formData,
55
        dataType: 'html',
56
        processData: false,
57
        success: function (data) {
58
          $('.ecommerce .cart-order_page').html($(data).find('.ecommerce .cart-order_page').html());
59
          if($(data).find('.alert').length>0){
60
            $.each($(data).find('.alert'),function () {
61
              //$('.ecommerce .cart-order_page').prepend(this.outerHTML)
62
            })
63
          }
64
        }
65
      });
66
    };
67
    this.delItemWidget = function (cart_item_id, callback) {
68
      inji.Server.request({
69
        url: '/ecommerce/cart/deleteItem?cartItemId=' + cart_item_id,
70
        success: function (data) {
71
          $("#cart,.cartplace").html(data);
72
          if (callback !== undefined) {
73
            callback();
74
          }
75
        }
76
      });
77
    }
78
  },
79
  toggleFav: function (itemId, btn, noChangeText) {
80
    inji.Server.request({
81
      url: 'ecommerce/toggleFav/' + itemId,
82
      success: function (data) {
83
        $('.ecommerce-favorite-count').html(data.count);
84
        setTimeout(function () {
85
          if (!noChangeText) {
86
            $(btn).html(data.newText);
87
          }
88
        }, 100)
89
      }
90
    }, btn);
91
  }
92
};
93
inji.onLoad(function () {
94
95
  //plugin bootstrap minus and plus
96
  //http://jsfiddle.net/laelitenetwork/puJ6G/
97
  $('body').on('click', '.btn-number', function (e) {
98
    e.preventDefault();
99
100
    var fieldName = $(this).data('field');
101
    var type = $(this).data('type');
102
    var input = $("input[name='" + fieldName + "']");
103
    var currentVal = parseFloat(input.val());
104
    if (!isNaN(currentVal)) {
105
      if (type == 'minus') {
106
107
        if (currentVal > input.attr('min')) {
108
          input.val(currentVal - 1).change();
109
        }
110
        if (parseFloat(input.val()) == input.attr('min')) {
111
          $(this).attr('disabled', true);
112
        }
113
114
      } else if (type == 'plus') {
115
116
        if (currentVal < input.attr('max')) {
117
          input.val(currentVal + 1).change();
118
        }
119
        if (parseFloat(input.val()) == input.attr('max')) {
120
          $(this).attr('disabled', true);
121
        }
122
123
      }
124
    } else {
125
      input.val(0);
126
    }
127
  });
128
  $('body').on('focusin', '.input-number', function () {
129
    $(this).data('oldValue', $(this).val());
130
  });
131
  $('body').on('change', '.input-number', function () {
132
133
    var minValue = parseFloat($(this).attr('min'));
134
    var maxValue = parseFloat($(this).attr('max'));
135
    var valueCurrent = parseFloat($(this).val());
136
137
    var name = $(this).attr('name');
138
    if (valueCurrent >= minValue) {
139
      $(".btn-number[data-type='minus'][data-field='" + name + "']").removeAttr('disabled')
140
    } else {
141
      alert('Нельзя заказать меньше ' + minValue);
142
      $(this).val($(this).data('oldValue'));
143
    }
144
    if (valueCurrent <= maxValue) {
145
      $(".btn-number[data-type='plus'][data-field='" + name + "']").removeAttr('disabled')
146
    } else {
147
      alert('Извините, но больше нету');
148
      $(this).val($(this).data('oldValue'));
149
    }
150
151
152
  });
153
154
  $('body').on('keydown', ".input-number", function (e) {
155
    // Allow: backspace, delete, tab, escape, enter and .
156
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190]) !== -1 ||
157
      // Allow: Ctrl+A
158
      (e.keyCode == 65 && e.ctrlKey === true) ||
159
      // Allow: home, end, left, right
160
      (e.keyCode >= 35 && e.keyCode <= 39)) {
161
      // let it happen, don't do anything
162
      return;
163
    }
164
    // Ensure that it is a number and stop the keypress
165
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
166
      e.preventDefault();
167
    }
168
  });
169
170
})
171