From: erickson Date: Fri, 6 Feb 2009 00:08:37 +0000 (+0000) Subject: added support for auto-building select options from has_a links, using the selector... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=8a1052f55975abaecbb0fc6448372c0f47545ae0;p=evergreen%2Ftadl.git added support for auto-building select options from has_a links, using the selector attribute when defined. mostly functional, needs some tweaking git-svn-id: svn://svn.open-ils.org/ILS/trunk@12087 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js b/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js index 484f6f15fe..829f5faee4 100644 --- a/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js +++ b/Open-ILS/web/js/dojo/openils/widget/AutoFieldWidget.js @@ -104,6 +104,9 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) { this.widgetValue = openils.Util.isTrue(this.widgetValue); break; + case 'link': + if(this._buildLinkSelector()) break; + default: dojo.require('dijit.form.TextBox'); this.widget = new dijit.form.TextBox(this.dijitArgs, this.parentNode); @@ -113,6 +116,50 @@ if(!dojo._hasResource['openils.widget.AutoFieldWidget']) { return this.widget; }, + _buildLinkSelector : function() { + if(this.idlField.reltype != 'has_a') return false; + dojo.require('openils.PermaCrud'); + dojo.require('dojo.data.ItemFileReadStore'); + dojo.require('dijit.form.FilteringSelect'); + + var self = this; + this.async = true; + var linkClass = this.idlField['class']; + this.widget = new dijit.form.FilteringSelect(this.dijitArgs, this.parentNode); + var rclassIdl = fieldmapper.IDL.fmclasses[linkClass]; + var vfield; + for(var f in rclassIdl.fields) { + if(self.idlField.key == rclassIdl.fields[f].name) { + vfield = rclassIdl.fields[f]; + break; + } + } + this.widget.searchAttr = this.widget.labelAttr = vfield.selector || vfield.name; + this.widget.valueAttr = vfield.name; + var list = new openils.PermaCrud().retrieveAll(linkClass); + + self.widget.store = new dojo.data.ItemFileReadStore( + {data:fieldmapper[linkClass].toStoreData(list)} + ); + self.widget.startup(); + self._widgetLoaded(); + + /* + new openils.PermaCrud().retrieveAll(linkClass, { + async : true, + oncomplete : function(r) { + var list = openils.Util.readResponse(r, false, true); + if(list) { + self.widget.store = + new dojo.data.ItemFileReadStore({data:fieldmapper[linkClass].toStoreData(list)}); + } + self.widget.startup(); + self._widgetLoaded(); + } + }); + */ + }, + /** * For widgets that run asynchronously, provide a callback for finishing up */