class XAxisModel extends AngularLinkModel

@inject('$parse')
initialize: ->
  @parent = @$controller.compact()[0]
  @options = @parent.options
  @parent._xAxis = @
  @axis   = d3.select(@$element[0])
  @label  = @$parse @$attrs.mrD3Label
  @domain = @$parse @$attrs.mrD3Domain
  @$scope.$watchCollection @domain, @adjustAxis.bind(@)
  @$scope.$watch @label,  @adjustAxis.bind(@)
  @appendLabel()
  @adjustAxis(true)
adjustAxis: (newVal,oldVal) ->
  return if newVal == oldVal
  @axis.attr('transform',"translate(0,#{@parent.height()})")
  @parent.xAxis.domain(@domain(@$scope)) if @domain(@$scope)
  @axis.call(d3.axisBottom(@parent.xAxis))
  @parent.adjustBars()
  @adjustLabel()
appendLabel: ->
  @labelEl = @parent.holder.append('text')
  .style("text-anchor","middle")
  @adjustLabel()
adjustLabel: ->
  @labelEl.attr('x', @parent.width()/2)
  .attr('y', @parent.height() + (@options.margins.bottom + 30) / 2)
  .text(@label(@$scope)) if @label(@$scope)
@register(MaterialRaingular.d3.Directives.MrD3XAxis)