Rearchitecting the thing

This commit is contained in:
Will Marshall
2014-07-09 14:07:38 +10:00
parent c640233ee5
commit fb8d7907f9
8 changed files with 40 additions and 45 deletions

View File

@@ -1,12 +1,4 @@
Darkswarm.controller "ProducersCtrl", ($scope, Producers, TaxonSelector, $filter) ->
Darkswarm.controller "ProducersCtrl", ($scope, Producers, $filter) ->
$scope.Producers = Producers
$scope.TaxonSelector = TaxonSelector
$scope.filtersActive = false
$scope.oldFiltered = []
$scope.filteredProducers = ->
filtered = $filter("filterProducers")(Producers.visible, $scope.query)
if $scope.oldFiltered != filtered
$scope.oldFiltered = filtered
TaxonSelector.collectTaxons filtered
filtered
$scope.filtersActive = true
$scope.activeTaxons = []

View File

@@ -7,3 +7,4 @@ Darkswarm.directive "activeSelector", ->
elem.bind "click", ->
scope.$apply ->
scope.selector.active = !scope.selector.active
scope.emit()

View File

@@ -1,5 +1,33 @@
Darkswarm.directive "taxonSelector", (TaxonSelector) ->
Darkswarm.directive "taxonSelector", ->
restrict: 'E'
scope:
objects: "&"
results: "="
templateUrl: "taxon_selector.html"
link: (scope, elem, attr)->
scope.TaxonSelector = TaxonSelector
selectors_by_id = {}
selectors = ["foo"]
scope.emit = ->
scope.results = selectors.filter (selector)->
selector.active
.map (selector)->
selector.taxon.id
scope.selectors = ->
console.log "selectoring"
taxons = {}
selectors = []
for object in scope.objects()
for taxon in (object.taxons.concat object?.supplied_taxons)
taxons[taxon.id] = taxon
for id, taxon of taxons
if selector = selectors_by_id[id]
selectors.push selector
else
selector = selectors_by_id[id] =
active: false
taxon: taxon
selectors.push selector
selectors

View File

@@ -1,27 +0,0 @@
Darkswarm.factory 'TaxonSelector', ->
new class TaxonSelector
selectors: []
selectors_by_id: {}
# Collect all taxons on the supplied enterprises
collectTaxons: (enterprises)->
taxons = {}
@selectors = []
selectors = []
for enterprise in enterprises
for taxon in (enterprise.taxons.concat enterprise.supplied_taxons)
taxons[taxon.id] = taxon
for id, taxon of taxons
if @selectors_by_id[id]
selectors.push @selectors_by_id[id]
else
@selectors_by_id[id] =
active: false
taxon: taxon
selectors.push @selectors_by_id[id]
@selectors = selectors
active: ->
@selectors.filter (selector)->
selector.active
.map (selector)->
selector.taxon.id

View File

@@ -1,4 +1,4 @@
%ul.small-block-grid-4
%active-selector{"ng-repeat" => "selector in TaxonSelector.selectors"}
%active-selector{"ng-repeat" => "selector in selectors()"}
%render-svg{path: "{{selector.taxon.icon}}"}
%span {{ selector.taxon.name }}

View File

@@ -91,8 +91,8 @@
.animate-repeat.ng-move,
.animate-repeat.ng-enter,
.animate-repeat.ng-leave
-webkit-transition: all linear 0.5s
transition: all linear 0.5s
-webkit-transition: all linear 0.2s
transition: all linear 0.2s
.animate-repeat.ng-leave.ng-leave-active,
.animate-repeat.ng-move,

View File

@@ -20,7 +20,8 @@
Something
.row.filter-box
.small-12.large-6.columns
%taxon-selector{enterprises: "Producers.visible"}
%taxon-selector{objects: "Producers.visible | filterProducers:query",
results: "activeTaxons"}
.small-12.large-6.columns
%shipping-type-selector

View File

@@ -27,7 +27,7 @@
.active_table
%producer.active_table_node.row.animate-repeat{id: "{{producer.path}}",
"scroll-after-load" => true,
"ng-repeat" => "producer in veryFilteredProducers = (filteredProducers() | taxons:TaxonSelector.active() | shipping:shippingTypes)",
"ng-repeat" => "producer in producers = (Producers.visible | filterProducers:query | taxons:activeTaxons | shipping:shippingTypes)",
"ng-controller" => "ProducerNodeCtrl",
"ng-class" => "{'closed' : !open(), 'open' : open(), 'inactive' : !producer.active}",
id: "{{producer.hash}}"}