mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-11 03:40:20 +00:00
WIP: BOM Refactor, building order fetch and update logic with ngResource, updating rails routes
This commit is contained in:
1
app/assets/javascripts/admin/orders/orders.js.coffee
Normal file
1
app/assets/javascripts/admin/orders/orders.js.coffee
Normal file
@@ -0,0 +1 @@
|
||||
angular.module("admin.orders", ['ngResource'])
|
||||
@@ -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'
|
||||
})
|
||||
@@ -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]
|
||||
Reference in New Issue
Block a user