WIP: BOM Refactor, building order_cycle fetch and update logic with ngResource

This commit is contained in:
Rob Harrington
2015-11-05 15:13:19 +11:00
parent a9e5f2912f
commit afef9e3211
3 changed files with 148 additions and 0 deletions

View File

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

View File

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