Always sort top level matches before member matches
This commit is contained in:
@@ -32,18 +32,18 @@ $(function () {
|
|||||||
// We could get smarter on the weight here
|
// We could get smarter on the weight here
|
||||||
const name = matchedItem.dataset.name;
|
const name = matchedItem.dataset.name;
|
||||||
if (beginOnly) {
|
if (beginOnly) {
|
||||||
return re.baseName.test(name) ? 10000 : 0;
|
return re.baseName.test(name) ? 100 : 1;
|
||||||
}
|
}
|
||||||
// If everything else is equal, prefer shorter names, and prefer classes over modules
|
// If everything else is equal, prefer shorter names, and prefer classes over modules
|
||||||
let weight = matchedItem.dataset.longname.length - name.length * 100;
|
let weight = 10000 + matchedItem.dataset.longname.length - name.length * 100;
|
||||||
if (name.match(re.begin)) {
|
if (name.match(re.begin)) {
|
||||||
weight += 100000;
|
weight += 10000;
|
||||||
if (re.baseName.test(name)) {
|
if (re.baseName.test(name)) {
|
||||||
weight += 10000000;
|
weight += 10000;
|
||||||
if (re.fullName.test(name)) {
|
if (re.fullName.test(name)) {
|
||||||
weight += 100000000;
|
weight += 10000;
|
||||||
if (re.completeName.test(name)) {
|
if (re.completeName.test(name)) {
|
||||||
weight += 1000000000;
|
weight += 10000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -152,6 +152,19 @@ $(function () {
|
|||||||
const navList = search.$navList.get(0);
|
const navList = search.$navList.get(0);
|
||||||
const classes = [];
|
const classes = [];
|
||||||
const searchState = {};
|
const searchState = {};
|
||||||
|
search.getClassList().each(function (i, classEntry) {
|
||||||
|
const className = classEntry.dataset.longname;
|
||||||
|
if (!(className in searchState) && re.test(classEntry.dataset.name)) {
|
||||||
|
const cls = searchState[className] = {
|
||||||
|
item: classEntry,
|
||||||
|
// Do the weight thing
|
||||||
|
weight: getSearchWeight(classEntry, beginOnly) * 100000,
|
||||||
|
subItems: {}
|
||||||
|
};
|
||||||
|
classes.push(cls);
|
||||||
|
classEntry.classList.add('match');
|
||||||
|
}
|
||||||
|
});
|
||||||
search.getMembers().each(function (i, li) {
|
search.getMembers().each(function (i, li) {
|
||||||
const name = li.dataset.name;
|
const name = li.dataset.name;
|
||||||
if (re.test(name)) {
|
if (re.test(name)) {
|
||||||
@@ -162,14 +175,13 @@ $(function () {
|
|||||||
if (!cls) {
|
if (!cls) {
|
||||||
cls = searchState[className] = {
|
cls = searchState[className] = {
|
||||||
item: classEntry,
|
item: classEntry,
|
||||||
// Do the weight thing
|
weight: 0,
|
||||||
weight: getSearchWeight(classEntry, beginOnly) * 10000,
|
|
||||||
subItems: {}
|
subItems: {}
|
||||||
};
|
};
|
||||||
classes.push(cls);
|
classes.push(cls);
|
||||||
classEntry.classList.add('match');
|
classEntry.classList.add('match');
|
||||||
}
|
}
|
||||||
cls.weight += getSearchWeight(li, true) + 1;
|
cls.weight += getSearchWeight(li, true);
|
||||||
const memberType = itemMember.dataset.type;
|
const memberType = itemMember.dataset.type;
|
||||||
let members = cls.subItems[memberType];
|
let members = cls.subItems[memberType];
|
||||||
if (!members) {
|
if (!members) {
|
||||||
@@ -183,19 +195,6 @@ $(function () {
|
|||||||
li.classList.add('match');
|
li.classList.add('match');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
search.getClassList().each(function (i, classEntry) {
|
|
||||||
const className = classEntry.dataset.longname;
|
|
||||||
if (!(className in searchState) && re.test(classEntry.dataset.name)) {
|
|
||||||
const cls = searchState[className] = {
|
|
||||||
item: classEntry,
|
|
||||||
// Do the weight thing
|
|
||||||
weight: getSearchWeight(classEntry, beginOnly) * 10000,
|
|
||||||
subItems: {}
|
|
||||||
};
|
|
||||||
classes.push(cls);
|
|
||||||
classEntry.classList.add('match');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
clearOldMatches(search.lastState, searchState);
|
clearOldMatches(search.lastState, searchState);
|
||||||
search.lastState = searchState;
|
search.lastState = searchState;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user