diff --git a/app/assets/javascripts/darkswarm/controllers/hubs_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/enterprises_controller.js.coffee
similarity index 61%
rename from app/assets/javascripts/darkswarm/controllers/hubs_controller.js.coffee
rename to app/assets/javascripts/darkswarm/controllers/enterprises_controller.js.coffee
index b44d63eadf..dc1218a14b 100644
--- a/app/assets/javascripts/darkswarm/controllers/hubs_controller.js.coffee
+++ b/app/assets/javascripts/darkswarm/controllers/enterprises_controller.js.coffee
@@ -1,13 +1,15 @@
-Darkswarm.controller "HubsCtrl", ($scope, Hubs, Search, $document, $rootScope, HashNavigation, FilterSelectorsService, MapModal) ->
- $scope.Hubs = Hubs
- $scope.hubs = Hubs.visible
+Darkswarm.controller "EnterprisesCtrl", ($scope, Enterprises, Search, $document, $rootScope, HashNavigation, FilterSelectorsService, EnterpriseModal) ->
+ $scope.Enterprises = Enterprises
$scope.totalActive = FilterSelectorsService.totalActive
$scope.clearAll = FilterSelectorsService.clearAll
$scope.filterText = FilterSelectorsService.filterText
$scope.FilterSelectorsService = FilterSelectorsService
$scope.query = Search.search()
+ $scope.openModal = EnterpriseModal.open
+ $scope.activeTaxons = []
+ $scope.show_profiles = false
+ $scope.filtersActive = false
$scope.show_profiles = false
- $scope.openModal = MapModal.open
$scope.$watch "query", (query)->
Search.search query
diff --git a/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee
deleted file mode 100644
index b16dcdfa77..0000000000
--- a/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee
+++ /dev/null
@@ -1,14 +0,0 @@
-Darkswarm.controller "ProducersCtrl", ($scope, Producers, $filter, FilterSelectorsService, Search, MapModal) ->
- $scope.Producers = Producers
- $scope.totalActive = FilterSelectorsService.totalActive
- $scope.clearAll = FilterSelectorsService.clearAll
- $scope.filterText = FilterSelectorsService.filterText
- $scope.FilterSelectorsService = FilterSelectorsService
- $scope.filtersActive = false
- $scope.activeTaxons = []
- $scope.query = Search.search()
- $scope.show_profiles = false
- $scope.openModal = MapModal.open
-
- $scope.$watch "query", (query)->
- Search.search query
diff --git a/app/assets/javascripts/darkswarm/directives/hub_modal.js.coffee b/app/assets/javascripts/darkswarm/directives/enterproise_modal.js.coffee
similarity index 84%
rename from app/assets/javascripts/darkswarm/directives/hub_modal.js.coffee
rename to app/assets/javascripts/darkswarm/directives/enterproise_modal.js.coffee
index 6eb0299ab4..60f3810f41 100644
--- a/app/assets/javascripts/darkswarm/directives/hub_modal.js.coffee
+++ b/app/assets/javascripts/darkswarm/directives/enterproise_modal.js.coffee
@@ -1,4 +1,4 @@
-Darkswarm.directive "hubModal", ($modal)->
+Darkswarm.directive "enterpriseModal", ($modal)->
restrict: 'E'
replace: true
template: "{{enterprise.name}}"
diff --git a/app/assets/javascripts/darkswarm/directives/producer_modal.js.coffee b/app/assets/javascripts/darkswarm/directives/producer_modal.js.coffee
deleted file mode 100644
index af2b13f157..0000000000
--- a/app/assets/javascripts/darkswarm/directives/producer_modal.js.coffee
+++ /dev/null
@@ -1,10 +0,0 @@
-Darkswarm.directive "producerModal", ($modal)->
- restrict: 'E'
- replace: true
- template: ""
- transclude: true
- link: (scope, elem, attrs, ctrl)->
- elem.on "click", (ev)=>
- ev.stopPropagation()
- scope.modalInstance = $modal.open(controller: ctrl, templateUrl: 'producer_modal.html', scope: scope)
-
diff --git a/app/assets/javascripts/darkswarm/services/enterprise_modal.js.coffee b/app/assets/javascripts/darkswarm/services/enterprise_modal.js.coffee
new file mode 100644
index 0000000000..1cd0727cd8
--- /dev/null
+++ b/app/assets/javascripts/darkswarm/services/enterprise_modal.js.coffee
@@ -0,0 +1,7 @@
+Darkswarm.factory "EnterpriseModal", ($modal, $rootScope)->
+ new class EnterpriseModal
+ open: (enterprise)->
+ scope = $rootScope.$new(true) # Spawn an isolate to contain the enterprise
+
+ scope.enterprise = enterprise
+ $modal.open(templateUrl: "enterprise_modal.html", scope: scope)
diff --git a/app/assets/javascripts/darkswarm/services/enterprises.js.coffee b/app/assets/javascripts/darkswarm/services/enterprises.js.coffee
index 50143e006b..2451c14739 100644
--- a/app/assets/javascripts/darkswarm/services/enterprises.js.coffee
+++ b/app/assets/javascripts/darkswarm/services/enterprises.js.coffee
@@ -1,13 +1,17 @@
-Darkswarm.factory 'Enterprises', (enterprises, CurrentHub, Taxons, Dereferencer)->
+Darkswarm.factory 'Enterprises', (enterprises, CurrentHub, Taxons, Dereferencer, visibleFilter)->
new class Enterprises
- enterprises_by_id: {} # id/object pairs for lookup
+ enterprises_by_id: {} # id/object pairs for lookup
constructor: ->
- @enterprises = enterprises
+ @enterprises = visibleFilter enterprises
for enterprise in enterprises
@enterprises_by_id[enterprise.id] = enterprise
@dereferenceEnterprises()
@dereferenceTaxons()
-
+ @producers = @enterprises.filter (enterprise)->
+ enterprise.is_primary_producer
+ @hubs = @enterprises.filter (enterprise)->
+ enterprise.is_distributor
+
dereferenceEnterprises: ->
if CurrentHub.hub?.id
CurrentHub.hub = @enterprises_by_id[CurrentHub.hub.id]
@@ -16,6 +20,7 @@ Darkswarm.factory 'Enterprises', (enterprises, CurrentHub, Taxons, Dereferencer)
Dereferencer.dereference enterprise.producers, @enterprises_by_id
dereferenceTaxons: ->
- for enterprise in @enterprises
+ for enterprise in @enterprises
Dereferencer.dereference enterprise.taxons, Taxons.taxons_by_id
Dereferencer.dereference enterprise.supplied_taxons, Taxons.taxons_by_id
+
diff --git a/app/assets/javascripts/darkswarm/services/hubs.js.coffee b/app/assets/javascripts/darkswarm/services/hubs.js.coffee
deleted file mode 100644
index ac7dc3a0eb..0000000000
--- a/app/assets/javascripts/darkswarm/services/hubs.js.coffee
+++ /dev/null
@@ -1,9 +0,0 @@
-Darkswarm.factory 'Hubs', ($filter, Enterprises, visibleFilter) ->
- new class Hubs
- constructor: ->
- @hubs = @order Enterprises.enterprises.filter (hub)->
- hub.is_distributor
- @visible = visibleFilter @hubs
-
- order: (hubs)->
- $filter('orderBy')(hubs, ['-active', '+orders_close_at'])
diff --git a/app/assets/javascripts/darkswarm/services/map.js.coffee b/app/assets/javascripts/darkswarm/services/map.js.coffee
index 43750acdb2..703c3c54bf 100644
--- a/app/assets/javascripts/darkswarm/services/map.js.coffee
+++ b/app/assets/javascripts/darkswarm/services/map.js.coffee
@@ -1,7 +1,7 @@
-Darkswarm.factory "OfnMap", (Enterprises, MapModal, visibleFilter)->
+Darkswarm.factory "OfnMap", (Enterprises, EnterpriseModal, visibleFilter)->
new class OfnMap
constructor: ->
- @enterprises = (@extend(enterprise) for enterprise in visibleFilter(Enterprises.enterprises))
+ @enterprises = (@extend(enterprise) for enterprise in visibleFilter(Enterprises.enterprises))
# Adding methods to each enterprise
@@ -14,4 +14,4 @@ Darkswarm.factory "OfnMap", (Enterprises, MapModal, visibleFilter)->
icon: enterprise.icon
id: enterprise.id
reveal: =>
- MapModal.open enterprise
+ EnterpriseModal.open enterprise
diff --git a/app/assets/javascripts/darkswarm/services/map_modal.js.coffee b/app/assets/javascripts/darkswarm/services/map_modal.js.coffee
deleted file mode 100644
index c9ed30f558..0000000000
--- a/app/assets/javascripts/darkswarm/services/map_modal.js.coffee
+++ /dev/null
@@ -1,12 +0,0 @@
-Darkswarm.factory "MapModal", ($modal, $rootScope)->
- new class MapModal
- open: (enterprise)->
- scope = $rootScope.$new(true) # Spawn an isolate to contain the enterprise
-
- scope.enterprise = enterprise
- if enterprise.is_distributor
- scope.hub = enterprise
- $modal.open(templateUrl: "hub_modal.html", scope: scope)
- else
- scope.producer = enterprise
- $modal.open(templateUrl: "map_modal_producer.html", scope: scope)
diff --git a/app/assets/javascripts/darkswarm/services/producers.js.coffee b/app/assets/javascripts/darkswarm/services/producers.js.coffee
deleted file mode 100644
index 65d8e42c5d..0000000000
--- a/app/assets/javascripts/darkswarm/services/producers.js.coffee
+++ /dev/null
@@ -1,7 +0,0 @@
-Darkswarm.factory 'Producers', (Enterprises, visibleFilter) ->
- new class Producers
- constructor: ->
- @producers = Enterprises.enterprises.filter (enterprise)->
- enterprise.is_primary_producer
- @visible = visibleFilter @producers
-
diff --git a/app/assets/javascripts/templates/hub_modal.html.haml b/app/assets/javascripts/templates/enterprise_modal.html.haml
similarity index 100%
rename from app/assets/javascripts/templates/hub_modal.html.haml
rename to app/assets/javascripts/templates/enterprise_modal.html.haml
diff --git a/app/assets/javascripts/templates/map_modal_producer.html.haml b/app/assets/javascripts/templates/map_modal_producer.html.haml
deleted file mode 100644
index dff26519d3..0000000000
--- a/app/assets/javascripts/templates/map_modal_producer.html.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-%ng-include{src: "'partials/enterprise_header.html'"}
-%ng-include{src: "'partials/enterprise_details.html'"}
-%ng-include{src: "'partials/hub_actions.html'"}
-%ng-include{src: "'partials/close.html'"}
diff --git a/app/assets/javascripts/templates/producer_modal.html.haml b/app/assets/javascripts/templates/producer_modal.html.haml
deleted file mode 100644
index db6f927e21..0000000000
--- a/app/assets/javascripts/templates/producer_modal.html.haml
+++ /dev/null
@@ -1,3 +0,0 @@
-%ng-include{src: "'partials/enterprise_header.html'"}
-%ng-include{src: "'partials/enterprise_details.html'"}
-%ng-include{src: "'partials/close.html'"}
diff --git a/app/views/home/_hubs.html.haml b/app/views/home/_hubs.html.haml
index b7a14fc7bf..9e9215ff83 100644
--- a/app/views/home/_hubs.html.haml
+++ b/app/views/home/_hubs.html.haml
@@ -1,5 +1,5 @@
= inject_enterprises
-#hubs.hubs{"ng-controller" => "HubsCtrl"}
+#hubs.hubs{"ng-controller" => "EnterprisesCtrl"}
.row
.small-12.columns
%h1 Shop in your local area
@@ -17,7 +17,7 @@
.row{bindonce: true}
.small-12.columns
.active_table
- %hub.active_table_node.row.animate-repeat{"ng-repeat" => "hub in filteredHubs = (hubs | searchEnterprises:query | taxons:activeTaxons | shipping:shippingTypes | showProfiles:show_profiles )",
+ %hub.active_table_node.row.animate-repeat{"ng-repeat" => "hub in hubs = (Enterprises.hubs | searchEnterprises:query | taxons:activeTaxons | shipping:shippingTypes | showProfiles:show_profiles | orderBy:['-active', '+orders_close_at'])",
"ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !hub.active, 'current' : current()}",
"scroll-after-load" => true,
"ng-controller" => "HubNodeCtrl",
diff --git a/app/views/producers/index.html.haml b/app/views/producers/index.html.haml
index 095cff2a11..e012f4c1ee 100644
--- a/app/views/producers/index.html.haml
+++ b/app/views/producers/index.html.haml
@@ -1,5 +1,5 @@
= inject_enterprises
-.producers.pad-top{"ng-controller" => "ProducersCtrl"}
+.producers.pad-top{"ng-controller" => "EnterprisesCtrl"}
.row
.small-12.columns.pad-top
%h1 Find local producers
@@ -24,7 +24,7 @@
.active_table
%producer.active_table_node.row.animate-repeat{id: "{{producer.path}}",
"scroll-after-load" => true,
- "ng-repeat" => "producer in producers = (Producers.visible | showProfiles:show_profiles | searchEnterprises:query | taxons:activeTaxons)",
+ "ng-repeat" => "producer in producers = (Enterprises.producers | showProfiles:show_profiles | searchEnterprises:query | taxons:activeTaxons)",
"ng-controller" => "ProducerNodeCtrl",
"ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !producer.active}",
id: "{{producer.hash}}"}
diff --git a/spec/javascripts/unit/darkswarm/filters/filter_hubs_spec.js.coffee b/spec/javascripts/unit/darkswarm/filters/filter_hubs_spec.js.coffee
deleted file mode 100644
index fc2702a72b..0000000000
--- a/spec/javascripts/unit/darkswarm/filters/filter_hubs_spec.js.coffee
+++ /dev/null
@@ -1,45 +0,0 @@
-describe 'filtering Hubs', ->
- filter = null
- filterHubs = null
- hubs = [{
- name: "frogs"
- other: "roger"
- address:
- zipcode: "cats"
- city: "cambridge"
- state: "kansas"
- }, {
- name: "donkeys"
- other: "roger"
- address:
- zipcode: ""
- city: "Wellington"
- state: "uzbekistan"
- }]
-
- beforeEach ->
- module 'Darkswarm'
- inject ($filter) ->
- filter = $filter
- filterHubs = $filter('hubs')
-
- it 'has a hub filter', ->
- expect(filter('hubs')).not.toBeNull()
-
- it "filters by name", ->
- expect(filterHubs(hubs, 'donkeys').length).toEqual 1
-
- it "is case insensitive", ->
- expect(filterHubs(hubs, 'DONKEYS').length).toEqual 1
-
- it "filters by state", ->
- expect(filterHubs(hubs, 'kansas').length).toEqual 1
-
- it "filters by zipcode", ->
- expect(filterHubs(hubs, 'cats').length).toEqual 1
-
- it "gives all hubs when no argument is specified", ->
- expect(filterHubs(hubs, '').length).toEqual 2
-
- it "does not filter by anything else", ->
- expect(filterHubs(hubs, 'roger').length).toEqual 0
diff --git a/spec/javascripts/unit/darkswarm/filters/filter_producers_spec.js.coffee b/spec/javascripts/unit/darkswarm/filters/filter_producers_spec.js.coffee
deleted file mode 100644
index 29d8986b56..0000000000
--- a/spec/javascripts/unit/darkswarm/filters/filter_producers_spec.js.coffee
+++ /dev/null
@@ -1,28 +0,0 @@
-describe 'filtering producers', ->
- filter = null
- filterProducers = null
- producers = [{
- name: "frogs"
- other: "roger"
- address:
- zipcode: "cats"
- city: "cambridge"
- state: "kansas"
- }, {
- name: "donkeys"
- other: "roger"
- address:
- zipcode: ""
- city: "Wellington"
- state: "uzbekistan"
- }]
-
- beforeEach ->
- module 'Darkswarm'
- inject ($filter) ->
- filter = $filter
- filterProducers = $filter('filterProducers')
-
-
- it 'has a producer filter', ->
- expect(filter('filterProducers')).not.toBeNull()
diff --git a/spec/javascripts/unit/darkswarm/filters/search_enterprises_spec.js.coffee b/spec/javascripts/unit/darkswarm/filters/search_enterprises_spec.js.coffee
new file mode 100644
index 0000000000..61e58071e2
--- /dev/null
+++ b/spec/javascripts/unit/darkswarm/filters/search_enterprises_spec.js.coffee
@@ -0,0 +1,45 @@
+describe 'filtering Enterprises', ->
+ filter = null
+ searchEnterprises = null
+ enterprises = [{
+ name: "frogs"
+ other: "roger"
+ address:
+ zipcode: "cats"
+ city: "cambridge"
+ state: "kansas"
+ }, {
+ name: "donkeys"
+ other: "roger"
+ address:
+ zipcode: ""
+ city: "Wellington"
+ state: "uzbekistan"
+ }]
+
+ beforeEach ->
+ module 'Darkswarm'
+ inject ($filter) ->
+ filter = $filter
+ searchEnterprises = $filter('enterprises')
+
+ it 'has a enterprise filter', ->
+ expect(filter('enterprises')).not.toBeNull()
+
+ it "filters by name", ->
+ expect(searchEnterprises(enterprises, 'donkeys').length).toEqual 1
+
+ it "is case insensitive", ->
+ expect(searchEnterprises(enterprises, 'DONKEYS').length).toEqual 1
+
+ it "filters by state", ->
+ expect(searchEnterprises(enterprises, 'kansas').length).toEqual 1
+
+ it "filters by zipcode", ->
+ expect(searchEnterprises(enterprises, 'cats').length).toEqual 1
+
+ it "gives all enterprises when no argument is specified", ->
+ expect(searchEnterprises(enterprises, '').length).toEqual 2
+
+ it "does not filter by anything else", ->
+ expect(searchEnterprises(enterprises, 'roger').length).toEqual 0