Module: Decidim::TimeTracker::ApplicationHelper

Includes:
Decidim::TranslatableAttributes
Included in:
Decidim::TimeTracker::Admin::ActivitiesController, Decidim::TimeTracker::Admin::TasksController, MilestoneCell, MilestonesController
Defined in:
app/helpers/decidim/time_tracker/application_helper.rb

Overview

Custom helpers, scoped to the time_tracker engine.

Instance Method Summary collapse

Instance Method Details

#activities_empty?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 90

def activities_empty?
  time_tracker.activities.active.empty?
end

#activities_labelObject



18
19
20
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 18

def activities_label
  translated_attribute(component_settings.activities_label).presence || t("models.activity.name", scope: "decidim.time_tracker")
end

#assignation_date(assignation) ⇒ Object



66
67
68
69
70
71
72
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 66

def assignation_date(assignation)
  if assignation.invited_at.present?
    t("models.assignation.fields.invited_at", time: l(assignation.invited_at, format: :short), scope: "decidim.time_tracker")
  elsif assignation.requested_at.present?
    t("models.assignation.fields.requested_at", time: l(assignation.requested_at, format: :short), scope: "decidim.time_tracker")
  end
end

#assignation_status_label(status) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 54

def assignation_status_label(status)
  klass = case status
          when "accepted" then "success"
          when "pending" then "warning"
          when "rejected" then "danger"
          end

   :span, class: "#{klass} label" do
    t("models.assignation.fields.statuses.#{status}", scope: "decidim.time_tracker")
  end
end

#assignations_labelObject



22
23
24
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 22

def assignations_label
  translated_attribute(component_settings.assignations_label).presence || t("models.assignation.name", scope: "decidim.time_tracker")
end

#clockify_seconds(total_seconds, padded: false) ⇒ Object

turns a number of seconds to a string 0h 0m 0s



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 35

def clockify_seconds(total_seconds, padded: false)
  total_seconds = total_seconds.to_i

  clock = {
    hours: total_seconds / (60 * 60),
    minutes: (total_seconds / 60) % 60,
    seconds: total_seconds % 60
  }

   :span, class: "time-tracker--clock" do
    safe_join(
      clock.map do |label, value|
        string_value = padded ? value.to_s.rjust(2, "0") : value
        (:span, t("decidim.time_tracker.clock.#{label}", n: string_value), class: ("text-muted" if value.zero?))
      end
    )
  end
end

#milestones_labelObject



30
31
32
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 30

def milestones_label
  translated_attribute(component_settings.milestones_label).presence || t("models.milestone.name", scope: "decidim.time_tracker")
end

#milestones_path(params = {}) ⇒ Object



10
11
12
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 10

def milestones_path(params = {})
  Decidim::EngineRouter.main_proxy(current_component).milestones_path(params)
end

#must_fill_in_data?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 86

def must_fill_in_data?
  !current_assignee.tos_accepted?(time_tracker) && !activities_empty?
end

#tasks_labelObject



14
15
16
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 14

def tasks_label
  translated_attribute(component_settings.tasks_label).presence || t("models.task.name", scope: "decidim.time_tracker")
end

#time_events_labelObject



26
27
28
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 26

def time_events_label
  translated_attribute(component_settings.time_events_label).presence || t("models.time_entry.name", scope: "decidim.time_tracker")
end

#user_joined_at(user) ⇒ Object



78
79
80
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 78

def user_joined_at(user)
  Assignee.for(user).tos_accepted_at(time_tracker)
end

#user_last_milestone(user) ⇒ Object



82
83
84
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 82

def user_last_milestone(user)
  Milestone.where(user: user).order(created_at: :desc).first
end

#user_total_time_dedicated(user) ⇒ Object



74
75
76
# File 'app/helpers/decidim/time_tracker/application_helper.rb', line 74

def user_total_time_dedicated(user)
  Assignation.where(user: user).sum(&:time_dedicated)
end