forked from OpenNeo/impress
species/zone conditions now render properly, instead of raising parse error from elastic
This commit is contained in:
parent
6e09b8bc10
commit
66e0ba28d7
2 changed files with 41 additions and 30 deletions
|
@ -7,6 +7,15 @@
|
||||||
ANCHORS:
|
ANCHORS:
|
||||||
- &name_locale_partial
|
- &name_locale_partial
|
||||||
"name.<<locale>>^<<boost= 1>>"
|
"name.<<locale>>^<<boost= 1>>"
|
||||||
|
- &species_support_id_partial
|
||||||
|
term:
|
||||||
|
species_support_id: <<species_support_id>>
|
||||||
|
- &occupied_zone_id_partial
|
||||||
|
terms:
|
||||||
|
occupied_zone_id: <<occupied_zone_id>>
|
||||||
|
- &restricted_zone_id_partial
|
||||||
|
terms:
|
||||||
|
restricted_zone_id: <<restricted_zone_id>>
|
||||||
|
|
||||||
_name_locales:
|
_name_locales:
|
||||||
*name_locale_partial
|
*name_locale_partial
|
||||||
|
@ -14,6 +23,24 @@ _name_locales:
|
||||||
_negative_name_locales:
|
_negative_name_locales:
|
||||||
*name_locale_partial
|
*name_locale_partial
|
||||||
|
|
||||||
|
_species_support_ids:
|
||||||
|
*species_support_id_partial
|
||||||
|
|
||||||
|
_negative_species_support_ids:
|
||||||
|
*species_support_id_partial
|
||||||
|
|
||||||
|
_occupied_zone_ids:
|
||||||
|
*occupied_zone_id_partial
|
||||||
|
|
||||||
|
_negative_occupied_zone_ids:
|
||||||
|
*occupied_zone_id_partial
|
||||||
|
|
||||||
|
_restricted_zone_ids:
|
||||||
|
*restricted_zone_id_partial
|
||||||
|
|
||||||
|
_negative_restricted_zone_ids:
|
||||||
|
*restricted_zone_id_partial
|
||||||
|
|
||||||
item_search:
|
item_search:
|
||||||
- query:
|
- query:
|
||||||
bool:
|
bool:
|
||||||
|
@ -25,21 +52,15 @@ item_search:
|
||||||
is_nc: <<is_nc= ~>>
|
is_nc: <<is_nc= ~>>
|
||||||
- term:
|
- term:
|
||||||
is_pb: <<is_pb= ~>>
|
is_pb: <<is_pb= ~>>
|
||||||
- term:
|
- <<_species_support_ids= ~>>
|
||||||
species_support_id: <<species_support_id= ~>>
|
- <<_occupied_zone_ids= ~>>
|
||||||
- term:
|
- <<_restricted_zone_ids= ~>>
|
||||||
occupied_zone_id: <<occupied_zone_id= ~>>
|
|
||||||
- term:
|
|
||||||
restricted_zone_id: <<restricted_zone_id= ~>>
|
|
||||||
must_not:
|
must_not:
|
||||||
- term:
|
|
||||||
species_support_id: <<negative_species_support_id= ~>>
|
|
||||||
- term:
|
|
||||||
occupied_zone_id: <<negative_occupied_zone_id= ~>>
|
|
||||||
- term:
|
|
||||||
restricted_zone_id: <<negative_restricted_zone_id= ~>>
|
|
||||||
- multi_match:
|
- multi_match:
|
||||||
query: <<negative_name= ~>>
|
query: <<negative_name= ~>>
|
||||||
fields: <<_negative_name_locales>>
|
fields: <<_negative_name_locales>>
|
||||||
|
- <<_negative_species_support_ids= ~>>
|
||||||
|
- <<_negative_occupied_zone_ids= ~>>
|
||||||
|
- <<_negative_restricted_zone_ids= ~>>
|
||||||
sort:
|
sort:
|
||||||
- name.<<locale>>.untouched
|
- name.<<locale>>.untouched
|
||||||
|
|
|
@ -8,35 +8,25 @@ class Item
|
||||||
end
|
end
|
||||||
|
|
||||||
def <<(filter)
|
def <<(filter)
|
||||||
if filter.value.respond_to?(:each)
|
if @values[!filter.positive?].include?(filter.value)
|
||||||
filter.value.each do |value|
|
raise Item::Search::Contradiction,
|
||||||
add_value(value, filter.positive?)
|
"positive #{key} and negative #{key} both contain #{filter.value}"
|
||||||
end
|
|
||||||
else
|
|
||||||
add_value(filter.value, filter.positive?)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@values[filter.positive?] << filter.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_flex_params
|
def to_flex_params
|
||||||
{
|
{
|
||||||
key => nil_if_empty(@values[true]),
|
:"_#{key}s" => nil_if_empty(@values[true]),
|
||||||
:"negative_#{key}" => nil_if_empty(@values[false])
|
:"_negative_#{key}s" => nil_if_empty(@values[false])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def add_value(value, is_positive)
|
|
||||||
if @values[!is_positive].include?(value)
|
|
||||||
raise Item::Search::Contradiction,
|
|
||||||
"positive #{key} and negative #{key} both contain #{value}"
|
|
||||||
end
|
|
||||||
|
|
||||||
@values[is_positive] << value
|
|
||||||
end
|
|
||||||
|
|
||||||
def nil_if_empty(set)
|
def nil_if_empty(set)
|
||||||
set unless set.empty?
|
set.map { |value| {key => value} } unless set.empty?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue