Added Language, Call Number and Repository fields to middle pane
Row sorting now sorts by 'firstCreator' and 'date' after the main sort column
This commit is contained in:
parent
22dacc2dbc
commit
5ae02ce447
|
@ -221,6 +221,21 @@
|
||||||
label="&zotero.items.publisher_column;"
|
label="&zotero.items.publisher_column;"
|
||||||
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
<splitter class="tree-splitter"/>
|
<splitter class="tree-splitter"/>
|
||||||
|
<treecol
|
||||||
|
id="zotero-items-column-language" hidden="true"
|
||||||
|
label="&zotero.items.language_column;"
|
||||||
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
|
<splitter class="tree-splitter"/>
|
||||||
|
<treecol
|
||||||
|
id="zotero-items-column-callNumber" hidden="true"
|
||||||
|
label="&zotero.items.callNumber_column;"
|
||||||
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
|
<splitter class="tree-splitter"/>
|
||||||
|
<treecol
|
||||||
|
id="zotero-items-column-repository" hidden="true"
|
||||||
|
label="&zotero.items.repository_column;"
|
||||||
|
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
|
||||||
|
<splitter class="tree-splitter"/>
|
||||||
<treecol
|
<treecol
|
||||||
id="zotero-items-column-rights" hidden="true"
|
id="zotero-items-column-rights" hidden="true"
|
||||||
label="&zotero.items.rights_column;"
|
label="&zotero.items.rights_column;"
|
||||||
|
|
|
@ -538,60 +538,112 @@ Zotero.ItemTreeView.prototype.sort = function()
|
||||||
var order = column.element.getAttribute('sortDirection') == 'ascending';
|
var order = column.element.getAttribute('sortDirection') == 'ascending';
|
||||||
var columnField = column.id.substring(20);
|
var columnField = column.id.substring(20);
|
||||||
|
|
||||||
if(columnField == 'type') {
|
// Year is really the date field truncated
|
||||||
function columnSort(a,b)
|
if (columnField == 'year') {
|
||||||
{
|
columnField = 'date';
|
||||||
var typeA = Zotero.getString('itemTypes.'+Zotero.ItemTypes.getName(a.getType()));
|
|
||||||
var typeB = Zotero.getString('itemTypes.'+Zotero.ItemTypes.getName(b.getType()));
|
|
||||||
|
|
||||||
return (typeA > typeB) ? -1 : (typeA < typeB) ? 1 : 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (columnField == 'numChildren') {
|
|
||||||
function columnSort(a,b)
|
// Some fields (e.g. dates) need to be retrieved unformatted for sorting
|
||||||
{
|
switch (columnField) {
|
||||||
return b.numChildren() - a.numChildren();
|
case 'date':
|
||||||
}
|
var unformatted = true;
|
||||||
}
|
break;
|
||||||
else
|
|
||||||
{
|
default:
|
||||||
// Year is really the date field truncated
|
var unformatted = false;
|
||||||
if (columnField == 'year') {
|
}
|
||||||
columnField = 'date';
|
|
||||||
}
|
// Hash table of fields for which rows with empty values should be displayed last
|
||||||
|
// - Not currently used
|
||||||
|
var emptyFirst = {};
|
||||||
|
|
||||||
|
function columnSort(a,b) {
|
||||||
|
var cmp;
|
||||||
|
|
||||||
// Some fields (e.g. dates) need to be retrieved unformatted for sorting
|
|
||||||
switch (columnField) {
|
switch (columnField) {
|
||||||
case 'date':
|
case 'type':
|
||||||
var unformatted = true;
|
var typeA = Zotero.getString('itemTypes.'+Zotero.ItemTypes.getName(a.getType()));
|
||||||
|
var typeB = Zotero.getString('itemTypes.'+Zotero.ItemTypes.getName(b.getType()));
|
||||||
|
|
||||||
|
cmp = (typeA > typeB) ? -1 : (typeA < typeB) ? 1 : 0;
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'numChildren':
|
||||||
|
cmp = b.numChildren() - a.numChildren();
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
var unformatted = false;
|
var fieldA = a.getField(columnField, unformatted);
|
||||||
|
var fieldB = b.getField(columnField, unformatted);
|
||||||
|
|
||||||
|
if (typeof fieldA == 'string') {
|
||||||
|
fieldA = fieldA.toLowerCase();
|
||||||
|
fieldB = fieldB.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Display rows with empty values last
|
||||||
|
if (!emptyFirst[columnField]) {
|
||||||
|
cmp = (fieldA == '' && fieldB != '') ? -1 :
|
||||||
|
(fieldA != '' && fieldB == '') ? 1 : 0;
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmp = (fieldA > fieldB) ? -1 : (fieldA < fieldB) ? 1 : 0;
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function columnSort(a,b)
|
if (columnField != 'firstCreator') {
|
||||||
{
|
fieldA = a.getField('firstCreator');
|
||||||
var fieldA = a.getField(columnField, unformatted);
|
fieldB = b.getField('firstCreator');
|
||||||
var fieldB = b.getField(columnField, unformatted);
|
|
||||||
|
|
||||||
if(typeof fieldA == 'string')
|
// Display rows with empty values last
|
||||||
{
|
cmp = (fieldA == '' && fieldB != '') ? -1 :
|
||||||
fieldA = fieldA.toLowerCase();
|
(fieldA != '' && fieldB == '') ? 1 : 0;
|
||||||
fieldB = fieldB.toLowerCase();
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (fieldA > fieldB) ? -1 : (fieldA < fieldB) ? 1 : 0;
|
cmp = (fieldA > fieldB) ? -1 : (fieldA < fieldB) ? 1 : 0;
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (columnField != 'date') {
|
||||||
|
fieldA = a.getField('date', true);
|
||||||
|
fieldB = b.getField('date', true);
|
||||||
|
|
||||||
|
// Display rows with empty values last
|
||||||
|
cmp = (fieldA == '' && fieldB != '') ? -1 :
|
||||||
|
(fieldA != '' && fieldB == '') ? 1 : 0;
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmp = (fieldA > fieldB) ? -1 : (fieldA < fieldB) ? 1 : 0;
|
||||||
|
if (cmp) {
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldA = a.getField('dateModified');
|
||||||
|
fieldB = b.getField('dateModified');
|
||||||
|
return (fieldA > fieldB) ? -1 : (fieldA < fieldB) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function doSort(a,b)
|
function doSort(a,b)
|
||||||
{
|
{
|
||||||
var s = columnSort(a,b);
|
return columnSort(a,b);
|
||||||
if(s)
|
|
||||||
return s;
|
|
||||||
else
|
|
||||||
return secondarySort(a,b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function oppositeSort(a,b)
|
function oppositeSort(a,b)
|
||||||
|
@ -599,11 +651,6 @@ Zotero.ItemTreeView.prototype.sort = function()
|
||||||
return(doSort(a,b) * -1);
|
return(doSort(a,b) * -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function secondarySort(a,b)
|
|
||||||
{
|
|
||||||
return (a.getField('dateModified') > b.getField('dateModified')) ? -1 : (a.getField('dateModified') < b.getField('dateModified')) ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
var openRows = new Array();
|
var openRows = new Array();
|
||||||
for(var i = 0; i < this._dataItems.length; i++)
|
for(var i = 0; i < this._dataItems.length; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,7 +16,10 @@
|
||||||
<!ENTITY zotero.items.date_column "Date">
|
<!ENTITY zotero.items.date_column "Date">
|
||||||
<!ENTITY zotero.items.year_column "Year">
|
<!ENTITY zotero.items.year_column "Year">
|
||||||
<!ENTITY zotero.items.publisher_column "Publisher">
|
<!ENTITY zotero.items.publisher_column "Publisher">
|
||||||
<!ENTITY zotero.items.rights_column "Rights">
|
<!ENTITY zotero.items.language_column "Language">
|
||||||
|
<!ENTITY zotero.items.callNumber_column "Call Number">
|
||||||
|
<!ENTITY zotero.items.repository_column "Repository">
|
||||||
|
<!ENTITY zotero.items.rights_column "Rights">
|
||||||
<!ENTITY zotero.items.dateAdded_column "Date Added">
|
<!ENTITY zotero.items.dateAdded_column "Date Added">
|
||||||
<!ENTITY zotero.items.dateModified_column "Date Modified">
|
<!ENTITY zotero.items.dateModified_column "Date Modified">
|
||||||
<!ENTITY zotero.items.numChildren_column "+">
|
<!ENTITY zotero.items.numChildren_column "+">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user