Class: Workarea::Search::Admin
- Inherits:
-
Object
- Object
- Workarea::Search::Admin
show all
- Includes:
- Elasticsearch::Document
- Defined in:
- app/models/workarea/search/admin.rb,
app/models/workarea/search/admin/user.rb,
app/models/workarea/search/admin/order.rb,
app/models/workarea/search/admin/content.rb,
app/models/workarea/search/admin/release.rb,
app/models/workarea/search/admin/segment.rb,
app/models/workarea/search/admin/navigation.rb,
app/models/workarea/search/admin/releasable.rb,
app/models/workarea/search/admin/pricing_sku.rb,
app/models/workarea/search/admin/content_page.rb,
app/models/workarea/search/admin/content_asset.rb,
app/models/workarea/search/admin/inventory_sku.rb,
app/models/workarea/search/admin/catalog_product.rb,
app/models/workarea/search/admin/fulfillment_sku.rb,
app/models/workarea/search/admin/navigation_menu.rb,
app/models/workarea/search/admin/catalog_category.rb,
app/models/workarea/search/admin/pricing_discount.rb,
app/models/workarea/search/admin/payment_transaction.rb
Direct Known Subclasses
CatalogCategory, CatalogProduct, Content, ContentAsset, ContentPage, FulfillmentSku, InventorySku, Navigation, NavigationMenu, Order, PaymentTransaction, PricingDiscount, PricingSku, Release, Segment, User
Defined Under Namespace
Modules: Releasable
Classes: CatalogCategory, CatalogProduct, Content, ContentAsset, ContentPage, FulfillmentSku, InventorySku, Navigation, NavigationMenu, Order, PaymentTransaction, PricingDiscount, PricingSku, Release, Segment, User
Class Method Summary
collapse
Instance Method Summary
collapse
all, #as_bulk_document, current_index_prefix, #destroy, #initialize, #save
Class Method Details
.for(model) ⇒ Object
31
32
33
34
35
36
|
# File 'app/models/workarea/search/admin.rb', line 31
def self.for(model)
subclass = model.model_name.singular_route_key.camelize
"Workarea::Search::Admin::#{subclass}".constantize.new(model)
rescue NameError
nil
end
|
.jump_to(params, size = Workarea.config.default_admin_jump_to_result_count) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'app/models/workarea/search/admin.rb', line 6
def self.jump_to(params, size = Workarea.config.default_admin_jump_to_result_count)
query = {
query: {
match_phrase_prefix: {
jump_to_search_text: {
query: params[:q],
max_expansions: 10
}
}
},
size: size,
sort: [{ jump_to_position: :asc }]
}
search(query)['hits']['hits'].map do |result|
{
label: result['_source']['jump_to_text'],
type: result['_source']['facets']['type'],
model_class: result['_source']['model_class'],
route_helper: result['_source']['jump_to_route_helper'],
to_param: result['_source']['jump_to_param']
}
end
end
|
Instance Method Details
#as_document ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'app/models/workarea/search/admin.rb', line 114
def as_document
{
id: id,
name: name,
facets: facets,
created_at: created_at,
updated_at: updated_at,
keywords: sanitized_keywords,
search_text: search_text,
jump_to_text: jump_to_text,
jump_to_search_text: jump_to_search_text,
jump_to_position: jump_to_position,
jump_to_route_helper: jump_to_route_helper,
jump_to_param: jump_to_param,
releasable: releasable?
}
end
|
#created_at ⇒ Object
102
103
104
|
# File 'app/models/workarea/search/admin.rb', line 102
def created_at
model.created_at
end
|
#facets ⇒ Object
76
77
78
79
80
|
# File 'app/models/workarea/search/admin.rb', line 76
def facets
base = { status: status, type: type }
base[:tags] = model.tags if model.respond_to?(:tags)
base
end
|
#id ⇒ Object
48
49
50
|
# File 'app/models/workarea/search/admin.rb', line 48
def id
"#{type}-#{model.id}"
end
|
#jump_to_param ⇒ Object
98
99
100
|
# File 'app/models/workarea/search/admin.rb', line 98
def jump_to_param
model.to_param
end
|
#jump_to_position ⇒ Object
90
91
92
|
# File 'app/models/workarea/search/admin.rb', line 90
def jump_to_position
999
end
|
#jump_to_route_helper ⇒ Object
94
95
96
|
# File 'app/models/workarea/search/admin.rb', line 94
def jump_to_route_helper
"#{model.model_name.singular_route_key}_path"
end
|
#jump_to_search_text ⇒ Object
86
87
88
|
# File 'app/models/workarea/search/admin.rb', line 86
def jump_to_search_text
search_text
end
|
#jump_to_text ⇒ Object
82
83
84
|
# File 'app/models/workarea/search/admin.rb', line 82
def jump_to_text
name
end
|
#keywords ⇒ Object
68
69
70
|
# File 'app/models/workarea/search/admin.rb', line 68
def keywords
[model.id, *model.try(:tags)]
end
|
#name ⇒ Object
52
53
54
|
# File 'app/models/workarea/search/admin.rb', line 52
def name
model.name
end
|
#releasable? ⇒ Boolean
110
111
112
|
# File 'app/models/workarea/search/admin.rb', line 110
def releasable?
model.is_a?(Workarea::Releasable)
end
|
#sanitized_keywords ⇒ Object
72
73
74
|
# File 'app/models/workarea/search/admin.rb', line 72
def sanitized_keywords
keywords.reject(&:blank?).map(&:to_s).map(&:downcase).map(&:strip)
end
|
#search_text ⇒ Object
64
65
66
|
# File 'app/models/workarea/search/admin.rb', line 64
def search_text
raise(NotImplementedError, "#{self.class} must implement #search_text")
end
|
#should_be_indexed? ⇒ Boolean
Allows subclass instances to specify whether they should be included in the Admin index. For example, allow system Content to be included, but not Content that belongs to a model.
44
45
46
|
# File 'app/models/workarea/search/admin.rb', line 44
def should_be_indexed?
true
end
|
#status ⇒ Object
60
61
62
|
# File 'app/models/workarea/search/admin.rb', line 60
def status
nil
end
|
#type ⇒ Object
56
57
58
|
# File 'app/models/workarea/search/admin.rb', line 56
def type
model.class.name.demodulize.underscore
end
|
#updated_at ⇒ Object
106
107
108
|
# File 'app/models/workarea/search/admin.rb', line 106
def updated_at
model.updated_at
end
|