diff --git a/app/assets/javascripts/darkswarm/directives/validate_stock_quantity.js.coffee b/app/assets/javascripts/darkswarm/directives/validate_stock_quantity.js.coffee new file mode 100644 index 0000000000..404a9759e1 --- /dev/null +++ b/app/assets/javascripts/darkswarm/directives/validate_stock_quantity.js.coffee @@ -0,0 +1,17 @@ +Darkswarm.directive "validateStockQuantity", -> + restrict: 'A' + require: "ngModel" + + link: (scope, element, attr, ngModel) -> + ngModel.$parsers.push (selectedQuantity) -> + if parseInt(selectedQuantity) > scope.available_quantity() + ngModel.$setValidity('stock', false); + else + ngModel.$setValidity('stock', true); + + selectedQuantity + + scope.available_quantity = -> + on_hand = parseInt(attr.ofnOnHand) + finalized_quantity = parseInt(attr.finalizedquantity) || 0 # finalizedquantity is optional + on_hand + finalized_quantity diff --git a/app/assets/stylesheets/darkswarm/shopping-cart.css.scss b/app/assets/stylesheets/darkswarm/shopping-cart.css.scss index 3423102b72..a20897fe2b 100644 --- a/app/assets/stylesheets/darkswarm/shopping-cart.css.scss +++ b/app/assets/stylesheets/darkswarm/shopping-cart.css.scss @@ -103,7 +103,7 @@ } } - input.warning { + input.ng-invalid-stock { border: 1px solid $clr-brick; } } diff --git a/app/views/spree/orders/_line_item.html.haml b/app/views/spree/orders/_line_item.html.haml index 5aab298b51..918a520fdf 100644 --- a/app/views/spree/orders/_line_item.html.haml +++ b/app/views/spree/orders/_line_item.html.haml @@ -27,7 +27,7 @@ :min => 0, "ofn-on-hand" => "#{variant.on_demand && 9999 || variant.on_hand}", "finalizedquantity" => finalized_quantity, :class => "line_item_quantity", :size => 5, "ng-model" => "line_item_#{line_item.id}", - "ng-class" => "{ warning: #{@insufficient_stock_lines.andand.include? line_item} }" + "validate-stock-quantity" => true %td.cart-item-total.text-right{"data-hook" => "cart_item_total"} = line_item.display_amount_with_adjustments.to_html unless line_item.quantity.nil?