From: erickson Date: Mon, 9 Oct 2006 01:30:26 +0000 (+0000) Subject: added remote-object retrieval support for "public" data widgets X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=90b4c5a4aed159237811c30d367d7e43f2eeaab2;p=evergreen%2Fpines.git added remote-object retrieval support for "public" data widgets git-svn-id: svn://svn.open-ils.org/ILS/trunk@6410 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/opac/common/js/fm_table.js b/Open-ILS/web/opac/common/js/fm_table.js index e0d9b47db8..a9113af515 100644 --- a/Open-ILS/web/opac/common/js/fm_table.js +++ b/Open-ILS/web/opac/common/js/fm_table.js @@ -129,7 +129,9 @@ FMObjectBuilder.prototype.setKeys = function(o) { if(sortme) this.keys = this.keys.sort(); } +/* use this method to insert object rows after the table has been rendered */ FMObjectBuilder.prototype.add = function(obj) { + this.obj.push(obj); this.buildObjectRow(obj); } diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.js b/Open-ILS/web/reports/oils_rpt_param_editor.js index 9bf69d8e24..fef3b58532 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.js +++ b/Open-ILS/web/reports/oils_rpt_param_editor.js @@ -157,6 +157,13 @@ oilsRptParamEditor.prototype.buildWidget = function(param, node) { break; } + if( field.selector ) { + atomicWidget = oilsRptRemoteWidget; + widgetArgs.class = cls; + widgetArgs.field = field; + widgetArgs.column = param.column.colname; + } + switch(cls) { case 'aou': atomicWidget = oilsRptOrgSelector; diff --git a/Open-ILS/web/reports/oils_rpt_report_editor.js b/Open-ILS/web/reports/oils_rpt_report_editor.js index cdf6ca0377..9e352d17f7 100644 --- a/Open-ILS/web/reports/oils_rpt_report_editor.js +++ b/Open-ILS/web/reports/oils_rpt_report_editor.js @@ -55,6 +55,8 @@ function oilsRptReportEditor(rptObject, folderWindow) { DOM.oils_rpt_report_editor_save.onclick = function(){obj.save();} DOM.oils_rpt_param_editor_sched_email.value = USER.email(); DOM.oils_rpt_param_editor_sched_start_date.value = mkYearMonDay(); + + _debug("fleshing template:\n" + tmpl.name() + '\n' + formatJSON(tmpl.data())); } diff --git a/Open-ILS/web/reports/oils_rpt_tree.js b/Open-ILS/web/reports/oils_rpt_tree.js index fe8895cdf3..51311025ae 100644 --- a/Open-ILS/web/reports/oils_rpt_tree.js +++ b/Open-ILS/web/reports/oils_rpt_tree.js @@ -78,6 +78,7 @@ function oilsRptParseFields( node ) { name : name, label : field.getAttributeNS(oilsIDLReportsNS,'label'), datatype : field.getAttributeNS(oilsIDLReportsNS,'datatype'), + selector : field.getAttributeNS(oilsIDLReportsNS,'selector'), type : 'field' } diff --git a/Open-ILS/web/reports/oils_rpt_vars.js b/Open-ILS/web/reports/oils_rpt_vars.js index 237ec0c1eb..de6c8b3fd9 100644 --- a/Open-ILS/web/reports/oils_rpt_vars.js +++ b/Open-ILS/web/reports/oils_rpt_vars.js @@ -86,6 +86,7 @@ var OILS_RPT_UPDATE_TEMPLATE = 'open-ils.reporter:open-ils.reporter.template.up var OILS_RPT_FETCH_OUTPUT = 'open-ils.reporter:open-ils.reporter.schedule.retrieve_by_folder'; var OILS_RPT_FETCH_REPORT = 'open-ils.reporter:open-ils.reporter.report.retrieve'; var OILS_RPT_FETCH_TEMPLATE = 'open-ils.reporter:open-ils.reporter.template.retrieve'; +var OILS_RPT_MAGIC_FETCH = 'open-ils.reporter:open-ils.reporter.magic_fetch'; var oilsRptCurrentFolderManager; diff --git a/Open-ILS/web/reports/oils_rpt_widget.js b/Open-ILS/web/reports/oils_rpt_widget.js index cbcc511f34..ef12c6fcfe 100644 --- a/Open-ILS/web/reports/oils_rpt_widget.js +++ b/Open-ILS/web/reports/oils_rpt_widget.js @@ -606,6 +606,56 @@ oilsRptTruncPicker.prototype.getDisplayValue = function() { Atomic remote object picker --------------------------------------------------------------------- */ +function oilsRptRemoteWidget(args) { + this.node = args.node; + this.class = args.class; + this.field = args.field; + this.column = args.column; + this.source = elem('select', + {multiple:'multiple','class':'oils_rpt_small_info_selector'}); +} + +oilsRptRemoteWidget.prototype.draw = function() { + var req = new Request(OILS_RPT_MAGIC_FETCH, SESSION, {hint:this.class}); + var obj = this; + this.node.appendChild(this.source); + req.callback(function(r){obj.render(r.getResultObject())}); + req.send(); +} + +oilsRptRemoteWidget.prototype.render = function(objs) { + _debug("rendering objects " + formatJSON(js2JSON(objs))); + for( var i = 0; i < objs.length; i++ ) { + var obj = objs[i]; + var label = obj[this.field.selector](); + var value = obj[this.column](); + _debug("inserted remote object "+label + ' : ' + value); + insertSelectorVal(this.source, -1, label, value); + } +} + +oilsRptRemoteWidget.prototype.getDisplayValue = function() { + var vals = []; + iterate(this.source, + function(o){ + if( o.selected ) + vals.push({ label : o.innerHTML, value : o.getAttribute('value')}); + } + ); + return vals; +} + +oilsRptRemoteWidget.prototype.getValue = function() { + var vals = []; + iterate(this.source, + function(o){ + if( o.selected ) + vals.push(o.getAttribute('value')) + } + ); + return vals; +} +