       renderLegend(scope, valFn)
 
 
+
+  #    #############################################
+  #      Legend Rendering
+  #    #############################################
+
   renderLegend = (scope, valFn) ->
     # reset current legend
     scope.legend.selectAll('li.key')

      ngProgress.complete()
    , 1000


  return {
    restrict: 'EA'

    isCategorical = mapInstance.getValueType() == 'categorical'

    if isCategorical
      genericLegendRender(scope, $.proxy(filterDataForCategoricalLegend, this, mapInstance, valFn),
      (d) ->
        d.value
      , (d) ->
        d.key
      )
    else
      genericLegendRender(scope, valFn.range, (d) ->
        extent = valFn.invertExtent(d)
        "#{Math.round(10*extent[0])/10} – #{Math.round(10*extent[1])/10}"
      , (d) ->
        d
      )


  genericLegendRender = (scope, dataFn, textFn, classFn) ->
    scope.legend.selectAll('li.key')
        .data(dataFn())
      .enter().append('li')
        .attr('class', 'key')
        .text( (d) -> textFn(d) )
      .append('svg')
        .attr('height', 30)
      .append('rect')
