angular-smart-search 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83ac3b3075bfa04501aee56f6ebc8c0314a77270
|
4
|
+
data.tar.gz: f5807fcebe7eabd1a60fcf3d11652f3483e8c0cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec4697a8a6da61f9067a1050765cee639a216046038ad81b7eaa46ed0ee37c4d526660b672e58abd0f49982ff56f06269d19e279d02b88fb3caac9a4bb2870dc
|
7
|
+
data.tar.gz: 80c37f6cab48fbbfdee87b23836fc4add0359fe7d7b6310962218448641006272cb7165920f12613629b70e8e07d22a5d59df83aecc2b2451f7617a236489bc5
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// author: Samuel Mueller
|
2
|
-
// version: 0.0.
|
2
|
+
// version: 0.0.7
|
3
3
|
// license: MIT
|
4
4
|
// homepage: http://github.com/ssmm/angular-smart-search
|
5
5
|
(function() {
|
@@ -11,8 +11,7 @@
|
|
11
11
|
|
12
12
|
angular.module("angular-smart-search").directive("smartSearch", [
|
13
13
|
"$http", "searchQueryFactory", "templateFactory", function($http, searchQueryFactory, templateFactory) {
|
14
|
-
var QueryState;
|
15
|
-
|
14
|
+
var QueryState, successCallbacks;
|
16
15
|
QueryState = function() {
|
17
16
|
this.state = 'initial';
|
18
17
|
this.query = void 0;
|
@@ -23,12 +22,14 @@
|
|
23
22
|
return this.state = state;
|
24
23
|
};
|
25
24
|
};
|
25
|
+
successCallbacks = [];
|
26
26
|
return {
|
27
27
|
restrict: "A",
|
28
|
-
scope:
|
28
|
+
scope: {
|
29
|
+
stub: "="
|
30
|
+
},
|
29
31
|
compile: function(element, attributes, transclude) {
|
30
32
|
var detailOverlay, id_field, template;
|
31
|
-
|
32
33
|
if (attributes.detailOverlay) {
|
33
34
|
detailOverlay = jQuery("#" + attributes.detailOverlay);
|
34
35
|
if (!detailOverlay[0]) {
|
@@ -46,8 +47,7 @@
|
|
46
47
|
element.append(id_field);
|
47
48
|
return {
|
48
49
|
post: function($scope, $element, $attributes) {
|
49
|
-
var allowedFormats, detailOverlayTrigger, hideOverlay, outerQueryTimeout, queryState, quickQueryInput, searchInput, searchOverlay, service, showOverlay;
|
50
|
-
|
50
|
+
var allowedFormats, detailOverlayTrigger, hideOverlay, outerQueryTimeout, queryState, quickQueryInput, searchInput, searchOverlay, service, setResult, showOverlay;
|
51
51
|
queryState = new QueryState();
|
52
52
|
$scope.queryState = queryState;
|
53
53
|
$scope.resultList = [];
|
@@ -94,15 +94,14 @@
|
|
94
94
|
}).error(function() {});
|
95
95
|
};
|
96
96
|
$scope.pick = function(item) {
|
97
|
-
|
98
|
-
$scope.result = item;
|
97
|
+
setResult(item);
|
99
98
|
return $scope.hideSearchOverlay();
|
100
99
|
};
|
101
100
|
$scope.hover = function(item) {
|
102
101
|
return $scope.currentItem = item;
|
103
102
|
};
|
104
103
|
outerQueryTimeout = null;
|
105
|
-
|
104
|
+
$scope.outerQueryChanged = function(query) {
|
106
105
|
window.clearTimeout(outerQueryTimeout);
|
107
106
|
if (!query) {
|
108
107
|
if ($scope.result) {
|
@@ -117,8 +116,7 @@
|
|
117
116
|
queryState.setTo("pending");
|
118
117
|
$http.get("" + service + ".json?" + query.format.name + "=" + query.query).success(function(data) {
|
119
118
|
if (data[0] && data[0].id) {
|
120
|
-
|
121
|
-
return $scope.result = data[0];
|
119
|
+
return setResult(data[0]);
|
122
120
|
} else {
|
123
121
|
return queryState.setTo("unsuccessful");
|
124
122
|
}
|
@@ -132,6 +130,34 @@
|
|
132
130
|
}
|
133
131
|
}
|
134
132
|
};
|
133
|
+
setResult = function(result) {
|
134
|
+
var callback, _i, _len, _results;
|
135
|
+
queryState.setTo("successful");
|
136
|
+
$scope.result = result;
|
137
|
+
if (successCallbacks.length > 0) {
|
138
|
+
_results = [];
|
139
|
+
for (_i = 0, _len = successCallbacks.length; _i < _len; _i++) {
|
140
|
+
callback = successCallbacks[_i];
|
141
|
+
_results.push(callback.call(void 0, result));
|
142
|
+
}
|
143
|
+
return _results;
|
144
|
+
}
|
145
|
+
};
|
146
|
+
if ($attributes.stub) {
|
147
|
+
return $scope.stub = {
|
148
|
+
registerSuccessCallback: function(callback) {
|
149
|
+
return successCallbacks.push(callback);
|
150
|
+
},
|
151
|
+
reset: function() {
|
152
|
+
$scope.result = void 0;
|
153
|
+
$scope.quickQuery = "";
|
154
|
+
return queryState.setTo("");
|
155
|
+
},
|
156
|
+
set: function(value) {
|
157
|
+
return setResult(value);
|
158
|
+
}
|
159
|
+
};
|
160
|
+
}
|
135
161
|
}
|
136
162
|
};
|
137
163
|
}
|
@@ -142,7 +168,6 @@
|
|
142
168
|
angular.module("angular-smart-search").provider("markupStore", [
|
143
169
|
function() {
|
144
170
|
var infoIconClass, overlayClass, searchIconClass, successIconClass;
|
145
|
-
|
146
171
|
successIconClass = "icon-info-sign icon-large";
|
147
172
|
infoIconClass = "icon-info-sign";
|
148
173
|
searchIconClass = "icon-search";
|
@@ -181,7 +206,6 @@
|
|
181
206
|
angular.module("angular-smart-search").provider("searchQueryFactory", [
|
182
207
|
function() {
|
183
208
|
var Query, detectFormat, formats;
|
184
|
-
|
185
209
|
Query = function(query, format) {
|
186
210
|
this.format = format;
|
187
211
|
this.query = query;
|
@@ -189,7 +213,6 @@
|
|
189
213
|
formats = {};
|
190
214
|
detectFormat = function(query, allowedFormats) {
|
191
215
|
var name, _i, _len;
|
192
|
-
|
193
216
|
for (_i = 0, _len = allowedFormats.length; _i < _len; _i++) {
|
194
217
|
name = allowedFormats[_i];
|
195
218
|
if (formats[name] && formats[name].pattern.exec(query)) {
|
@@ -199,7 +222,6 @@
|
|
199
222
|
};
|
200
223
|
this.registerFormats = function(formats) {
|
201
224
|
var format, _i, _len, _results;
|
202
|
-
|
203
225
|
_results = [];
|
204
226
|
for (_i = 0, _len = formats.length; _i < _len; _i++) {
|
205
227
|
format = formats[_i];
|
@@ -213,7 +235,6 @@
|
|
213
235
|
return this.$get = function() {
|
214
236
|
return function(query, allowedFormats) {
|
215
237
|
var format;
|
216
|
-
|
217
238
|
format = detectFormat(query, allowedFormats);
|
218
239
|
if (format) {
|
219
240
|
return new Query(query, format);
|
@@ -226,7 +247,6 @@
|
|
226
247
|
angular.module("angular-smart-search").service("templateFactory", [
|
227
248
|
"markupStore", function(markupStore) {
|
228
249
|
var detailOverlay, detailOverlayTrigger, inputSection, overlayStyle, resultIcon, searchOverlay, showDetailOverlayAction, successIcon;
|
229
|
-
|
230
250
|
overlayStyle = "style=' display: none; position: absolute; background-color: white; padding: 30px; border: solid; border-width: 1px; border-color: rgb(221, 221, 221); border-radius: 10px; '";
|
231
251
|
detailOverlayTrigger = "<i detail-overlay-trigger class='" + (markupStore.infoIconClass()) + "' ng-click='showDetailOverlay()'></i>";
|
232
252
|
successIcon = "<i class='" + (markupStore.successIconClass()) + "'></i>";
|
data/lib/angular-smart-search.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angular-smart-search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|