mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-19 17:46:07 +10:00
Merge branch 'improve-calendar-widget' into 'master'
Improve calendar widget See merge request !1453
This commit is contained in:
@@ -15,6 +15,10 @@
|
||||
&.s24 { margin-right: 4px; }
|
||||
}
|
||||
|
||||
&.avatar-tile {
|
||||
@include border-radius(0px);
|
||||
}
|
||||
|
||||
&.s16 { width: 16px; height: 16px; margin-right: 6px; }
|
||||
&.s24 { width: 24px; height: 24px; margin-right: 8px; }
|
||||
&.s26 { width: 26px; height: 26px; margin-right: 8px; }
|
||||
|
||||
@@ -28,13 +28,10 @@ class UsersController < ApplicationController
|
||||
|
||||
def calendar
|
||||
visible_projects = ProjectsFinder.new.execute(current_user)
|
||||
|
||||
# Get user repositories and collect timestamps for commits
|
||||
user_repositories = visible_projects.map(&:repository)
|
||||
calendar = Gitlab::CommitsCalendar.new(user_repositories, @user)
|
||||
calendar = Gitlab::CommitsCalendar.new(visible_projects, @user)
|
||||
@timestamps = calendar.timestamps
|
||||
@starting_year = (Time.now - 1.year).strftime("%Y")
|
||||
@starting_month = Date.today.strftime("%m").to_i
|
||||
@starting_year = calendar.starting_year
|
||||
@starting_month = calendar.starting_month
|
||||
|
||||
render 'calendar', layout: false
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
class ProjectContributions
|
||||
attr_reader :project, :user
|
||||
|
||||
def initialize(project, user)
|
||||
@project, @user = project, user
|
||||
end
|
||||
|
||||
def commits_log
|
||||
repository = project.repository
|
||||
|
||||
if !repository.exists? || repository.empty?
|
||||
return {}
|
||||
end
|
||||
|
||||
Rails.cache.fetch(cache_key) do
|
||||
repository.commits_per_day_for_user(user)
|
||||
end
|
||||
end
|
||||
|
||||
def cache_key
|
||||
"#{Date.today.to_s}-commits-log-#{project.id}-#{user.email}"
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
.dashboard
|
||||
%div
|
||||
= image_tag group_icon(@group.path), class: "avatar s90"
|
||||
= image_tag group_icon(@group.path), class: "avatar avatar-tile s90"
|
||||
.clearfix
|
||||
%h2
|
||||
= @group.name
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
%h4 Calendar:
|
||||
%h4 Calendar
|
||||
#cal-heatmap.calendar
|
||||
:javascript
|
||||
new calendar(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.row
|
||||
.col-md-8
|
||||
%h3.page-title
|
||||
= image_tag avatar_icon(@user.email, 90), class: "avatar s90", alt: ''
|
||||
= image_tag avatar_icon(@user.email, 90), class: "avatar avatar-tile s90", alt: ''
|
||||
= @user.name
|
||||
- if @user == current_user
|
||||
.pull-right
|
||||
@@ -15,7 +15,7 @@
|
||||
.clearfix
|
||||
|
||||
- if @groups.any?
|
||||
%h4 Groups:
|
||||
%h4 Groups
|
||||
= render 'groups', groups: @groups
|
||||
%hr
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
%hr
|
||||
%h4
|
||||
User Activity:
|
||||
User Activity
|
||||
|
||||
- if current_user
|
||||
%span.rss-icon.pull-right
|
||||
|
||||
@@ -2,15 +2,15 @@ module Gitlab
|
||||
class CommitsCalendar
|
||||
attr_reader :timestamps
|
||||
|
||||
def initialize(repositories, user)
|
||||
def initialize(projects, user)
|
||||
@timestamps = {}
|
||||
date_timestamps = []
|
||||
|
||||
repositories.select(&:exists?).reject(&:empty?).each do |raw_repository|
|
||||
commits_log = raw_repository.commits_per_day_for_user(user)
|
||||
date_timestamps << commits_log
|
||||
projects.reject(&:forked?).each do |project|
|
||||
date_timestamps << ProjectContributions.new(project, user).commits_log
|
||||
end
|
||||
|
||||
# Sumarrize commits from all projects per days
|
||||
date_timestamps = date_timestamps.inject do |collection, date|
|
||||
collection.merge(date) { |k, old_v, new_v| old_v + new_v }
|
||||
end
|
||||
@@ -21,5 +21,13 @@ module Gitlab
|
||||
@timestamps[timestamp] = commits if timestamp
|
||||
end
|
||||
end
|
||||
|
||||
def starting_year
|
||||
(Time.now - 1.year).strftime("%Y")
|
||||
end
|
||||
|
||||
def starting_month
|
||||
Date.today.strftime("%m").to_i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user