multi-solr 01.07.02 → 01.07.03
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/multi_solr/solr_filter_collection.rb +0 -18
- data/lib/multi_solr/solr_filter_date_range.rb +0 -19
- data/lib/multi_solr/solr_filter_range.rb +6 -6
- data/lib/multi_solr/solr_filter_simple.rb +0 -28
- data/lib/multi_solr/version.rb +1 -1
- data/spec/multi_solr/solr_filter_range_spec.rb +6 -6
- metadata +4 -4
@@ -44,24 +44,6 @@ class MultiSolr::SolrFilterCollection < MultiSolr::SolrFilterSimple
|
|
44
44
|
end
|
45
45
|
|
46
46
|
|
47
|
-
# Generieren Select-Box für ein Sematic-Form
|
48
|
-
# Params: siehe MultiSolr::SolrFilterSimple#render_for_semantic_form
|
49
|
-
# returns: HTML-Code des Input-Feldes als Select-Box
|
50
|
-
def render_for_semantic_form sform, value, context=nil, form_input_options={}
|
51
|
-
form_input_options = @options[:semantic_form].merge form_input_options if @options.key? :semantic_form
|
52
|
-
set_label form_input_options
|
53
|
-
data = self.collection_data(nil, context)
|
54
|
-
html_options = form_input_options[:input_html]
|
55
|
-
if html_options
|
56
|
-
if html_options[:size]
|
57
|
-
# size wird als max-size verstanden. wenn akt. Data-Range kleiner
|
58
|
-
# ist, dann darauf reduzieren
|
59
|
-
html_options[:size] = [data.size+1, html_options[:size].to_i].min
|
60
|
-
end
|
61
|
-
end
|
62
|
-
form_input_options.merge! :collection => data
|
63
|
-
sform.input "filter_#{@name}", form_input_options
|
64
|
-
end
|
65
47
|
|
66
48
|
|
67
49
|
# Ermittelt den Wertebereich entweder über die bei den Options angegebene Proc
|
@@ -10,25 +10,6 @@ class MultiSolr::SolrFilterDateRange < MultiSolr::SolrFilterRange
|
|
10
10
|
end
|
11
11
|
|
12
12
|
|
13
|
-
# Generieren der 2 Input-Felder mit der Option :as => :date_picker
|
14
|
-
# Dadurch können diesem Felder das jQuery-Datepicker-UI nutzen
|
15
|
-
# Params: siehe MultiSolr::SolrFilterSimple#render_for_semantic_form
|
16
|
-
# returns: HTML-Code mit 2 Input-Feldern
|
17
|
-
def render_for_semantic_form sform, value, context=nil, form_input_options={}
|
18
|
-
set_label form_input_options
|
19
|
-
label = form_input_options[:label]
|
20
|
-
form_input_options.merge! :as => :date_picker
|
21
|
-
from, to = extract_from_to value
|
22
|
-
date_range = Struct.new("#{@name}_from".to_sym, "#{@name}_to".to_sym).new from,to
|
23
|
-
sform.semantic_fields_for "filter_#{@name}", date_range do |filter_form|
|
24
|
-
form_input_options[:label] = "#{label} ab"
|
25
|
-
sform.template.concat filter_form.input("#{@name}_from", form_input_options)
|
26
|
-
form_input_options[:label] = "#{label} bis"
|
27
|
-
sform.template.concat filter_form.input("#{@name}_to", form_input_options)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
13
|
|
33
14
|
def extract_from_to_in_ISO8601 value
|
34
15
|
from, to = extract_from_to value
|
@@ -14,21 +14,21 @@ class MultiSolr::SolrFilterRange < MultiSolr::SolrFilterSimple
|
|
14
14
|
from, to = extract_from_to value
|
15
15
|
return '' if from.nil? && to.nil?
|
16
16
|
s = []
|
17
|
-
s << "
|
18
|
-
s << "
|
19
|
-
s.join('
|
17
|
+
s << "von #{from}" unless from.blank?
|
18
|
+
s << "bis #{to}" unless to.blank?
|
19
|
+
s.join(' ')
|
20
20
|
end
|
21
21
|
|
22
22
|
|
23
23
|
|
24
24
|
# Aus dem 'value' von und bis extrahieren
|
25
25
|
# Params:
|
26
|
-
# value: Hash mit from- und to-
|
27
|
-
# Beispiel: { '
|
26
|
+
# value: Hash mit from- und to-Werten
|
27
|
+
# Beispiel: { 'from' => '2011-01-01', 'to' => '2011-06-01' }
|
28
28
|
# returns: Array mit von und bis ['2011-01-01', '2011-06-01']
|
29
29
|
def extract_from_to value
|
30
30
|
return nil if value.blank? || !value.is_a?(Hash) || value.empty?
|
31
|
-
[ value["
|
31
|
+
[ value["from"], value["to"] ]
|
32
32
|
end
|
33
33
|
|
34
34
|
end
|
@@ -57,38 +57,10 @@ class MultiSolr::SolrFilterSimple
|
|
57
57
|
|
58
58
|
|
59
59
|
|
60
|
-
# Konvertieren der Wertes in HTML-String für ein Semantic-Form
|
61
|
-
# Params:
|
62
|
-
# sform: das Semantic-Form-Object
|
63
|
-
# value: der konkrete Wert für diesen Filter
|
64
|
-
# context: optionaler Hash mit dem Such-Context z.B. mit;
|
65
|
-
# :solr_searcher_class => Classe des konkreten Searchers
|
66
|
-
# :force_query_params => Parameter für die SolR-Force-Query
|
67
|
-
# form_input_options: optionale Formula-Input-Feld-Options.
|
68
|
-
# Diese werden 1:1 an die Semantic-Form-Methode 'input' weitergegeben
|
69
|
-
#
|
70
|
-
# returns: HTML-Code des Input-Feldes
|
71
|
-
def render_for_semantic_form sform, value, context=nil, form_input_options={}
|
72
|
-
form_input_options = @options[:semantic_form].merge form_input_options if @options.key? :semantic_form
|
73
|
-
set_label form_input_options
|
74
|
-
sform.input "filter_#{@name}", form_input_options
|
75
|
-
end
|
76
|
-
|
77
|
-
|
78
60
|
def label
|
79
61
|
I18n.t("solr_search.#{@name}", :default => @name.to_s)
|
80
62
|
end
|
81
63
|
|
82
|
-
protected
|
83
|
-
|
84
|
-
# Setzt in die angegebebn 'form_input_options' das Label (nur wenn in diesen noch kein :label definiert ist).
|
85
|
-
# Dieses wird gebildet aus den Filter-Namen unter Nutzung von I18n mit den Prefiy 'solr_search.'.
|
86
|
-
# Beispiel:
|
87
|
-
# filter-name = :lkz => I18n.t('solr_search.lkz')
|
88
|
-
def set_label form_input_options
|
89
|
-
form_input_options.merge!(:label => self.label) unless form_input_options.key?(:label)
|
90
|
-
end
|
91
|
-
|
92
64
|
end
|
93
65
|
|
94
66
|
|
data/lib/multi_solr/version.rb
CHANGED
@@ -7,15 +7,15 @@ describe MultiSolr::SolrFilterRange do
|
|
7
7
|
|
8
8
|
context 'render_value' do
|
9
9
|
it "should return '>= 10' if value from is 10" do
|
10
|
-
subject.render_value('
|
10
|
+
subject.render_value('from' => 10).should == 'von 10'
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should return '<= 20' if value to is 20" do
|
14
|
-
subject.render_value('
|
14
|
+
subject.render_value('to' => 20).should == 'bis 20'
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should return '>=10 und <= 20' if value from is 10 and to is 20" do
|
18
|
-
subject.render_value('
|
18
|
+
subject.render_value('from' => 10, 'to' => 20).should == 'von 10 bis 20'
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should return empty string if no value given" do
|
@@ -27,15 +27,15 @@ describe MultiSolr::SolrFilterRange do
|
|
27
27
|
|
28
28
|
context 'build_solr_query' do
|
29
29
|
it do
|
30
|
-
subject.build_solr_query('
|
30
|
+
subject.build_solr_query('from' => 10).should == 'test:[10 TO *]'
|
31
31
|
end
|
32
32
|
|
33
33
|
it do
|
34
|
-
subject.build_solr_query('
|
34
|
+
subject.build_solr_query('to' => 20).should == 'test:[* TO 20]'
|
35
35
|
end
|
36
36
|
|
37
37
|
it do
|
38
|
-
subject.build_solr_query('
|
38
|
+
subject.build_solr_query('from' => 10, 'to' => 20).should == 'test:[10 TO 20]'
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multi-solr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 01.07.
|
9
|
+
- 3
|
10
|
+
version: 01.07.03
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bernd Ledig
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-01-
|
18
|
+
date: 2013-01-24 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rsolr
|