module Spyro::ActionViewExtension::ProjectsHelper

Public Instance Methods

get_project_status(project, user = current_user, opts = {}) click to toggle source

Va renvoyer juste le texte, avec du cache

# File lib/spyro/helpers/action_view_extension.rb, line 527
def get_project_status project, user = current_user, opts = {}
  cache [project, user.id, (!project.begin_at.nil? and project.begin_at.future?), opts] do
    get_uncached_project_status project, current_user, opts
  end
end
get_project_status_icon(project, user = current_user, opts = {}) click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 490
def get_project_status_icon project, user = current_user, opts = {}
  # @TODO mettre des vraies icons, fuck pour l'instant
  ""
end
get_project_status_text(project, user = current_user, opts = {class: ""}) click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 495
def get_project_status_text project, user = current_user, opts = {class: ""}
  s = get_project_status(project, user, opts)
  get_uncached_project_status_text(s, project)
end
get_uncached_project_status(project, user = current_user, opts = {}) click to toggle source

Va renvoyer juste le texte

# File lib/spyro/helpers/action_view_extension.rb, line 535
def get_uncached_project_status project, user = current_user, opts = {}
  raise "The hash need has_children, team and pu keys" unless (opts.has_key?(:has_children) and opts.has_key?(:team) and opts.has_key?(:pu))
  if opts[:pu].nil?
    :not_registered
  elsif opts[:team].nil? and not opts[:has_children]# and user.teams.where(:project_id => project.id).empty?
    :searching_a_group
  elsif opts[:team]
    if opts[:team].closed?
      if opts[:team].final_mark
        :finished
      elsif opts[:has_children]
        :in_progress
      else
        :waiting_for_correction
      end
    elsif opts[:team].locked?
      if project.begin_at and project.begin_at.future?
        :waiting_to_start
      else
        :in_progress
      end
    else
      :creating_group
    end

  elsif opts[:has_children]
    :parent
  else
    :unknown
  end
end
get_uncached_project_status_text(status, project, opts = {class: ""}) click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 500
def get_uncached_project_status_text status, project, opts = {class: ""}
  case status
  when :not_registered
    "<span class='#{opts[:class]} #{opts[:class]}-default'>Not registered</span>"
  when :searching_a_group
    "<span class='#{opts[:class]} #{opts[:class]}-default'>searching a group</span>"
  when :finished
    "<span class='#{opts[:class]} #{opts[:class]}-success'>finished</span>"
  when :in_progress
    "<span class='#{opts[:class]} #{opts[:class]}-warning'>in progress</span>"
  when :waiting_for_correction
    "<span class='#{opts[:class]} #{opts[:class]}-success'>waiting for correction</span>"
  when :waiting_to_start
     "<span class='#{opts[:class]} #{opts[:class]}-default'>waiting to start (<span data-long-date='#{project.begin_at}'></span>)</span>"
  when :in_progress
    "<span class='#{opts[:class]} #{opts[:class]}-warning'>in progress</span>"
  when :creating_group
    "<span class='#{opts[:class]} #{opts[:class]}-default'>creating group</span>"
  when :parent
    "<span class='project-status-icon project-status-parent'></span>"
  else
    "<span class='project-status-icon project-status-no-idea'></span>"
  end
end
project_progress_percentage(project, user = User.current_user) click to toggle source

View Helper.……

# File lib/spyro/helpers/action_view_extension.rb, line 568
def project_progress_percentage project, user = User.current_user
  progr = {:recommended_pct => 0, :warning_pct => 0, :success_pct => 0}

  has_estimations = (project.estimate_time)
  has_begin_at = !project.begin_at.nil?
  has_project_user = project.ar_projects_user(user).any?

  return progr unless (has_estimations or project.begin_at) and has_project_user

  if project.begin_at
    start = Time.zone.now.to_i - project.begin_at.to_i
    progr[:recommended_pct] = ((start * 100) / (project.end_at.to_i - project.begin_at.to_i))
    progr[:recommended_pct] = 100 if progr[:recommended_pct] > 100
  else
    start = Time.zone.now - project.ar_projects_user(user).first.created_at
    progr[:recommended_pct] = (start * 100) / project.estimate_time

    if progr[:recommended_pct] > 100
      progr[:recommended_pct] = ((project.estimate_time * 100) / project.estimate_time)
      progr[:warning_pct] = ((start * 100) / project.estimate_time) - progr[:recommended_pct]
      progr[:warning_pct] = 100 - progr[:recommended_pct] if progr[:warning_pct] > (100 - progr[:recommended_pct])
    end

    if project.finished?
      progr[:success_pct] = 100 - (progr[:recommended_pct] + progr[:warning_pct])
    end

  end

  return progr
end