attr :filter_key, :filter_item_name
def init
- super
@filter_key = @list_manifest.filter_key
@filter_item_name = @list_manifest.filter_item_name
@filter_model = ::Manifest.manifest.models[@filter_item_name].classify
@filter_table_name = @filter_model.table_name
+ super
end
- def where_condition filter_item_id
+ def where_condition
w = self.base_where_condition
w += ' and ' unless w.blank?
- [w + @table_name + '.' + @filter_key + ' = ?', filter_item_id]
+ [w + @table_name + '.' + @filter_key + ' = ?', self.filter_id]
end
def include_hash
w
end
- def visible? item_id, operators
+ def visible?
r = nil
begin
- r = @filter_model.show(item_id, operators)
+ r = @filter_model.show(self.filter_id, @operators)
rescue ActiveRecord::RecordNotFound, ActiveRecord::Forbidden
r = false
end
r
end
- def items operators, options, offset, page_size
- filter_item_id = options[:id]
- if self.visible? filter_item_id, operators
- @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
+ def items
+ if self.visible?
+ @model.where(
+ self.where_condition
+ ).includes(
+ self.include_hash
+ ).order(
+ self.order_by
+ ).offset(@offset).limit(@limit)
else
[]
end
end
- def count operators, options
- filter_item_id = options[:id]
- if self.visible? filter_item_id, operators
- @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).count
+ def count
+ if self.visible?
+ @model.where(
+ self.where_condition
+ ).includes(
+ self.include_hash
+ ).count
else
0
end