From 67db698a50c2377c97128545dcc94171889035e9 Mon Sep 17 00:00:00 2001 From: Rob H Date: Thu, 30 Jan 2014 18:40:23 +0800 Subject: [PATCH] BOM: Add ofnLineItemUpdAttr directive to watch for changes in line_item attributes --- .../admin/bulk_order_management.js.coffee | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/assets/javascripts/admin/bulk_order_management.js.coffee b/app/assets/javascripts/admin/bulk_order_management.js.coffee index d7164d1a0e..fe4d6b5978 100644 --- a/app/assets/javascripts/admin/bulk_order_management.js.coffee +++ b/app/assets/javascripts/admin/bulk_order_management.js.coffee @@ -9,6 +9,30 @@ orderManagementModule.config [ orderManagementModule.value "blankEnterprise", -> { id: "", name: "All" } +orderManagementModule.directive "ofnLineItemUpdAttr", [ + "switchClass", "pendingChanges" + (switchClass, pendingChanges) -> + require: "ngModel" + link: (scope, element, attrs, ngModel) -> + attrName = attrs.ofnLineItemUpdAttr + element.dbValue = scope.$eval(attrs.ngModel) + scope.$watch -> + scope.$eval(attrs.ngModel) + , (value) -> + if ngModel.$dirty + if value == element.dbValue + pendingChanges.remove(scope.line_item.id, attrName) + switchClass( element, "", ["update-pending", "update-error", "update-success"], false ) + else + changeObj = + lineItem: scope.line_item + element: element + attrName: attrName + url: "/api/orders/#{scope.line_item.order.number}/line_items/#{scope.line_item.id}?line_item[#{attrName}]=#{value}" + pendingChanges.addItem(scope.line_item.id, attrName, changeObj) + switchClass( element, "update-pending", ["update-error", "update-success"], false ) +] + orderManagementModule.factory "pendingChanges",[ "dataSubmitter" (dataSubmitter) ->