repertoire-faceting 0.5.5 → 0.6.0

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/FAQ +23 -17
  3. data/INSTALL +52 -84
  4. data/LICENSE +1 -1
  5. data/README +213 -34
  6. data/TODO +20 -7
  7. data/ext/Makefile +24 -14
  8. data/ext/README.faceting +51 -0
  9. data/ext/bytea/bytea.sql +173 -0
  10. data/ext/bytea/faceting_bytea.control +6 -0
  11. data/ext/common/util.sql +35 -0
  12. data/ext/faceting--0.6.0.sql +251 -0
  13. data/ext/faceting_bytea--0.6.0.sql +207 -0
  14. data/ext/faceting_varbit--0.6.0.sql +198 -0
  15. data/ext/signature/faceting.control +6 -0
  16. data/ext/signature/signature.c +740 -0
  17. data/ext/{signature.o → signature/signature.o} +0 -0
  18. data/ext/{signature.so → signature/signature.so} +0 -0
  19. data/ext/signature/signature.sql +217 -0
  20. data/ext/varbit/faceting_varbit.control +7 -0
  21. data/ext/varbit/varbit.sql +164 -0
  22. data/{public → lib/assets}/images/repertoire-faceting/proportional_symbol.png +0 -0
  23. data/{public → lib/assets}/images/repertoire-faceting/spinner_sm.gif +0 -0
  24. data/{public → lib/assets}/javascripts/rep.faceting/context.js +2 -2
  25. data/{public → lib/assets}/javascripts/rep.faceting/ext/earth_facet.js +2 -4
  26. data/{public → lib/assets}/javascripts/rep.faceting/facet.js +1 -1
  27. data/{public → lib/assets}/javascripts/rep.faceting/facet_widget.js +3 -8
  28. data/{public → lib/assets}/javascripts/rep.faceting/nested_facet.js +1 -1
  29. data/{public → lib/assets}/javascripts/rep.faceting/results.js +1 -1
  30. data/{public → lib/assets}/javascripts/rep.faceting.js +5 -1
  31. data/{public → lib/assets}/javascripts/rep.protovis-facets.js +3 -3
  32. data/lib/assets/javascripts/rep.widgets/events.js +51 -0
  33. data/lib/assets/javascripts/rep.widgets/global.js +50 -0
  34. data/lib/assets/javascripts/rep.widgets/model.js +159 -0
  35. data/lib/assets/javascripts/rep.widgets/widget.js +213 -0
  36. data/lib/assets/javascripts/rep.widgets.js +14 -0
  37. data/{public → lib/assets}/stylesheets/rep.faceting.css +1 -1
  38. data/lib/repertoire-faceting/adapters/postgresql_adapter.rb +107 -48
  39. data/lib/repertoire-faceting/facets/abstract_facet.rb +43 -27
  40. data/lib/repertoire-faceting/facets/basic_facet.rb +23 -22
  41. data/lib/repertoire-faceting/facets/nested_facet.rb +50 -27
  42. data/lib/repertoire-faceting/model.rb +101 -65
  43. data/lib/repertoire-faceting/rails/engine.rb +8 -0
  44. data/lib/repertoire-faceting/rails/postgresql_adapter.rb +0 -1
  45. data/lib/repertoire-faceting/rails/relation.rb +0 -1
  46. data/lib/repertoire-faceting/railtie.rb +0 -1
  47. data/lib/repertoire-faceting/relation/calculations.rb +7 -2
  48. data/lib/repertoire-faceting/relation/query_methods.rb +17 -4
  49. data/lib/repertoire-faceting/routing.rb +2 -5
  50. data/lib/repertoire-faceting/tasks/all.rake +5 -4
  51. data/lib/repertoire-faceting/tasks/client.rake +2 -5
  52. data/lib/repertoire-faceting/version.rb +1 -1
  53. data/lib/repertoire-faceting.rb +2 -4
  54. data/{public → vendor/assets}/javascripts/google-earth-extensions.js +0 -0
  55. data/{public → vendor/assets}/javascripts/protovis.js +0 -0
  56. metadata +78 -78
  57. data/ext/README.signature +0 -33
  58. data/ext/signature.c +0 -740
  59. data/ext/signature.sql +0 -342
  60. data/ext/signature.sql.IN +0 -342
  61. data/ext/uninstall_signature.sql +0 -4
  62. data/ext/uninstall_signature.sql.IN +0 -4
  63. data/lib/repertoire-faceting/adapters/abstract_adapter.rb +0 -18
  64. data/lib/repertoire-faceting/relation/spawn_methods.rb +0 -26
@@ -2,6 +2,7 @@ module Repertoire
2
2
  module Faceting
3
3
  module Relation # :nodoc: all
4
4
  module QueryMethods
5
+ extend ActiveSupport::Concern
5
6
 
6
7
  # N.B. These methods augment those defined in active_record/relation/query_methods
7
8
 
@@ -27,18 +28,30 @@ module Repertoire
27
28
  clone.tap { |f| f.minimum_value = count }
28
29
  end
29
30
 
30
- def nils(value=true)
31
- clone.tap { |f| f.nils_value = value }
31
+ def nils(include_nils=true)
32
+ clone.tap { |f| f.nils_value = (if include_nils then :include else :exclude end) }
32
33
  end
33
34
 
34
35
  def reorder(*args)
35
36
  clone.tap { |f| f.order_values = args.flatten }
36
37
  end
37
-
38
+
38
39
  def refined_facets?
39
40
  !refine_value.empty?
40
41
  end
41
-
42
+
43
+ private
44
+
45
+ def merge_hashes(h1={}, h2={})
46
+ h2.inject(h1.clone) do |hsh, (key, values)|
47
+ key = key.to_sym
48
+ values = [values].flatten
49
+ hsh[key] ||= []
50
+ hsh[key] |= values
51
+ hsh
52
+ end
53
+ end
54
+
42
55
  end
43
56
  end
44
57
  end
@@ -15,13 +15,10 @@ module Repertoire
15
15
  # Add routes for the faceting webservices provided by the Controller mixin.
16
16
  #
17
17
  def faceting_for(*controllers)
18
- options = controllers.extract_options!
19
-
20
18
  controllers.map!(&:to_sym)
21
-
22
19
  controllers.each do |ctlr|
23
- match "/#{ctlr}/counts/:facet", :controller => ctlr, :action => 'counts'
24
- match "/#{ctlr}/results", :controller => ctlr, :action => 'results'
20
+ get "/#{ctlr}/counts/:facet", :controller => ctlr, :action => 'counts'
21
+ get "/#{ctlr}/results", :controller => ctlr, :action => 'results'
25
22
  end
26
23
  end
27
24
 
@@ -2,11 +2,12 @@ require 'pathname'
2
2
 
3
3
  namespace :db do
4
4
  namespace :faceting do
5
+ namespace :extensions do
5
6
 
6
- desc "Build and install PostgreSQL native bitset as shared library"
7
- task :build do
8
- system "cd #{Repertoire::Faceting::MODULE_PATH}/ext; make; sudo make install"
7
+ desc "Install PostgreSQL faceting extensions in the database"
8
+ task :install do
9
+ system "cd #{Repertoire::Faceting::MODULE_PATH}/ext; make; sudo make install"
10
+ end
9
11
  end
10
-
11
12
  end
12
13
  end
@@ -2,11 +2,8 @@ require 'pathname'
2
2
 
3
3
  namespace :db do
4
4
  namespace :faceting do
5
-
6
- desc "Load PostgreSQL native bitset type into current database"
7
- task :load => :environment do
8
- ActiveRecord::Base.connection.load_faceting
9
- end
10
5
 
6
+ # Any client-side tasks should go here; none at current
7
+
11
8
  end
12
9
  end
@@ -1,5 +1,5 @@
1
1
  module Repertoire
2
2
  module Faceting #:nodoc:
3
- VERSION = "0.5.5"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
@@ -1,14 +1,11 @@
1
1
  require 'active_support/dependencies'
2
2
 
3
- require 'repertoire-assets'
4
-
5
3
  module Repertoire
6
4
  module Faceting
7
5
 
8
6
  MODULE_PATH = File.expand_path('../../', __FILE__)
9
7
 
10
8
  module Relation
11
- autoload :SpawnMethods, 'repertoire-faceting/relation/spawn_methods'
12
9
  autoload :QueryMethods, 'repertoire-faceting/relation/query_methods'
13
10
  autoload :Calculations, 'repertoire-faceting/relation/calculations'
14
11
  end
@@ -22,15 +19,16 @@ module Repertoire
22
19
  autoload :Routing, 'repertoire-faceting/routing'
23
20
  autoload :Version, 'repertoire-faceting/version'
24
21
 
25
- autoload :AbstractAdapter, 'repertoire-faceting/adapters/abstract_adapter'
26
22
  autoload :PostgreSQLColumn, 'repertoire-faceting/adapters/postgresql_adapter'
27
23
  autoload :PostgreSQLAdapter, 'repertoire-faceting/adapters/postgresql_adapter'
24
+
28
25
  end
29
26
  end
30
27
 
31
28
  # rails hook-in code
32
29
 
33
30
  require 'repertoire-faceting/errors'
31
+ require 'repertoire-faceting/rails/engine'
34
32
  require 'repertoire-faceting/rails/relation'
35
33
  require 'repertoire-faceting/rails/routes'
36
34
  require 'repertoire-faceting/rails/postgresql_adapter'
File without changes
metadata CHANGED
@@ -1,104 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repertoire-faceting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher York
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-09 00:00:00.000000000 Z
11
+ date: 2014-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: repertoire-assets
14
+ name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: 0.2.2
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
17
+ - - '>='
25
18
  - !ruby/object:Gem::Version
26
- version: 0.2.2
27
- - !ruby/object:Gem::Dependency
28
- name: rep.jquery
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
19
+ version: 3.2.11
20
+ - - <
32
21
  - !ruby/object:Gem::Version
33
- version: 1.4.3
22
+ version: '4.1'
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
- - - ~>
39
- - !ruby/object:Gem::Version
40
- version: 1.4.3
41
- - !ruby/object:Gem::Dependency
42
- name: rep.ajax.toolkit
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ~>
27
+ - - '>='
46
28
  - !ruby/object:Gem::Version
47
- version: 0.3.3
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
29
+ version: 3.2.11
30
+ - - <
53
31
  - !ruby/object:Gem::Version
54
- version: 0.3.3
32
+ version: '4.1'
55
33
  - !ruby/object:Gem::Dependency
56
- name: rails
34
+ name: jquery-rails
57
35
  requirement: !ruby/object:Gem::Requirement
58
36
  requirements:
59
- - - ~>
37
+ - - '>='
60
38
  - !ruby/object:Gem::Version
61
- version: 3.2.0
39
+ version: '0'
62
40
  type: :runtime
63
41
  prerelease: false
64
42
  version_requirements: !ruby/object:Gem::Requirement
65
43
  requirements:
66
- - - ~>
44
+ - - '>='
67
45
  - !ruby/object:Gem::Version
68
- version: 3.2.0
46
+ version: '0'
69
47
  - !ruby/object:Gem::Dependency
70
48
  name: pg
71
49
  requirement: !ruby/object:Gem::Requirement
72
50
  requirements:
73
- - - ~>
51
+ - - '>='
74
52
  - !ruby/object:Gem::Version
75
- version: 0.14.1
53
+ version: '0.11'
54
+ - - <
55
+ - !ruby/object:Gem::Version
56
+ version: '0.18'
76
57
  type: :runtime
77
58
  prerelease: false
78
59
  version_requirements: !ruby/object:Gem::Requirement
79
60
  requirements:
80
- - - ~>
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0.11'
64
+ - - <
81
65
  - !ruby/object:Gem::Version
82
- version: 0.14.1
66
+ version: '0.18'
83
67
  description: Repertoire-faceting adds scalable facet indexing, ajax facet widgets,
84
- and extras like GIS facets to Rails 3
68
+ and extras like GIS facets to Rails 3 & 4
85
69
  email:
86
70
  - yorkc@mit.edu
87
71
  executables: []
88
72
  extensions: []
89
73
  extra_rdoc_files: []
90
74
  files:
75
+ - FAQ
76
+ - INSTALL
77
+ - LICENSE
78
+ - README
79
+ - TODO
91
80
  - ext/Makefile
92
- - ext/README.signature
81
+ - ext/README.faceting
82
+ - ext/bytea/bytea.sql
83
+ - ext/bytea/faceting_bytea.control
84
+ - ext/common/util.sql
93
85
  - ext/extconf.rb
94
- - ext/signature.c
95
- - ext/signature.o
96
- - ext/signature.so
97
- - ext/signature.sql
98
- - ext/signature.sql.IN
99
- - ext/uninstall_signature.sql
100
- - ext/uninstall_signature.sql.IN
101
- - lib/repertoire-faceting/adapters/abstract_adapter.rb
86
+ - ext/faceting--0.6.0.sql
87
+ - ext/faceting_bytea--0.6.0.sql
88
+ - ext/faceting_varbit--0.6.0.sql
89
+ - ext/signature/faceting.control
90
+ - ext/signature/signature.c
91
+ - ext/signature/signature.o
92
+ - ext/signature/signature.so
93
+ - ext/signature/signature.sql
94
+ - ext/varbit/faceting_varbit.control
95
+ - ext/varbit/varbit.sql
96
+ - lib/assets/images/repertoire-faceting/proportional_symbol.png
97
+ - lib/assets/images/repertoire-faceting/spinner_sm.gif
98
+ - lib/assets/javascripts/rep.faceting.js
99
+ - lib/assets/javascripts/rep.faceting/context.js
100
+ - lib/assets/javascripts/rep.faceting/ext/earth_facet.js
101
+ - lib/assets/javascripts/rep.faceting/facet.js
102
+ - lib/assets/javascripts/rep.faceting/facet_widget.js
103
+ - lib/assets/javascripts/rep.faceting/nested_facet.js
104
+ - lib/assets/javascripts/rep.faceting/results.js
105
+ - lib/assets/javascripts/rep.protovis-facets.js
106
+ - lib/assets/javascripts/rep.widgets.js
107
+ - lib/assets/javascripts/rep.widgets/events.js
108
+ - lib/assets/javascripts/rep.widgets/global.js
109
+ - lib/assets/javascripts/rep.widgets/model.js
110
+ - lib/assets/javascripts/rep.widgets/widget.js
111
+ - lib/assets/stylesheets/rep.faceting.css
112
+ - lib/repertoire-faceting.rb
102
113
  - lib/repertoire-faceting/adapters/postgresql_adapter.rb
103
114
  - lib/repertoire-faceting/controller.rb
104
115
  - lib/repertoire-faceting/errors.rb
@@ -106,43 +117,32 @@ files:
106
117
  - lib/repertoire-faceting/facets/basic_facet.rb
107
118
  - lib/repertoire-faceting/facets/nested_facet.rb
108
119
  - lib/repertoire-faceting/model.rb
120
+ - lib/repertoire-faceting/rails/engine.rb
109
121
  - lib/repertoire-faceting/rails/postgresql_adapter.rb
110
122
  - lib/repertoire-faceting/rails/relation.rb
111
123
  - lib/repertoire-faceting/rails/routes.rb
112
124
  - lib/repertoire-faceting/railtie.rb
113
125
  - lib/repertoire-faceting/relation/calculations.rb
114
126
  - lib/repertoire-faceting/relation/query_methods.rb
115
- - lib/repertoire-faceting/relation/spawn_methods.rb
116
127
  - lib/repertoire-faceting/routing.rb
117
128
  - lib/repertoire-faceting/tasks/all.rake
118
129
  - lib/repertoire-faceting/tasks/client.rake
119
130
  - lib/repertoire-faceting/version.rb
120
- - lib/repertoire-faceting.rb
121
- - public/images/repertoire-faceting/proportional_symbol.png
122
- - public/images/repertoire-faceting/spinner_sm.gif
123
- - public/javascripts/google-earth-extensions.js
124
- - public/javascripts/protovis.js
125
- - public/javascripts/rep.faceting/context.js
126
- - public/javascripts/rep.faceting/ext/earth_facet.js
127
- - public/javascripts/rep.faceting/facet.js
128
- - public/javascripts/rep.faceting/facet_widget.js
129
- - public/javascripts/rep.faceting/nested_facet.js
130
- - public/javascripts/rep.faceting/results.js
131
- - public/javascripts/rep.faceting.js
132
- - public/javascripts/rep.protovis-facets.js
133
- - public/stylesheets/rep.faceting.css
134
- - FAQ
135
- - INSTALL
136
- - LICENSE
137
- - README
138
- - TODO
131
+ - vendor/assets/javascripts/google-earth-extensions.js
132
+ - vendor/assets/javascripts/protovis.js
139
133
  homepage: http://github.com/repertoire/repertoire-faceting
140
134
  licenses: []
141
135
  metadata: {}
142
- post_install_message: " ********************************************************************************\n
143
- \ If this is the first time you have installed Repertoire faceting, you need\n to
144
- build and install the native PostgreSQL extension:\n\n cd <my-rails-app>\n rake
145
- db:faceting:build\n \n See the repertoire-faceting README for details.\n ********************************************************************************\n"
136
+ post_install_message: |2
137
+ ********************************************************************************
138
+ If this is the first time you have installed Repertoire faceting, you need
139
+ to build and install the native PostgreSQL extension:
140
+
141
+ cd <my-rails-app>
142
+ rake db:faceting:extensions:install
143
+
144
+ See the repertoire-faceting README for details.
145
+ ********************************************************************************
146
146
  rdoc_options: []
147
147
  require_paths:
148
148
  - lib
@@ -150,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - '>='
152
152
  - !ruby/object:Gem::Version
153
- version: '0'
153
+ version: 2.0.0
154
154
  required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - '>='
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  version: 1.3.7
159
159
  requirements: []
160
160
  rubyforge_project: repertoire-faceting
161
- rubygems_version: 2.0.3
161
+ rubygems_version: 2.2.2
162
162
  signing_key:
163
163
  specification_version: 4
164
164
  summary: Rails/Postgresql plugin for faceted indexing and browsing
data/ext/README.signature DELETED
@@ -1,33 +0,0 @@
1
- --
2
- --
3
- -- In-database support for Repertoire faceting module.
4
- --
5
- -- This library adds scalable faceted indexing to the PostgreSQL database.
6
- -- Basic approach is similar to other faceted browsers (Solr, Exhibit): an inverted bitmap index
7
- -- allows fast computation of facet value counts, given a base context and prior facet refinements.
8
- --
9
- -- Bitsets can also be used to compute the result set of items.
10
- --
11
- --
12
- -- The library consists of:
13
- --
14
- -- (a) a user defined bitset datatype ('signature') for storing inverted indices
15
- -- from facet values to items, and doing refinements and counts on items with a given
16
- -- facet value (see signature.sql, signature.c)
17
- --
18
- -- (b) facilities for adding a packed (continuous) id sequence to the main item table. packed ids
19
- -- are used in the facet value signatures
20
- --
21
- -- (c) utility functions for creating/updating packed ids and facet value index tables, esp. for
22
- -- use with Repertoire crontab support
23
- --
24
- --
25
- -- Installation
26
- --
27
- -- (1) gem install repertoire-faceting
28
- -- (2) rake db:faceting:install
29
- -- (3) rake db:faceting:load
30
- --
31
- -- The bitset PostgreSQL extension follows standards for C-language extensions:
32
- -- http://www.postgresql.org/docs/current/static/xfunc-c.html
33
- --