From 4d932160743ad56ced2beea00c5db91a386ef148 Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 17 Mar 2009 22:10:28 +0000 Subject: [PATCH] added basic copy list grid (lineitem_details) linked from li table. other small tweaks git-svn-id: svn://svn.open-ils.org/ILS/trunk@12568 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/css/skin/default/acq.css | 5 +- Open-ILS/web/js/ui/default/acq/common/li_table.js | 106 +++++++++++++++++---- .../web/js/ui/default/acq/picklist/bib_search.js | 4 +- Open-ILS/web/js/ui/default/acq/picklist/view.js | 2 +- .../web/templates/default/acq/common/li_table.tt2 | 73 ++++++++++---- 5 files changed, 147 insertions(+), 43 deletions(-) diff --git a/Open-ILS/web/css/skin/default/acq.css b/Open-ILS/web/css/skin/default/acq.css index 883e2def5c..4d3cdd7e09 100644 --- a/Open-ILS/web/css/skin/default/acq.css +++ b/Open-ILS/web/css/skin/default/acq.css @@ -95,6 +95,9 @@ #acq-lit-table th {padding:5px; font-weight: bold; text-align:left;} #acq-lit-table td {padding:2px;} .acq-lit-row { border-bottom: 1px solid #AAA; } -.acq-lit-alt-row td:first-child { width:30px; } +.acq-lit-alt-row td { padding-left:30px; } #acq-lit-info-tbody td {padding:5px;} +#acq-lit-li-details-table {width:100%;} +#acq-lit-li-details-table td {padding:5px;} +#acq-lit-li-details-table th {padding:5px;} diff --git a/Open-ILS/web/js/ui/default/acq/common/li_table.js b/Open-ILS/web/js/ui/default/acq/common/li_table.js index 263fdd7807..2f6a512847 100644 --- a/Open-ILS/web/js/ui/default/acq/common/li_table.js +++ b/Open-ILS/web/js/ui/default/acq/common/li_table.js @@ -1,6 +1,9 @@ +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() { @@ -9,10 +12,13 @@ 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]) @@ -40,20 +46,26 @@ function AcqLiTable() { } }; + 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) @@ -93,19 +105,27 @@ function AcqLiTable() { // 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, @@ -118,7 +138,7 @@ function AcqLiTable() { oncomplete: function(r) { var li = openils.Util.readResponse(r); - self._drawInfo(li); + handler(li) } } ); @@ -160,6 +180,52 @@ function AcqLiTable() { } ); } + + 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(); + } + } } diff --git a/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js b/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js index e62075bc88..de1c986778 100644 --- a/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js +++ b/Open-ILS/web/js/ui/default/acq/picklist/bib_search.js @@ -129,7 +129,7 @@ function setRowAttr(td, liWrapper, field) { function handleResult(r) { var result = openils.Util.readResponse(r); - liTable.showTable(); + liTable.show('list'); dojo.style(dojo.byId('oils-acq-pl-search-results'), 'display', 'block'); var tbody = dojo.byId('plist-tbody'); if(result.lineitem) @@ -144,7 +144,7 @@ function showDiv(div) { 'oils-acq-search-block', 'oils-acq-pl-loading' ]; dojo.forEach(divs, function(d) {dojo.style(d,'display', 'none')}); - liTable.hideTable(); + liTable.hide(); dojo.style(div, 'display', 'block'); } diff --git a/Open-ILS/web/js/ui/default/acq/picklist/view.js b/Open-ILS/web/js/ui/default/acq/picklist/view.js index c9fafaa21c..5fd05fce62 100644 --- a/Open-ILS/web/js/ui/default/acq/picklist/view.js +++ b/Open-ILS/web/js/ui/default/acq/picklist/view.js @@ -79,7 +79,7 @@ function loadLIs() { params: [openils.User.authtoken, plId, {flesh_attrs:true, clear_marc:true, offset:plOffset, limit:plLimit}], onresponse: function(r) { - liTable.showTable(); + liTable.show('list'); liTable.addLineitem(openils.Util.readResponse(r)); } } diff --git a/Open-ILS/web/templates/default/acq/common/li_table.tt2 b/Open-ILS/web/templates/default/acq/common/li_table.tt2 index c4cae9f75f..dba4fd5645 100644 --- a/Open-ILS/web/templates/default/acq/common/li_table.tt2 +++ b/Open-ILS/web/templates/default/acq/common/li_table.tt2 @@ -20,25 +20,29 @@ - - - - - - - - - - + @@ -59,5 +63,36 @@ +
- - - - - - -
- -
+ + + + + + + + + +
+ + Details + Copies +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
Owning BranchShelving LocationFundBarcodeCallnumber + Add items to order: + +
Go
+
+
+ + -- 2.11.0