algoliasearch-rails 1.9.2 → 1.9.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e635be8a862c1b400648ec0873a4b6fc0a3130cd
4
- data.tar.gz: 538164527a1e15d90b0633857a274ac2cdf8af0a
3
+ metadata.gz: 4c717e0d5fe37fae7e75570ceba23c498cecaa4f
4
+ data.tar.gz: c16f748ce4eda2d00cdd79ca26615993c4b8a421
5
5
  SHA512:
6
- metadata.gz: 09612510c5fc94be32f0e24d11878c81b9a748e8c0c137fbc8faa35c9c00921f61eaad8a3235eff78c3d9249d83b86410e0be3c8e84da7cd37520be2e853764a
7
- data.tar.gz: 7b56015514e9eae09cd479a0dd16168abfdfe8fca3db309afea5904f9a222af2804995928f974e829b55527b6b3288726a28cce967847bcd1f74f185fe7a3fcd
6
+ metadata.gz: 50b34c87258d9849cedf846bc335b17f1e18bff4227ba539c6eed9db86e1c7eb6194694287107e0930df2a61e3a6cf8a26fe8437ce16da4de5c1ae3eee76ec4d
7
+ data.tar.gz: 3046f5be4d6c3f169e2904274ef22a5ae0559b662ab06b59c5d8e7985d0feac59995a709e1c1a512a2a4120bbc3042e86e408ba80d9886affdde2ad1a8abf86c
@@ -3,9 +3,10 @@ branches:
3
3
  only:
4
4
  - master
5
5
  rvm:
6
- - 2.1.0
7
- - 2.0.0
6
+ - 1.8.7
8
7
  - 1.9.3
8
+ - 2.0.0
9
+ - 2.1.0
9
10
  - jruby
10
11
  - rbx
11
12
  env:
data/ChangeLog CHANGED
@@ -1,5 +1,10 @@
1
1
  CHANGELOG
2
2
 
3
+ 2014-03-26 1.9.3
4
+
5
+ * Ruby 1.8 compatibility
6
+ * Fixed a bug ignoring hitsPerPage parameter while using backend pagination (will_paginate/kaminari)
7
+
3
8
  2014-03-17 1.9.2
4
9
 
5
10
  * Raise an exception while attempting to index a non-saved object (blank objectID)
data/Gemfile CHANGED
@@ -2,15 +2,15 @@ source "http://rubygems.org"
2
2
 
3
3
  gem 'json', '>= 1.5.1'
4
4
  gem 'algoliasearch', '~> 1.2'
5
- gem 'rubysl', '~> 2.0', platform: :rbx
5
+ gem 'rubysl', '~> 2.0', :platform => :rbx
6
6
 
7
7
  group :test do
8
8
  gem 'rspec', '>= 2.5.0'
9
- gem 'rails', '>= 3.0.7'
10
- gem 'sqlite3', platform: [:rbx, :ruby]
11
- gem 'jdbc-sqlite3', platform: :jruby
12
- gem 'activerecord-jdbc-adapter', platform: :jruby
13
- gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
9
+ gem 'rails', '>= 3.2.0', '< 4.0'
10
+ gem 'sqlite3', :platform => [:rbx, :ruby]
11
+ gem 'jdbc-sqlite3', :platform => :jruby
12
+ gem 'activerecord-jdbc-adapter', :platform => :jruby
13
+ gem 'activerecord-jdbcsqlite3-adapter', :platform => :jruby
14
14
  gem 'autotest'
15
15
  gem 'autotest-fsevent'
16
16
  gem 'redgreen'
@@ -19,7 +19,7 @@ end
19
19
 
20
20
  group :development do
21
21
  gem 'travis'
22
- gem 'rake'
22
+ gem 'rake', '~> 10.1.0'
23
23
  gem 'rdoc'
24
24
  end
25
25
 
@@ -2,55 +2,55 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  ZenTest (4.9.5)
5
- actionmailer (4.0.2)
6
- actionpack (= 4.0.2)
5
+ actionmailer (3.2.17)
6
+ actionpack (= 3.2.17)
7
7
  mail (~> 2.5.4)
8
- actionpack (4.0.2)
9
- activesupport (= 4.0.2)
10
- builder (~> 3.1.0)
8
+ actionpack (3.2.17)
9
+ activemodel (= 3.2.17)
10
+ activesupport (= 3.2.17)
11
+ builder (~> 3.0.0)
11
12
  erubis (~> 2.7.0)
12
- rack (~> 1.5.2)
13
- rack-test (~> 0.6.2)
14
- activemodel (4.0.2)
15
- activesupport (= 4.0.2)
16
- builder (~> 3.1.0)
17
- activerecord (4.0.2)
18
- activemodel (= 4.0.2)
19
- activerecord-deprecated_finders (~> 1.0.2)
20
- activesupport (= 4.0.2)
21
- arel (~> 4.0.0)
22
- activerecord-deprecated_finders (1.0.3)
13
+ journey (~> 1.0.4)
14
+ rack (~> 1.4.5)
15
+ rack-cache (~> 1.2)
16
+ rack-test (~> 0.6.1)
17
+ sprockets (~> 2.2.1)
18
+ activemodel (3.2.17)
19
+ activesupport (= 3.2.17)
20
+ builder (~> 3.0.0)
21
+ activerecord (3.2.17)
22
+ activemodel (= 3.2.17)
23
+ activesupport (= 3.2.17)
24
+ arel (~> 3.0.2)
25
+ tzinfo (~> 0.3.29)
23
26
  activerecord-jdbc-adapter (1.3.6)
24
27
  activerecord (>= 2.2)
25
28
  activerecord-jdbcsqlite3-adapter (1.3.6)
26
29
  activerecord-jdbc-adapter (~> 1.3.6)
27
30
  jdbc-sqlite3 (~> 3.7.2)
28
- activesupport (4.0.2)
31
+ activeresource (3.2.17)
32
+ activemodel (= 3.2.17)
33
+ activesupport (= 3.2.17)
34
+ activesupport (3.2.17)
29
35
  i18n (~> 0.6, >= 0.6.4)
30
- minitest (~> 4.2)
31
- multi_json (~> 1.3)
32
- thread_safe (~> 0.1)
33
- tzinfo (~> 0.3.37)
34
- addressable (2.3.5)
35
- algoliasearch (1.2.5)
36
+ multi_json (~> 1.0)
37
+ addressable (2.3.6)
38
+ algoliasearch (1.2.7)
36
39
  httpclient (~> 2.3)
37
40
  json (>= 1.5.1)
38
- arel (4.0.1)
39
- atomic (1.1.15)
40
- atomic (1.1.15-java)
41
+ arel (3.0.3)
41
42
  autotest (4.4.6)
42
43
  ZenTest (>= 4.4.1)
43
44
  autotest-fsevent (0.2.9)
44
45
  sys-uname
45
46
  autotest-growl (0.2.16)
46
- backports (3.5.0)
47
- builder (3.1.4)
47
+ backports (3.6.0)
48
+ builder (3.0.4)
48
49
  coderay (1.1.0)
49
50
  diff-lcs (1.2.5)
50
51
  erubis (2.7.0)
51
- ethon (0.6.2)
52
+ ethon (0.7.0)
52
53
  ffi (>= 1.3.0)
53
- mime-types (~> 1.18)
54
54
  faraday (0.8.9)
55
55
  multipart-post (~> 1.2.0)
56
56
  faraday_middleware (0.9.0)
@@ -65,11 +65,12 @@ GEM
65
65
  multi_json (~> 1.0)
66
66
  net-http-persistent (>= 2.7)
67
67
  net-http-pipeline
68
- highline (1.6.20)
68
+ highline (1.6.21)
69
69
  hike (1.2.3)
70
70
  httpclient (2.3.4.1)
71
71
  i18n (0.6.9)
72
72
  jdbc-sqlite3 (3.7.2.1)
73
+ journey (1.0.4)
73
74
  json (1.8.1)
74
75
  json (1.8.1-java)
75
76
  kaminari (0.15.1)
@@ -85,10 +86,9 @@ GEM
85
86
  treetop (~> 1.4.8)
86
87
  method_source (0.8.2)
87
88
  mime-types (1.25.1)
88
- minitest (4.7.5)
89
- multi_json (1.9.0)
89
+ multi_json (1.9.2)
90
90
  multipart-post (1.2.0)
91
- net-http-persistent (2.9.1)
91
+ net-http-persistent (2.9.4)
92
92
  net-http-pipeline (1.0.1)
93
93
  polyglot (0.3.4)
94
94
  pry (0.9.12.6)
@@ -102,34 +102,40 @@ GEM
102
102
  spoon (~> 0.0)
103
103
  pusher-client (0.4.0)
104
104
  websocket (~> 1.0.0)
105
- rack (1.5.2)
105
+ rack (1.4.5)
106
+ rack-cache (1.2)
107
+ rack (>= 0.4)
108
+ rack-ssl (1.3.4)
109
+ rack
106
110
  rack-test (0.6.2)
107
111
  rack (>= 1.0)
108
- rails (4.0.2)
109
- actionmailer (= 4.0.2)
110
- actionpack (= 4.0.2)
111
- activerecord (= 4.0.2)
112
- activesupport (= 4.0.2)
113
- bundler (>= 1.3.0, < 2.0)
114
- railties (= 4.0.2)
115
- sprockets-rails (~> 2.0.0)
116
- railties (4.0.2)
117
- actionpack (= 4.0.2)
118
- activesupport (= 4.0.2)
112
+ rails (3.2.17)
113
+ actionmailer (= 3.2.17)
114
+ actionpack (= 3.2.17)
115
+ activerecord (= 3.2.17)
116
+ activeresource (= 3.2.17)
117
+ activesupport (= 3.2.17)
118
+ bundler (~> 1.0)
119
+ railties (= 3.2.17)
120
+ railties (3.2.17)
121
+ actionpack (= 3.2.17)
122
+ activesupport (= 3.2.17)
123
+ rack-ssl (~> 1.3.2)
119
124
  rake (>= 0.8.7)
120
- thor (>= 0.18.1, < 2.0)
125
+ rdoc (~> 3.4)
126
+ thor (>= 0.14.6, < 2.0)
121
127
  rake (10.1.1)
122
- rdoc (4.1.1)
128
+ rdoc (3.12.2)
123
129
  json (~> 1.4)
124
130
  redgreen (1.2.2)
125
131
  rspec (2.14.1)
126
132
  rspec-core (~> 2.14.0)
127
133
  rspec-expectations (~> 2.14.0)
128
134
  rspec-mocks (~> 2.14.0)
129
- rspec-core (2.14.7)
135
+ rspec-core (2.14.8)
130
136
  rspec-expectations (2.14.5)
131
137
  diff-lcs (>= 1.1.3, < 2.0)
132
- rspec-mocks (2.14.5)
138
+ rspec-mocks (2.14.6)
133
139
  rubysl (2.0.15)
134
140
  rubysl-abbrev (~> 2.0)
135
141
  rubysl-base64 (~> 2.0)
@@ -293,7 +299,7 @@ GEM
293
299
  rubysl-shellwords (~> 2.0)
294
300
  rubysl-ostruct (2.0.4)
295
301
  rubysl-pathname (2.0.0)
296
- rubysl-prettyprint (2.0.2)
302
+ rubysl-prettyprint (2.0.3)
297
303
  rubysl-prime (2.0.1)
298
304
  rubysl-profile (2.0.0)
299
305
  rubysl-profiler (2.0.1)
@@ -301,7 +307,7 @@ GEM
301
307
  rubysl-pty (2.0.2)
302
308
  rubysl-rational (2.0.1)
303
309
  rubysl-readline (2.0.2)
304
- rubysl-resolv (2.0.0)
310
+ rubysl-resolv (2.1.0)
305
311
  rubysl-rexml (2.0.2)
306
312
  rubysl-rinda (2.0.1)
307
313
  rubysl-rss (2.0.0)
@@ -321,7 +327,7 @@ GEM
321
327
  rubysl-thwait (2.0.0)
322
328
  rubysl-time (2.0.3)
323
329
  rubysl-timeout (2.0.0)
324
- rubysl-tmpdir (2.0.0)
330
+ rubysl-tmpdir (2.0.1)
325
331
  rubysl-tsort (2.0.1)
326
332
  rubysl-un (2.0.0)
327
333
  rubysl-fileutils (~> 2.0)
@@ -332,28 +338,20 @@ GEM
332
338
  rubysl-xmlrpc (2.0.0)
333
339
  rubysl-yaml (2.0.4)
334
340
  rubysl-zlib (2.0.1)
335
- slop (3.4.7)
341
+ slop (3.5.0)
336
342
  spoon (0.0.4)
337
343
  ffi
338
- sprockets (2.10.1)
344
+ sprockets (2.2.2)
339
345
  hike (~> 1.2)
340
346
  multi_json (~> 1.0)
341
347
  rack (~> 1.0)
342
348
  tilt (~> 1.1, != 1.3.0)
343
- sprockets-rails (2.0.1)
344
- actionpack (>= 3.0)
345
- activesupport (>= 3.0)
346
- sprockets (~> 2.8)
347
- sqlite3 (1.3.8)
349
+ sqlite3 (1.3.9)
348
350
  sys-uname (0.9.2)
349
351
  ffi (>= 1.0.0)
350
- thor (0.18.1)
351
- thread_safe (0.2.0)
352
- atomic (>= 1.1.7, < 2)
353
- thread_safe (0.2.0-java)
354
- atomic (>= 1.1.7, < 2)
352
+ thor (0.19.1)
355
353
  tilt (1.4.1)
356
- travis (1.6.7)
354
+ travis (1.6.8)
357
355
  addressable (~> 2.3)
358
356
  backports
359
357
  faraday (~> 0.8.7)
@@ -367,8 +365,8 @@ GEM
367
365
  treetop (1.4.15)
368
366
  polyglot
369
367
  polyglot (>= 0.3.1)
370
- typhoeus (0.6.7)
371
- ethon (~> 0.6.2)
368
+ typhoeus (0.6.8)
369
+ ethon (>= 0.7.0)
372
370
  tzinfo (0.3.39)
373
371
  websocket (1.0.7)
374
372
  will_paginate (3.0.5)
@@ -387,8 +385,8 @@ DEPENDENCIES
387
385
  jdbc-sqlite3
388
386
  json (>= 1.5.1)
389
387
  kaminari
390
- rails (>= 3.0.7)
391
- rake
388
+ rails (>= 3.2.0, < 4.0)
389
+ rake (~> 10.1.0)
392
390
  rdoc
393
391
  redgreen
394
392
  rspec (>= 2.5.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.9.2
1
+ 1.9.3
@@ -6,11 +6,11 @@
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "algoliasearch-rails"
9
- s.version = "1.9.2"
9
+ s.version = "1.9.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["Algolia"]
13
- s.date = "2014-03-17"
13
+ s.date = "2014-03-26"
14
14
  s.description = "AlgoliaSearch integration to your favorite ORM"
15
15
  s.email = "contact@algolia.com"
16
16
  s.extra_rdoc_files = [
@@ -92,7 +92,7 @@ module AlgoliaSearch
92
92
 
93
93
  def geoloc(lat_attr, lng_attr)
94
94
  add_attribute :_geoloc do |o|
95
- { lat: o.send(lat_attr).to_f, lng: o.send(lng_attr).to_f }
95
+ { :lat => o.send(lat_attr).to_f, :lng => o.send(lng_attr).to_f }
96
96
  end
97
97
  end
98
98
 
@@ -140,7 +140,7 @@ module AlgoliaSearch
140
140
  def algoliasearch(options = {}, &block)
141
141
  self.algolia_index_settings = IndexSettings.new(block_given? ? Proc.new : nil)
142
142
  self.algolia_settings = algolia_index_settings.to_settings
143
- self.algolia_options = { type: algolia_full_const_get(model_name.to_s), per_page: algolia_index_settings.get_setting(:hitsPerPage) || 10, page: 1 }.merge(options)
143
+ self.algolia_options = { :type => algolia_full_const_get(model_name.to_s), :per_page => algolia_index_settings.get_setting(:hitsPerPage) || 10, :page => 1 }.merge(options)
144
144
 
145
145
  attr_accessor :highlight_result
146
146
 
@@ -177,7 +177,7 @@ module AlgoliaSearch
177
177
  objects = group.select { |o| !algolia_indexable?(o) }.map { |o| algolia_object_id_of(o) }
178
178
  @algolia_index.delete_objects(objects)
179
179
  # select only indexable objects
180
- group.select! { |o| algolia_indexable?(o) }
180
+ group = group.select { |o| algolia_indexable?(o) }
181
181
  end
182
182
  objects = group.map { |o| algolia_index_settings.get_attributes(o).merge 'objectID' => algolia_object_id_of(o) }
183
183
  last_task = @algolia_index.save_objects(objects)
@@ -265,7 +265,7 @@ module AlgoliaSearch
265
265
  o
266
266
  end
267
267
  end.compact
268
- res = AlgoliaSearch::Pagination.create(results, json['nbHits'].to_i, algolia_options.merge({ page: json['page'] + 1 }))
268
+ res = AlgoliaSearch::Pagination.create(results, json['nbHits'].to_i, algolia_options.merge({ :page => json['page'] + 1, :per_page => json['hitsPerPage'] }))
269
269
  res.extend(AdditionalMethods)
270
270
  res.send(:algolia_init_raw_answer, json)
271
271
  res
@@ -332,7 +332,7 @@ module AlgoliaSearch
332
332
  def algolia_full_const_get(name)
333
333
  list = name.split('::')
334
334
  list.shift if list.first.blank?
335
- obj = self
335
+ obj = Object.const_defined?(:RUBY_VERSION) && RUBY_VERSION.to_f < 1.9 ? Object : self
336
336
  list.each do |x|
337
337
  # This is required because const_get tries to look for constants in the
338
338
  # ancestor chain, but we only want constants that are HERE
@@ -371,7 +371,7 @@ module AlgoliaSearch
371
371
 
372
372
  def algolia_find_in_batches(batch_size, &block)
373
373
  if (defined?(::ActiveRecord) && ancestors.include?(::ActiveRecord::Base)) || respond_to?(:find_in_batches)
374
- find_in_batches(batch_size: batch_size, &block)
374
+ find_in_batches(:batch_size => batch_size, &block)
375
375
  else
376
376
  # don't worry, mongoid has its own underlying cursor/streaming mechanism
377
377
  items = []
@@ -6,7 +6,7 @@ module AlgoliaSearch
6
6
 
7
7
  def configuration=(configuration)
8
8
  @@configuration = configuration
9
- Algolia.init application_id: @@configuration[:application_id], api_key: @@configuration[:api_key]
9
+ Algolia.init :application_id => @@configuration[:application_id], :api_key => @@configuration[:api_key]
10
10
  end
11
11
  end
12
12
  end
@@ -24,7 +24,7 @@ module AlgoliaSearch
24
24
 
25
25
  class << self
26
26
  def create(results, total_hits, options = {})
27
- new results, offset: ((options[:page] - 1) * options[:per_page]), limit: options[:per_page], total_count: total_hits
27
+ new results, :offset => ((options[:page] - 1) * options[:per_page]), :limit => options[:per_page], :total_count => total_hits
28
28
  end
29
29
  end
30
30
  end
@@ -16,7 +16,7 @@ Thread.current[:algolia_hosts] = nil
16
16
 
17
17
  RSpec.configure do |c|
18
18
  c.mock_with :rspec
19
- c.filter_run focus: true
19
+ c.filter_run :focus => true
20
20
  c.run_all_when_everything_filtered = true
21
21
  end
22
22
 
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
- AlgoliaSearch.configuration = { application_id: ENV['ALGOLIA_APPLICATION_ID'], api_key: ENV['ALGOLIA_API_KEY'] }
3
+ AlgoliaSearch.configuration = { :application_id => ENV['ALGOLIA_APPLICATION_ID'], :api_key => ENV['ALGOLIA_API_KEY'] }
4
4
 
5
5
  describe AlgoliaSearch::Utilities do
6
6
 
@@ -21,7 +21,7 @@
21
21
  * THE SOFTWARE.
22
22
  */
23
23
 
24
- var ALGOLIA_VERSION = '2.4.2';
24
+ var ALGOLIA_VERSION = '2.4.4';
25
25
 
26
26
  /*
27
27
  * Copyright (c) 2013 Algolia
@@ -72,7 +72,7 @@ var AlgoliaSearch = function(applicationID, apiKey, method, resolveDNS, hostsArr
72
72
  }
73
73
  if (this._isUndefined(method) || method == null) {
74
74
  this.hosts.push(('https:' == document.location.protocol ? 'https' : 'http') + '://' + hostsArray[i]);
75
- } else if (method === 'https' || method === 'HTTPS') {
75
+ } else if (method === 'https' || method === 'HTTPS') {
76
76
  this.hosts.push('https://' + hostsArray[i]);
77
77
  } else {
78
78
  this.hosts.push('http://' + hostsArray[i]);
@@ -700,7 +700,7 @@ AlgoliaSearch.prototype.Index.prototype = {
700
700
  * success: boolean set to true if the request was successfull
701
701
  * content: the server answer that updateAt and taskID
702
702
  */
703
- saveObject: function(object, callback) {
703
+ saveObject: function(object, callback) {
704
704
  var indexObj = this;
705
705
  this.as._jsonRequest({ method: 'PUT',
706
706
  url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(object.objectID),
@@ -879,10 +879,12 @@ AlgoliaSearch.prototype.Index.prototype = {
879
879
  this.as._jsonRequest({ method: 'GET',
880
880
  url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/task/' + taskID,
881
881
  callback: function(success, body) {
882
- if (success && body.status === 'published') {
883
- callback(true, body);
884
- } else if (success && body.pendingTask) {
885
- return indexObj.waitTask(taskID, callback);
882
+ if (success) {
883
+ if (body.status === 'published') {
884
+ callback(true, body);
885
+ } else {
886
+ setTimeout(function() { indexObj.waitTask(taskID, callback); }, 100);
887
+ }
886
888
  } else {
887
889
  callback(false, body);
888
890
  }
@@ -1173,12 +1175,13 @@ AlgoliaSearch.prototype.Index.prototype = {
1173
1175
  * success: boolean set to true if the request was successfull
1174
1176
  * content: the query answer with an extra 'disjunctiveFacets' attribute
1175
1177
  */
1176
- search: function(q, searchCallback) {
1178
+ search: function(q, searchCallback, searchParams) {
1177
1179
  this.q = q;
1178
1180
  this.searchCallback = searchCallback;
1179
- this.page = 0;
1180
- this.refinements = {};
1181
- this.disjunctiveRefinements = {};
1181
+ this.searchParams = searchParams || {};
1182
+ this.page = this.page || 0;
1183
+ this.refinements = this.refinements || {};
1184
+ this.disjunctiveRefinements = this.disjunctiveRefinements || {};
1182
1185
  this._search();
1183
1186
  },
1184
1187
 
@@ -1291,12 +1294,12 @@ AlgoliaSearch.prototype.Index.prototype = {
1291
1294
  * @return {hash}
1292
1295
  */
1293
1296
  _getHitsSearchParams: function() {
1294
- return {
1297
+ return extend({}, this.searchParams, {
1295
1298
  hitsPerPage: this.options.hitsPerPage,
1296
1299
  page: this.page,
1297
1300
  facets: this.options.facets,
1298
1301
  facetFilters: this._getFacetFilters()
1299
- };
1302
+ });
1300
1303
  },
1301
1304
 
1302
1305
  /**
@@ -1305,12 +1308,12 @@ AlgoliaSearch.prototype.Index.prototype = {
1305
1308
  * @return {hash}
1306
1309
  */
1307
1310
  _getDisjunctiveFacetSearchParams: function(facet) {
1308
- return {
1311
+ return extend({}, this.searchParams, {
1309
1312
  hitsPerPage: 1,
1310
1313
  page: 0,
1311
1314
  facets: facet,
1312
1315
  facetFilters: this._getFacetFilters(facet)
1313
- };
1316
+ });
1314
1317
  },
1315
1318
 
1316
1319
  /**
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * algoliasearch 2.4.2
2
+ * algoliasearch 2.4.4
3
3
  * https://github.com/algolia/algoliasearch-client-js
4
4
  * Copyright 2014 Algolia SAS; Licensed MIT
5
5
  */
6
6
 
7
- function AlgoliaExplainResults(a,b,c){function d(a,b){var c=[];if("object"==typeof a&&"matchedWords"in a&&"value"in a){for(var e=!1,f=0;f<a.matchedWords.length;++f){var g=a.matchedWords[f];g in b||(b[g]=1,e=!0)}e&&c.push(a.value)}else if("[object Array]"===Object.prototype.toString.call(a))for(var h=0;h<a.length;++h){var i=d(a[h],b);c=c.concat(i)}else if("object"==typeof a)for(var j in a)a.hasOwnProperty(j)&&(c=c.concat(d(a[j],b)));return c}function e(a,b,c){if(-1===c.indexOf("."))return c in a._highlightResult?d(a._highlightResult[c],b):[];for(var e=c.split("."),f=a._highlightResult,g=0;g<e.length;++g){if(!(e[g]in f))return[];f=f[e[g]]}return d(f,b)}var f={},g={},h=e(a,g,b);if(f.title=h.length>0?h[0]:"",f.subtitles=[],"undefined"!=typeof c)for(var i=0;i<c.length;++i)for(var j=e(a,g,c[i]),k=0;k<j.length;++k)f.subtitles.push({attr:c[i],value:j[k]});return f}var ALGOLIA_VERSION="2.4.2",AlgoliaSearch=function(a,b,c,d,e){this.applicationID=a,this.apiKey=b,this._isUndefined(e)&&(e=[a+"-1.algolia.io",a+"-2.algolia.io",a+"-3.algolia.io"]),this.hosts=[];for(var f=0;f<e.length;++f)Math.random()>.5&&this.hosts.reverse(),this._isUndefined(c)||null==c?this.hosts.push(("https:"==document.location.protocol?"https":"http")+"://"+e[f]):"https"===c||"HTTPS"===c?this.hosts.push("https://"+e[f]):this.hosts.push("http://"+e[f]);Math.random()>.5&&this.hosts.reverse(),(this._isUndefined(d)||d)&&this._jsonRequest({method:"GET",url:"/1/isalive"}),this.extraHeaders=[]};AlgoliaSearch.prototype={deleteIndex:function(a,b){this._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(a),callback:b})},moveIndex:function(a,b,c){var d={operation:"move",destination:b};this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(a)+"/operation",body:d,callback:c})},copyIndex:function(a,b,c){var d={operation:"copy",destination:b};this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(a)+"/operation",body:d,callback:c})},getLogs:function(a,b,c){this._isUndefined(b)&&(b=0),this._isUndefined(c)&&(c=10),this._jsonRequest({method:"GET",url:"/1/logs?offset="+b+"&length="+c,callback:a})},listIndexes:function(a){this._jsonRequest({method:"GET",url:"/1/indexes/",callback:a})},initIndex:function(a){return new this.Index(this,a)},listUserKeys:function(a){this._jsonRequest({method:"GET",url:"/1/keys",callback:a})},getUserKeyACL:function(a,b){this._jsonRequest({method:"GET",url:"/1/keys/"+a,callback:b})},deleteUserKey:function(a,b){this._jsonRequest({method:"DELETE",url:"/1/keys/"+a,callback:b})},addUserKey:function(a,b){var c={};c.acl=a,this._jsonRequest({method:"POST",url:"/1/keys",body:c,callback:b})},addUserKeyWithValidity:function(a,b,c,d,e){var f=this,g={};g.acl=a,g.validity=b,g.maxQueriesPerIPPerHour=c,g.maxHitsPerQuery=d,this._jsonRequest({method:"POST",url:"/1/indexes/"+f.indexName+"/keys",body:g,callback:e})},setSecurityTags:function(a){if("[object Array]"===Object.prototype.toString.call(a)){for(var b=[],c=0;c<a.length;++c)if("[object Array]"===Object.prototype.toString.call(a[c])){for(var d=[],e=0;e<a[c].length;++e)d.push(a[c][e]);b.push("("+d.join(",")+")")}else b.push(a[c]);a=b.join(",")}this.setExtraHeader("X-Algolia-TagFilters",a)},setUserToken:function(a){this.setExtraHeader("X-Algolia-UserToken",a)},startQueriesBatch:function(){this.batch=[]},addQueryInBatch:function(a,b,c){var d="query="+encodeURIComponent(b);this._isUndefined(c)||null==c||(d=this._getSearchParams(c,d)),this.batch.push({indexName:a,params:d})},clearCache:function(){this.cache={}},sendQueriesBatch:function(a,b){for(var c=this,d={requests:[],apiKey:this.apiKey,appID:this.applicationID},e=0;e<c.batch.length;++e)d.requests.push(c.batch[e]);if(window.clearTimeout(c.onDelayTrigger),!this._isUndefined(b)&&null!=b&&b>0){var f=window.setTimeout(function(){c._sendQueriesBatch(d,a)},b);c.onDelayTrigger=f}else this._sendQueriesBatch(d,a)},Index:function(a,b){this.indexName=b,this.as=a,this.typeAheadArgs=null,this.typeAheadValueOption=null},setExtraHeader:function(a,b){this.extraHeaders.push({key:a,value:b})},_sendQueriesBatch:function(a,b){this._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/*/queries",body:a,callback:b})},_jsonRequest:function(a){var b=this,c=a.callback,d=null,e=a.url;if(this._isUndefined(a.body)||(e=a.url+"_body_"+JSON.stringify(a.body)),!this._isUndefined(a.cache)&&(d=a.cache,!this._isUndefined(d[e])))return this._isUndefined(c)||c(!0,d[e]),void 0;var f=function(g){var h=0;return b._isUndefined(g)||(h=g),b.hosts.length<=h?(b._isUndefined(c)||c(!1,{message:"Cannot contact server"}),void 0):(a.callback=function(g,i,j,k){i||b._isUndefined(k)||console.log("Error: "+k.message),i&&!b._isUndefined(a.cache)&&(d[e]=k),!i&&g&&h+1<b.hosts.length?f(h+1):b._isUndefined(c)||c(i,k)},a.hostname=b.hosts[h],b._jsonRequestByHost(a),void 0)};f()},_jsonRequestByHost:function(a){var b=null,c=this;this._isUndefined(a.body)||(b=JSON.stringify(a.body));var d=a.hostname+a.url,e=null;if(e=new XMLHttpRequest,"withCredentials"in e){e.open(a.method,d,!0),e.setRequestHeader("X-Algolia-API-Key",this.apiKey),e.setRequestHeader("X-Algolia-Application-Id",this.applicationID);for(var f=0;f<this.extraHeaders.length;++f)e.setRequestHeader(this.extraHeaders[f].key,this.extraHeaders[f].value);null!=b&&e.setRequestHeader("Content-type","application/json")}else"undefined"!=typeof XDomainRequest?(e=new XDomainRequest,e.open(a.method,d)):console.log("your browser is too old to support CORS requests");e.send(b),e.onload=function(b){if(c._isUndefined(b)||null==b.target)a.callback(!1,!0,b,JSON.parse(e.responseText));else{var d=0===b.target.status||503===b.target.status,f=200===b.target.status||201===b.target.status;a.callback(d,f,b.target,null!=b.target.response?JSON.parse(b.target.response):null)}},e.onerror=function(){a.callback(!0,!1,null,{message:"Could not connect to Host"})}},_getSearchParams:function(a,b){if(this._isUndefined(a)||null==a)return b;for(var c in a)null!=c&&a.hasOwnProperty(c)&&(b+=0===b.length?"?":"&",b+=c+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(a[c])?JSON.stringify(a[c]):a[c]));return b},_isUndefined:function(a){return void 0===a},applicationID:null,apiKey:null,hosts:[],cache:{},extraHeaders:[]},AlgoliaSearch.prototype.Index.prototype={clearCache:function(){this.cache={}},addObject:function(a,b,c){var d=this;this.as._isUndefined(c)?this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(d.indexName),body:a,callback:b}):this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(d.indexName)+"/"+encodeURIComponent(c),body:a,callback:b})},addObjects:function(a,b){for(var c=this,d={requests:[]},e=0;e<a.length;++e){var f={action:"addObject",body:a[e]};d.requests.push(f)}this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/batch",body:d,callback:b})},getObject:function(a,b,c){var d=this,e="";if(!this.as._isUndefined(c)){e="?attributes=";for(var f=0;f<c.length;++f)0!==f&&(e+=","),e+=c[f]}this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(d.indexName)+"/"+encodeURIComponent(a)+e,callback:b})},partialUpdateObject:function(a,b){var c=this;this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/"+encodeURIComponent(a.objectID)+"/partial",body:a,callback:b})},partialUpdateObjects:function(a,b){for(var c=this,d={requests:[]},e=0;e<a.length;++e){var f={action:"partialUpdateObject",objectID:a[e].objectID,body:a[e]};d.requests.push(f)}this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/batch",body:d,callback:b})},saveObject:function(a,b){var c=this;this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/"+encodeURIComponent(a.objectID),body:a,callback:b})},saveObjects:function(a,b){for(var c=this,d={requests:[]},e=0;e<a.length;++e){var f={action:"updateObject",objectID:a[e].objectID,body:a[e]};d.requests.push(f)}this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/batch",body:d,callback:b})},deleteObject:function(a,b){if(null==a||0===a.length)return b(!1,{message:"empty objectID"}),void 0;var c=this;this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/"+encodeURIComponent(a),callback:b})},search:function(a,b,c,d){var e=this,f="query="+encodeURIComponent(a);if(this.as._isUndefined(c)||null==c||(f=this.as._getSearchParams(c,f)),window.clearTimeout(e.onDelayTrigger),!this.as._isUndefined(d)&&null!=d&&d>0){var g=window.setTimeout(function(){e._search(f,b)},d);e.onDelayTrigger=g}else this._search(f,b)},browse:function(a,b,c){var d=this,e="?page="+a;_.isUndefined(c)||(e+="&hitsPerPage="+c),this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(d.indexName)+"/browse"+e,callback:b})},ttAdapter:function(a){var b=this;return function(c,d){b.search(c,function(a,b){a&&d(b.hits)},a)}},waitTask:function(a,b){var c=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/task/"+a,callback:function(d,e){if(d&&"published"===e.status)b(!0,e);else{if(d&&e.pendingTask)return c.waitTask(a,b);b(!1,e)}}})},clearIndex:function(a){var b=this;this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(b.indexName)+"/clear",callback:a})},getSettings:function(a){var b=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(b.indexName)+"/settings",callback:a})},setSettings:function(a,b){var c=this;this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/settings",body:a,callback:b})},listUserKeys:function(a){var b=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(b.indexName)+"/keys",callback:a})},getUserKeyACL:function(a,b){var c=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/keys/"+a,callback:b})},deleteUserKey:function(a,b){var c=this;this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/keys/"+a,callback:b})},addUserKey:function(a,b){var c=this,d={};d.acl=a,this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/keys",body:d,callback:b})},addUserKeyWithValidity:function(a,b,c,d,e){var f=this,g={};g.acl=a,g.validity=b,g.maxQueriesPerIPPerHour=c,g.maxHitsPerQuery=d,this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(f.indexName)+"/keys",body:g,callback:e})},_search:function(a,b){this.as._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:a,apiKey:this.as.apiKey,appID:this.as.applicationID},callback:b})},as:null,indexName:null,cache:{},typeAheadArgs:null,typeAheadValueOption:null,emptyConstructor:function(){}},function(){var a,b=function(a){a=a||{};for(var b=1;b<arguments.length;b++)if(arguments[b])for(var c in arguments[b])arguments[b].hasOwnProperty(c)&&(a[c]=arguments[b][c]);return a};window.AlgoliaSearchHelper=function(c,d,e){var f={facets:[],disjunctiveFacets:[],hitsPerPage:20};this.init(c,d,b({},f,e)),a=this},AlgoliaSearchHelper.prototype={init:function(a,b,c){this.client=a,this.index=b,this.options=c,this.page=0,this.refinements={},this.disjunctiveRefinements={}},search:function(a,b){this.q=a,this.searchCallback=b,this.page=0,this.refinements={},this.disjunctiveRefinements={},this._search()},toggleRefine:function(a,b){for(var c=0;c<this.options.facets.length;++c)if(this.options.facets[c]==a){var d=a+":"+b;return this.refinements[d]=!this.refinements[d],this.page=0,this._search(),!0}this.disjunctiveRefinements[a]=this.disjunctiveRefinements[a]||{};for(var e=0;e<this.options.disjunctiveFacets.length;++e)if(this.options.disjunctiveFacets[e]==a)return this.disjunctiveRefinements[a][b]=!this.disjunctiveRefinements[a][b],this.page=0,this._search(),!0;return!1},isRefined:function(a,b){var c=a+":"+b;return this.refinements[c]?!0:this.disjunctiveRefinements[a]&&this.disjunctiveRefinements[a][b]?!0:!1},nextPage:function(){this._gotoPage(this.page+1)},previousPage:function(){this.page>0&&this._gotoPage(this.page-1)},_gotoPage:function(a){this.page=a,this._search()},_search:function(){this.client.startQueriesBatch(),this.client.addQueryInBatch(this.index,this.q,this._getHitsSearchParams());for(var b=0;b<this.options.disjunctiveFacets.length;++b)this.client.addQueryInBatch(this.index,this.q,this._getDisjunctiveFacetSearchParams(this.options.disjunctiveFacets[b]));this.client.sendQueriesBatch(function(b,c){if(!b)return a.searchCallback(!1,c),void 0;var d=c.results[0];d.disjunctiveFacets={};for(var e=1;e<c.results.length;++e)for(var f in c.results[e].facets)if(d.disjunctiveFacets[f]=c.results[e].facets[f],a.disjunctiveRefinements[f])for(var g in a.disjunctiveRefinements[f])!d.disjunctiveFacets[f][g]&&a.disjunctiveRefinements[f][g]&&(d.disjunctiveFacets[f][g]=0);a.searchCallback(!0,d)})},_getHitsSearchParams:function(){return{hitsPerPage:this.options.hitsPerPage,page:this.page,facets:this.options.facets,facetFilters:this._getFacetFilters()}},_getDisjunctiveFacetSearchParams:function(a){return{hitsPerPage:1,page:0,facets:a,facetFilters:this._getFacetFilters(a)}},_getFacetFilters:function(a){var b=[];for(var c in this.refinements)this.refinements[c]&&b.push(c);for(var d in this.disjunctiveRefinements)if(d!=a){var e=[];for(var f in this.disjunctiveRefinements[d])this.disjunctiveRefinements[d][f]&&e.push(d+":"+f);e.length>0&&b.push(e)}return b}}}();
7
+ function AlgoliaExplainResults(a,b,c){function d(a,b){var c=[];if("object"==typeof a&&"matchedWords"in a&&"value"in a){for(var e=!1,f=0;f<a.matchedWords.length;++f){var g=a.matchedWords[f];g in b||(b[g]=1,e=!0)}e&&c.push(a.value)}else if("[object Array]"===Object.prototype.toString.call(a))for(var h=0;h<a.length;++h){var i=d(a[h],b);c=c.concat(i)}else if("object"==typeof a)for(var j in a)a.hasOwnProperty(j)&&(c=c.concat(d(a[j],b)));return c}function e(a,b,c){if(-1===c.indexOf("."))return c in a._highlightResult?d(a._highlightResult[c],b):[];for(var e=c.split("."),f=a._highlightResult,g=0;g<e.length;++g){if(!(e[g]in f))return[];f=f[e[g]]}return d(f,b)}var f={},g={},h=e(a,g,b);if(f.title=h.length>0?h[0]:"",f.subtitles=[],"undefined"!=typeof c)for(var i=0;i<c.length;++i)for(var j=e(a,g,c[i]),k=0;k<j.length;++k)f.subtitles.push({attr:c[i],value:j[k]});return f}var ALGOLIA_VERSION="2.4.4",AlgoliaSearch=function(a,b,c,d,e){this.applicationID=a,this.apiKey=b,this._isUndefined(e)&&(e=[a+"-1.algolia.io",a+"-2.algolia.io",a+"-3.algolia.io"]),this.hosts=[];for(var f=0;f<e.length;++f)Math.random()>.5&&this.hosts.reverse(),this._isUndefined(c)||null==c?this.hosts.push(("https:"==document.location.protocol?"https":"http")+"://"+e[f]):"https"===c||"HTTPS"===c?this.hosts.push("https://"+e[f]):this.hosts.push("http://"+e[f]);Math.random()>.5&&this.hosts.reverse(),(this._isUndefined(d)||d)&&this._jsonRequest({method:"GET",url:"/1/isalive"}),this.extraHeaders=[]};AlgoliaSearch.prototype={deleteIndex:function(a,b){this._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(a),callback:b})},moveIndex:function(a,b,c){var d={operation:"move",destination:b};this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(a)+"/operation",body:d,callback:c})},copyIndex:function(a,b,c){var d={operation:"copy",destination:b};this._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(a)+"/operation",body:d,callback:c})},getLogs:function(a,b,c){this._isUndefined(b)&&(b=0),this._isUndefined(c)&&(c=10),this._jsonRequest({method:"GET",url:"/1/logs?offset="+b+"&length="+c,callback:a})},listIndexes:function(a){this._jsonRequest({method:"GET",url:"/1/indexes/",callback:a})},initIndex:function(a){return new this.Index(this,a)},listUserKeys:function(a){this._jsonRequest({method:"GET",url:"/1/keys",callback:a})},getUserKeyACL:function(a,b){this._jsonRequest({method:"GET",url:"/1/keys/"+a,callback:b})},deleteUserKey:function(a,b){this._jsonRequest({method:"DELETE",url:"/1/keys/"+a,callback:b})},addUserKey:function(a,b){var c={};c.acl=a,this._jsonRequest({method:"POST",url:"/1/keys",body:c,callback:b})},addUserKeyWithValidity:function(a,b,c,d,e){var f=this,g={};g.acl=a,g.validity=b,g.maxQueriesPerIPPerHour=c,g.maxHitsPerQuery=d,this._jsonRequest({method:"POST",url:"/1/indexes/"+f.indexName+"/keys",body:g,callback:e})},setSecurityTags:function(a){if("[object Array]"===Object.prototype.toString.call(a)){for(var b=[],c=0;c<a.length;++c)if("[object Array]"===Object.prototype.toString.call(a[c])){for(var d=[],e=0;e<a[c].length;++e)d.push(a[c][e]);b.push("("+d.join(",")+")")}else b.push(a[c]);a=b.join(",")}this.setExtraHeader("X-Algolia-TagFilters",a)},setUserToken:function(a){this.setExtraHeader("X-Algolia-UserToken",a)},startQueriesBatch:function(){this.batch=[]},addQueryInBatch:function(a,b,c){var d="query="+encodeURIComponent(b);this._isUndefined(c)||null==c||(d=this._getSearchParams(c,d)),this.batch.push({indexName:a,params:d})},clearCache:function(){this.cache={}},sendQueriesBatch:function(a,b){for(var c=this,d={requests:[],apiKey:this.apiKey,appID:this.applicationID},e=0;e<c.batch.length;++e)d.requests.push(c.batch[e]);if(window.clearTimeout(c.onDelayTrigger),!this._isUndefined(b)&&null!=b&&b>0){var f=window.setTimeout(function(){c._sendQueriesBatch(d,a)},b);c.onDelayTrigger=f}else this._sendQueriesBatch(d,a)},Index:function(a,b){this.indexName=b,this.as=a,this.typeAheadArgs=null,this.typeAheadValueOption=null},setExtraHeader:function(a,b){this.extraHeaders.push({key:a,value:b})},_sendQueriesBatch:function(a,b){this._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/*/queries",body:a,callback:b})},_jsonRequest:function(a){var b=this,c=a.callback,d=null,e=a.url;if(this._isUndefined(a.body)||(e=a.url+"_body_"+JSON.stringify(a.body)),!this._isUndefined(a.cache)&&(d=a.cache,!this._isUndefined(d[e])))return this._isUndefined(c)||c(!0,d[e]),void 0;var f=function(g){var h=0;return b._isUndefined(g)||(h=g),b.hosts.length<=h?(b._isUndefined(c)||c(!1,{message:"Cannot contact server"}),void 0):(a.callback=function(g,i,j,k){i||b._isUndefined(k)||console.log("Error: "+k.message),i&&!b._isUndefined(a.cache)&&(d[e]=k),!i&&g&&h+1<b.hosts.length?f(h+1):b._isUndefined(c)||c(i,k)},a.hostname=b.hosts[h],b._jsonRequestByHost(a),void 0)};f()},_jsonRequestByHost:function(a){var b=null,c=this;this._isUndefined(a.body)||(b=JSON.stringify(a.body));var d=a.hostname+a.url,e=null;if(e=new XMLHttpRequest,"withCredentials"in e){e.open(a.method,d,!0),e.setRequestHeader("X-Algolia-API-Key",this.apiKey),e.setRequestHeader("X-Algolia-Application-Id",this.applicationID);for(var f=0;f<this.extraHeaders.length;++f)e.setRequestHeader(this.extraHeaders[f].key,this.extraHeaders[f].value);null!=b&&e.setRequestHeader("Content-type","application/json")}else"undefined"!=typeof XDomainRequest?(e=new XDomainRequest,e.open(a.method,d)):console.log("your browser is too old to support CORS requests");e.send(b),e.onload=function(b){if(c._isUndefined(b)||null==b.target)a.callback(!1,!0,b,JSON.parse(e.responseText));else{var d=0===b.target.status||503===b.target.status,f=200===b.target.status||201===b.target.status;a.callback(d,f,b.target,null!=b.target.response?JSON.parse(b.target.response):null)}},e.onerror=function(){a.callback(!0,!1,null,{message:"Could not connect to Host"})}},_getSearchParams:function(a,b){if(this._isUndefined(a)||null==a)return b;for(var c in a)null!=c&&a.hasOwnProperty(c)&&(b+=0===b.length?"?":"&",b+=c+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(a[c])?JSON.stringify(a[c]):a[c]));return b},_isUndefined:function(a){return void 0===a},applicationID:null,apiKey:null,hosts:[],cache:{},extraHeaders:[]},AlgoliaSearch.prototype.Index.prototype={clearCache:function(){this.cache={}},addObject:function(a,b,c){var d=this;this.as._isUndefined(c)?this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(d.indexName),body:a,callback:b}):this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(d.indexName)+"/"+encodeURIComponent(c),body:a,callback:b})},addObjects:function(a,b){for(var c=this,d={requests:[]},e=0;e<a.length;++e){var f={action:"addObject",body:a[e]};d.requests.push(f)}this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/batch",body:d,callback:b})},getObject:function(a,b,c){var d=this,e="";if(!this.as._isUndefined(c)){e="?attributes=";for(var f=0;f<c.length;++f)0!==f&&(e+=","),e+=c[f]}this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(d.indexName)+"/"+encodeURIComponent(a)+e,callback:b})},partialUpdateObject:function(a,b){var c=this;this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/"+encodeURIComponent(a.objectID)+"/partial",body:a,callback:b})},partialUpdateObjects:function(a,b){for(var c=this,d={requests:[]},e=0;e<a.length;++e){var f={action:"partialUpdateObject",objectID:a[e].objectID,body:a[e]};d.requests.push(f)}this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/batch",body:d,callback:b})},saveObject:function(a,b){var c=this;this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/"+encodeURIComponent(a.objectID),body:a,callback:b})},saveObjects:function(a,b){for(var c=this,d={requests:[]},e=0;e<a.length;++e){var f={action:"updateObject",objectID:a[e].objectID,body:a[e]};d.requests.push(f)}this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/batch",body:d,callback:b})},deleteObject:function(a,b){if(null==a||0===a.length)return b(!1,{message:"empty objectID"}),void 0;var c=this;this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/"+encodeURIComponent(a),callback:b})},search:function(a,b,c,d){var e=this,f="query="+encodeURIComponent(a);if(this.as._isUndefined(c)||null==c||(f=this.as._getSearchParams(c,f)),window.clearTimeout(e.onDelayTrigger),!this.as._isUndefined(d)&&null!=d&&d>0){var g=window.setTimeout(function(){e._search(f,b)},d);e.onDelayTrigger=g}else this._search(f,b)},browse:function(a,b,c){var d=this,e="?page="+a;_.isUndefined(c)||(e+="&hitsPerPage="+c),this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(d.indexName)+"/browse"+e,callback:b})},ttAdapter:function(a){var b=this;return function(c,d){b.search(c,function(a,b){a&&d(b.hits)},a)}},waitTask:function(a,b){var c=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/task/"+a,callback:function(d,e){d?"published"===e.status?b(!0,e):setTimeout(function(){c.waitTask(a,b)},100):b(!1,e)}})},clearIndex:function(a){var b=this;this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(b.indexName)+"/clear",callback:a})},getSettings:function(a){var b=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(b.indexName)+"/settings",callback:a})},setSettings:function(a,b){var c=this;this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/settings",body:a,callback:b})},listUserKeys:function(a){var b=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(b.indexName)+"/keys",callback:a})},getUserKeyACL:function(a,b){var c=this;this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/keys/"+a,callback:b})},deleteUserKey:function(a,b){var c=this;this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/keys/"+a,callback:b})},addUserKey:function(a,b){var c=this,d={};d.acl=a,this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(c.indexName)+"/keys",body:d,callback:b})},addUserKeyWithValidity:function(a,b,c,d,e){var f=this,g={};g.acl=a,g.validity=b,g.maxQueriesPerIPPerHour=c,g.maxHitsPerQuery=d,this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(f.indexName)+"/keys",body:g,callback:e})},_search:function(a,b){this.as._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:a,apiKey:this.as.apiKey,appID:this.as.applicationID},callback:b})},as:null,indexName:null,cache:{},typeAheadArgs:null,typeAheadValueOption:null,emptyConstructor:function(){}},function(){var a,b=function(a){a=a||{};for(var b=1;b<arguments.length;b++)if(arguments[b])for(var c in arguments[b])arguments[b].hasOwnProperty(c)&&(a[c]=arguments[b][c]);return a};window.AlgoliaSearchHelper=function(c,d,e){var f={facets:[],disjunctiveFacets:[],hitsPerPage:20};this.init(c,d,b({},f,e)),a=this},AlgoliaSearchHelper.prototype={init:function(a,b,c){this.client=a,this.index=b,this.options=c,this.page=0,this.refinements={},this.disjunctiveRefinements={}},search:function(a,b,c){this.q=a,this.searchCallback=b,this.searchParams=c||{},this.page=this.page||0,this.refinements=this.refinements||{},this.disjunctiveRefinements=this.disjunctiveRefinements||{},this._search()},toggleRefine:function(a,b){for(var c=0;c<this.options.facets.length;++c)if(this.options.facets[c]==a){var d=a+":"+b;return this.refinements[d]=!this.refinements[d],this.page=0,this._search(),!0}this.disjunctiveRefinements[a]=this.disjunctiveRefinements[a]||{};for(var e=0;e<this.options.disjunctiveFacets.length;++e)if(this.options.disjunctiveFacets[e]==a)return this.disjunctiveRefinements[a][b]=!this.disjunctiveRefinements[a][b],this.page=0,this._search(),!0;return!1},isRefined:function(a,b){var c=a+":"+b;return this.refinements[c]?!0:this.disjunctiveRefinements[a]&&this.disjunctiveRefinements[a][b]?!0:!1},nextPage:function(){this._gotoPage(this.page+1)},previousPage:function(){this.page>0&&this._gotoPage(this.page-1)},_gotoPage:function(a){this.page=a,this._search()},_search:function(){this.client.startQueriesBatch(),this.client.addQueryInBatch(this.index,this.q,this._getHitsSearchParams());for(var b=0;b<this.options.disjunctiveFacets.length;++b)this.client.addQueryInBatch(this.index,this.q,this._getDisjunctiveFacetSearchParams(this.options.disjunctiveFacets[b]));this.client.sendQueriesBatch(function(b,c){if(!b)return a.searchCallback(!1,c),void 0;var d=c.results[0];d.disjunctiveFacets={};for(var e=1;e<c.results.length;++e)for(var f in c.results[e].facets)if(d.disjunctiveFacets[f]=c.results[e].facets[f],a.disjunctiveRefinements[f])for(var g in a.disjunctiveRefinements[f])!d.disjunctiveFacets[f][g]&&a.disjunctiveRefinements[f][g]&&(d.disjunctiveFacets[f][g]=0);a.searchCallback(!0,d)})},_getHitsSearchParams:function(){return b({},this.searchParams,{hitsPerPage:this.options.hitsPerPage,page:this.page,facets:this.options.facets,facetFilters:this._getFacetFilters()})},_getDisjunctiveFacetSearchParams:function(a){return b({},this.searchParams,{hitsPerPage:1,page:0,facets:a,facetFilters:this._getFacetFilters(a)})},_getFacetFilters:function(a){var b=[];for(var c in this.refinements)this.refinements[c]&&b.push(c);for(var d in this.disjunctiveRefinements)if(d!=a){var e=[];for(var f in this.disjunctiveRefinements[d])this.disjunctiveRefinements[d][f]&&e.push(d+":"+f);e.length>0&&b.push(e)}return b}}}();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algoliasearch-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: 1.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Algolia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-17 00:00:00.000000000 Z
11
+ date: 2014-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json