WIP: BOM Refactor, building order fetch and update logic with ngResource, updating rails routes

This commit is contained in:
Rob Harrington
2015-11-04 16:35:56 +11:00
parent ae7e744644
commit f563f04f1c
9 changed files with 174 additions and 62 deletions

View File

@@ -28,6 +28,7 @@
//= require ./enterprises/enterprises
//= require ./enterprise_groups/enterprise_groups
//= require ./index_utils/index_utils
//= require ./orders/orders
//= require ./payment_methods/payment_methods
//= require ./products/products
//= require ./shipping_methods/shipping_methods

View File

@@ -0,0 +1 @@
angular.module("admin.orders", ['ngResource'])

View File

@@ -0,0 +1,8 @@
angular.module("admin.orders").factory 'OrderResource', ($resource) ->
$resource('/admin/orders/:id/:action.json', {}, {
'index':
method: 'GET'
isArray: true
'update':
method: 'PUT'
})

View File

@@ -0,0 +1,34 @@
angular.module("admin.orders").factory 'Orders', ($q, OrderResource) ->
new class Orders
ordersByID: {}
pristineByID: {}
index: (params={}, callback=null) ->
OrderResource.index params, (data) =>
for order in data
@ordersByID[order.id] = order
@pristineByID[order.id] = angular.copy(order)
(callback || angular.noop)(data)
save: (order) ->
deferred = $q.defer()
order.$update({id: order.permalink})
.then( (data) =>
@pristineByID[order.id] = angular.copy(order)
deferred.resolve(data)
).catch (response) ->
deferred.reject(response)
deferred.promise
saved: (order) ->
@diff(order).length == 0
diff: (order) ->
changed = []
for attr, value of order when not angular.equals(value, @pristineByID[order.id][attr])
changed.push attr unless attr is "$$hashKey"
changed
resetAttribute: (order, attribute) ->
order[attribute] = @pristineByID[order.id][attribute]