@@ -202,7 +202,7 @@ seamsApp.controller('seamsController', ['$scope', '$route', '$routeParams', '$lo
202
202
for ( var i in $scope . $root . currentUpload . fields ) {
203
203
var d = $ ( 'select[name=' + $scope . $root . currentUpload . fields [ i ] . safename + ']' ) ;
204
204
var obj = { }
205
- obj . name = d . attr ( 'name' ) ;
205
+ obj . name = d . attr ( 'data-original- name' ) ;
206
206
obj . type = d . val ( ) ;
207
207
obj . facet = ( $ ( '#' + d . attr ( 'name' ) ) . is ( ':checked' ) && ! $ ( '#' + d . attr ( 'name' ) ) . prop ( "disabled" ) ) ;
208
208
fields . push ( obj ) ;
@@ -280,8 +280,8 @@ seamsApp.controller('seamsController', ['$scope', '$route', '$routeParams', '$lo
280
280
html += "<tr>" ;
281
281
var f = x . fields [ i ] ;
282
282
html += "<td>" + f . name + "</td>\n" ;
283
- html += "<td>" + $scope . $root . typeWidget ( f . safename , f . type ) + "</td>\n" ;
284
- html += "<td>" + $scope . $root . facetWidget ( f . safename , f . type , f . facet . toString ( ) ) + "</td>\n" ;
283
+ html += "<td>" + $scope . $root . typeWidget ( f ) + "</td>\n" ;
284
+ html += "<td>" + $scope . $root . facetWidget ( f ) + "</td>\n" ;
285
285
for ( var j in x . data ) {
286
286
var obj = x . data [ j ] ;
287
287
var val = obj [ f . name ] ;
@@ -307,24 +307,28 @@ seamsApp.controller('seamsController', ['$scope', '$route', '$routeParams', '$lo
307
307
308
308
// returns the HTML to render a data type pull-down list
309
309
// for field 'n' which has data type 't'
310
- $scope . $root . typeWidget = function ( n , t ) {
311
- var html = '<select name="' + n + '" + class="input_select" onchange="datatypechange(\'' + n + '\')">\n' ;
312
- var opts = [ "string" , "number" , "boolean" , "arrayofstrings" ] ;
310
+ $scope . $root . typeWidget = function ( f ) {
311
+ var n = f . safename ;
312
+ var t = f . type ;
313
+ var html = '<select name="' + n + '" class="input_select" onchange="datatypechange(\'' + n + '\')" data-original-name="' + f . name + '">\n' ;
314
+ var opts = { "string" :"String" , "number" :"Number" , "boolean" :"Boolean" , "arrayofstrings" :"Array of Strings" } ;
313
315
for ( var i in opts ) {
314
- var j = opts [ i ] ;
315
- html += '<option value="' + j + '"' ;
316
- if ( j == t ) {
316
+ html += '<option value="' + i + '"' ;
317
+ if ( i == t ) {
317
318
html += ' selected="selected"' ;
318
319
}
319
- html += '>' + j + '</option>\n' ;
320
+ html += '>' + opts [ i ] + '</option>\n' ;
320
321
}
321
322
html += '</select>\n' ;
322
323
return html ;
323
324
} ;
324
325
325
326
// returns the HTML to render a checkbox for field 'n'
326
327
// which is faceted or not (t)
327
- $scope . $root . facetWidget = function ( n , t , v ) {
328
+ $scope . $root . facetWidget = function ( f ) {
329
+ var n = f . safename ;
330
+ var t = f . type ;
331
+ var v = f . facet . toString ( ) ;
328
332
var html = '<input class="input_checkbox" type="checkbox" value="true" name="' + n + '" id="' + n + '"' ;
329
333
if ( t == "number" || t == "boolean" ) {
330
334
html += ' disabled="disabled"' ;
@@ -413,7 +417,12 @@ seamsApp.controller('seamsController', ['$scope', '$route', '$routeParams', '$lo
413
417
randomrow = Math . floor ( Math . random ( ) * previewData . rows . length ) ;
414
418
var text = previewData . rows [ randomrow ] . doc [ fieldname ] ;
415
419
if ( text != null && typeof text !== 'undefined' ) {
416
- facet = fieldname + ":" + "\"" + text + "\"" ;
420
+ if ( fieldname . indexOf ( ' ' ) == - 1 ) {
421
+ facet = fieldname + ":" + "\"" + text + "\"" ;
422
+ }
423
+ else {
424
+ facet = "\"" + fieldname + "\":" + "\"" + text + "\"" ;
425
+ }
417
426
params = {
418
427
field : fieldname ,
419
428
value : text
@@ -680,14 +689,18 @@ seamsApp.directive('previewSearchHtml', function(){
680
689
681
690
scope . apiSearch = function ( key , value ) {
682
691
if ( typeof key != "undefined" ) {
683
- var query = key ;
692
+ var query = key . indexOf ( ' ' ) == - 1 ? key : ( '"' + key + '"' ) ;
684
693
if ( value ) {
685
694
query += ":\"" + value + "\"" ;
686
695
var search = scope . searchString ( ) ;
696
+ var spaceEncodedQ = query . replace ( / \s / g, "\+" ) ;
687
697
688
698
if ( search . indexOf ( query ) > - 1 ) {
689
699
query = search . replace ( query , "" ) . replace ( " AND AND " , " AND " ) ;
690
700
}
701
+ else if ( search . indexOf ( spaceEncodedQ ) > - 1 ) {
702
+ query = search . replace ( spaceEncodedQ , "" ) . replace ( " AND AND " , " AND " ) ;
703
+ }
691
704
else {
692
705
var regex = new RegExp ( key + ":\".*?\"" , "i" ) ;
693
706
@@ -715,7 +728,7 @@ seamsApp.directive('previewSearchHtml', function(){
715
728
}
716
729
717
730
if ( $ ( '#q' ) ) {
718
- $ ( '#q' ) . val ( query ) ;
731
+ $ ( '#q' ) . val ( query . replace ( / \+ / g , ' ' ) ) ;
719
732
scope . $root . searchdirty = ( query !== "*:*" ) ;
720
733
}
721
734
@@ -735,8 +748,10 @@ seamsApp.directive('previewSearchHtml', function(){
735
748
} ;
736
749
737
750
scope . isSelected = function ( facet , value ) {
738
- var q = facet + ":\"" + value + '\"' ;
739
- return scope . searchDocs . rest_uri . indexOf ( q ) > - 1 ;
751
+ var q = ( facet + ':"' + value + '"' ) . replace ( / \s / g, "\+" ) ;
752
+ var quoted = ( '"' + facet + '":"' + value + '"' ) . replace ( / \s / g, "\+" ) ;
753
+ return scope . searchDocs . rest_uri . indexOf ( q ) > - 1
754
+ || scope . searchDocs . rest_uri . indexOf ( quoted ) > - 1 ;
740
755
} ;
741
756
}
742
757
} ;
0 commit comments