         when 'last-12-months' then toDate.clone().subtract(12, 'month')
         when 'overall'        then moment.utc(info.registered * 1000)
 
-      Promise.map spanRange(fromDate, toDate, 1, 'week'), (range) ->
+      ranges = spanRange(fromDate, toDate, 1, 'week')
+      progress = 0
+      Promise.map ranges, (range) ->
         [fromDate, toDate] = range
         params = {username, fromDate, toDate}
         $.getJSON($SCRIPT_ROOT + '/weekly-artist-charts', params)
         .then (weeklyCharts) ->
-          # Put progress bar here
+          progress += 1
+          ladda.setProgress(progress / ranges.length)
           # if weeklyCharts.error?
           #   # Put error handling here
           weeklyCharts
+        .fail ->
+          # Failed to get weekly charts.
+          ladda.stop()
       .then (weeks) ->
         weeklyCharts = {}
         for week in weeks


$ ->
  $('#submit').click ->
    l = Ladda.create(this)
    l.start()
    username = $('#username').val().trim()
    numberOfArtists = $('#number-of-artists option:selected').val()
    timeframe = $('#timeframe option:selected').val()

          enabled: false
      series:
        animation:
          complete: -> chart.reflow()
    series: []
  chart = $chart.highcharts()

