mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Sort typeSearch results based on position of match
This commit is contained in:
parent
a75b819858
commit
1893642187
@ -19,6 +19,7 @@ RED.typeSearch = (function() {
|
|||||||
function search(val) {
|
function search(val) {
|
||||||
activeFilter = val.toLowerCase();
|
activeFilter = val.toLowerCase();
|
||||||
var visible = searchResults.editableList('filter');
|
var visible = searchResults.editableList('filter');
|
||||||
|
searchResults.editableList('sort');
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
selected = 0;
|
selected = 0;
|
||||||
searchResults.children().removeClass('selected');
|
searchResults.children().removeClass('selected');
|
||||||
@ -101,6 +102,23 @@ RED.typeSearch = (function() {
|
|||||||
}
|
}
|
||||||
return (activeFilter==="")||(data.index.indexOf(activeFilter) > -1);
|
return (activeFilter==="")||(data.index.indexOf(activeFilter) > -1);
|
||||||
},
|
},
|
||||||
|
sort: function(A,B) {
|
||||||
|
if (activeFilter === "") {
|
||||||
|
return A.i - B.i;
|
||||||
|
}
|
||||||
|
var Ai = A.index.indexOf(activeFilter);
|
||||||
|
var Bi = B.index.indexOf(activeFilter);
|
||||||
|
if (Ai === -1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (Bi === -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (Ai === Bi) {
|
||||||
|
return sortTypeLabels(A,B);
|
||||||
|
}
|
||||||
|
return Ai-Bi;
|
||||||
|
},
|
||||||
addItem: function(container,i,object) {
|
addItem: function(container,i,object) {
|
||||||
var def = object.def;
|
var def = object.def;
|
||||||
object.index = object.type.toLowerCase();
|
object.index = object.type.toLowerCase();
|
||||||
@ -225,7 +243,17 @@ RED.typeSearch = (function() {
|
|||||||
}
|
}
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
function sortTypeLabels(a,b) {
|
||||||
|
var al = a.label.toLowerCase();
|
||||||
|
var bl = b.label.toLowerCase();
|
||||||
|
if (al < bl) {
|
||||||
|
return -1;
|
||||||
|
} else if (al === bl) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
function refreshTypeList() {
|
function refreshTypeList() {
|
||||||
var i;
|
var i;
|
||||||
searchResults.editableList('empty');
|
searchResults.editableList('empty');
|
||||||
@ -250,27 +278,19 @@ RED.typeSearch = (function() {
|
|||||||
items.push({type:t,def: def, label:getTypeLabel(t,def)});
|
items.push({type:t,def: def, label:getTypeLabel(t,def)});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
items.sort(function(a,b) {
|
items.sort(sortTypeLabels);
|
||||||
var al = a.label.toLowerCase();
|
|
||||||
var bl = b.label.toLowerCase();
|
|
||||||
if (al < bl) {
|
|
||||||
return -1;
|
|
||||||
} else if (al === bl) {
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
var commonCount = 0;
|
var commonCount = 0;
|
||||||
var item;
|
var item;
|
||||||
|
var index = 0;
|
||||||
for(i=0;i<common.length;i++) {
|
for(i=0;i<common.length;i++) {
|
||||||
var itemDef = RED.nodes.getType(common[i]);
|
var itemDef = RED.nodes.getType(common[i]);
|
||||||
if (itemDef) {
|
if (itemDef) {
|
||||||
item = {
|
item = {
|
||||||
type: common[i],
|
type: common[i],
|
||||||
common: true,
|
common: true,
|
||||||
def: itemDef
|
def: itemDef,
|
||||||
|
i: index++
|
||||||
};
|
};
|
||||||
item.label = getTypeLabel(item.type,item.def);
|
item.label = getTypeLabel(item.type,item.def);
|
||||||
if (i === common.length-1) {
|
if (i === common.length-1) {
|
||||||
@ -283,7 +303,8 @@ RED.typeSearch = (function() {
|
|||||||
item = {
|
item = {
|
||||||
type:recentlyUsed[i],
|
type:recentlyUsed[i],
|
||||||
def: RED.nodes.getType(recentlyUsed[i]),
|
def: RED.nodes.getType(recentlyUsed[i]),
|
||||||
recent: true
|
recent: true,
|
||||||
|
i: index++
|
||||||
};
|
};
|
||||||
item.label = getTypeLabel(item.type,item.def);
|
item.label = getTypeLabel(item.type,item.def);
|
||||||
if (i === recentlyUsed.length-1) {
|
if (i === recentlyUsed.length-1) {
|
||||||
@ -292,6 +313,7 @@ RED.typeSearch = (function() {
|
|||||||
searchResults.editableList('addItem', item);
|
searchResults.editableList('addItem', item);
|
||||||
}
|
}
|
||||||
for (i=0;i<items.length;i++) {
|
for (i=0;i<items.length;i++) {
|
||||||
|
items[i].i = index++;
|
||||||
searchResults.editableList('addItem', items[i]);
|
searchResults.editableList('addItem', items[i]);
|
||||||
}
|
}
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user