 
 
   positionPoints: =>
-    @svgPointsEnter
-      .merge(@svgPoints)
-      .attr 'transform', (d) =>
-        "translate(#{Math.round(@scaleX(d.timestamp))}, 0)"
+    @svgPoints.attr 'transform', (d) =>
+      "translate(#{Math.round(@scaleX(d.timestamp))}, 0)"
 
 
   resize: =>

      .selectAll ".#{bn}__point"
      .data @data, (d) => d.id

    @svgPointsEnter = @svgPoints.enter()
      .append 'a'
      .attr 'xlink:href', (d) =>
        BeatmapDiscussionHelper.hash discussionId: d.id
      .attr 'class', (d) ->
        type = if d.resolved then 'resolved' else _.kebabCase(d.message_type)
        "js-beatmap-discussion--jump #{bn}__point #{bn}__point--#{type}"

    @svgPointsEnter
      .append 'line'
      .classed "#{bn}__bar", true
      .attr 'x1', 0

      .attr 'y', @dimensions.barTop
      .attr 'height', @dimensions.targetAreaHeight

    svgPointsEnter
      .append 'text'
      .classed "#{bn}__icon", true
      .style 'text-anchor', 'middle'
      .attr 'y', @dimensions.iconTop

    @svgPoints.exit().remove()

    @svgPoints = svgPointsEnter.merge(@svgPoints)

    @svgPoints
      .attr 'xlink:href', (d) =>
        BeatmapDiscussionHelper.hash discussionId: d.id
      .attr 'class', (d) ->
        type = if d.resolved then 'resolved' else _.kebabCase(d.message_type)
        "js-beatmap-discussion--jump #{bn}__point #{bn}__point--#{type}"

    # refresh the icons
    @svgPoints
      .select(".#{bn}__icon > tspan").remove()

    @svgPoints
      .select ".#{bn}__icon"
      .append 'tspan'
      .classed 'fa', true
      .html (d) =>
        type = if d.resolved then 'resolved' else _.camelCase(d.message_type)
        BeatmapDiscussionHelper.messageType.iconText[type]

    @resize()


