Skip to content

Commit d538a00

Browse files
committed
fixed: query fill when suggestion fields
1 parent fef5215 commit d538a00

7 files changed

Lines changed: 126 additions & 75 deletions

ne-modules-all.js

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4526,7 +4526,7 @@ angular.module('neObject',[])
45264526
angular.module('neQuery',['neLocal','neObject'])
45274527
.config(['neLocalProvider', function(localProvider){
45284528
localProvider.set('default', {
4529-
$equal:'=',
4529+
$eq:'=',
45304530
$lt:'<',
45314531
$lte:'<=',
45324532
$gt:'>',
@@ -4638,7 +4638,7 @@ angular.module('neQuery',['neLocal','neObject'])
46384638
$templateCache.put('neQuery/date.html',
46394639
'<input type="text" '+
46404640
' class="input-sm" '+
4641-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4641+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46424642
' uib-datepicker-popup '+
46434643
' is-open="query.value_opened" '+
46444644
' ng-click="query.value_opened=!query.value_opened" '+
@@ -4659,7 +4659,7 @@ angular.module('neQuery',['neLocal','neObject'])
46594659
$templateCache.put('neQuery/number.html',
46604660
'<input type="number" '+
46614661
' class="input-sm" '+
4662-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4662+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46634663
' ng-model="query.value" '+
46644664
' ng-change="onChange()" '+
46654665
' style="width:142px;"/>');
@@ -4683,15 +4683,15 @@ angular.module('neQuery',['neLocal','neObject'])
46834683
$templateCache.put('neQuery/string.html',
46844684
'<input type="text" '+
46854685
' class="input-sm" '+
4686-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4686+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46874687
' ng-model="query.value" '+
46884688
' ng-change="onChange()"/>');
46894689

46904690
$templateCache.put('neQuery/string-suggestions.html',
46914691
'<div class="dropdown visible-inline-block" uib-dropdown keyboard-nav>'+
46924692
' <input type="text" '+
46934693
' class="input-sm" '+
4694-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4694+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46954695
' uib-dropdown-toggle '+
46964696
' ng-model="query.suggestion" '+
46974697
' ng-change="query.field.onlySuggestedValues ? query.value=null : query.value=query.suggestion;query.field.createSuggestions(query, query.suggestion);onChange()">'+
@@ -4842,23 +4842,23 @@ angular.module('neQuery',['neLocal','neObject'])
48424842
},
48434843
number:{
48444844
name:'number',
4845-
operators:['$equal','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
4845+
operators:['$eq','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
48464846
template: templates.number
48474847
},
48484848
boolean:{
48494849
name:'boolean',
4850-
operators:['$equal'], // 'is'
4850+
operators:['$eq'], // 'is'
48514851
template: templates.boolean,
48524852
onBuild: function(value){ if([true,'true','True',1,'yes','Yes'].indexOf(value)!==-1) return true; else return false; }
48534853
},
48544854
date:{
48554855
name:'date',
4856-
operators:['$equal','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
4856+
operators:['$eq','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
48574857
template: templates.date
48584858
},
48594859
datetime:{
48604860
name:'datetime',
4861-
operators:['$equal','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
4861+
operators:['$eq','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
48624862
template: templates.datetime
48634863
},
48644864
object:{
@@ -5077,10 +5077,10 @@ angular.module('neQuery',['neLocal','neObject'])
50775077

50785078
function addQuery(query, result, logical){
50795079
child = query.append(logical);
5080-
child.setFieldByName(result.fieldName, true); // reset if defined, because default field (first) was already set
50815080
child.type = types[result.typeName];
5082-
child.operator = result.operator;
50835081
child.value = result.value;
5082+
child.setFieldByName(result.fieldName, true); // reset if defined, because default field (first) was already set
5083+
child.operator = result.operator; // force change operator to show original query operator, even if field has disabled changing operator
50845084
}
50855085

50865086
return query;
@@ -5155,7 +5155,7 @@ angular.module('neQuery',['neLocal','neObject'])
51555155
if(type) return {
51565156
fieldName: key,
51575157
typeName: type,
5158-
operator: type==='string' ? '$regex_exact' : '$equal',
5158+
operator: type==='string' ? '$regex_exact' : '$eq',
51595159
value: value
51605160
};
51615161
}
@@ -5182,9 +5182,20 @@ angular.module('neQuery',['neLocal','neObject'])
51825182
};
51835183
}
51845184
},
5185-
$equal:{ // virtual, called on build when equal operator
5185+
$eq:{
51865186
build: function(value){
51875187
return value;
5188+
},
5189+
parse: function(key, value){
5190+
var vt = parseValueType(value), type = vt.type;
5191+
value = vt.value;
5192+
5193+
if(type) return {
5194+
fieldName: key,
5195+
typeName: type,
5196+
operator: type==='string' ? '$regex_exact' : '$eq',
5197+
value: value
5198+
};
51885199
}
51895200
},
51905201
$exists:{
@@ -5581,15 +5592,17 @@ angular.module('neQuery',['neLocal','neObject'])
55815592
return this.$dirty;
55825593
}
55835594

5584-
function setFieldByName(fieldName, resetIfDefined){
5595+
function setFieldByName(fieldName, resetPrevField){
5596+
if(resetPrevField) delete this.field;
5597+
55855598
if(fieldName){
55865599
var fieldNameLower = fieldName.toLowerCase();
55875600
for(var i=0;i<this.fields.length;i++){
55885601
if(this.fields[i].key===fieldName || this.fields[i].nameLower===fieldNameLower){
55895602
return this.setField(this.fields[i]); // match with predefined fields
55905603
}
55915604
else if(this.fields[i].match && (fieldName.match(this.fields[i].match) || fieldNameLower.match(this.fields[i].match))){
5592-
if(!resetIfDefined && this.field && this.field.field === this.fields[i].field) return;
5605+
if(this.field && this.field.field === this.fields[i].field) return;
55935606
else return this.setField(this.fields[i], fieldName); // match with predefined fields
55945607
}
55955608
}
@@ -5606,12 +5619,13 @@ angular.module('neQuery',['neLocal','neObject'])
56065619
// this.operator = this.type.operators[0];
56075620
this.value = null;
56085621
}
5622+
var prevField = this.field;
56095623
this.field = angular.copy(field||{});
56105624
this.fieldName = fieldName || this.field.name;
56115625

56125626
// set default operator, if field has operatorIndex
56135627
this.operator = this.type.operators[ this.field.operatorIndex||0 ];
5614-
if(field.onSet) field.onSet(this);
5628+
if(field.onSet) field.onSet(this, prevField);
56155629
}
56165630

56175631
function setOperator(operator){
@@ -5814,10 +5828,14 @@ angular.module('neQuery',['neLocal','neObject'])
58145828
fields[i].onlySuggestedValues = fields[i].onlySuggestedValues;
58155829

58165830
if(fields[i].loadSuggestions) {
5817-
fields[i].onSet = fields[i].onSet || function(query){
5818-
query.value = null;
5819-
query.suggestion = '';
5820-
query.suggestions = [];
5831+
fields[i].resetOnFieldChange = true;
5832+
fields[i].onSet = fields[i].onSet || function(query, prevField){
5833+
if(prevField){
5834+
query.value = null;
5835+
query.suggestion = '';
5836+
query.suggestions = [];
5837+
}
5838+
else query.suggestion = query.suggestion || query.value;
58215839
};
58225840
fields[i].template = fields[i].template || templates.suggestions;
58235841
fields[i].createSuggestions = (function(field){

ne-modules-all.min.js

Lines changed: 7 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules-all.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules.js

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4526,7 +4526,7 @@ angular.module('neObject',[])
45264526
angular.module('neQuery',['neLocal','neObject'])
45274527
.config(['neLocalProvider', function(localProvider){
45284528
localProvider.set('default', {
4529-
$equal:'=',
4529+
$eq:'=',
45304530
$lt:'<',
45314531
$lte:'<=',
45324532
$gt:'>',
@@ -4638,7 +4638,7 @@ angular.module('neQuery',['neLocal','neObject'])
46384638
$templateCache.put('neQuery/date.html',
46394639
'<input type="text" '+
46404640
' class="input-sm" '+
4641-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4641+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46424642
' uib-datepicker-popup '+
46434643
' is-open="query.value_opened" '+
46444644
' ng-click="query.value_opened=!query.value_opened" '+
@@ -4659,7 +4659,7 @@ angular.module('neQuery',['neLocal','neObject'])
46594659
$templateCache.put('neQuery/number.html',
46604660
'<input type="number" '+
46614661
' class="input-sm" '+
4662-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4662+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46634663
' ng-model="query.value" '+
46644664
' ng-change="onChange()" '+
46654665
' style="width:142px;"/>');
@@ -4683,15 +4683,15 @@ angular.module('neQuery',['neLocal','neObject'])
46834683
$templateCache.put('neQuery/string.html',
46844684
'<input type="text" '+
46854685
' class="input-sm" '+
4686-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4686+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46874687
' ng-model="query.value" '+
46884688
' ng-change="onChange()"/>');
46894689

46904690
$templateCache.put('neQuery/string-suggestions.html',
46914691
'<div class="dropdown visible-inline-block" uib-dropdown keyboard-nav>'+
46924692
' <input type="text" '+
46934693
' class="input-sm" '+
4694-
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}"'+
4694+
' placeholder="{{(query.field.isEmptyValue(query.value) ? (query.field.placeholder||\'type value\') : \'empty value\')|translate}}" '+
46954695
' uib-dropdown-toggle '+
46964696
' ng-model="query.suggestion" '+
46974697
' ng-change="query.field.onlySuggestedValues ? query.value=null : query.value=query.suggestion;query.field.createSuggestions(query, query.suggestion);onChange()">'+
@@ -4842,23 +4842,23 @@ angular.module('neQuery',['neLocal','neObject'])
48424842
},
48434843
number:{
48444844
name:'number',
4845-
operators:['$equal','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
4845+
operators:['$eq','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
48464846
template: templates.number
48474847
},
48484848
boolean:{
48494849
name:'boolean',
4850-
operators:['$equal'], // 'is'
4850+
operators:['$eq'], // 'is'
48514851
template: templates.boolean,
48524852
onBuild: function(value){ if([true,'true','True',1,'yes','Yes'].indexOf(value)!==-1) return true; else return false; }
48534853
},
48544854
date:{
48554855
name:'date',
4856-
operators:['$equal','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
4856+
operators:['$eq','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
48574857
template: templates.date
48584858
},
48594859
datetime:{
48604860
name:'datetime',
4861-
operators:['$equal','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
4861+
operators:['$eq','$lt','$lte','$gt','$gte'], // '=','<','<=','>','>='
48624862
template: templates.datetime
48634863
},
48644864
object:{
@@ -5077,10 +5077,10 @@ angular.module('neQuery',['neLocal','neObject'])
50775077

50785078
function addQuery(query, result, logical){
50795079
child = query.append(logical);
5080-
child.setFieldByName(result.fieldName, true); // reset if defined, because default field (first) was already set
50815080
child.type = types[result.typeName];
5082-
child.operator = result.operator;
50835081
child.value = result.value;
5082+
child.setFieldByName(result.fieldName, true); // reset if defined, because default field (first) was already set
5083+
child.operator = result.operator; // force change operator to show original query operator, even if field has disabled changing operator
50845084
}
50855085

50865086
return query;
@@ -5155,7 +5155,7 @@ angular.module('neQuery',['neLocal','neObject'])
51555155
if(type) return {
51565156
fieldName: key,
51575157
typeName: type,
5158-
operator: type==='string' ? '$regex_exact' : '$equal',
5158+
operator: type==='string' ? '$regex_exact' : '$eq',
51595159
value: value
51605160
};
51615161
}
@@ -5182,9 +5182,20 @@ angular.module('neQuery',['neLocal','neObject'])
51825182
};
51835183
}
51845184
},
5185-
$equal:{ // virtual, called on build when equal operator
5185+
$eq:{
51865186
build: function(value){
51875187
return value;
5188+
},
5189+
parse: function(key, value){
5190+
var vt = parseValueType(value), type = vt.type;
5191+
value = vt.value;
5192+
5193+
if(type) return {
5194+
fieldName: key,
5195+
typeName: type,
5196+
operator: type==='string' ? '$regex_exact' : '$eq',
5197+
value: value
5198+
};
51885199
}
51895200
},
51905201
$exists:{
@@ -5581,15 +5592,17 @@ angular.module('neQuery',['neLocal','neObject'])
55815592
return this.$dirty;
55825593
}
55835594

5584-
function setFieldByName(fieldName, resetIfDefined){
5595+
function setFieldByName(fieldName, resetPrevField){
5596+
if(resetPrevField) delete this.field;
5597+
55855598
if(fieldName){
55865599
var fieldNameLower = fieldName.toLowerCase();
55875600
for(var i=0;i<this.fields.length;i++){
55885601
if(this.fields[i].key===fieldName || this.fields[i].nameLower===fieldNameLower){
55895602
return this.setField(this.fields[i]); // match with predefined fields
55905603
}
55915604
else if(this.fields[i].match && (fieldName.match(this.fields[i].match) || fieldNameLower.match(this.fields[i].match))){
5592-
if(!resetIfDefined && this.field && this.field.field === this.fields[i].field) return;
5605+
if(this.field && this.field.field === this.fields[i].field) return;
55935606
else return this.setField(this.fields[i], fieldName); // match with predefined fields
55945607
}
55955608
}
@@ -5606,12 +5619,13 @@ angular.module('neQuery',['neLocal','neObject'])
56065619
// this.operator = this.type.operators[0];
56075620
this.value = null;
56085621
}
5622+
var prevField = this.field;
56095623
this.field = angular.copy(field||{});
56105624
this.fieldName = fieldName || this.field.name;
56115625

56125626
// set default operator, if field has operatorIndex
56135627
this.operator = this.type.operators[ this.field.operatorIndex||0 ];
5614-
if(field.onSet) field.onSet(this);
5628+
if(field.onSet) field.onSet(this, prevField);
56155629
}
56165630

56175631
function setOperator(operator){
@@ -5814,10 +5828,14 @@ angular.module('neQuery',['neLocal','neObject'])
58145828
fields[i].onlySuggestedValues = fields[i].onlySuggestedValues;
58155829

58165830
if(fields[i].loadSuggestions) {
5817-
fields[i].onSet = fields[i].onSet || function(query){
5818-
query.value = null;
5819-
query.suggestion = '';
5820-
query.suggestions = [];
5831+
fields[i].resetOnFieldChange = true;
5832+
fields[i].onSet = fields[i].onSet || function(query, prevField){
5833+
if(prevField){
5834+
query.value = null;
5835+
query.suggestion = '';
5836+
query.suggestions = [];
5837+
}
5838+
else query.suggestion = query.suggestion || query.value;
58215839
};
58225840
fields[i].template = fields[i].template || templates.suggestions;
58235841
fields[i].createSuggestions = (function(field){

ne-modules.min.js

Lines changed: 3 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ne-modules.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)