/lib/widgets/progressbar_helper.rb

http://github.com/paolodona/rails-widgets · Ruby · 39 lines · 28 code · 2 blank · 9 comment · 6 complexity · dd6594725e68088b93673aead3a761ae MD5 · raw file

  1. module Widgets
  2. module ProgressbarHelper
  3. include CssTemplate
  4. # show a progressbar
  5. #
  6. # eg: <%= progressbar 35, :generate_css => true %>
  7. # or <%= progressbar [35,78,15] %>
  8. #
  9. # options
  10. # ===
  11. # :generate_css defaults to false
  12. # :adjust defaults to false
  13. def progressbar values, options={}
  14. raise ArgumentError, "Missing value(s) parameter in progressbar call" unless values
  15. raise ArgumentError, "The value parameter has to be a Numeric o Array" unless values.kind_of?(Array) or values.kind_of?(Numeric)
  16. if values.kind_of? Numeric # single value
  17. total = 100
  18. values = [values]
  19. else # Array of values
  20. total = values.sum
  21. end
  22. html = ""
  23. html << render_css('progressbar') if options[:generate_css] == true
  24. html << '<div class="progressbar">'
  25. values.dup.each_with_index do |value, index|
  26. if total == 0
  27. percentage = 0
  28. else
  29. percentage = options[:adjust] ? (value * 100 / total) : value
  30. end
  31. css_class = "progressbar_color_#{index.modulo(10)}"
  32. html << "<div style='width: #{percentage}%;' class='#{css_class}'></div>"
  33. end
  34. html << "</div>"
  35. end
  36. end
  37. end