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;"
flex="1" persist="width ordinal hidden sortActive sortDirection"/>
<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
id="zotero-items-column-rights" hidden="true"
label="&zotero.items.rights_column;"

View File

@ -538,60 +538,112 @@ Zotero.ItemTreeView.prototype.sort = function()
var order = column.element.getAttribute('sortDirection') == 'ascending';
var columnField = column.id.substring(20);
if(columnField == 'type') {
function columnSort(a,b)
{
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;
}
// Year is really the date field truncated
if (columnField == 'year') {
columnField = 'date';
}
else if (columnField == 'numChildren') {
function columnSort(a,b)
{
return b.numChildren() - a.numChildren();
}
}
else
{
// Year is really the date field truncated
if (columnField == 'year') {
columnField = 'date';
}
// Some fields (e.g. dates) need to be retrieved unformatted for sorting
switch (columnField) {
case 'date':
var unformatted = true;
break;
default:
var unformatted = false;
}
// 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) {
case 'date':
var unformatted = true;
case 'type':
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;
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)
{
var fieldA = a.getField(columnField, unformatted);
var fieldB = b.getField(columnField, unformatted);
if (columnField != 'firstCreator') {
fieldA = a.getField('firstCreator');
fieldB = b.getField('firstCreator');
if(typeof fieldA == 'string')
{
fieldA = fieldA.toLowerCase();
fieldB = fieldB.toLowerCase();
// Display rows with empty values last
cmp = (fieldA == '' && fieldB != '') ? -1 :
(fieldA != '' && fieldB == '') ? 1 : 0;
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)
{
var s = columnSort(a,b);
if(s)
return s;
else
return secondarySort(a,b);
return columnSort(a,b);
}
function oppositeSort(a,b)
@ -599,11 +651,6 @@ Zotero.ItemTreeView.prototype.sort = function()
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();
for(var i = 0; i < this._dataItems.length; i++)
{

View File

@ -16,7 +16,10 @@
<!ENTITY zotero.items.date_column "Date">
<!ENTITY zotero.items.year_column "Year">
<!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.dateModified_column "Date Modified">
<!ENTITY zotero.items.numChildren_column "+">