picky-client 0.2.4 → 0.3.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 (32) hide show
  1. data/bin/picky-client +14 -0
  2. data/lib/picky-client/generator.rb +180 -0
  3. data/sinatra_prototype/Gemfile +13 -0
  4. data/sinatra_prototype/app.rb +59 -0
  5. data/sinatra_prototype/book.rb +42 -0
  6. data/sinatra_prototype/config.ru +2 -0
  7. data/sinatra_prototype/images/picky.png +0 -0
  8. data/sinatra_prototype/javascripts/compiler.jar +0 -0
  9. data/sinatra_prototype/javascripts/generate_bundles +25 -0
  10. data/sinatra_prototype/javascripts/jquery-1.3.2.js +4376 -0
  11. data/sinatra_prototype/javascripts/jquery-1.4.3.min.js +166 -0
  12. data/sinatra_prototype/javascripts/jquery.scrollTo-1.4.2.js +215 -0
  13. data/sinatra_prototype/javascripts/jquery.timer.js +75 -0
  14. data/sinatra_prototype/javascripts/picky.addination.js +36 -0
  15. data/sinatra_prototype/javascripts/picky.allocation_renderer.js +291 -0
  16. data/sinatra_prototype/javascripts/picky.allocations_cloud.js +91 -0
  17. data/sinatra_prototype/javascripts/picky.backend.js +86 -0
  18. data/sinatra_prototype/javascripts/picky.client.js +62 -0
  19. data/sinatra_prototype/javascripts/picky.controller.js +107 -0
  20. data/sinatra_prototype/javascripts/picky.data.js +78 -0
  21. data/sinatra_prototype/javascripts/picky.extensions.js +15 -0
  22. data/sinatra_prototype/javascripts/picky.min.js +17 -0
  23. data/sinatra_prototype/javascripts/picky.results_renderer.js +103 -0
  24. data/sinatra_prototype/javascripts/picky.source.js.tar +0 -0
  25. data/sinatra_prototype/javascripts/picky.translations.js +50 -0
  26. data/sinatra_prototype/javascripts/picky.view.js +214 -0
  27. data/sinatra_prototype/library.csv +540 -0
  28. data/sinatra_prototype/stylesheets/stylesheet.css +175 -0
  29. data/sinatra_prototype/stylesheets/stylesheet.sass +216 -0
  30. data/sinatra_prototype/views/search.haml +107 -0
  31. data/spec/picky-client/generator_spec.rb +141 -0
  32. metadata +38 -6
@@ -0,0 +1,175 @@
1
+ body {
2
+ text-align: center;
3
+ font-family: Lucida Grande; }
4
+
5
+ img {
6
+ margin: -2px 0px 0px; }
7
+
8
+ p span.explanation {
9
+ color: #999999; }
10
+
11
+ #picky {
12
+ text-align: left;
13
+ margin: 0px auto;
14
+ width: 560px;
15
+ overflow: hidden; }
16
+ #picky .dashboard {
17
+ position: relative;
18
+ overflow: hidden;
19
+ background-color: lightGrey;
20
+ padding: 5px 5px 7px 5px;
21
+ height: 26px;
22
+ margin-bottom: 3px; }
23
+ #picky .status {
24
+ float: left;
25
+ width: 45px;
26
+ height: 26px;
27
+ line-height: 26px;
28
+ text-align: center;
29
+ padding: 0 0 0 2px;
30
+ font-weight: bold;
31
+ color: white;
32
+ margin-right: 5px; }
33
+ #picky .status.alert {
34
+ background-color: lightgreen; }
35
+ #picky .results {
36
+ margin-top: 0px;
37
+ padding: 0px; }
38
+ #picky .results div.book {
39
+ background-color: #ffeeee;
40
+ padding: 5px 25px;
41
+ margin: 3px 0px; }
42
+ #picky .results em {
43
+ font-style: normal;
44
+ background-color: #fff196; }
45
+ #picky .results .item {
46
+ display: block;
47
+ padding: 10px; }
48
+ #picky .results .addination {
49
+ position: relative;
50
+ text-align: center;
51
+ padding: 7px 5px 5px 5px;
52
+ background-color: #eeeeee;
53
+ color: #276abb;
54
+ cursor: pointer; }
55
+ #picky .results .addination .tothetop {
56
+ position: absolute;
57
+ top: 4px;
58
+ right: 0px; }
59
+ #picky .results .addination .tothetop a {
60
+ display: block;
61
+ width: 20px;
62
+ height: 20px; }
63
+ #picky .results .info {
64
+ color: #555555;
65
+ background-color: #eeeeee;
66
+ padding: 6px 5px 5px 8px; }
67
+ #picky .results .info .tothetop {
68
+ float: right;
69
+ margin-top: -4px; }
70
+ #picky .feedback {
71
+ width: 460px;
72
+ float: left;
73
+ border: 1px solid #cccccc;
74
+ padding: 0;
75
+ margin: 0; }
76
+ #picky .feedback .reset {
77
+ float: right;
78
+ width: 18px;
79
+ height: 18px;
80
+ margin: 3px 3px 0px 0px;
81
+ cursor: pointer;
82
+ opacity: 0; }
83
+ #picky .empty .status {
84
+ background-color: #8cacda; }
85
+ #picky .empty .feedback {
86
+ background-color: #d0e2ff; }
87
+ #picky .none .status {
88
+ background-color: red; }
89
+ #picky .none .feedback {
90
+ background-color: #ffdddd; }
91
+ #picky .support .status {
92
+ background-color: #ff6600; }
93
+ #picky .support .feedback {
94
+ background-color: #faf3d0; }
95
+ #picky .ok .status {
96
+ background-color: #09be01; }
97
+ #picky .ok .feedback {
98
+ background-color: #bcf0b3; }
99
+ #picky input.search_button {
100
+ margin: 5px 15px; }
101
+ #picky input.query {
102
+ float: left;
103
+ width: 380px;
104
+ height: 100%;
105
+ font-size: 1em;
106
+ font-weight: bold;
107
+ border-style: solid;
108
+ border-width: 0px 0px 3px 0px;
109
+ border-color: transparent;
110
+ margin: 0;
111
+ padding: 4px 0 0 0;
112
+ outline: none;
113
+ background: none; }
114
+ #picky .allocations {
115
+ clear: both;
116
+ overflow: hidden;
117
+ background-color: white;
118
+ padding-bottom: 2px; }
119
+ #picky .allocations ol.hidden {
120
+ display: none; }
121
+ #picky .allocations ol.more:hover {
122
+ background-color: #cccccc;
123
+ cursor: pointer; }
124
+ #picky .allocations ol.more {
125
+ background-color: #eeeeee;
126
+ display: none;
127
+ text-align: center;
128
+ height: 32px;
129
+ line-height: 32px; }
130
+ #picky .allocations ol.more li {
131
+ text-align: center; }
132
+ #picky .allocations ol {
133
+ list-style-position: outside;
134
+ list-style: none;
135
+ padding: 0;
136
+ margin: 0px;
137
+ overflow: hidden; }
138
+ #picky .allocations ol li {
139
+ margin: 0px;
140
+ margin-bottom: 3px;
141
+ padding: 10px 13px;
142
+ cursor: pointer;
143
+ display: block;
144
+ font: menu;
145
+ font-size: 1em;
146
+ line-height: 16px;
147
+ background-color: #f3f3f3;
148
+ overflow: hidden;
149
+ color: #276abb; }
150
+ #picky .allocations ol li .text {
151
+ max-width: 90%;
152
+ float: left; }
153
+ #picky .allocations ol li .count {
154
+ float: right;
155
+ color: #cccccc; }
156
+ #picky .allocations ol li:hover {
157
+ background-color: #d0e2ff; }
158
+ #picky .allocations .company, #picky .allocations .person {
159
+ width: 49%; }
160
+ #picky .allocations .person {
161
+ float: left;
162
+ margin-right: 10px; }
163
+ #picky .allocations .company {
164
+ float: right; }
165
+ #picky .no_results {
166
+ display: none;
167
+ clear: both;
168
+ overflow: hidden; }
169
+ #picky .no_results ul {
170
+ list-style-type: disc;
171
+ padding-left: 13px; }
172
+ #picky .no_results a {
173
+ display: block; }
174
+ #picky > .info {
175
+ display: none; }
@@ -0,0 +1,216 @@
1
+ body
2
+ :text-align center
3
+ :font-family Lucida Grande
4
+
5
+ img
6
+ :margin -2px 0px 0px
7
+
8
+ p
9
+ span.explanation
10
+ :color #999
11
+
12
+ #picky
13
+ :text-align left
14
+ :margin 0px auto
15
+ :width 560px
16
+
17
+ .dashboard
18
+ :position relative
19
+ :overflow hidden
20
+ :background-color lightGrey
21
+ :padding 5px 5px 7px 5px
22
+ :height 26px
23
+ :margin-bottom 3px
24
+
25
+ .status
26
+ :float left
27
+ :width 45px
28
+ :height 26px
29
+ :line-height 26px
30
+ :text-align center
31
+ :padding 0 0 0 2px
32
+ :font-weight bold
33
+ :color white
34
+ :margin-right 5px
35
+ .status.alert
36
+ :background-color lightgreen
37
+
38
+ .results
39
+ :margin-top 0px
40
+ :padding 0px
41
+
42
+ div.book
43
+ :background-color #ffeeee
44
+ :padding 5px 25px
45
+ :margin 3px 0px
46
+
47
+ em
48
+ :font-style normal
49
+ :background-color #FFF196
50
+
51
+ .item
52
+ :display block
53
+ :padding 10px
54
+
55
+ .addination
56
+ :position relative
57
+ :text-align center
58
+ :padding 7px 5px 5px 5px
59
+ :background-color #eee
60
+ :color #276ABB
61
+ :cursor pointer
62
+
63
+ .tothetop
64
+ :position absolute
65
+ :top 4px
66
+ :right 0px
67
+
68
+ a
69
+ :display block
70
+ :width 20px
71
+ :height 20px
72
+
73
+ .info
74
+ :color #555
75
+ :background-color #eee
76
+ :padding 6px 5px 5px 8px
77
+
78
+ .tothetop
79
+ :float right
80
+ :margin-top -4px
81
+
82
+ :overflow hidden
83
+
84
+ // width only set because of IE
85
+ .feedback
86
+ :width 460px
87
+ :float left
88
+ :border 1px solid #ccc
89
+ :padding 0
90
+ :margin 0
91
+
92
+ .reset
93
+ :float right
94
+ :width 18px
95
+ :height 18px
96
+ :margin 3px 3px 0px 0px
97
+ :cursor pointer
98
+ :opacity 0
99
+
100
+ // Blue
101
+ .empty
102
+ .status
103
+ :background-color #8cacda
104
+ .feedback
105
+ :background-color #D0E2FF
106
+ // Red
107
+ .none
108
+ .status
109
+ :background-color #ff0000
110
+ .feedback
111
+ :background-color #ffdddd
112
+ // Orange
113
+ .support
114
+ .status
115
+ :background-color #ff6600
116
+ .feedback
117
+ :background-color #faf3d0
118
+ // Green
119
+ .ok
120
+ .status
121
+ :background-color #09be01
122
+ .feedback
123
+ :background-color #bcf0b3
124
+
125
+ input.search_button
126
+ :margin 5px 15px
127
+
128
+ input.query
129
+ :float left
130
+ :width 380px
131
+ :height 100%
132
+ :font-size 1em
133
+ :font-weight bold
134
+ :border-style solid
135
+ :border-width 0px 0px 3px 0px
136
+ :border-color transparent
137
+ :margin 0
138
+ :padding 4px 0 0 0
139
+ :outline none
140
+ :background none
141
+
142
+ .allocations
143
+ :clear both
144
+ :overflow hidden
145
+ :background-color white
146
+ :padding-bottom 2px
147
+
148
+ ol.hidden
149
+ :display none
150
+
151
+ ol.more:hover
152
+ :background-color #ccc
153
+ :cursor pointer
154
+ ol.more
155
+ :background-color #eee
156
+ :display none
157
+ :text-align center
158
+ :height 32px
159
+ :line-height 32px
160
+
161
+ li
162
+ :text-align center
163
+
164
+ ol
165
+ :list-style-position outside
166
+ :list-style none
167
+ :padding 0
168
+ :margin 0px
169
+ :overflow hidden
170
+
171
+ li
172
+ :margin 0px
173
+ :margin-bottom 3px
174
+ :padding 10px 13px
175
+ :cursor pointer
176
+ :display block
177
+ :font menu
178
+ :font-size 1em
179
+ :line-height 16px
180
+ :background-color #f3f3f3
181
+ :overflow hidden
182
+ :color #276ABB
183
+
184
+ .text
185
+ :max-width 90%
186
+ :float left
187
+
188
+ .count
189
+ :float right
190
+ :color #ccc
191
+
192
+ li:hover
193
+ :background-color #D0E2FF
194
+
195
+ .company, .person
196
+ :width 49%
197
+ .person
198
+ :float left
199
+ :margin-right 10px
200
+ .company
201
+ :float right
202
+
203
+ .no_results
204
+ :display none
205
+ :clear both
206
+ :overflow hidden
207
+
208
+ ul
209
+ :list-style-type disc
210
+ :padding-left 13px
211
+
212
+ a
213
+ :display block
214
+
215
+ & > .info
216
+ :display none
@@ -0,0 +1,107 @@
1
+ !!!
2
+ %html{ :lang => 'en' }
3
+ %head
4
+ %link{:href => "stylesheets/stylesheet.css", :media => "screen", :rel => "stylesheet", :type => "text/css"}/
5
+ = js 'jquery-1.4.3.min'
6
+ = js 'jquery.scrollTo-1.4.2'
7
+ = js 'jquery.timer'
8
+
9
+ = js 'picky.extensions'
10
+ = js 'picky.translations'
11
+ = js 'picky.data'
12
+ = js 'picky.view'
13
+ = js 'picky.backend'
14
+ = js 'picky.controller'
15
+ = js 'picky.client'
16
+ = js 'picky.addination'
17
+ = js 'picky.results_renderer'
18
+ = js 'picky.allocation_renderer'
19
+ = js 'picky.allocations_cloud'
20
+
21
+ / = js 'picky.min'
22
+ %body
23
+ %img{:src => "images/picky.png"}/
24
+ %p
25
+ %a{:href => "http://floere.github.com/picky"} Back to the Picky documentation.
26
+ %p
27
+ Try a few examples
28
+ = succeed ":" do
29
+ %span.explanation (on a simple database with 540 books - note that the server is on Heroku and needs a little time to ramp up)
30
+ %p
31
+ A simple word,
32
+ = succeed "." do
33
+ %a{:href => "#", :onclick => "pickyClient.insert('alan');"} alan
34
+ %span.explanation
35
+ (Finds Alan in the title, and Alans who wrote books. The title is ranked higher due to weighing.)
36
+ %span
37
+ %p
38
+ With qualifier,
39
+ = succeed "." do
40
+ %a{:href => "#", :onclick => "pickyClient.insert('title:women');"} title:women
41
+ %span.explanation
42
+ (Finds "women*" just in titles.)
43
+ %span
44
+ %p
45
+ With similarity,
46
+ = succeed "." do
47
+ %a{:href => "#", :onclick => "pickyClient.insert('pinchn~');"} pinchn~
48
+ %span.explanation (Finds "pynchon", note: Only title in example with similarity. Uses a combination of double metaphone and Levenshtein.)
49
+ %p
50
+ More complex,
51
+ = succeed "." do
52
+ %a{:href => "#", :onclick => "pickyClient.insert('title:lyterature~');"} title:lyterature~
53
+ %span.explanation (Finds similar titles)
54
+ %p
55
+ With choice,
56
+ = succeed "." do
57
+ %a{:href => "#", :onclick => "pickyClient.insert('sp');"} sp
58
+ %span.explanation (Finds "sp*" in multiple categories. Choose the one you're looking for.)
59
+ %p
60
+ More complex,
61
+ = succeed "." do
62
+ %a{:href => "#", :onclick => "pickyClient.insert('soc* s');"} soc* s
63
+ %span.explanation (this is where Picky really shines, "the title started with soc, and the author starts with s")
64
+ = Picky::Helper.cached_interface
65
+ :javascript
66
+ pickyClient = new PickyClient({
67
+ // A full query displays the rendered results.
68
+ //
69
+ full: '/search/full',
70
+
71
+ // A live query just updates the count.
72
+ //
73
+ live: '/search/live',
74
+
75
+ // showResultsLimit: 10, // Optional. Default is 10.
76
+
77
+ // before: function(params, query, offset) { }, // Optional. Before Picky sends any data.
78
+ // success: function(data, query) { }, // Optional. Just after Picky receives data. (Get a PickyData object)
79
+ // after: function(data, query) { }, // Optional. After Picky has handled the data and updated the view.
80
+
81
+ // This is used to generate the correct query strings, localized. E.g. "subject:war".
82
+ // Optional. If you don't give these, the field identifier given in the Picky server is used.
83
+ //
84
+ qualifiers: {
85
+ en:{
86
+ subjects: 'subject'
87
+ }
88
+ },
89
+
90
+ // This is used to explain the preceding word in the suggestion text, localized. E.g. "Peter (author)".
91
+ // Optional. Default are the field identifiers from the Picky server.
92
+ //
93
+ explanations: {
94
+ en:{
95
+ title: 'titled',
96
+ author: 'written by',
97
+ isbn: 'ISBN-13',
98
+ year: 'published in',
99
+ publisher: 'published by',
100
+ subjects: 'topics'
101
+ }
102
+ }
103
+ });
104
+
105
+ // An initial search text, prefilled.
106
+ //
107
+ pickyClient.insert('italy');