diff --git a/app/assets/javascripts/admin/services/indexer.js.coffee b/app/assets/javascripts/admin/services/indexer.js.coffee new file mode 100644 index 0000000000..a69f7f06e1 --- /dev/null +++ b/app/assets/javascripts/admin/services/indexer.js.coffee @@ -0,0 +1,13 @@ +# Convert an array of objects into a hash, indexed by the objects' ids +# +# producers = [{id: 1, name: 'one'}, {id: 2, name: 'two'}] +# Indexer.index producers +# -> {1: {id: 1, name: 'one'}, 2: {id: 2, name: 'two'}} + +angular.module("ofn.admin").factory 'Indexer', -> + new class Indexer + index: (data) -> + index = [] + for e in data + index[e.id] = e + index diff --git a/spec/javascripts/unit/admin/services/indexer_spec.js.coffee b/spec/javascripts/unit/admin/services/indexer_spec.js.coffee new file mode 100644 index 0000000000..a7f009e7d3 --- /dev/null +++ b/spec/javascripts/unit/admin/services/indexer_spec.js.coffee @@ -0,0 +1,13 @@ +describe "indexer", -> + Indexer = null + + beforeEach -> + module "ofn.admin" + + beforeEach inject (_Indexer_) -> + Indexer = _Indexer_ + + it "indexes an array of objects by id", -> + objects = [{id: 1, name: 'one'}, {id: 2, name: 'two'}] + index = Indexer.index objects + expect(index).toEqual({1: {id: 1, name: 'one'}, 2: {id: 2, name: 'two'}})