module CanvasFieldHelper

Public Instance Methods

canvas_data_field(active = false, options = {}) click to toggle source
# File app/helpers/canvas_field_helper.rb, line 18
def canvas_data_field(active = false, options = {})
  klass = active ? 'active' : ''
  data = { additional_data: options[:additional_data].to_json, initial_data: options[:initial_data].to_json,
           content: options[:content] || '', for: options[:for] }
  content_tag(:span, '', class: "#{klass} canvas_data_field", data: data)
end
canvas_field(options = {}) click to toggle source
# File app/helpers/canvas_field_helper.rb, line 4
def canvas_field(options = {})
  url = options[:server].to_s + '/'
  url += options[:namespace].to_s + '/' if options[:namespace]
  url += options[:controller] || 'canvas_fields'
  url = url.gsub('//', '/')

  background_url = options[:background_url].blank? ? '' : "url(#{options[:background_url]})"
  background = "background: #fff #{background_url} no-repeat center top"
  failure_message = 'Your browser does not support the canvas element.'
  additional_classes = options[:class] || ''
  content_tag :canvas, failure_message, class: "#{additional_classes} canvas_field", id: options[:id],
                                        data: collect_data(url, options), style: background
end
canvas_legend_field(options = {}) click to toggle source
# File app/helpers/canvas_field_helper.rb, line 25
def canvas_legend_field(options = {})
  locals = { no_icon: (options[:no_icon] || false), no_header: (options[:no_header] || false) }
  %w[left middle right].each do |side|
    locals["#{side}_text".to_sym] = options["#{side}_text"] || ''
    locals["#{side}_initial".to_sym] = options["#{side}_initial"] || ''
    locals["#{side}_color".to_sym] = options["#{side}_color"] || '#ff0000'
    locals["#{side}_active".to_sym] = options["#{side}_active"] || false
  end
  render partial: 'ajax_canvas_field/canvas_legend', locals: locals
end
ro_canvas_field(options = {}) click to toggle source
# File app/helpers/canvas_field_helper.rb, line 36
def ro_canvas_field(options = {})
  data = collect_ro_data(options)
  background_url = options[:background_url].blank? ? '' : "url(#{options[:background_url]})"
  background = "background: #fff #{background_url} no-repeat center top"
  if options[:half_size]
    data[:width] = data[:width] / 2
    data[:height] = data[:height] / 2
    background += "; background-size: #{data[:width]}px #{data[:height]}px"
  end
  failure_message = 'Your browser does not support the canvas element.'
  additional_classes = options[:class] || ''

  content_tag :canvas, failure_message, class: "#{additional_classes} ro_canvas_field",
                                        id: options[:id], data: data, style: background
end

Private Instance Methods

collect_data(url, options) click to toggle source
# File app/helpers/canvas_field_helper.rb, line 54
def collect_data(url, options)
  { url: url,
    strong_param: options[:param] || options[:controller]&.singularize || 'canvas_field',
    token: options[:token] || session[:token],
    width: options[:width] || AjaxCanvasField.config[:default_width],
    height: options[:height] || AjaxCanvasField.config[:default_height],
    left_color: options[:left_color] || '#ff0000',
    middle_color: options[:middle_color] || '#00ff00',
    right_color: options[:right_color] || '#0000ff',
    left_active: options[:left_active] || false,
    middle_active: options[:middle_active] || false,
    right_active: options[:right_active] || false }
end
collect_ro_data(options) click to toggle source
# File app/helpers/canvas_field_helper.rb, line 68
def collect_ro_data(options)
  { width: options[:width] || AjaxCanvasField.config[:default_width],
    height: options[:height] || AjaxCanvasField.config[:default_height],
    left_color: options[:left_color] || '#ff0000',
    middle_color: options[:middle_color] || '#00ff00',
    right_color: options[:right_color] || '#0000ff',
    initial_data: options[:initial_data].to_json }
end