Module: Decidim::Lausanne::Budgets::ProjectsHelper
- Included in:
- ApplicationHelper, BudgetMCell, ProjectListItemCell, ProjectMCell
- Defined in:
- app/helpers/decidim/lausanne/budgets/projects_helper.rb
Overview
A helper to render order and budgets actions
Instance Method Summary collapse
- #budget_confirm_disabled_attr ⇒ Object
-
#budget_to_currency(budget) ⇒ Object
Render a budget as a currency.
-
#current_order_budget_percent ⇒ Object
Return a percentage of the current order budget from the total budget.
-
#current_order_budget_percent_minimum ⇒ Object
Return the minimum percentage of the current order budget from the total budget.
-
#current_order_can_be_checked_out? ⇒ Boolean
Return true if the user can continue to the checkout process.
- #current_rule_description ⇒ Object
- #current_rule_explanation(scope = "budget_summary") ⇒ Object
- #display_rules? ⇒ Boolean
Instance Method Details
#budget_confirm_disabled_attr ⇒ Object
31 32 33 34 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 31 def budget_confirm_disabled_attr return if current_order_can_be_checked_out? && voting_open? && current_order.valid? %( disabled="disabled" ).html_safe end |
#budget_to_currency(budget) ⇒ Object
Render a budget as a currency
budget - A integer to represent a budget
11 12 13 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 11 def budget_to_currency(budget) number_to_currency budget, unit: Decidim.currency_unit, precision: 0 end |
#current_order_budget_percent ⇒ Object
Return a percentage of the current order budget from the total budget
16 17 18 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 16 def current_order_budget_percent current_order&.budget_percent.to_f.floor end |
#current_order_budget_percent_minimum ⇒ Object
Return the minimum percentage of the current order budget from the total budget
21 22 23 24 25 26 27 28 29 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 21 def current_order_budget_percent_minimum return 0 if current_order.minimum_projects_rule? if current_order.projects_rule? (current_order.minimum_projects.to_f / current_order.maximum_projects) else component_settings.vote_threshold_percent end end |
#current_order_can_be_checked_out? ⇒ Boolean
Return true if the user can continue to the checkout process
40 41 42 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 40 def current_order_can_be_checked_out? current_order&.can_checkout? end |
#current_rule_description ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 77 def current_rule_description return unless current_order if current_order.projects_rule? if current_order.minimum_projects.positive? && current_order.minimum_projects.to_i < current_order.maximum_projects.to_i t( ".projects_rule.description", minimum_number: current_order.minimum_projects, maximum_number: current_order.maximum_projects, scope: "decidim.lausanne.budgets.projects.budget_summary" ) else t( ".projects_rule_maximum_only.description", maximum_number: current_order.maximum_projects.to_i, scope: "decidim.lausanne.budgets.projects.budget_summary" ) end elsif current_order.minimum_projects_rule? t(".minimum_projects_rule.description", minimum_number: current_order.minimum_projects, count: current_order.minimum_projects - current_order.total_projects) else t(".vote_threshold_percent_rule.description", minimum_budget: budget_to_currency(current_order.minimum_budget.to_i)) end end |
#current_rule_explanation(scope = "budget_summary") ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 47 def current_rule_explanation(scope = "budget_summary") return unless current_order i18n_scope = "decidim.lausanne.budgets.projects.#{scope}" if current_order.projects_rule? if current_order.minimum_projects.positive? && current_order.minimum_projects.to_i < current_order.maximum_projects.to_i t( "#{i18n_scope}.projects_rule.instruction", minimum_number: current_order.minimum_projects, maximum_number: current_order.maximum_projects ) else t( "#{i18n_scope}.projects_rule_maximum_only.instruction", maximum_number: current_order.maximum_projects, ) end elsif current_order.minimum_projects_rule? t( "#{i18n_scope}.minimum_projects_rule.instruction", minimum_number: current_order.minimum_projects.to_i, count: [current_order.minimum_projects - current_order.total_projects, 0].max ) else t( "#{i18n_scope}.vote_threshold_percent_rule.instruction", minimum_budget: budget_to_currency(current_order.minimum_budget.to_i), ) end end |
#display_rules? ⇒ Boolean
43 44 45 |
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 43 def display_rules? !(user_record_submitted? || current_order.checked_out?) end |