Metadata now is much more compact when not being edited.

Close buttons on the Metadata and Notes.

The Collections list no longer throws an exception when the header is clicked.
More minor interface improvements.
This commit is contained in:
David Norton 2006-06-02 23:05:24 +00:00
parent c561ca129e
commit c42991a5bf
5 changed files with 98 additions and 73 deletions

View File

@ -187,6 +187,7 @@ Scholar.FolderTreeView.prototype.getImageSrc = function(row, col) { }
Scholar.FolderTreeView.prototype.performAction = function(action) { } Scholar.FolderTreeView.prototype.performAction = function(action) { }
Scholar.FolderTreeView.prototype.performActionOnCell = function(action, row, col) { } Scholar.FolderTreeView.prototype.performActionOnCell = function(action, row, col) { }
Scholar.FolderTreeView.prototype.getProgressMode = function(row, col) { } Scholar.FolderTreeView.prototype.getProgressMode = function(row, col) { }
Scholar.FolderTreeView.prototype.cycleHeader = function(column) { }
Scholar.FolderTreeView.prototype.deleteSelection = function() Scholar.FolderTreeView.prototype.deleteSelection = function()
{ {

View File

@ -2,18 +2,19 @@ MetadataPane = new function()
{ {
var _dynamicFields; var _dynamicFields;
var _dynamicCreators; var _dynamicCreators;
var _itemBeingEdited;
var _creatorTypes = Scholar.CreatorTypes.getTypes();
var _editButton; var _editButton;
this.init = init; var _itemBeingEdited;
var _creatorTypes = Scholar.CreatorTypes.getTypes();
this.onLoad = onLoad;
this.viewItem = viewItem; this.viewItem = viewItem;
this.toggleEdit = toggleEdit; this.toggleEdit = toggleEdit;
this.saveItem = saveItem; this.saveItem = saveItem;
this.addCreator = addCreator; this.addCreator = addCreator;
this.removeCreator = removeCreator; this.removeCreator = removeCreator;
function init() function onLoad()
{ {
_metadataPane = document.getElementById('scholar-metadata'); _metadataPane = document.getElementById('scholar-metadata');
_dynamicFields = document.getElementById('editpane-dynamic-fields'); _dynamicFields = document.getElementById('editpane-dynamic-fields');
@ -23,37 +24,41 @@ MetadataPane = new function()
return true; return true;
} }
/*
* Dynamically loads an item
*/
function viewItem(thisItem) function viewItem(thisItem)
{ {
removeDynamicRows(_dynamicFields); removeDynamicRows(_dynamicFields);
removeDynamicRows(_dynamicCreators);
var fieldNames = getFullFieldList(thisItem); var fieldNames = getFullFieldList(thisItem);
var editingMode = _editButton.checked;
for(var i = 0; i<fieldNames.length; i++) for(var i = 0; i<fieldNames.length; i++)
{ {
if(!thisItem.isPrimaryField(fieldNames[i]) || thisItem.isEditableField(fieldNames[i])) rowValue = thisItem.getField(fieldNames[i]);
if(!editingMode || !thisItem.isPrimaryField(fieldNames[i]) || thisItem.isEditableField(fieldNames[i]))
{ {
var label = document.createElement("label"); if(editingMode || rowValue)
label.setAttribute("value",Scholar.getString("itemFields."+fieldNames[i])+":"); addDynamicField(Scholar.getString("itemFields."+fieldNames[i])+":",rowValue,editingMode ? fieldNames[i] : null);
label.setAttribute("control","dynamic-field-"+i);
//create the textbox
var valueElement = document.createElement("textbox");
valueElement.setAttribute("value",thisItem.getField(fieldNames[i]));
valueElement.setAttribute("id","dynamic-field-"+i); //just so the label can be assigned to this valueElement
valueElement.setAttribute("fieldName",fieldNames[i]); //we will use this later
valueElement.setAttribute("disabled",true);
var row = document.createElement("row");
row.appendChild(label);
row.appendChild(valueElement);
_dynamicFields.appendChild(row);
} }
} }
removeDynamicRows(_dynamicCreators);
for(var i = 0, len=thisItem.numCreators(); i<len; i++) for(var i = 0, len=thisItem.numCreators(); i<len; i++)
addCreator(thisItem.getCreator(i)['firstName'],thisItem.getCreator(i)['lastName'],thisItem.getCreator(i)['creatorTypeID']); {
var creator = thisItem.getCreator(i);
if(_editButton.checked)
{
addCreator(creator['firstName'],creator['lastName'],creator['creatorTypeID']);
}
else
{
addDynamicField(Scholar.getString('creatorTypes.'+Scholar.CreatorTypes.getTypeName(creator['creatorTypeID']))+":",
creator['firstName']+' '+creator['lastName'],
false);
}
}
_itemBeingEdited = thisItem; _itemBeingEdited = thisItem;
} }
@ -64,30 +69,8 @@ MetadataPane = new function()
saveItem(); saveItem();
_editButton.checked = !_editButton.checked; _editButton.checked = !_editButton.checked;
var disabledElements = []; document.getElementById('metadata-creators-toolbar').hidden = !_editButton.checked;
viewItem(_itemBeingEdited);
for(var i = 0, row; row = _dynamicFields.childNodes[i]; i++)
{
disabledElements.push(row.lastChild);
}
for(var i = 0, row; row = _dynamicCreators.childNodes[i]; i++)
{
for(var j = 0, col; col = row.childNodes[j]; j++)
{
disabledElements.push(col);
}
}
disabledElements.push(document.getElementById('tb-creator-add'));
for(var i = 0, elem; elem = disabledElements[i]; i++)
{
if(_editButton.checked)
elem.removeAttribute("disabled");
else
elem.setAttribute("disabled",true);
}
} }
function saveItem() function saveItem()
@ -113,21 +96,13 @@ MetadataPane = new function()
for(var i = creatorRows.length; i < numCreatorsBefore; i++) for(var i = creatorRows.length; i < numCreatorsBefore; i++)
_itemBeingEdited.setCreator(i, false); _itemBeingEdited.setCreator(i, false);
if(!_itemBeingEdited.getID()) //NEW ITEM
{
/* get ref to myTreeView?
myTreeView._showItem(_itemBeingEdited, 0, myTreeView.rowCount);
myTreeView._treebox.rowCountChanged(myTreeView.rowCount-1,1);
*/
}
_itemBeingEdited.save(); _itemBeingEdited.save();
} }
function getFullFieldList(item) function getFullFieldList(item)
{ {
var fields = Scholar.ItemFields.getItemTypeFields(item.getField("itemTypeID"));
var fieldNames = new Array("title","dateAdded","dateModified"); var fieldNames = new Array("title","dateAdded","dateModified");
var fields = Scholar.ItemFields.getItemTypeFields(item.getField("itemTypeID"));
for(var i = 0; i<fields.length; i++) for(var i = 0; i<fields.length; i++)
fieldNames.push(Scholar.ItemFields.getName(fields[i])); fieldNames.push(Scholar.ItemFields.getName(fields[i]));
return fieldNames; return fieldNames;
@ -139,6 +114,30 @@ MetadataPane = new function()
box.removeChild(box.firstChild); box.removeChild(box.firstChild);
} }
function addDynamicField(labelText, valueText, editable)
{
var label = document.createElement("label");
label.setAttribute("value",labelText);
var valueElement;
if(editable)
{
valueElement = document.createElement("textbox");
valueElement.setAttribute("value",valueText);
valueElement.setAttribute("fieldName",editable); //used for identifying the field for saving
}
else
{
valueElement = document.createElement("label");
valueElement.appendChild(document.createTextNode(valueText));
}
var row = document.createElement("row");
row.appendChild(label);
row.appendChild(valueElement);
_dynamicFields.appendChild(row);
}
function addCreator(firstname, lastname, typeID) function addCreator(firstname, lastname, typeID)
{ {
if(!lastname) if(!lastname)
@ -168,22 +167,21 @@ MetadataPane = new function()
type.appendChild(typeMenu); type.appendChild(typeMenu);
var remove = document.createElement("toolbarbutton"); var remove = document.createElement("toolbarbutton");
remove.setAttribute("label","x"); remove.setAttribute("label","-");
remove.setAttribute("class","addremove");
remove.setAttribute("oncommand","MetadataPane.removeCreator(this.parentNode);"); remove.setAttribute("oncommand","MetadataPane.removeCreator(this.parentNode);");
if(!_editButton.checked) var add = document.createElement("toolbarbutton");
{ add.setAttribute("label","+");
first.setAttribute("disabled",true); remove.setAttribute("class","addremove");
last.setAttribute("disabled",true); add.setAttribute("oncommand","MetadataPane.addCreator();");
type.setAttribute("disabled",true);
remove.setAttribute("disabled",true);
}
var row = document.createElement("row"); var row = document.createElement("row");
row.appendChild(first); row.appendChild(first);
row.appendChild(last); row.appendChild(last);
row.appendChild(type); row.appendChild(type);
row.appendChild(remove); row.appendChild(remove);
row.appendChild(add);
_dynamicCreators.appendChild(row); _dynamicCreators.appendChild(row);
} }
@ -194,4 +192,4 @@ MetadataPane = new function()
} }
} }
addEventListener("load", function(e) { MetadataPane.init(e); }, false); addEventListener("load", function(e) { MetadataPane.onLoad(e); }, false);

View File

@ -15,23 +15,27 @@
<rows id="editpane-dynamic-fields"> <rows id="editpane-dynamic-fields">
</rows> </rows>
</grid> </grid>
<toolbar id="metadata-creators-toolbar" hidden="true">
<label value="Creators"/>
<spacer flex="1"/>
<toolbarbutton label="+" oncommand="MetadataPane.addCreator()"/>
</toolbar>
<grid> <grid>
<columns> <columns>
<column flex="1"/> <column flex="1"/>
<column flex="1"/> <column flex="1"/>
<column/> <column/>
<column/> <column/>
<column/>
</columns> </columns>
<rows id="editpane-dynamic-creators"> <rows id="editpane-dynamic-creators">
</rows> </rows>
</grid> </grid>
<spacer flex="1"/> <spacer flex="1"/>
<toolbar> <toolbar id="metadata-toolbar">
<toolbarbutton id="metadata-pane-edit-button" label="Edit" oncommand="MetadataPane.toggleEdit()"/> <toolbarbutton id="metadata-pane-edit-button" label="Edit" oncommand="MetadataPane.toggleEdit()"/>
<spacer flex="1" /> <spacer flex="1" />
<toolbarbutton id="tb-creator-add" label="Add Creator" oncommand="MetadataPane.addCreator()" disabled="true"/>
</toolbar> </toolbar>
</vbox> </vbox>

View File

@ -21,8 +21,19 @@
<window id="main-window"> <window id="main-window">
<vbox id="scholar-floater" hidden="true"> <vbox id="scholar-floater" hidden="true">
<vbox id="scholar-metadata"/> <vbox id="scholar-metadata">
<toolbar>
<label value="Metadata"/>
<spacer flex="1"/>
<toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleView('metadata')"/>
</toolbar>
</vbox>
<vbox id="scholar-notes"> <vbox id="scholar-notes">
<toolbar>
<label value="Notes"/>
<spacer flex="1"/>
<toolbarbutton class="tabs-closebutton" oncommand="ScholarPane.toggleView('notes')"/>
</toolbar>
<textbox value="Notes.... lorem ispum delorum..." multiline="true" flex="1"/> <textbox value="Notes.... lorem ispum delorum..." multiline="true" flex="1"/>
</vbox> </vbox>
</vbox> </vbox>

View File

@ -74,15 +74,26 @@ tree #items-tree
max-width: 400px; max-width: 400px;
} }
#scholar-metadata #scholar-floater vbox:first-child
{ {
margin-bottom: 5px;
} }
#scholar-metadata toolbar #scholar-metadata
{
}
#metadata-toolbar
{ {
border-bottom: none; border-bottom: none;
} }
#scholar-metadata .addremove
{
font-weight: bold;
}
#scholar-notes #scholar-notes
{ {
height: 100px; height: 100px;