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:
parent
c561ca129e
commit
c42991a5bf
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user