Sha256: a5ff18e858e9f4dda0ea946fe4d0a0678a20385e0965eaebdb6cbddd5dc152f9

Contents?: true

Size: 1.84 KB

Versions: 5

Compression:

Stored size: 1.84 KB

Contents

require 'rack/utils'
require 'cgi'

module LedgerWeb
  module Helpers

    include Rack::Utils

    def partial (template, locals = {})
      erb(template, :layout => false, :locals => locals)
    end
  
    def table(report, options = {})
      links = options[:links] || {}
      partial(:table, :report => report, :links => links)
    end
  
    def query(options={}, &block)
      q = capture(&block)
      report = LedgerWeb::Report.from_query(q)
      if options[:pivot]
        report = report.pivot(options[:pivot], options[:pivot_sort_order])
      end
      return report
    end
  
    def expect(expected)
      not_present = []
      expected.each do |key|
        if not params.has_key? key
          not_present << key
        end
      end
  
      if not_present.length > 0
        raise "Missing params: #{not_present.join(', ')}"
      end
    end
  
    def linkify(links, row, value, display_value)
      links.each do |key, val|
        if key.is_a? String
          key = /^#{key}$/
        end
  
        if key.match(value[1].title.to_s)
          url = String.new(links[key])
          row.each_with_index do |v,i|
            url.gsub!(":#{i}", CGI.escape(v[0].to_s))
          end
  
          url.gsub!(':title', CGI.escape(value[1].title.to_s))
          url.gsub!(':now', CGI.escape(DateTime.now.strftime('%Y-%m-%d')))
          display_value = "<a href='#{url}'>#{escape_html(display_value)}</a>"
        else
          display_value = escape_html(display_value)
        end

      end
      display_value
    end

    def visualization(report, options={}, &block)
      vis = capture(&block)
      @vis_count ||= 0
      @vis_count += 1
      @_out_buf.concat(
        partial(
          :visualization,
          :report => report,
          :visualization_code => vis, 
          :div_id => "vis_#{@vis_count}"
        )
      )
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ledger_web-1.4.4 lib/ledger_web/helpers.rb
ledger_web-1.4.3 lib/ledger_web/helpers.rb
ledger_web-1.4.2 lib/ledger_web/helpers.rb
ledger_web-1.4.1 lib/ledger_web/helpers.rb
ledger_web-1.4 lib/ledger_web/helpers.rb