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.
- checksums.yaml +4 -4
- data/FAQ +23 -17
- data/INSTALL +52 -84
- data/LICENSE +1 -1
- data/README +213 -34
- data/TODO +20 -7
- data/ext/Makefile +24 -14
- data/ext/README.faceting +51 -0
- data/ext/bytea/bytea.sql +173 -0
- data/ext/bytea/faceting_bytea.control +6 -0
- data/ext/common/util.sql +35 -0
- data/ext/faceting--0.6.0.sql +251 -0
- data/ext/faceting_bytea--0.6.0.sql +207 -0
- data/ext/faceting_varbit--0.6.0.sql +198 -0
- data/ext/signature/faceting.control +6 -0
- data/ext/signature/signature.c +740 -0
- data/ext/{signature.o → signature/signature.o} +0 -0
- data/ext/{signature.so → signature/signature.so} +0 -0
- data/ext/signature/signature.sql +217 -0
- data/ext/varbit/faceting_varbit.control +7 -0
- data/ext/varbit/varbit.sql +164 -0
- data/{public → lib/assets}/images/repertoire-faceting/proportional_symbol.png +0 -0
- data/{public → lib/assets}/images/repertoire-faceting/spinner_sm.gif +0 -0
- data/{public → lib/assets}/javascripts/rep.faceting/context.js +2 -2
- data/{public → lib/assets}/javascripts/rep.faceting/ext/earth_facet.js +2 -4
- data/{public → lib/assets}/javascripts/rep.faceting/facet.js +1 -1
- data/{public → lib/assets}/javascripts/rep.faceting/facet_widget.js +3 -8
- data/{public → lib/assets}/javascripts/rep.faceting/nested_facet.js +1 -1
- data/{public → lib/assets}/javascripts/rep.faceting/results.js +1 -1
- data/{public → lib/assets}/javascripts/rep.faceting.js +5 -1
- data/{public → lib/assets}/javascripts/rep.protovis-facets.js +3 -3
- data/lib/assets/javascripts/rep.widgets/events.js +51 -0
- data/lib/assets/javascripts/rep.widgets/global.js +50 -0
- data/lib/assets/javascripts/rep.widgets/model.js +159 -0
- data/lib/assets/javascripts/rep.widgets/widget.js +213 -0
- data/lib/assets/javascripts/rep.widgets.js +14 -0
- data/{public → lib/assets}/stylesheets/rep.faceting.css +1 -1
- data/lib/repertoire-faceting/adapters/postgresql_adapter.rb +107 -48
- data/lib/repertoire-faceting/facets/abstract_facet.rb +43 -27
- data/lib/repertoire-faceting/facets/basic_facet.rb +23 -22
- data/lib/repertoire-faceting/facets/nested_facet.rb +50 -27
- data/lib/repertoire-faceting/model.rb +101 -65
- data/lib/repertoire-faceting/rails/engine.rb +8 -0
- data/lib/repertoire-faceting/rails/postgresql_adapter.rb +0 -1
- data/lib/repertoire-faceting/rails/relation.rb +0 -1
- data/lib/repertoire-faceting/railtie.rb +0 -1
- data/lib/repertoire-faceting/relation/calculations.rb +7 -2
- data/lib/repertoire-faceting/relation/query_methods.rb +17 -4
- data/lib/repertoire-faceting/routing.rb +2 -5
- data/lib/repertoire-faceting/tasks/all.rake +5 -4
- data/lib/repertoire-faceting/tasks/client.rake +2 -5
- data/lib/repertoire-faceting/version.rb +1 -1
- data/lib/repertoire-faceting.rb +2 -4
- data/{public → vendor/assets}/javascripts/google-earth-extensions.js +0 -0
- data/{public → vendor/assets}/javascripts/protovis.js +0 -0
- metadata +78 -78
- data/ext/README.signature +0 -33
- data/ext/signature.c +0 -740
- data/ext/signature.sql +0 -342
- data/ext/signature.sql.IN +0 -342
- data/ext/uninstall_signature.sql +0 -4
- data/ext/uninstall_signature.sql.IN +0 -4
- data/lib/repertoire-faceting/adapters/abstract_adapter.rb +0 -18
- data/lib/repertoire-faceting/relation/spawn_methods.rb +0 -26
@@ -0,0 +1,217 @@
|
|
1
|
+
-- ============================================================================
|
2
|
+
-- Faceting API implementing bitmap indices using a custom C datatype and
|
3
|
+
-- associated functions.
|
4
|
+
--
|
5
|
+
-- This API is to be preferred in all situations where it is possible to
|
6
|
+
-- build and install the datatype (requires superuser access to PostgreSQL)
|
7
|
+
--
|
8
|
+
-- Christopher York
|
9
|
+
-- MIT Hyperstudio
|
10
|
+
-- February 2014
|
11
|
+
-- ============================================================================
|
12
|
+
|
13
|
+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
14
|
+
\echo Use "CREATE EXTENSION faceting" to load this the default faceting API.\quit
|
15
|
+
|
16
|
+
-- functions for bitmap indices using datatype written in C
|
17
|
+
|
18
|
+
CREATE TYPE @extschema@.signature;
|
19
|
+
|
20
|
+
-- basic i/o functions for signatures
|
21
|
+
|
22
|
+
CREATE FUNCTION @extschema@.sig_in(cstring)
|
23
|
+
RETURNS signature
|
24
|
+
AS 'signature.so', 'sig_in'
|
25
|
+
LANGUAGE C STRICT;
|
26
|
+
|
27
|
+
CREATE FUNCTION @extschema@.sig_out(signature)
|
28
|
+
RETURNS cstring
|
29
|
+
AS 'signature.so', 'sig_out'
|
30
|
+
LANGUAGE C STRICT;
|
31
|
+
|
32
|
+
-- signature postgresql type
|
33
|
+
|
34
|
+
CREATE TYPE @extschema@.signature (
|
35
|
+
INTERNALLENGTH = VARIABLE,
|
36
|
+
INPUT = sig_in,
|
37
|
+
OUTPUT = sig_out,
|
38
|
+
STORAGE = extended
|
39
|
+
);
|
40
|
+
|
41
|
+
-- functions for signatures
|
42
|
+
|
43
|
+
CREATE FUNCTION @extschema@.sig_resize( signature, INT )
|
44
|
+
RETURNS signature
|
45
|
+
AS 'signature.so', 'sig_resize'
|
46
|
+
LANGUAGE C STRICT IMMUTABLE;
|
47
|
+
|
48
|
+
CREATE FUNCTION @extschema@.sig_set( signature, INT, INT )
|
49
|
+
RETURNS signature
|
50
|
+
AS 'signature.so', 'sig_set'
|
51
|
+
LANGUAGE C STRICT IMMUTABLE;
|
52
|
+
|
53
|
+
CREATE FUNCTION @extschema@.sig_set( signature, INT )
|
54
|
+
RETURNS signature
|
55
|
+
AS 'signature.so', 'sig_set'
|
56
|
+
LANGUAGE C STRICT IMMUTABLE;
|
57
|
+
|
58
|
+
CREATE FUNCTION @extschema@.sig_get( signature, INT )
|
59
|
+
RETURNS INT
|
60
|
+
AS 'signature.so', 'sig_get'
|
61
|
+
LANGUAGE C STRICT IMMUTABLE;
|
62
|
+
|
63
|
+
CREATE FUNCTION @extschema@.sig_length( signature )
|
64
|
+
RETURNS INT
|
65
|
+
AS 'signature.so', 'sig_length'
|
66
|
+
LANGUAGE C STRICT IMMUTABLE;
|
67
|
+
|
68
|
+
CREATE FUNCTION @extschema@.sig_min( signature )
|
69
|
+
RETURNS INT
|
70
|
+
AS 'signature.so', 'sig_min'
|
71
|
+
LANGUAGE C STRICT IMMUTABLE;
|
72
|
+
|
73
|
+
CREATE FUNCTION @extschema@.sig_and( signature, signature )
|
74
|
+
RETURNS signature
|
75
|
+
AS 'signature.so', 'sig_and'
|
76
|
+
LANGUAGE C STRICT IMMUTABLE;
|
77
|
+
|
78
|
+
CREATE FUNCTION @extschema@.sig_or( signature, signature )
|
79
|
+
RETURNS signature
|
80
|
+
AS 'signature.so', 'sig_or'
|
81
|
+
LANGUAGE C STRICT IMMUTABLE;
|
82
|
+
|
83
|
+
CREATE FUNCTION @extschema@.sig_xor( signature )
|
84
|
+
RETURNS signature
|
85
|
+
AS 'signature.so', 'sig_xor'
|
86
|
+
LANGUAGE C STRICT IMMUTABLE;
|
87
|
+
|
88
|
+
CREATE FUNCTION @extschema@.count( signature )
|
89
|
+
RETURNS INT
|
90
|
+
AS 'signature.so', 'count'
|
91
|
+
LANGUAGE C STRICT IMMUTABLE;
|
92
|
+
|
93
|
+
CREATE FUNCTION @extschema@.contains( signature, INT )
|
94
|
+
RETURNS BOOL
|
95
|
+
AS 'signature.so', 'contains'
|
96
|
+
LANGUAGE C STRICT IMMUTABLE;
|
97
|
+
|
98
|
+
CREATE FUNCTION @extschema@.members( signature )
|
99
|
+
RETURNS SETOF INT
|
100
|
+
AS 'signature.so', 'members'
|
101
|
+
LANGUAGE C STRICT IMMUTABLE;
|
102
|
+
|
103
|
+
CREATE FUNCTION @extschema@.sig_cmp( signature, signature )
|
104
|
+
RETURNS INT
|
105
|
+
AS 'signature.so', 'sig_cmp'
|
106
|
+
LANGUAGE C STRICT IMMUTABLE;
|
107
|
+
|
108
|
+
CREATE FUNCTION @extschema@.sig_lt( signature, signature )
|
109
|
+
RETURNS BOOL
|
110
|
+
AS 'signature.so', 'sig_lt'
|
111
|
+
LANGUAGE C STRICT IMMUTABLE;
|
112
|
+
|
113
|
+
CREATE FUNCTION @extschema@.sig_lte( signature, signature )
|
114
|
+
RETURNS BOOL
|
115
|
+
AS 'signature.so', 'sig_lte'
|
116
|
+
LANGUAGE C STRICT IMMUTABLE;
|
117
|
+
|
118
|
+
CREATE FUNCTION @extschema@.sig_eq( signature, signature )
|
119
|
+
RETURNS BOOL
|
120
|
+
AS 'signature.so', 'sig_eq'
|
121
|
+
LANGUAGE C STRICT IMMUTABLE;
|
122
|
+
|
123
|
+
CREATE FUNCTION @extschema@.sig_gt( signature, signature )
|
124
|
+
RETURNS BOOL
|
125
|
+
AS 'signature.so', 'sig_gt'
|
126
|
+
LANGUAGE C STRICT IMMUTABLE;
|
127
|
+
|
128
|
+
CREATE FUNCTION @extschema@.sig_gte( signature, signature )
|
129
|
+
RETURNS BOOL
|
130
|
+
AS 'signature.so', 'sig_gte'
|
131
|
+
LANGUAGE C STRICT IMMUTABLE;
|
132
|
+
|
133
|
+
|
134
|
+
-- operators for signatures
|
135
|
+
|
136
|
+
CREATE OPERATOR @extschema@.& (
|
137
|
+
leftarg = signature,
|
138
|
+
rightarg = signature,
|
139
|
+
procedure = @extschema@.sig_and,
|
140
|
+
commutator = &
|
141
|
+
);
|
142
|
+
|
143
|
+
CREATE OPERATOR @extschema@.| (
|
144
|
+
leftarg = signature,
|
145
|
+
rightarg = signature,
|
146
|
+
procedure = @extschema@.sig_or,
|
147
|
+
commutator = |
|
148
|
+
);
|
149
|
+
|
150
|
+
CREATE OPERATOR @extschema@.+ (
|
151
|
+
leftarg = signature,
|
152
|
+
rightarg = int,
|
153
|
+
procedure = @extschema@.sig_set
|
154
|
+
);
|
155
|
+
|
156
|
+
CREATE OPERATOR @extschema@.< (
|
157
|
+
leftarg = signature, rightarg = signature, procedure = sig_lt,
|
158
|
+
commutator = > , negator = >= ,
|
159
|
+
restrict = scalarltsel, join = scalarltjoinsel
|
160
|
+
);
|
161
|
+
|
162
|
+
CREATE OPERATOR @extschema@.<= (
|
163
|
+
leftarg = signature, rightarg = signature, procedure = sig_lte,
|
164
|
+
commutator = >= , negator = > ,
|
165
|
+
restrict = scalarltsel, join = scalarltjoinsel
|
166
|
+
);
|
167
|
+
|
168
|
+
CREATE OPERATOR @extschema@.= (
|
169
|
+
leftarg = signature, rightarg = signature, procedure = sig_eq,
|
170
|
+
commutator = = , negator = <> ,
|
171
|
+
restrict = eqsel, join = eqjoinsel
|
172
|
+
);
|
173
|
+
|
174
|
+
CREATE OPERATOR >= (
|
175
|
+
leftarg = signature, rightarg = signature, procedure = sig_gte,
|
176
|
+
commutator = <= , negator = < ,
|
177
|
+
restrict = scalargtsel, join = scalargtjoinsel
|
178
|
+
);
|
179
|
+
|
180
|
+
CREATE OPERATOR @extschema@.> (
|
181
|
+
leftarg = signature, rightarg = signature, procedure = sig_gt,
|
182
|
+
commutator = < , negator = <= ,
|
183
|
+
restrict = scalargtsel, join = scalargtjoinsel
|
184
|
+
);
|
185
|
+
|
186
|
+
-- index operator classes for signatures
|
187
|
+
|
188
|
+
CREATE OPERATOR CLASS @extschema@.signature_ops
|
189
|
+
DEFAULT FOR TYPE signature USING btree AS
|
190
|
+
OPERATOR 1 < ,
|
191
|
+
OPERATOR 2 <= ,
|
192
|
+
OPERATOR 3 = ,
|
193
|
+
OPERATOR 4 >= ,
|
194
|
+
OPERATOR 5 > ,
|
195
|
+
FUNCTION 1 sig_cmp(signature, signature);
|
196
|
+
|
197
|
+
|
198
|
+
-- aggregate functions for faceting
|
199
|
+
|
200
|
+
CREATE AGGREGATE @extschema@.collect( signature )
|
201
|
+
(
|
202
|
+
sfunc = @extschema@.sig_or,
|
203
|
+
stype = signature
|
204
|
+
);
|
205
|
+
|
206
|
+
CREATE AGGREGATE @extschema@.filter( signature )
|
207
|
+
(
|
208
|
+
sfunc = @extschema@.sig_and,
|
209
|
+
stype = signature
|
210
|
+
);
|
211
|
+
|
212
|
+
CREATE AGGREGATE @extschema@.signature( INT )
|
213
|
+
(
|
214
|
+
sfunc = @extschema@.sig_set,
|
215
|
+
stype = signature,
|
216
|
+
initcond = '0'
|
217
|
+
);
|
@@ -0,0 +1,164 @@
|
|
1
|
+
-- ============================================================================
|
2
|
+
-- Faceting API implementing bitmap indices using PostgreSQL's built-in VARBIT
|
3
|
+
-- type, processed using the built-in language pl/pgsql.
|
4
|
+
--
|
5
|
+
-- This API is suitable for deployment on any host, since it requires no
|
6
|
+
-- PostgreSQL extensions outside the default install.
|
7
|
+
--
|
8
|
+
-- However, performance is limited to around 30,000 items in practice (in part
|
9
|
+
-- because of unnecessary duplication of varbit values when pl/pgsql evaluates
|
10
|
+
-- the count function.)
|
11
|
+
--
|
12
|
+
-- The 'signature' C-based faceting API is preferable for any install where
|
13
|
+
-- you have superuser access to the database.
|
14
|
+
--
|
15
|
+
-- Christopher York
|
16
|
+
-- MIT Hyperstudio
|
17
|
+
-- February 2014
|
18
|
+
-- ============================================================================
|
19
|
+
|
20
|
+
CREATE FUNCTION @extschema@.sig_resize( sig VARBIT, bits INT ) RETURNS VARBIT AS $$
|
21
|
+
DECLARE
|
22
|
+
len INT;
|
23
|
+
BEGIN
|
24
|
+
len := length(sig);
|
25
|
+
IF bits > len THEN
|
26
|
+
RETURN sig || repeat('0', bits - len)::VARBIT;
|
27
|
+
ELSIF bits < len THEN
|
28
|
+
RETURN substring(sig FROM 1 FOR bits);
|
29
|
+
END IF;
|
30
|
+
RETURN sig;
|
31
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
32
|
+
|
33
|
+
CREATE FUNCTION @extschema@.sig_set( sig VARBIT, pos INT, val INT) RETURNS VARBIT AS $$
|
34
|
+
DECLARE
|
35
|
+
len INT;
|
36
|
+
BEGIN
|
37
|
+
len := length(sig);
|
38
|
+
IF pos >= len THEN
|
39
|
+
IF val > 0 THEN
|
40
|
+
RETURN set_bit(@extschema@.sig_resize(sig, pos+1), pos, 1);
|
41
|
+
ELSE
|
42
|
+
RETURN sig;
|
43
|
+
END IF;
|
44
|
+
ELSE
|
45
|
+
RETURN set_bit(sig, pos, val);
|
46
|
+
END IF;
|
47
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
48
|
+
|
49
|
+
CREATE FUNCTION @extschema@.sig_set( sig VARBIT, pos INT) RETURNS VARBIT AS $$
|
50
|
+
BEGIN
|
51
|
+
RETURN @extschema@.sig_set(sig, pos, 1);
|
52
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
53
|
+
|
54
|
+
CREATE FUNCTION @extschema@.sig_get( sig VARBIT, pos INT ) RETURNS INT AS $$
|
55
|
+
DECLARE
|
56
|
+
len INT;
|
57
|
+
BEGIN
|
58
|
+
len := length(sig);
|
59
|
+
IF pos >= len THEN
|
60
|
+
RETURN 0;
|
61
|
+
ELSE
|
62
|
+
RETURN get_bit(sig, pos);
|
63
|
+
END IF;
|
64
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
65
|
+
|
66
|
+
CREATE FUNCTION @extschema@.sig_length( sig VARBIT ) RETURNS INT AS $$
|
67
|
+
BEGIN
|
68
|
+
RETURN length(sig);
|
69
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
70
|
+
|
71
|
+
CREATE FUNCTION @extschema@.sig_min( sig VARBIT ) RETURNS INT AS $$
|
72
|
+
BEGIN
|
73
|
+
RETURN position('1' in sig) - 1;
|
74
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
75
|
+
|
76
|
+
CREATE FUNCTION @extschema@.sig_and( sig1 VARBIT, sig2 VARBIT ) RETURNS VARBIT AS $$
|
77
|
+
DECLARE
|
78
|
+
len INT;
|
79
|
+
BEGIN
|
80
|
+
len := GREATEST(length(sig1), length(sig2));
|
81
|
+
RETURN bitand(@extschema@.sig_resize(sig1, len), @extschema@.sig_resize(sig2, len)) ;
|
82
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
83
|
+
|
84
|
+
CREATE FUNCTION @extschema@.sig_or( sig1 VARBIT, sig2 VARBIT ) RETURNS VARBIT AS $$
|
85
|
+
DECLARE
|
86
|
+
len INT;
|
87
|
+
BEGIN
|
88
|
+
len := GREATEST(length(sig1), length(sig2));
|
89
|
+
RETURN bitor(@extschema@.sig_resize(sig1, len), @extschema@.sig_resize(sig2, len)) ;
|
90
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
91
|
+
|
92
|
+
CREATE FUNCTION @extschema@.sig_xor( sig1 VARBIT, sig2 VARBIT ) RETURNS VARBIT AS $$
|
93
|
+
DECLARE
|
94
|
+
len INT;
|
95
|
+
BEGIN
|
96
|
+
len := GREATEST(length(sig1), length(sig2));
|
97
|
+
RETURN bitxor(@extschema@.sig_resize(sig1, len), @extschema@.sig_resize(sig2, len)) ;
|
98
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
99
|
+
|
100
|
+
CREATE FUNCTION @extschema@.count( sig VARBIT ) RETURNS INT AS $$
|
101
|
+
BEGIN
|
102
|
+
-- This is, by any measure, horrific. However, it appears to be the only
|
103
|
+
-- way to use PostgreSQL built in functions to count bits in a bit string.
|
104
|
+
RETURN length(replace(sig::TEXT, '0', ''));
|
105
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
106
|
+
|
107
|
+
CREATE FUNCTION @extschema@.contains( sig VARBIT, pos INT ) RETURNS BOOL AS $$
|
108
|
+
BEGIN
|
109
|
+
RETURN @extschema@.sig_get(sig, pos) = 1;
|
110
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
111
|
+
|
112
|
+
CREATE FUNCTION @extschema@.members( sig VARBIT ) RETURNS SETOF INT AS $$
|
113
|
+
BEGIN
|
114
|
+
FOR i IN 0 .. length(sig) - 1 LOOP
|
115
|
+
IF @extschema@.contains(sig, i) THEN
|
116
|
+
RETURN NEXT i;
|
117
|
+
END IF;
|
118
|
+
END LOOP;
|
119
|
+
END $$ LANGUAGE plpgsql STRICT IMMUTABLE;
|
120
|
+
|
121
|
+
|
122
|
+
-- operators for faceting
|
123
|
+
|
124
|
+
CREATE OPERATOR @extschema@.& (
|
125
|
+
leftarg = VARBIT,
|
126
|
+
rightarg = VARBIT,
|
127
|
+
procedure = @extschema@.sig_and,
|
128
|
+
commutator = &
|
129
|
+
);
|
130
|
+
|
131
|
+
CREATE OPERATOR @extschema@.| (
|
132
|
+
leftarg = VARBIT,
|
133
|
+
rightarg = VARBIT,
|
134
|
+
procedure = @extschema@.sig_or,
|
135
|
+
commutator = |
|
136
|
+
);
|
137
|
+
|
138
|
+
CREATE OPERATOR @extschema@.+ (
|
139
|
+
leftarg = VARBIT,
|
140
|
+
rightarg = int,
|
141
|
+
procedure = @extschema@.sig_set
|
142
|
+
);
|
143
|
+
|
144
|
+
|
145
|
+
-- aggregate functions for faceting
|
146
|
+
|
147
|
+
CREATE AGGREGATE @extschema@.collect( VARBIT )
|
148
|
+
(
|
149
|
+
sfunc = @extschema@.sig_or,
|
150
|
+
stype = VARBIT
|
151
|
+
);
|
152
|
+
|
153
|
+
CREATE AGGREGATE @extschema@.filter( VARBIT )
|
154
|
+
(
|
155
|
+
sfunc = @extschema@.sig_and,
|
156
|
+
stype = VARBIT
|
157
|
+
);
|
158
|
+
|
159
|
+
CREATE AGGREGATE @extschema@.signature( INT )
|
160
|
+
(
|
161
|
+
sfunc = @extschema@.sig_set,
|
162
|
+
stype = VARBIT,
|
163
|
+
initcond = '0'
|
164
|
+
);
|
File without changes
|
File without changes
|
@@ -21,9 +21,9 @@
|
|
21
21
|
* - hooks for managing custom data
|
22
22
|
*/
|
23
23
|
|
24
|
-
//= require
|
24
|
+
//= require jquery
|
25
25
|
|
26
|
-
//= require
|
26
|
+
//= require rep.widgets
|
27
27
|
|
28
28
|
repertoire.facet_context = function(context_name, state_fn, options) {
|
29
29
|
var self = repertoire.model(options);
|
@@ -24,11 +24,9 @@
|
|
24
24
|
* None are required.
|
25
25
|
*/
|
26
26
|
|
27
|
-
//= require
|
27
|
+
//= require ../facet
|
28
28
|
|
29
|
-
//=
|
30
|
-
|
31
|
-
//= require <google-earth-extensions>
|
29
|
+
//= require google-earth-extensions
|
32
30
|
|
33
31
|
|
34
32
|
// bootstrap Google Earth API
|
@@ -28,15 +28,10 @@
|
|
28
28
|
* See the documentation for these methods for more details.
|
29
29
|
*/
|
30
30
|
|
31
|
-
//= require
|
32
|
-
|
33
|
-
//= require <rep.widgets>
|
34
|
-
|
35
|
-
//= require "context"
|
36
|
-
|
37
|
-
//= require "../../stylesheets/rep.faceting.css"
|
38
|
-
//= provide "../../images/**/*"
|
31
|
+
//= require jquery
|
39
32
|
|
33
|
+
//= require rep.widgets
|
34
|
+
//= require ./context
|
40
35
|
|
41
36
|
repertoire.facet_widget = function($widget, options) {
|
42
37
|
var self = repertoire.widget($widget, options);
|
@@ -42,4 +42,8 @@
|
|
42
42
|
* TODO. can the css for this module be namespaced?
|
43
43
|
*/
|
44
44
|
|
45
|
-
//= require
|
45
|
+
//= require ./rep.faceting/context
|
46
|
+
//= require ./rep.faceting/facet
|
47
|
+
//= require ./rep.faceting/facet_widget
|
48
|
+
//= require ./rep.faceting/nested_facet
|
49
|
+
//= require ./rep.faceting/results
|
@@ -0,0 +1,51 @@
|
|
1
|
+
/*
|
2
|
+
* Repertoire abstract event model, for use with widget model
|
3
|
+
*
|
4
|
+
* Copyright (c) 2009 MIT Hyperstudio
|
5
|
+
* Christopher York, 11/2009
|
6
|
+
*
|
7
|
+
* Requires jquery 1.3.2+
|
8
|
+
* Support: Firefox 3+ & Safari 4+. IE emphatically not supported.
|
9
|
+
*/
|
10
|
+
|
11
|
+
//
|
12
|
+
// Mixin that adds functionality for event listening to an arbitrary javascript object.
|
13
|
+
//
|
14
|
+
// API is the similar to jquery's bind, unbind, and trigger - except that events cannot be
|
15
|
+
// namespaced.
|
16
|
+
//
|
17
|
+
// N.B. This is not a true event dispatch system: there is no event object, just callbacks.
|
18
|
+
// Implementation may change.
|
19
|
+
//
|
20
|
+
repertoire.events = function(self, $proxy) {
|
21
|
+
|
22
|
+
var handlers = {};
|
23
|
+
|
24
|
+
// mimic jquery's event bind
|
25
|
+
self.bind = function(type, fn) {
|
26
|
+
if (!handlers[type])
|
27
|
+
handlers[type] = [];
|
28
|
+
|
29
|
+
handlers[type].push(fn);
|
30
|
+
};
|
31
|
+
|
32
|
+
// mimic jquery's event unbind
|
33
|
+
self.unbind = function(type, fn) {
|
34
|
+
if (handlers[type]) {
|
35
|
+
handlers[type] = jQuery.grep(handlers[type], function(h) {
|
36
|
+
return h !== fn;
|
37
|
+
});
|
38
|
+
}
|
39
|
+
};
|
40
|
+
|
41
|
+
// wrap jquery's event trigger
|
42
|
+
self.trigger = function(type, data) {
|
43
|
+
if (handlers[type]) {
|
44
|
+
jQuery.each(handlers[type], function() {
|
45
|
+
this.call(self);
|
46
|
+
})
|
47
|
+
}
|
48
|
+
};
|
49
|
+
|
50
|
+
return self;
|
51
|
+
};
|
@@ -0,0 +1,50 @@
|
|
1
|
+
/*
|
2
|
+
* Repertoire abstract ajax widget
|
3
|
+
*
|
4
|
+
* Copyright (c) 2009 MIT Hyperstudio
|
5
|
+
* Christopher York, 09/2009
|
6
|
+
*
|
7
|
+
* Requires jquery 1.3.2+
|
8
|
+
* Support: Firefox 3+ & Safari 4+. IE emphatically not supported.
|
9
|
+
*/
|
10
|
+
|
11
|
+
// claim a single global namespace, 'repertoire'
|
12
|
+
repertoire = {};
|
13
|
+
|
14
|
+
// Global defaults inherited by all widgets
|
15
|
+
//
|
16
|
+
// Options:
|
17
|
+
// path_prefix - prefix to add before all generated urls
|
18
|
+
//
|
19
|
+
repertoire.defaults = {
|
20
|
+
path_prefix: ''
|
21
|
+
};
|
22
|
+
|
23
|
+
//
|
24
|
+
// Generates a jquery plugin that attaches a widget instance to each matched element
|
25
|
+
// and exposes plugin defaults.
|
26
|
+
//
|
27
|
+
// N.B. This method is currently only in use in the faceting module, and may be deprecated.
|
28
|
+
//
|
29
|
+
// Usage:
|
30
|
+
// $.fn.my_widget = repertoire.plugin(my_widget);
|
31
|
+
// $.fn.my_widget.defaults = { /* widget option defaults */ };
|
32
|
+
//
|
33
|
+
repertoire.plugin = function(self) {
|
34
|
+
var fn = function(options) {
|
35
|
+
return this.each(function() {
|
36
|
+
var settings = $.extend({}, repertoire.defaults, fn.defaults, html_options($(this)), options);
|
37
|
+
self($(this), settings).initialize();
|
38
|
+
});
|
39
|
+
};
|
40
|
+
fn.defaults = { };
|
41
|
+
return fn;
|
42
|
+
|
43
|
+
// helper: default widget name and title options from dom
|
44
|
+
function html_options($elem) {
|
45
|
+
return {
|
46
|
+
name: $elem.attr('id'),
|
47
|
+
title: $elem.attr('title')
|
48
|
+
};
|
49
|
+
}
|
50
|
+
};
|