Test Failed
Push — master ( 2346ae...8314f3 )
by Alexey
04:38
created

cart.js ➔ ???   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 79

Duplication

Lines 0
Ratio 0 %

Importance

Changes 4
Bugs 0 Features 1
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 79
rs 8.8701
c 4
b 0
f 1

4 Functions

Rating   Name   Duplication   Size   Complexity  
A cart.js ➔ ... ➔ this.addItem 0 20 1
A cart.js ➔ ... ➔ this.delItem 0 21 1
A cart.js ➔ ... ➔ this.delItemWidget 0 11 1
B cart.js ➔ ... ➔ this.calcSum 0 25 2

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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