From 6f3f40e2e6ebe195e654f18862e06cc32491ea16 Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Wed, 9 Jul 2014 15:45:05 +1000 Subject: [PATCH] Adding query string to search params --- .../controllers/producers_controller.js.coffee | 11 ++++++++++- .../shipping_type_selector.js.coffee | 15 ++++++++++++--- .../directives/taxon_selector.js.coffee | 5 ++--- .../darkswarm/filters/capitalize.js.coffee | 4 ++++ .../services/filter_selectors.js.coffee | 18 ++++++++++++++++++ .../darkswarm/services/search.js.coffee | 9 +++++++++ .../templates/shipping_type_selector.html.haml | 8 ++------ app/views/producers/_filters.html.haml | 6 +++++- 8 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 app/assets/javascripts/darkswarm/filters/capitalize.js.coffee create mode 100644 app/assets/javascripts/darkswarm/services/filter_selectors.js.coffee create mode 100644 app/assets/javascripts/darkswarm/services/search.js.coffee diff --git a/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee b/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee index 5da0fc7912..61d1960aef 100644 --- a/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee +++ b/app/assets/javascripts/darkswarm/controllers/producers_controller.js.coffee @@ -1,4 +1,13 @@ -Darkswarm.controller "ProducersCtrl", ($scope, Producers, $filter) -> +Darkswarm.controller "ProducersCtrl", ($scope, Producers, $filter, FilterSelectorsService, Search) -> $scope.Producers = Producers + $scope.totalActive = FilterSelectorsService.totalActive + $scope.clearAll = FilterSelectorsService.clearAll $scope.filtersActive = true $scope.activeTaxons = [] + $scope.query = Search.search() + + $scope.$watch "query", (query)-> + Search.search query + + + diff --git a/app/assets/javascripts/darkswarm/directives/shipping_type_selector.js.coffee b/app/assets/javascripts/darkswarm/directives/shipping_type_selector.js.coffee index b634fc167c..586dde36ea 100644 --- a/app/assets/javascripts/darkswarm/directives/shipping_type_selector.js.coffee +++ b/app/assets/javascripts/darkswarm/directives/shipping_type_selector.js.coffee @@ -1,7 +1,16 @@ -Darkswarm.directive "shippingTypeSelector", -> +Darkswarm.directive "shippingTypeSelector", (FilterSelectorsService)-> restrict: 'E' templateUrl: 'shipping_type_selector.html' link: (scope, elem, attr)-> - scope.shippingTypes = + scope.shippingTypes = pickup: false - delivery: false + delivery: false + + scope.selectors = + delivery: FilterSelectorsService.new() + pickup: FilterSelectorsService.new() + + scope.emit = -> + scope.shippingTypes = + pickup: scope.selectors.pickup.active + delivery: scope.selectors.delivery.active diff --git a/app/assets/javascripts/darkswarm/directives/taxon_selector.js.coffee b/app/assets/javascripts/darkswarm/directives/taxon_selector.js.coffee index bc209f1998..88dbe919a2 100644 --- a/app/assets/javascripts/darkswarm/directives/taxon_selector.js.coffee +++ b/app/assets/javascripts/darkswarm/directives/taxon_selector.js.coffee @@ -1,4 +1,4 @@ -Darkswarm.directive "taxonSelector", -> +Darkswarm.directive "taxonSelector", (FilterSelectorsService)-> restrict: 'E' scope: objects: "&" @@ -25,8 +25,7 @@ Darkswarm.directive "taxonSelector", -> if selector = selectors_by_id[id] selectors.push selector else - selector = selectors_by_id[id] = - active: false + selector = selectors_by_id[id] = FilterSelectorsService.new taxon: taxon selectors.push selector selectors diff --git a/app/assets/javascripts/darkswarm/filters/capitalize.js.coffee b/app/assets/javascripts/darkswarm/filters/capitalize.js.coffee new file mode 100644 index 0000000000..acbd3fd637 --- /dev/null +++ b/app/assets/javascripts/darkswarm/filters/capitalize.js.coffee @@ -0,0 +1,4 @@ +Darkswarm.filter "capitalize", -> + (input, scope) -> + input = input.toLowerCase() if input? + input.substring(0, 1).toUpperCase() + input.substring(1) diff --git a/app/assets/javascripts/darkswarm/services/filter_selectors.js.coffee b/app/assets/javascripts/darkswarm/services/filter_selectors.js.coffee new file mode 100644 index 0000000000..d9c6848880 --- /dev/null +++ b/app/assets/javascripts/darkswarm/services/filter_selectors.js.coffee @@ -0,0 +1,18 @@ +Darkswarm.factory "FilterSelectorsService", -> + # This stores all filters so we can access in-use counts etc + # Accessed via activeSelector Directive + new class FilterSelectorsService + selectors: [] + new: (obj = {})-> + obj.active = false + @selectors.push obj + obj + + totalActive: => + @selectors.filter (selector)-> + selector.active + .length + + clearAll: => + for selector in @selectors + selector.active = false diff --git a/app/assets/javascripts/darkswarm/services/search.js.coffee b/app/assets/javascripts/darkswarm/services/search.js.coffee new file mode 100644 index 0000000000..10e601c4e0 --- /dev/null +++ b/app/assets/javascripts/darkswarm/services/search.js.coffee @@ -0,0 +1,9 @@ +Darkswarm.factory "Search", ($location)-> + new class Search + search: (query = false)-> + if query + $location.search('query', query) + else if query == "" + $location.search('query', null) + else + $location.search()['query'] diff --git a/app/assets/javascripts/templates/shipping_type_selector.html.haml b/app/assets/javascripts/templates/shipping_type_selector.html.haml index 80e70d1c8d..b0300857b4 100644 --- a/app/assets/javascripts/templates/shipping_type_selector.html.haml +++ b/app/assets/javascripts/templates/shipping_type_selector.html.haml @@ -1,7 +1,3 @@ %ul.small-block-grid-4 - %li{"ng-class" => "{active: shippingTypes['delivery']}"} - %a{"ng-click" => "shippingTypes['delivery'] = !shippingTypes['delivery']"} - Delivery - %li{"ng-class" => "{active: shippingTypes['pickup']}"} - %a{"ng-click" => "shippingTypes['pickup'] = !shippingTypes['pickup']"} - Pickup + %active-selector{"ng-repeat" => "(name, selector) in selectors"} + {{ name | capitalize }} diff --git a/app/views/producers/_filters.html.haml b/app/views/producers/_filters.html.haml index 3cdb4e3e75..91f1e50ec7 100644 --- a/app/views/producers/_filters.html.haml +++ b/app/views/producers/_filters.html.haml @@ -2,6 +2,7 @@ .small-12.columns %a.right{"ng-click" => "filtersActive = !filtersActive"} Filter by + {{ totalActive() }} %i.ofn-i_052-point-down .row.animate-show{"ng-show" => "filtersActive"} .small-12.columns @@ -24,4 +25,7 @@ results: "activeTaxons"} .small-12.large-6.columns - %shipping-type-selector + %shipping-type-selector{results: "shippingTypes"} + +.row.animate-show{"ng-show" => "filtersActive"} + %a{"ng-click" => "clearAll()"} Clear all