Files
nairobi/app/helpers/proposals_dashboard_helper.rb
Juan Salvador Pérez García 7a9faef775 Fixes #224
Resource cards show the request status:

* Green solved by administrator.
* Blue + button: Available
* Blue + help text: Requested
* Red: Locked

A tooltip has been added to the card to improve its readability.
2018-07-17 17:59:12 +02:00

107 lines
3.0 KiB
Ruby

module ProposalsDashboardHelper
def my_proposal_menu_class
return 'is-active' if controller_name == 'proposals_dashboard' && action_name == 'index'
nil
end
def progress_menu_class
return 'is-active' if progress_menu_active?
nil
end
def community_menu_class
return 'is-active' if controller_name == 'proposals_dashboard' && action_name == 'community'
nil
end
def progress_menu_active?
is_proposed_action_request? || (controller_name == 'proposals_dashboard' && action_name == 'progress')
end
def resources_menu_visible?(proposal, resources)
can?(:manage_polls, proposal) || resources.any?
end
def resources_menu(&block)
menu_group('resources-menu', resources_menu_active?, &block)
end
def polls_menu(&block)
menu_entry(polls_menu_active?, &block)
end
def resources_menu_active?
polls_menu_active? || is_resource_request?
end
def polls_menu_active?
controller_name == 'polls'
end
def menu_group(id, active, &block)
html_class = nil
html_class = 'is-active' if active
content_tag(:ul, id: id, class: html_class) do
yield
end
end
def menu_entry(active, &block)
content = capture(&block)
html_class = nil
html_class = 'is-active' if active
content_tag(:li, content, class: html_class)
end
def is_resource_request?
controller_name == 'proposals_dashboard' && action_name == 'new_request' && proposal_dashboard_action&.resource?
end
def is_proposed_action_request?
controller_name == 'proposals_dashboard' && action_name == 'new_request' && proposal_dashboard_action&.proposed_action?
end
def is_request_active(id)
controller_name == 'proposals_dashboard' && action_name == 'new_request' && proposal_dashboard_action&.id == id
end
def resoure_availability_label(resource)
label = []
label << t('proposals_dashboard.resource.required_days', days: resource.day_offset) if resource.day_offset > 0
label << t('proposals_dashboard.resource.required_supports', supports: number_with_delimiter(resource.required_supports, delimiter: '.')) if resource.required_supports > 0
label.join(" #{t('proposals_dashboard.resource.and')}<br>")
end
def daily_selected_class
return nil if params[:group_by].blank?
'hollow'
end
def weekly_selected_class
return nil if params[:group_by] == 'week'
'hollow'
end
def monthly_selected_class
return nil if params[:group_by] == 'month'
'hollow'
end
def resource_card_class(resource, proposal)
return 'alert' unless resource.active_for?(proposal)
return 'success' if resource.executed_for?(proposal)
'primary'
end
def resource_tooltip(resource, proposal)
return t('proposals_dashboard.resource.resource_locked') unless resource.active_for?(proposal)
return t('proposals_dashboard.resource.view_resource') if resource.executed_for?(proposal)
return t('proposals_dashboard.resource.resource_requested') if resource.requested_for?(proposal)
t('proposals_dashboard.resource.request_resource')
end
end