BigW Consortium Gitlab

stat_graph_contributors.js.coffee 2.76 KB
Newer Older
1 2 3
#= require d3
#= require stat_graph_contributors_util

4
class @ContributorsStatGraph
5 6 7 8 9 10 11 12 13 14 15 16 17
  init: (log) ->
    @parsed_log = ContributorsStatGraphUtil.parse_log(log)
    @set_current_field("commits")
    total_commits = ContributorsStatGraphUtil.get_total_data(@parsed_log, @field)
    author_commits = ContributorsStatGraphUtil.get_author_data(@parsed_log, @field)
    @add_master_graph(total_commits)
    @add_authors_graph(author_commits)
    @change_date_header()
  add_master_graph: (total_data) ->
    @master_graph = new ContributorsMasterGraph(total_data)
    @master_graph.draw()
  add_authors_graph: (author_data) ->
    @authors = []
18 19
    limited_author_data = author_data.slice(0, 100)
    _.each(limited_author_data, (d) =>
20 21
      author_header = @create_author_header(d)
      $(".contributors-list").append(author_header)
22
      @authors[d.author_name] = author_graph = new ContributorsAuthorGraph(d.dates)
23 24 25
      author_graph.draw()
    )
  format_author_commit_info: (author) ->
26 27 28 29 30 31
    commits = $('<span/>', {
      class: 'graph-author-commits-count'
    })
    commits.text(author.commits + " commits")
    $('<span/>').append(commits)

32 33 34 35 36
  create_author_header: (author) ->
    list_item = $('<li/>', {
      class: 'person'
      style: 'display: block;'
    })
37 38
    author_name = $('<h4>' + author.author_name + '</h4>')
    author_email = $('<p class="graph-author-email">' + author.author_email + '</p>')
39 40 41 42
    author_commit_info_span = $('<span/>', {
      class: 'commits'
    })
    author_commit_info = @format_author_commit_info(author)
43
    author_commit_info_span.html(author_commit_info)
44
    list_item.append(author_name)
45
    list_item.append(author_email)
46 47 48 49 50 51 52 53 54 55 56 57
    list_item.append(author_commit_info_span)
    list_item
  redraw_master: ->
    total_data = ContributorsStatGraphUtil.get_total_data(@parsed_log, @field)
    @master_graph.set_data(total_data)
    @master_graph.redraw()
  redraw_authors: ->
    $("ol").html("")
    x_domain = ContributorsGraph.prototype.x_domain
    author_commits = ContributorsStatGraphUtil.get_author_data(@parsed_log, @field, x_domain)
    _.each(author_commits, (d) =>
      @redraw_author_commit_info(d)
58 59 60
      $(@authors[d.author_name].list_item).appendTo("ol")
      @authors[d.author_name].set_data(d.dates)
      @authors[d.author_name].redraw()
61 62 63 64 65
    )
  set_current_field: (field) ->
    @field = field
  change_date_header: ->
    x_domain = ContributorsGraph.prototype.x_domain
66 67 68
    print_date_format = d3.time.format("%B %e %Y")
    print = print_date_format(x_domain[0]) + " - " + print_date_format(x_domain[1])
    $("#date_header").text(print)
69
  redraw_author_commit_info: (author) ->
70
    author_list_item = $(@authors[author.author_name].list_item)
71
    author_commit_info = @format_author_commit_info(author)
72
    author_list_item.find("span").html(author_commit_info)