Favor left-bound name matches in QuickFormat bar
https://forums.zotero.org/discussion/48047/
This commit is contained in:
parent
bfbf3d871c
commit
2f3d865f11
1 changed files with 22 additions and 6 deletions
|
@ -318,21 +318,21 @@ var Zotero_QuickFormat = new function () {
|
||||||
Zotero.debug("Searched cited items");
|
Zotero.debug("Searched cited items");
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateItemList(citedItems, citedItemsMatchingSearch, searchResultIDs, isAsync);
|
_updateItemList(citedItems, citedItemsMatchingSearch, str, searchResultIDs, isAsync);
|
||||||
}).done();
|
}).done();
|
||||||
|
|
||||||
if(!completed) {
|
if(!completed) {
|
||||||
// We are going to have to wait until items have been retrieved from the document.
|
// We are going to have to wait until items have been retrieved from the document.
|
||||||
// Until then, show item list without cited items.
|
// Until then, show item list without cited items.
|
||||||
Zotero.debug("Getting cited items asynchronously");
|
Zotero.debug("Getting cited items asynchronously");
|
||||||
_updateItemList(false, false, searchResultIDs);
|
_updateItemList(false, false, str, searchResultIDs);
|
||||||
isAsync = true;
|
isAsync = true;
|
||||||
} else {
|
} else {
|
||||||
Zotero.debug("Got cited items synchronously");
|
Zotero.debug("Got cited items synchronously");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// No search conditions, so just clear the box
|
// No search conditions, so just clear the box
|
||||||
_updateItemList([], [], []);
|
_updateItemList([], [], "", []);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,7 +353,7 @@ var Zotero_QuickFormat = new function () {
|
||||||
/**
|
/**
|
||||||
* Updates the item list
|
* Updates the item list
|
||||||
*/
|
*/
|
||||||
function _updateItemList(citedItems, citedItemsMatchingSearch, searchResultIDs, preserveSelection) {
|
function _updateItemList(citedItems, citedItemsMatchingSearch, searchString, searchResultIDs, preserveSelection) {
|
||||||
var selectedIndex = 1, previousItemID;
|
var selectedIndex = 1, previousItemID;
|
||||||
|
|
||||||
// Do this so we can preserve the selected item after cited items have been loaded
|
// Do this so we can preserve the selected item after cited items have been loaded
|
||||||
|
@ -411,7 +411,25 @@ var Zotero_QuickFormat = new function () {
|
||||||
if(searchResultIDs.length && (!citedItemsMatchingSearch || citedItemsMatchingSearch.length < 50)) {
|
if(searchResultIDs.length && (!citedItemsMatchingSearch || citedItemsMatchingSearch.length < 50)) {
|
||||||
var items = Zotero.Items.get(searchResultIDs);
|
var items = Zotero.Items.get(searchResultIDs);
|
||||||
|
|
||||||
|
searchString = searchString.toLowerCase();
|
||||||
|
|
||||||
items.sort(function _itemSort(a, b) {
|
items.sort(function _itemSort(a, b) {
|
||||||
|
var creatorsA = a.getCreators(), creatorsB = b.getCreators(),
|
||||||
|
caExists = creatorsA.length ? 1 : 0, cbExists = creatorsB.length ? 1 : 0;
|
||||||
|
|
||||||
|
// Favor left-bound name matches (e.g., "Baum" < "Appelbaum"),
|
||||||
|
// using last name of first author
|
||||||
|
if (caExists && cbExists) {
|
||||||
|
let caStartsWith = creatorsA[0].ref.lastName.toLowerCase().indexOf(searchString) == 0;
|
||||||
|
let cbStartsWith = creatorsB[0].ref.lastName.toLowerCase().indexOf(searchString) == 0;
|
||||||
|
if (caStartsWith && !cbStartsWith) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if (!caStartsWith && cbStartsWith) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var libA = a.libraryID ? a.libraryID : 0, libB = b.libraryID ? b.libraryID : 0;
|
var libA = a.libraryID ? a.libraryID : 0, libB = b.libraryID ? b.libraryID : 0;
|
||||||
if(libA !== libB) {
|
if(libA !== libB) {
|
||||||
// Sort by number of cites for library
|
// Sort by number of cites for library
|
||||||
|
@ -430,8 +448,6 @@ var Zotero_QuickFormat = new function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort by last name of first author
|
// Sort by last name of first author
|
||||||
var creatorsA = a.getCreators(), creatorsB = b.getCreators(),
|
|
||||||
caExists = creatorsA.length ? 1 : 0, cbExists = creatorsB.length ? 1 : 0;
|
|
||||||
if(caExists !== cbExists) {
|
if(caExists !== cbExists) {
|
||||||
return cbExists-caExists;
|
return cbExists-caExists;
|
||||||
} else if(caExists) {
|
} else if(caExists) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue