Class: BaseList

Inherits:
Cuca::Widget show all
Includes:
Cuca::Generator::Markaby, Cuca::Generator::View
Defined in:
lib/cuca/stdlib/listwidget/list.rb

Overview

this is the parent class for dblist and staticdatalist

Direct Known Subclasses

DBListWidget, StaticDataListWidget

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Cuca::Generator::Markaby

#mab, #mabtext

Methods included from Cuca::Generator::View

#view, #view_p, #viewtext, #viewtext_p

Methods inherited from Cuca::Widget

#app, #cgi, #clear, clear_hints, #content, #content=, #controller, define_attr_method, #escape, #escapeHTML, #get_assigns, #hints, #initialize, #log, #params, #query_parameters, #request_method, #request_parameters, run_attr_method, #session, #to_s, #unescape, #unescapeHTML

Constructor Details

This class inherits a constructor from Cuca::Widget

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



12
13
14
# File 'lib/cuca/stdlib/listwidget/list.rb', line 12

def data
  @data
end

#rewrite_hooksObject (readonly)

Returns the value of attribute rewrite_hooks.



13
14
15
# File 'lib/cuca/stdlib/listwidget/list.rb', line 13

def rewrite_hooks
  @rewrite_hooks
end

Instance Method Details

#add_rewrite_hook(field_id, &proc) ⇒ Object

Add a proc to rewrite content of a field proc must take two arguments, |row_content, field_content|



18
19
20
21
# File 'lib/cuca/stdlib/listwidget/list.rb', line 18

def add_rewrite_hook(field_id, &proc)
   @rewrite_hooks||= {}
   @rewrite_hooks[field_id] = proc
end

#check_query_defObject

check query_def was makes sense … raise error if manipulated!



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/cuca/stdlib/listwidget/list.rb', line 60

def check_query_def
   # check if filters match possible column names
   cn = columns.collect { |c| c[:id] }
   @query_def.filters.each_pair do |f,v|
      raise Cuca::ApplicationException.new("Unknown column in filters: #{f}") unless cn.include?(f)
   end
   
   return if @query_def.order_by == ''
   # check if order_by is a valid column
   raise Cuca::ApplicationException.new("Unknown sort order: #{@query_def.order_by}") \
                   unless cn.include?(@query_def.order_by)
end

#columnsObject

OVERWRITE return a list of columns



37
38
39
# File 'lib/cuca/stdlib/listwidget/list.rb', line 37

def columns
  return [{:id=>"one", :display =>'One', :searchable=>false}, {:id=>'two', :display => 'three'}]
end

#load_query_definitionObject

TODO: Load from Session?



50
51
52
53
54
55
56
57
# File 'lib/cuca/stdlib/listwidget/list.rb', line 50

def load_query_definition
  qd = QueryDef.new(@list_name)
  qd.from_params(params)
  if request_method == 'POST' then
      qd.range = nil 		# reset pagination if someone submitted a filter
  end
  qd
end

#output(list_name) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/cuca/stdlib/listwidget/list.rb', line 73

def output(list_name)
  @list_name = list_name

  @columns = columns
  @query_def = load_query_definition
  check_query_def
#   $stderr.puts "Query: Range #{@query_def.range.inspect} Filters: #{@query_def.filters.inspect} Order: #{@query_def.order.inspect} By: #{@query_def.order_by.inspect}"
  query(@query_def)
  @paginate = paginate_links()
  @params = params
  @rewrite_hooks ||= {}

  callback_method = "#{@list_name}_data"

  if !controller.nil? && controller.methods.include?(callback_method) 
     controller.send(callback_method, @data, @total_rows)
  end

  view_p(erb_template)
end

#query(query_definition) ⇒ Object

OVERWRITE: fetch data and write:



45
46
47
# File 'lib/cuca/stdlib/listwidget/list.rb', line 45

def query(query_definition)
  return 
end

#rewrite_field(row, field_id, content) ⇒ Object



23
24
25
26
27
# File 'lib/cuca/stdlib/listwidget/list.rb', line 23

def rewrite_field(row, field_id, content)
#   $stderr.puts "REwrite field(#{row.inspect}, #{field_id.inspect}, #{content.inspect} - hooks #{@rewrite_hooks.inspect}"
  return content unless @rewrite_hooks[field_id]
  return @rewrite_hooks[field_id].call(row, content)
end

#setupObject

Use to initialize



32
33
# File 'lib/cuca/stdlib/listwidget/list.rb', line 32

def setup
end