app/assets/javascripts/admin/subscriptions/services/subscriptions.js.coffee
angular.module("admin.subscriptions").factory 'Subscriptions', ($q, SubscriptionResource, Subscription, RequestMonitor) ->
new class Subscriptions
byID: {}
pristineByID: {}
index: (params={}, callback=null) ->
request = SubscriptionResource.index params, (data) => @load(data)
RequestMonitor.load(request.$promise)
request
load: (subscriptions) ->
for subscription in subscriptions
@byID[subscription.id] = subscription
@pristineByID[subscription.id] = angular.copy(subscription)
afterCreate: (id) ->
return unless @byID[id]?
@pristineByID[id] = angular.copy(@byID[id])
afterUpdate: (id) ->
return unless @byID[id]?
@pristineByID[id] = angular.copy(@byID[id])
afterRemoveItem: (id, deletedItemID) ->
return unless @pristineByID[id]?
for item, i in @pristineByID[id].subscription_line_items when item.id == deletedItemID
@pristineByID[id].subscription_line_items.splice(i, 1)