From 3de69987e61b82710ff905da1d32e6f505cdcf32 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Sat, 20 Aug 2016 19:57:31 +1000 Subject: [PATCH] Changing convention for angular resource services to generic 'byID' object and 'all' array --- .../enterprises/services/enterprises.js.coffee | 4 ++-- .../controllers/line_items_controller.js.coffee | 12 ++++++------ .../line_items/services/line_items.js.coffee | 12 ++++++------ .../order_cycles/services/order_cycles.js.coffee | 15 ++++++++++++--- .../admin/orders/services/orders.js.coffee | 4 ++-- .../admin/taxons/services/taxons.js.coffee | 15 ++++++++------- .../services/enterprises_spec.js.coffee | 4 ++-- .../line_items_controller_spec.js.coffee | 2 +- .../line_items/services/line_items_spec.js.coffee | 12 ++++++------ .../services/order_cycles_spec.js.coffee | 4 ++-- .../admin/orders/services/orders_spec.js.coffee | 4 ++-- 11 files changed, 49 insertions(+), 39 deletions(-) diff --git a/app/assets/javascripts/admin/enterprises/services/enterprises.js.coffee b/app/assets/javascripts/admin/enterprises/services/enterprises.js.coffee index 57c6dc4b1a..f3b8111253 100644 --- a/app/assets/javascripts/admin/enterprises/services/enterprises.js.coffee +++ b/app/assets/javascripts/admin/enterprises/services/enterprises.js.coffee @@ -1,12 +1,12 @@ angular.module("admin.enterprises").factory 'Enterprises', ($q, EnterpriseResource) -> new class Enterprises - enterprisesByID: {} + byID: {} pristineByID: {} index: (params={}, callback=null) -> EnterpriseResource.index(params, (data) => for enterprise in data - @enterprisesByID[enterprise.id] = enterprise + @byID[enterprise.id] = enterprise @pristineByID[enterprise.id] = angular.copy(enterprise) (callback || angular.noop)(data) data diff --git a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee index 1f0d6031b4..72e17d0931 100644 --- a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee +++ b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee @@ -22,8 +22,8 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, $scope.refreshData = -> unless !$scope.orderCycleFilter? || $scope.orderCycleFilter == 0 - $scope.startDate = OrderCycles.orderCyclesByID[$scope.orderCycleFilter].first_order - $scope.endDate = OrderCycles.orderCyclesByID[$scope.orderCycleFilter].last_order + $scope.startDate = OrderCycles.byID[$scope.orderCycleFilter].first_order + $scope.endDate = OrderCycles.byID[$scope.orderCycleFilter].last_order RequestMonitor.load $scope.orders = Orders.index("q[state_not_eq]": "canceled", "q[completed_at_not_null]": "true", "q[completed_at_gt]": "#{parseDate($scope.startDate)}", "q[completed_at_lt]": "#{parseDate($scope.endDate)}") RequestMonitor.load $scope.lineItems = LineItems.index("q[order][state_not_eq]": "canceled", "q[order][completed_at_not_null]": "true", "q[order][completed_at_gt]": "#{parseDate($scope.startDate)}", "q[order][completed_at_lt]": "#{parseDate($scope.endDate)}") @@ -34,12 +34,12 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, RequestMonitor.load $scope.suppliers = Enterprises.index(action: "for_line_items", ams_prefix: "basic", "q[is_primary_producer_eq]": "true") RequestMonitor.load $q.all([$scope.orders.$promise, $scope.distributors.$promise, $scope.orderCycles.$promise]).then -> - Dereferencer.dereferenceAttr $scope.orders, "distributor", Enterprises.enterprisesByID - Dereferencer.dereferenceAttr $scope.orders, "order_cycle", OrderCycles.orderCyclesByID + Dereferencer.dereferenceAttr $scope.orders, "distributor", Enterprises.byID + Dereferencer.dereferenceAttr $scope.orders, "order_cycle", OrderCycles.byID RequestMonitor.load $q.all([$scope.orders.$promise, $scope.suppliers.$promise, $scope.lineItems.$promise]).then -> - Dereferencer.dereferenceAttr $scope.lineItems, "supplier", Enterprises.enterprisesByID - Dereferencer.dereferenceAttr $scope.lineItems, "order", Orders.ordersByID + Dereferencer.dereferenceAttr $scope.lineItems, "supplier", Enterprises.byID + Dereferencer.dereferenceAttr $scope.lineItems, "order", Orders.byID $scope.bulk_order_form.$setPristine() StatusMessage.clear() unless $scope.initialized diff --git a/app/assets/javascripts/admin/line_items/services/line_items.js.coffee b/app/assets/javascripts/admin/line_items/services/line_items.js.coffee index e78389c559..5804bb2996 100644 --- a/app/assets/javascripts/admin/line_items/services/line_items.js.coffee +++ b/app/assets/javascripts/admin/line_items/services/line_items.js.coffee @@ -1,23 +1,23 @@ angular.module("admin.lineItems").factory 'LineItems', ($q, LineItemResource) -> new class LineItems - lineItemsByID: {} + byID: {} pristineByID: {} index: (params={}, callback=null) -> LineItemResource.index params, (data) => @resetData() for lineItem in data - @lineItemsByID[lineItem.id] = lineItem + @byID[lineItem.id] = lineItem @pristineByID[lineItem.id] = angular.copy(lineItem) (callback || angular.noop)(data) resetData: -> - @lineItemsByID = {} + @byID = {} @pristineByID = {} saveAll: -> - for id, lineItem of @lineItemsByID + for id, lineItem of @byID lineItem.errors = {} # removes errors when line_item has been returned to original state @save(lineItem) if !@isSaved(lineItem) @@ -34,7 +34,7 @@ angular.module("admin.lineItems").factory 'LineItems', ($q, LineItemResource) -> deferred.promise allSaved: -> - for id, lineItem of @lineItemsByID + for id, lineItem of @byID return false unless @isSaved(lineItem) true @@ -54,7 +54,7 @@ angular.module("admin.lineItems").factory 'LineItems', ($q, LineItemResource) -> deferred = $q.defer() lineItem.$delete({id: lineItem.id, orders: "orders", order_number: lineItem.order.number}) .then( (data) => - delete @lineItemsByID[lineItem.id] + delete @byID[lineItem.id] delete @pristineByID[lineItem.id] (callback || angular.noop)(data) deferred.resolve(data) diff --git a/app/assets/javascripts/admin/order_cycles/services/order_cycles.js.coffee b/app/assets/javascripts/admin/order_cycles/services/order_cycles.js.coffee index 71076c42c3..4716dc1757 100644 --- a/app/assets/javascripts/admin/order_cycles/services/order_cycles.js.coffee +++ b/app/assets/javascripts/admin/order_cycles/services/order_cycles.js.coffee @@ -1,12 +1,21 @@ -angular.module("admin.orderCycles").factory 'OrderCycles', ($q, OrderCycleResource) -> +angular.module("admin.orderCycles").factory 'OrderCycles', ($q, $injector, OrderCycleResource) -> new class OrderCycles - orderCyclesByID: {} + all: [] + byID: {} pristineByID: {} + constructor: -> + if $injector.has('orderCycles') + for orderCycle in $injector.get('orderCycles') + @all.push orderCycle + @byID[orderCycle.id] = orderCycle + @pristineByID[orderCycle.id] = angular.copy(orderCycle) + + index: (params={}, callback=null) -> OrderCycleResource.index(params, (data) => for orderCycle in data - @orderCyclesByID[orderCycle.id] = orderCycle + @byID[orderCycle.id] = orderCycle @pristineByID[orderCycle.id] = angular.copy(orderCycle) (callback || angular.noop)(data) diff --git a/app/assets/javascripts/admin/orders/services/orders.js.coffee b/app/assets/javascripts/admin/orders/services/orders.js.coffee index a7b5bc1b68..238afda8e0 100644 --- a/app/assets/javascripts/admin/orders/services/orders.js.coffee +++ b/app/assets/javascripts/admin/orders/services/orders.js.coffee @@ -1,12 +1,12 @@ angular.module("admin.orders").factory 'Orders', ($q, OrderResource) -> new class Orders - ordersByID: {} + byID: {} pristineByID: {} index: (params={}, callback=null) -> OrderResource.index params, (data) => for order in data - @ordersByID[order.id] = order + @byID[order.id] = order @pristineByID[order.id] = angular.copy(order) (callback || angular.noop)(data) diff --git a/app/assets/javascripts/admin/taxons/services/taxons.js.coffee b/app/assets/javascripts/admin/taxons/services/taxons.js.coffee index 62daf77901..48fd503980 100644 --- a/app/assets/javascripts/admin/taxons/services/taxons.js.coffee +++ b/app/assets/javascripts/admin/taxons/services/taxons.js.coffee @@ -1,19 +1,20 @@ angular.module("admin.taxons").factory "Taxons", (taxons, $filter) -> new class Taxons - taxons: taxons - taxonsByID: {} + all: [] + byID: {} constructor: -> - for taxon in @taxons - @taxonsByID[taxon.id] = taxon + for taxon in taxons + @all.push taxon + @byID[taxon.id] = taxon # For finding a single Taxon findByID: (id) -> - @taxonsByID[id] + @byID[id] # For finding multiple Taxons represented by comma delimited string findByIDs: (ids) -> - @taxonsByID[taxon_id] for taxon_id in ids.split(",") when @taxonsByID[taxon_id] + @byID[taxon_id] for taxon_id in ids.split(",") when @byID[taxon_id] findByTerm: (term) -> - $filter('filter')(@taxons, term) + $filter('filter')(@all, term) diff --git a/spec/javascripts/unit/admin/enterprises/services/enterprises_spec.js.coffee b/spec/javascripts/unit/admin/enterprises/services/enterprises_spec.js.coffee index 5c81f72d97..8c088b1715 100644 --- a/spec/javascripts/unit/admin/enterprises/services/enterprises_spec.js.coffee +++ b/spec/javascripts/unit/admin/enterprises/services/enterprises_spec.js.coffee @@ -26,9 +26,9 @@ describe "Enterprises service", -> result = Enterprises.index() $httpBackend.flush() - it "stores returned data in @enterprisesByID, with ids as keys", -> + it "stores returned data in @byID, with ids as keys", -> # EnterpriseResource returns instances of Resource rather than raw objects - expect(Enterprises.enterprisesByID).toDeepEqual { 5: response[0] } + expect(Enterprises.byID).toDeepEqual { 5: response[0] } it "stores returned data in @pristineByID, with ids as keys", -> expect(Enterprises.pristineByID).toDeepEqual { 5: response[0] } diff --git a/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee b/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee index 665d41934a..23c42efde0 100644 --- a/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee +++ b/spec/javascripts/unit/admin/line_items/controllers/line_items_controller_spec.js.coffee @@ -70,7 +70,7 @@ describe "LineItemsCtrl", -> expect(scope.distributors).toDeepEqual [ distributor ] it "stores enterprises in an list that is accessible by id", -> - expect(Enterprises.enterprisesByID[1]).toDeepEqual supplier + expect(Enterprises.byID[1]).toDeepEqual supplier it "gets order cycles", -> expect(scope.orderCycles).toDeepEqual [ orderCycle ] diff --git a/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee b/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee index ef428377c0..3de04003e5 100644 --- a/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee +++ b/spec/javascripts/unit/admin/line_items/services/line_items_spec.js.coffee @@ -23,9 +23,9 @@ describe "LineItems service", -> result = LineItems.index() $httpBackend.flush() - it "stores returned data in @lineItemsByID, with ids as keys", -> + it "stores returned data in @byID, with ids as keys", -> # LineItemResource returns instances of Resource rather than raw objects - expect(LineItems.lineItemsByID).toDeepEqual { 5: response[0] } + expect(LineItems.byID).toDeepEqual { 5: response[0] } it "stores returned data in @pristineByID, with ids as keys", -> expect(LineItems.pristineByID).toDeepEqual { 5: response[0] } @@ -114,14 +114,14 @@ describe "LineItems service", -> beforeEach -> lineItem = new LineItemResource({ id: 15, order: { number: '12345678'} }) LineItems.pristineByID[15] = lineItem - LineItems.lineItemsByID[15] = lineItem + LineItems.byID[15] = lineItem $httpBackend.expectDELETE('/admin/orders/12345678/line_items/15.json').respond 200, { id: 15, name: 'LineItem 1'} LineItems.delete(lineItem, callback).then( -> resolved = true).catch( -> rejected = true) $httpBackend.flush() it "updates the pristine copy of the lineItem", -> expect(LineItems.pristineByID[15]).toBeUndefined() - expect(LineItems.lineItemsByID[15]).toBeUndefined() + expect(LineItems.byID[15]).toBeUndefined() it "runs the callback", -> expect(callback).toHaveBeenCalled() @@ -139,14 +139,14 @@ describe "LineItems service", -> beforeEach -> lineItem = new LineItemResource({ id: 15, order: { number: '12345678'} }) LineItems.pristineByID[15] = lineItem - LineItems.lineItemsByID[15] = lineItem + LineItems.byID[15] = lineItem $httpBackend.expectDELETE('/admin/orders/12345678/line_items/15.json').respond 422, { error: 'obj' } LineItems.delete(lineItem, callback).then( -> resolved = true).catch( -> rejected = true) $httpBackend.flush() it "does not update the pristine copy of the lineItem", -> expect(LineItems.pristineByID[15]).toBeDefined() - expect(LineItems.lineItemsByID[15]).toBeDefined() + expect(LineItems.byID[15]).toBeDefined() it "does not run the callback", -> expect(callback).not.toHaveBeenCalled() diff --git a/spec/javascripts/unit/admin/order_cycles/services/order_cycles_spec.js.coffee b/spec/javascripts/unit/admin/order_cycles/services/order_cycles_spec.js.coffee index e4d51d508c..f2ac4983f2 100644 --- a/spec/javascripts/unit/admin/order_cycles/services/order_cycles_spec.js.coffee +++ b/spec/javascripts/unit/admin/order_cycles/services/order_cycles_spec.js.coffee @@ -26,9 +26,9 @@ describe "OrderCycles service", -> result = OrderCycles.index() $httpBackend.flush() - it "stores returned data in @orderCyclesByID, with ids as keys", -> + it "stores returned data in @byID, with ids as keys", -> # OrderCycleResource returns instances of Resource rather than raw objects - expect(OrderCycles.orderCyclesByID).toDeepEqual { 5: response[0] } + expect(OrderCycles.byID).toDeepEqual { 5: response[0] } it "stores returned data in @pristineByID, with ids as keys", -> expect(OrderCycles.pristineByID).toDeepEqual { 5: response[0] } diff --git a/spec/javascripts/unit/admin/orders/services/orders_spec.js.coffee b/spec/javascripts/unit/admin/orders/services/orders_spec.js.coffee index c3d6646144..3d41ded40a 100644 --- a/spec/javascripts/unit/admin/orders/services/orders_spec.js.coffee +++ b/spec/javascripts/unit/admin/orders/services/orders_spec.js.coffee @@ -23,9 +23,9 @@ describe "Orders service", -> result = Orders.index() $httpBackend.flush() - it "stores returned data in @ordersByID, with ids as keys", -> + it "stores returned data in @byID, with ids as keys", -> # OrderResource returns instances of Resource rather than raw objects - expect(Orders.ordersByID).toDeepEqual { 5: response[0] } + expect(Orders.byID).toDeepEqual { 5: response[0] } it "stores returned data in @pristineByID, with ids as keys", -> expect(Orders.pristineByID).toDeepEqual { 5: response[0] }