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:
Dan Stillman 2007-03-01 16:05:19 +00:00
parent 22dacc2dbc
commit 5ae02ce447
3 changed files with 109 additions and 44 deletions

View File

@ -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;"

View File

@ -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++)
{ {

View File

@ -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 "+">