#= require d3 #= require stat_graph_contributors_util class @ContributorsStatGraph 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 = [] limited_author_data = author_data.slice(0, 100) _.each(limited_author_data, (d) => author_header = @create_author_header(d) $(".contributors-list").append(author_header) @authors[d.author_name] = author_graph = new ContributorsAuthorGraph(d.dates) author_graph.draw() ) format_author_commit_info: (author) -> commits = $('', { class: 'graph-author-commits-count' }) commits.text(author.commits + " commits") $('').append(commits) create_author_header: (author) -> list_item = $('
  • ', { class: 'person' style: 'display: block;' }) author_name = $('

    ' + author.author_name + '

    ') author_email = $('

    ' + author.author_email + '

    ') author_commit_info_span = $('', { class: 'commits' }) author_commit_info = @format_author_commit_info(author) author_commit_info_span.html(author_commit_info) list_item.append(author_name) list_item.append(author_email) 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) $(@authors[d.author_name].list_item).appendTo("ol") @authors[d.author_name].set_data(d.dates) @authors[d.author_name].redraw() ) set_current_field: (field) -> @field = field change_date_header: -> x_domain = ContributorsGraph.prototype.x_domain 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) redraw_author_commit_info: (author) -> author_list_item = $(@authors[author.author_name].list_item) author_commit_info = @format_author_commit_info(author) author_list_item.find("span").html(author_commit_info)