module TellThem

Constants

MAX_URL_DISPLAY_LENGTH

Public Class Methods

add(data) click to toggle source
# File lib/tell-them/tell-them.rb, line 9
def self.add(data)
  TellThemStore.instance.add(data)
end
data() click to toggle source
# File lib/tell-them/tell-them.rb, line 22
def self.data
  TellThemStore.instance.data
end
enable_media_queries(data) click to toggle source
# File lib/tell-them/tell-them.rb, line 13
def self.enable_media_queries(data)
  TellThemStore.instance.enable_media_queries(data)
end
has_data?() click to toggle source
# File lib/tell-them/tell-them.rb, line 18
def self.has_data?
  TellThemStore.instance.has_data?
end
has_media_grid_info?() click to toggle source
# File lib/tell-them/tell-them.rb, line 30
def self.has_media_grid_info?
  TellThemStore.instance.has_media_grid_info?
end
has_media_queries?() click to toggle source
# File lib/tell-them/tell-them.rb, line 26
def self.has_media_queries?
  TellThemStore.instance.has_media_queries?
end
html() click to toggle source
# File lib/tell-them/tell-them.rb, line 42
def self.html
  return '' unless (has_data? || has_media_queries?) && ::Rails.env.development?
  return ActionController::Base.helpers.stylesheet_link_tag('tell-them') + 
    box_html.html_safe + 
    ActionController::Base.helpers.javascript_include_tag('tell-them', async: true)
end
media_grid_max_columns() click to toggle source
# File lib/tell-them/tell-them.rb, line 38
def self.media_grid_max_columns
  TellThemStore.instance.media_grid_max_columns
end
media_queries() click to toggle source
# File lib/tell-them/tell-them.rb, line 34
def self.media_queries
  TellThemStore.instance.media_queries
end
reset() click to toggle source
# File lib/tell-them/tell-them.rb, line 5
def self.reset
  TellThemStore.instance
end

Private Class Methods

box_html() click to toggle source
# File lib/tell-them/tell-them.rb, line 51
def self.box_html
  box = ''
  box += media_queries_style_html
  box +=  '<div id="tell-them-box">'
  box += '  <div class="contents">'
  box += '    <div class="controls">'
  box += '      <div class="corners">'
  box += '        <button data-target-corner="top-left"></button>'
  box += '        <button data-target-corner="top-right"></button>'
  box += '        <button data-target-corner="bottom-left"></button>'
  box += '        <button class="current" data-target-corner="bottom-right"></button>'
  box += '      </div>'
  box += media_queries_flag_html
  box += '      <button class="grid">Grid</button>'
  box += '      <button class="pin">Pin</button>'
  box += '    </div>'
  box += '    <dl class="list">'
  data.each do |k,v|
    box += "      <li><span class=\"list-header\">#{k}: </span>"
    begin
      URI::parse(v)
      box += "      <span class=\"list-value\"><a href=\"#{v}\">#{shorten(v)}</a></span>"
    rescue URI::InvalidURIError
      box += "      <span class=\"list-header\">#{v}</span>"
    end
    box += "      </li>"
  end
  box += '    </dl>'
  box += '  </div>'
  box += '</div>'
  box += media_grid_html
  box
end
column_array() click to toggle source
# File lib/tell-them/tell-them.rb, line 137
def self.column_array
  array = []
  media_queries.each { |mq| array << mq[:columns] }
  array
end
media_grid_css(query_data) click to toggle source
# File lib/tell-them/tell-them.rb, line 143
def self.media_grid_css(query_data)
  return '' unless has_media_grid_info?
  grid_css =  "  \#grid-overlay .grid-content .grid-column { display: none !important; }\n"
  grid_css += "  \#grid-overlay .grid-content .grid-space { display: none !important; }\n"
  grid_css += "  \#grid-overlay .grid-content { margin-top: #{query_data[:margin_top]} !important; }\n" if query_data.has_key?(:margin_top)

  if query_data[:columns] == 1
    grid_css += "  \#grid-overlay .grid-content { margin-left: #{query_data[:margins]} !important; margin-right: #{query_data[:margins]} !important }\n"
    grid_css += "  \#grid-overlay .grid-content .grid-column.valid-for-1 { display: inline-block; width: 100%; }\n"
  else
    units = query_data[:column_width].gsub(/[0-9]/,'')
    total_c_width = query_data[:column_width].gsub(units,'').to_i * query_data[:columns]
    total_s_width = query_data[:column_space].gsub(units,'').to_i * (query_data[:columns] - 1)
    total_width = (total_c_width + total_s_width).to_s + units
    grid_css += "  \#grid-overlay .grid-content { width: #{total_width}; }\n"
    grid_css += "  \#grid-overlay .grid-content .grid-column.valid-for-#{query_data[:columns]} { display: inline-block !important; width: #{query_data[:column_width]} }\n"
    grid_css += "  \#grid-overlay .grid-content .grid-space.valid-for-#{query_data[:columns]} { display: inline-block !important; width: #{query_data[:column_space]} }\n"
  end
end
media_grid_html() click to toggle source
# File lib/tell-them/tell-them.rb, line 118
def self.media_grid_html
  return '' unless has_media_grid_info?
  grid_box =  '  <div id="grid-overlay">' + "\n"
  grid_box += '    <div class="grid-content">' + "\n"
  grid_box += "       <div class=\"grid-column #{validity_string}\"></div>" + "\n"
  (2..media_grid_max_columns).each do |c|
    grid_box += "       <div class=\"grid-space #{validity_string(c)}\"></div>" + "\n"
    grid_box += "       <div class=\"grid-column #{validity_string(c)}\"></div>" + "\n"
  end
  grid_box += '    </div>' + "\n"
  grid_box += '  </div>' + "\n"
end
media_queries_flag_html() click to toggle source
# File lib/tell-them/tell-them.rb, line 109
def self.media_queries_flag_html
  return '' unless has_media_queries?
  flag_div = '<div class="media-flags">'
  media_queries.each do |query_data|
    flag_div += "<span class=\"media-flag #{query_data[:name]}\">#{query_data[:name].titleize}</span>"
  end
  flag_div += '</div>'
end
media_queries_style_html() click to toggle source
# File lib/tell-them/tell-them.rb, line 90
def self.media_queries_style_html
  return '' unless has_media_queries?
  style_box = "<style>"
  style_box += '#tell-them-box .media-flag { display: none; }' + "\n"

  media_queries.each do |query_data|
    style_box += '@media '
    style_box += "(min-width: #{query_data[:min]}) " if query_data[:min]
    style_box += ' and ' if query_data[:min] && query_data[:max]
    style_box += "(max-width: #{query_data[:max]}) " if query_data[:max]
    style_box += "{ \n"
    style_box += "  \#tell-them-box:before { content: \"#{query_data[:initial]}\"; }\n" if query_data[:initial]
    style_box += "  \#tell-them-box .#{query_data[:name]} { display: block; }\n"
    style_box += media_grid_css(query_data)
    style_box += " } \n"
  end
  style_box += "</style>"
end
shorten(value) click to toggle source
# File lib/tell-them/tell-them.rb, line 85
def self.shorten(value)
  return value if value.length <= MAX_URL_DISPLAY_LENGTH
  value[0..MAX_URL_DISPLAY_LENGTH] + '...'
end
validity_string(columns = nil) click to toggle source
# File lib/tell-them/tell-them.rb, line 131
def self.validity_string(columns = nil)
  validity_string = ""
  column_array.each { |c| validity_string += "valid-for-#{c} " if columns.nil? || c >= columns }
  validity_string
end