Class: Gitlab::ContributionsCalendar
- Inherits:
-
Object
- Object
- Gitlab::ContributionsCalendar
- Includes:
- Utils::StrongMemoize, TimeZoneHelper
- Defined in:
- lib/gitlab/contributions_calendar.rb
Instance Attribute Summary collapse
-
#contributor ⇒ Object
readonly
Returns the value of attribute contributor.
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#groups ⇒ Object
readonly
Returns the value of attribute groups.
-
#projects ⇒ Object
readonly
Returns the value of attribute projects.
Instance Method Summary collapse
- #activity_dates ⇒ Object
- #events_by_date(date) ⇒ Object
-
#initialize(contributor, current_user = nil) ⇒ ContributionsCalendar
constructor
A new instance of ContributionsCalendar.
Methods included from TimeZoneHelper
#local_time, #local_timezone_instance, #timezone_data, #timezone_data_with_unique_identifiers
Constructor Details
#initialize(contributor, current_user = nil) ⇒ ContributionsCalendar
Returns a new instance of ContributionsCalendar.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/gitlab/contributions_calendar.rb', line 13 def initialize(contributor, current_user = nil) @contributor = contributor @contributor_time_instance = local_timezone_instance(contributor.timezone).now @current_user = current_user @groups = [] # Overriden in EE @projects = ContributedProjectsFinder.new( user: @contributor, current_user: current_user, params: { ignore_visibility: @contributor.include_private_contributions? } ).execute end |
Instance Attribute Details
#contributor ⇒ Object (readonly)
Returns the value of attribute contributor.
8 9 10 |
# File 'lib/gitlab/contributions_calendar.rb', line 8 def contributor @contributor end |
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
9 10 11 |
# File 'lib/gitlab/contributions_calendar.rb', line 9 def current_user @current_user end |
#groups ⇒ Object (readonly)
Returns the value of attribute groups.
10 11 12 |
# File 'lib/gitlab/contributions_calendar.rb', line 10 def groups @groups end |
#projects ⇒ Object (readonly)
Returns the value of attribute projects.
11 12 13 |
# File 'lib/gitlab/contributions_calendar.rb', line 11 def projects @projects end |
Instance Method Details
#activity_dates ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/gitlab/contributions_calendar.rb', line 27 def activity_dates return {} if groups.blank? && projects.blank? start_time = @contributor_time_instance.years_ago(1).beginning_of_day end_time = @contributor_time_instance.end_of_day date_interval = "INTERVAL '#{@contributor_time_instance.utc_offset} seconds'" contributions_between(start_time, end_time).count_by_dates(date_interval) end |
#events_by_date(date) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/gitlab/contributions_calendar.rb', line 38 def events_by_date(date) return Event.none unless can_read_cross_project? date_in_time_zone = date.in_time_zone(@contributor_time_instance.time_zone) contributions_between(date_in_time_zone.beginning_of_day, date_in_time_zone.end_of_day).with_associations end |