+dojo.require('dijit.form.Button');
+dojo.require('dijit.form.TextBox');
dojo.require('openils.User');
dojo.require('openils.Util');
dojo.require('openils.acq.Lineitem');
+dojo.require('openils.widget.AutoFieldWidget');
function AcqLiTable() {
this.toggleState = false;
this.tbody = dojo.byId('acq-lit-tbody');
this.selectors = [];
- this.rowTemplate = this.tbody.removeChild(dojo.byId('acq-lit-row'));
this.authtoken = openils.User.authtoken;
+ this.rowTemplate = this.tbody.removeChild(dojo.byId('acq-lit-row'));
+ this.copyTbody = dojo.byId('acq-lit-li-details-tbody');
+ this.copyRow = this.copyTbody.removeChild(dojo.byId('acq-lit-li-details-row'));
+
dojo.byId('acq-lit-select-toggle').onclick = function(){self.toggleSelect()};
- dojo.byId('acq-lit-info-back-button').onclick = function(){self.showTable()};
+ dojo.byId('acq-lit-info-back-button').onclick = function(){self.show('list')};
this.reset = function() {
while(self.tbody.childNodes[0])
}
};
+ this.show = function(div) {
+ openils.Util.hide('acq-lit-table-div');
+ openils.Util.hide('acq-lit-info-div');
+ openils.Util.hide('acq-lit-li-details');
+ switch(div){
+ case 'list':
+ openils.Util.show('acq-lit-table-div');
+ break;
+ case 'info':
+ openils.Util.show('acq-lit-info-div');
+ break;
+ case 'copies':
+ openils.Util.show('acq-lit-li-details');
+ break;
+ }
+ }
- this.showTable = function() {
- dojo.style(dojo.byId('acq-lit-table-div'), 'display', 'block');
- dojo.style(dojo.byId('acq-lit-info-div'), 'display', 'none');
- };
-
- this.hideTable = function() {
- dojo.style(dojo.byId('acq-lit-table-div'), 'display', 'none');
- };
-
- this.showInfo = function() {
- self.hideTable();
- dojo.style(dojo.byId('acq-lit-info-div'), 'display', 'block');
- };
+ this.hide = function() {
+ this.show(null);
+ }
this.toggleSelect = function() {
if(self.toggleState)
// XXX media prefix for added content
dojo.query('[name=jacket]', row)[0].setAttribute('src', '/opac/extras/ac/jacket/small/' + isbn);
}
- dojo.query('[attr=title]', row)[0].onclick = function() {self.drawInfo(li.id())};
+ dojo.query('[name=infolink]', row)[0].onclick = function() {self.drawInfo(li.id())};
+ dojo.query('[name=copieslink]', row)[0].onclick = function() {self.drawCopies(li.id())};
self.tbody.appendChild(row);
self.selectors.push(dojo.query('[name=selectbox]', row)[0]);
};
this.drawInfo = function(liId) {
- this.showInfo();
+ this.show('info');
openils.acq.Lineitem.fetchAttrDefs(
- function() { self._fetchLineitem(liId); }
+ function() {
+ self._fetchLineitem(liId, function(li){self._drawInfo(li);});
+ }
);
};
- this._fetchLineitem = function(liId) {
+ this._fetchLineitem = function(liId, handler) {
+
+ if(this.liCache[liId] && this.liCache[liId].marc()) {
+ return handler(this.liCache[liId]);
+ }
+
fieldmapper.standardRequest(
['open-ils.acq', 'open-ils.acq.lineitem.retrieve'],
{ async: true,
oncomplete: function(r) {
var li = openils.Util.readResponse(r);
- self._drawInfo(li);
+ handler(li)
}
}
);
}
);
}
+
+ this.drawCopies = function(liId) {
+ this.show('copies');
+ openils.acq.Lineitem.fetchAttrDefs(
+ function() {
+ self._fetchLineitem(liId, function(li){self._drawCopies(li);});
+ }
+ );
+ };
+
+
+ this._drawCopies = function(li) {
+ acqLitAddCopyCount.onClick = function() {
+ var count = acqLitCopyCountInput.attr('value');
+ for(var i = 0; i < count; i++)
+ self.addCopy(li);
+ }
+ dojo.forEach(li.lineitem_details(),
+ function(copy) {
+ self.addCopy(copy);
+ }
+ );
+ };
+
+ this.addCopy = function(li, copy) {
+ var row = this.copyRow.cloneNode(true);
+ this.copyTbody.appendChild(row);
+
+ dojo.forEach(['fund', 'owning_lib', 'location'],
+ function(field) {
+ var widget = new openils.widget.AutoFieldWidget({
+ fmObject : copy,
+ fmField : field,
+ fmClass : 'acqlid',
+ parentNode : dojo.query('[name='+field+']', row)[0],
+ orgLimitPerms : ['CREATE_PICKLIST'],
+ });
+ widget.build();
+ }
+ );
+
+ if(copy) {
+ dojo.query('[name=barcode]', row)[0].value = copy.barcode();
+ dojo.query('[name=cn_label]', row)[0].value = copy.cn_label();
+ }
+ }
}
<tbody id='acq-lit-tbody'>
<tr id='acq-lit-row' class='acq-lit-row'>
<td name='selector'><input type='checkbox' name='selectbox'/></td>
- <td>
- <table>
- <tr>
- <td rowspan='3'><img style='width:40px;height:65px;' name='jacket'/></td>
- <td colspan='0'><a href='javascript:void(0);' attr='title'></a></td>
- </tr>
- <tr class='acq-lit-alt-row'>
- <td/>
- <td attr='author'/>
- <td attr='isbn'/>
- <td attr='issn'/>
- <td attr='edition'/>
- <td attr='pubdate'/>
- <td attr='publisher'/>
- </tr>
- <tr class='acq-lit-alt-row'>
- <td/>
- <td name='source_label' colspan='0'/>
- </tr>
+ <td style='width:100%;'>
+ <table style='width:100%;'>
+ <tbody>
+ <tr>
+ <td rowspan='2'><img style='width:40px;height:65px;' name='jacket'/></td>
+ <td attr='title' style='width:70%;font-weight:bold;'/>
+ <td style='text-align:right'>
+ <a name='infolink' href='javascript:void(0);'>Details</a>
+ <a name='copieslink' href='javascript:void(0);'>Copies</a>
+ </td>
+ </tr>
+ <tr class='acq-lit-alt-row'>
+ <td colspan='0'>
+ <span attr='author'></span>
+ <span attr='isbn'></span>
+ <span attr='issn'></span>
+ <span attr='edition'></span>
+ <span attr='pubdate'></span>
+ <span attr='publisher'></span>
+ <span name='source_label'/>
+ </td>
+ </tr>
+ </tbody>
</table>
</td>
</tr>
</div>
</div>
+ <div id='acq-lit-li-details' class='hidden'>
+ <h2>Copies</h2>
+ <table id='acq-lit-li-details-table'>
+ <thead>
+ <tr>
+ <th>Owning Branch</th>
+ <th>Shelving Location</th>
+ <th>Fund</th>
+ <th>Barcode</th>
+ <th>Callnumber</th>
+ <th style='text-align:right;width:30%'>
+ Add items to order:
+ <input dojoType='dijit.form.NumberTextBox' jsId='acqLitCopyCountInput'
+ constraints="{min:1,max:1000,places:0}" style='width:40px' value='1'></input>
+ <div dojoType='dijit.form.Button' jsId='acqLitAddCopyCount'>Go</div>
+ </th>
+ </tr>
+ </thead>
+ <tbody id='acq-lit-li-details-tbody'>
+ <tr id='acq-lit-li-details-row'>
+ <td><div name='owning_lib'/></td>
+ <td><div name='location'/></td>
+ <td><div name='fund'/></td>
+ <td><input type='text' name='barcode'/></td>
+ <td><input type='text' name='cn_label'/></td>
+ <td/>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
</div>