Class: EasyQueryAdapter

Inherits:
Query
  • Object
show all
Defined in:
lib/redmine_extensions/easy_query_adapter.rb

Instance Method Summary collapse

Instance Method Details

#add_available_column(name, options = {}) ⇒ Object



117
118
119
120
121
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 117

def add_available_column(name, options={})
  @available_columns ||= []

  @available_columns << QueryColumn.new(name.to_sym, options)
end

#after_initializeObject



28
29
30
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 28

def after_initialize
  self.filters ||= {}
end

#create_entity_scope(options = {}) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 76

def create_entity_scope(options={})
  scope = entity_scope.where(statement)

  includes = default_find_include.dup
  includes.concat(Array.wrap(options[:includes]))

  preload = default_find_preload.dup
  preload.concat(Array.wrap(options[:preload]))

  joins = default_find_joins.dup
  joins.concat(Array.wrap(options[:joins]))

  filters.keys.each do |filter|
    f = available_filters[filter]
    next if f.blank?

    includes.concat(Array.wrap(f[:includes])) if f[:includes]
    joins.concat(Array.wrap(f[:joins])) if f[:joins]
  end if filters

  columns.each do |c|
    includes.concat(Array.wrap(c.includes)) if c.includes
    joins.concat(Array.wrap(c.joins)) if c.joins
    preload.concat(Array.wrap(c.preload)) if c.preload
  end

  if project
    includes << :project
  end

  includes.uniq!
  joins.uniq!
  preload.uniq!

  scope.includes(includes).references(includes).joins(joins).preload(preload)
end

#default_columns_namesObject



127
128
129
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 127

def default_columns_names
  default_list_columns
end

#default_find_includeObject



32
33
34
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 32

def default_find_include
  [].freeze
end

#default_find_joinsObject



40
41
42
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 40

def default_find_joins
  [].freeze
end

#default_find_preloadObject



36
37
38
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 36

def default_find_preload
  [].freeze
end

#default_list_columnsObject



44
45
46
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 44

def default_list_columns
  [].freeze
end

#entities(options = {}) ⇒ Object



113
114
115
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 113

def entities(options={})
  create_entity_scope(options).order(options[:order])
end

#entity_scopeObject



66
67
68
69
70
71
72
73
74
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 66

def entity_scope
  if @entity_scope.present?
    @entity_scope
  elsif entity.respond_to?(:visible)
    entity.visible
  else
    entity
  end
end

#formatterObject



48
49
50
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 48

def formatter
  @formatter
end

#init_formatter(object) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 52

def init_formatter(object)
  return @formatter if @formatter

  if entity
    begin
      formatter_klass = "#{entity}Formatter".constantize
    rescue NameError
    end
  end

  formatter_klass ||= EasyEntityFormatter
  @formatter = formatter_klass.new(object)
end

#queried_table_nameObject



131
132
133
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 131

def queried_table_name
  entity.table_name
end

#to_partial_pathObject



123
124
125
# File 'lib/redmine_extensions/easy_query_adapter.rb', line 123

def to_partial_path
  'easy_queries/index'
end