name : name,
label : field.getAttributeNS(oilsIDLReportsNS,'label'),
datatype : field.getAttributeNS(oilsIDLReportsNS,'datatype'),
+ selector : field.getAttributeNS(oilsIDLReportsNS,'selector'),
type : 'field'
}
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;
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;
+}
+