From b3cbf65f8348d8bfc80cede93c92a590126d69a9 Mon Sep 17 00:00:00 2001 From: Tomasz Gieniusz Date: Sun, 21 Oct 2012 15:41:59 +0200 Subject: [PATCH] activity by date --- config/locales/en.yml | 5 ++++- lib/git_stats/git_data/activity.rb | 5 +++++ .../stats_view/charts/activity_charts.rb | 10 ++++++++++ lib/git_stats/stats_view/charts/chart.rb | 8 +++++++- lib/git_stats/stats_view/charts/charts.rb | 5 ++++- templates/activity.haml | 18 +++++++++++++----- 6 files changed, 43 insertions(+), 8 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index c38f7a4a8..6259d03f1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -30,4 +30,7 @@ en: commits_by_year_month: Commits by year and month commits_by_month_of_year: Commits by month of year year: Year - commits_by_year: Commits by year \ No newline at end of file + commits_by_year: Commits by year + activity: Activity + activity_by_date: Activity by date + commits_by_date: Commits by date \ No newline at end of file diff --git a/lib/git_stats/git_data/activity.rb b/lib/git_stats/git_data/activity.rb index f9e9ecfa7..5ad06fd4a 100644 --- a/lib/git_stats/git_data/activity.rb +++ b/lib/git_stats/git_data/activity.rb @@ -6,6 +6,10 @@ module GitStats add_commits(commits) end + def by_date + @by_date ||= default_hash + end + def by_hour @by_hour ||= default_hash end @@ -51,6 +55,7 @@ module GitStats end def add_commit_at(date) + self.by_date[date] += 1 self.by_hour[date.hour] += 1 self.by_wday[date.wday] += 1 self.by_wday_hour[date.wday][date.hour] += 1 diff --git a/lib/git_stats/stats_view/charts/activity_charts.rb b/lib/git_stats/stats_view/charts/activity_charts.rb index fea8a0f53..9b1ccc883 100644 --- a/lib/git_stats/stats_view/charts/activity_charts.rb +++ b/lib/git_stats/stats_view/charts/activity_charts.rb @@ -6,6 +6,16 @@ module GitStats @activity = activity end + def activity_by_date + Chart.new do |f| + f.date_column_chart( + data: @activity.by_date, + title: :commits_by_date.t, + y_text: :commits.t + ) + end + end + def activity_by_hour Chart.new do |f| f.simple_column_chart( diff --git a/lib/git_stats/stats_view/charts/chart.rb b/lib/git_stats/stats_view/charts/chart.rb index 01d286ae9..e3d5a0e74 100644 --- a/lib/git_stats/stats_view/charts/chart.rb +++ b/lib/git_stats/stats_view/charts/chart.rb @@ -38,10 +38,16 @@ module GitStats series( name: params[:title], type: "spline", - data: params[:data].map {|date, value| [date.to_i * 1000, value]} + data: params[:data].map { |date, value| [date.to_i * 1000, value] } ) end + def date_column_chart(params) + date_chart(params) + data[0][:type] = 'column' + data[0][:dataGrouping] = {units: [['week', [1]]], forced: true} + end + def default_legend legend( layout: 'vertical', diff --git a/lib/git_stats/stats_view/charts/charts.rb b/lib/git_stats/stats_view/charts/charts.rb index 11e7f2b3b..003f00d9f 100644 --- a/lib/git_stats/stats_view/charts/charts.rb +++ b/lib/git_stats/stats_view/charts/charts.rb @@ -4,8 +4,11 @@ module GitStats class All delegate :files_by_extension, :lines_by_extension, :files_by_date, :lines_by_date, :lines_added_by_author, :lines_deleted_by_author, to: :repo_charts + delegate :by_authors_wday, to: :authors_charts - delegate :activity_by_hour, :activity_by_wday, :activity_by_month, :activity_by_year, to: :activity_charts + + delegate :activity_by_date, :activity_by_hour, :activity_by_wday, :activity_by_month, + :activity_by_year, to: :activity_charts attr_reader :repo diff --git a/templates/activity.haml b/templates/activity.haml index 933bd7703..33ff9a755 100644 --- a/templates/activity.haml +++ b/templates/activity.haml @@ -1,6 +1,8 @@ .tabbable.tabs-left %ul.nav.nav-tabs %li.active + %a{:href => '#activity_by_date', 'data-toogle' => 'tab'}= :activity_by_date.t + %li %a{:href => '#hour_of_day', 'data-toogle' => 'tab'}= :hour_of_day.t %li %a{:href => '#day_of_week', 'data-toogle' => 'tab'}= :day_of_week.t @@ -14,7 +16,13 @@ %a{:href => '#year_month', 'data-toogle' => 'tab'}= :year_month.t .tab-content - .tab-pane.active{id: 'hour_of_day'} + .tab-pane.active{id: 'activity_by_date'} + .page-header + %h1.pagination-centered= :activity_by_date.t + = high_stock("charts.activity_by_date", charts.activity_by_date) + + + .tab-pane{id: 'hour_of_day'} .page-header %h1.pagination-centered= :hour_of_day.t %table{:class => "table table-bordered table-condensed"} @@ -30,7 +38,7 @@ %th= :percentage.t - repo.activity.by_hour_array.each do |commits| %td= (commits * 100.0 / repo.activity.by_hour_array.sum).round(2) - = high_chart("activity_by_hour", charts.activity_by_hour) + = high_chart("charts.activity_by_hour", charts.activity_by_hour) .tab-pane{id: 'day_of_week'} .page-header @@ -48,7 +56,7 @@ %th= :percentage.t - repo.activity.by_wday_array.each do |commits| %td= (commits * 100.0 / repo.activity.by_wday_array.sum).round(2) - = high_chart("activity_by_wday", charts.activity_by_wday) + = high_chart("charts.activity_by_wday", charts.activity_by_wday) .tab-pane{id: 'hour_of_week'} @@ -81,13 +89,13 @@ %th= :percentage.t - repo.activity.by_month_array.each do |commits| %td= (commits * 100.0 / repo.activity.by_month_array.sum).round(2) - = high_chart("activity_by_month", charts.activity_by_month) + = high_chart("charts.activity_by_month", charts.activity_by_month) .tab-pane{id: 'year'} .page-header %h1.pagination-centered= :year.t - = high_chart("activity_by_year", charts.activity_by_year) + = high_chart("charts.activity_by_year", charts.activity_by_year) .tab-pane{id: 'year_month'}