/
end_user_action_segment_type.rb
44 lines (31 loc) · 1.33 KB
/
end_user_action_segment_type.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class EndUserActionSegmentType
class UserActionType < UserSegment::FieldType
include HandlerActions
def self.select_options
self.get_handlers(:action).collect { |handler| [handler[1][:description], handler[1][:handler].to_s] }
end
register_operation :is, [['Action', :model, {:class => EndUserActionSegmentType::UserActionType}]]
def self.is(cls, group_field, field, path)
path = path.split('/')
cls.scoped(:conditions => ["#{field[0]} = ? and #{field[1]} = ?", path[0..-2].join('/').sub(/^\//, ''), path[-1]])
end
end
class ActionType < UserSegment::FieldType
def self.select_options
EndUserAction.find(:all, :select => 'DISTINCT action').collect(&:action).sort
end
register_operation :is, [['Action', :model, {:class => EndUserActionSegmentType::ActionType}]]
def self.is(cls, group_field, field, action)
cls.scoped(:conditions => ["#{field} = ?", action])
end
end
class RendererType < UserSegment::FieldType
def self.select_options
EndUserAction.find(:all, :select => 'DISTINCT renderer').collect(&:renderer).sort
end
register_operation :is, [['Renderer', :model, {:class => EndUserActionSegmentType::RendererType}]]
def self.is(cls, group_field, field, renderer)
cls.scoped(:conditions => ["#{field} = ?", renderer])
end
end
end