Skip to content
This repository was archived by the owner on Nov 10, 2020. It is now read-only.

Commit f91d178

Browse files
committed
Revert "Refactor search sorting."
This reverts commit 2addd83.
1 parent 7289b7f commit f91d178

File tree

1 file changed

+36
-34
lines changed

1 file changed

+36
-34
lines changed

_assets/js/swift-site.js

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -210,47 +210,49 @@ $(function() {
210210
selectdata.push({ id: item.toLowerCase(), fullText: item, text: item.toLowerCase(), kind: match[1] });
211211
}
212212
}
213-
214213
$('.select2').select2({
215214
placeholder: "Search",
216215
minimumInputLength: 1,
217216
formatInputTooShort: '',
218217
data: selectdata,
219218
formatResult: format,
220-
sortResults: function(results, container, query) {
221-
if (!query.term) {
222-
return results;
223-
}
224-
225-
var term = query.term.toLowerCase();
226-
227-
// order two items by the location of the search term in the text
228-
// that is, when the term is "string", String should match before StaticString
229-
var orderByOffset = function(a, b) {
230-
var indexOffset = a.indexOf(term) - a.indexOf(term);
231-
232-
// if the relative offset of the search term is nonzero, the term
233-
// with the lower offset should come first
234-
if (indexOffset != 0) {
235-
return indexOffset;
236-
}
237-
238-
// otherwise, order using case-insensitive alpha
239-
if (a == b) {
240-
return 0;
241-
} else {
242-
return (a < b) ? -1 : 1;
243-
}
219+
sortResults: function(results, container, query) {
220+
if (query.term) {
221+
var term = query.term.toLowerCase();
222+
return results.sort(function(a, b) {
223+
// we sort first by location of the search term in the matches
224+
// that is, when the term is "string", String should match before StaticString
225+
// to begin, find the relative search term offset of the two matches
226+
var aComp = a.text || a.id;
227+
var bComp = b.text || b.id;
228+
var indexOffset = aComp.indexOf(term) - bComp.indexOf(term);
229+
230+
// if the relative offset of the search term is nonzero, the term
231+
// with the lower offset should come first
232+
if (indexOffset != 0) {
233+
return indexOffset;
234+
235+
// otherwise, order using case-insensitive alpha
236+
} else {
237+
if (aComp != bComp) {
238+
return (aComp < bComp) ? -1 : 1;
239+
} else {
240+
// if the two terms are the same, expand the comparison to look at their fully qualified names
241+
indexOffset = a.id.indexOf(term) - b.id.indexOf(term);
242+
if (indexOffset != 0) {
243+
return indexOffset;
244+
} else {
245+
if (a.id == b.id) {
246+
return 0;
247+
} else {
248+
return (a.id < b.id) ? -1 : 1;
249+
}
250+
}
251+
}
252+
}
253+
});
244254
}
245-
246-
return results.sort(function(a, b) {
247-
var compResult = orderByOffset(a.text || a.id, b.text || b.id);
248-
if (compResult != 0) {
249-
return compResult;
250-
}
251-
252-
return orderByOffset(a.id, b.id);
253-
});
255+
return results;
254256
}
255257
})
256258
.on("change", function(e) {

0 commit comments

Comments
 (0)