2 if(!dojo._hasResource['openils.widget.PCrudFilterDialog']) {
3 dojo.provide('openils.widget.PCrudFilterDialog');
4 dojo.require('openils.widget.AutoFieldWidget');
5 dojo.require('dijit.form.FilteringSelect');
6 dojo.require('dijit.form.Button');
7 dojo.require('dojo.data.ItemFileReadStore');
8 dojo.require('dijit.Dialog');
9 dojo.require('openils.Util');
12 * Given a fieldmapper object, this builds a pop-up dialog used for editing the object
16 'openils.widget.PCrudFilterDialog',
17 [dijit.Dialog, openils.widget.AutoWidget],
20 constructor : function(args) {
24 this.widgetCache = {};
28 * Builds a basic table of key / value pairs. Keys are IDL display labels.
29 * Values are dijit's, when values set
31 startup : function() {
33 this.inherited(arguments);
35 var realFieldList = this.sortedFieldList.filter(
36 function(item) { return !item.virtual; });
37 this.fieldStore = new dojo.data.ItemFileReadStore({
41 items : realFieldList.map(
43 return {label:item.label, name:item.name};
53 {innerHTML:'Filter Selector', style:'text-align:center;width:100%;padding:10px;'}
57 new dijit.form.Button({
59 onClick : function() {
61 self.onApply(self.compileFilter());
64 }).domNode, this.domNode);
67 new dijit.form.Button({
69 onClick : function() {
74 }).domNode, this.domNode);
76 this.table = dojo.place(dojo.create('table'), this.domNode);
77 openils.Util.addCSSClass(this.table, 'oils-fm-edit-dialog');
78 this.insertFieldSelector();
81 insertFieldSelector : function() {
82 var selector = new dijit.form.FilteringSelect({labelAttr:'label', store:this.fieldStore});
83 var row = dojo.place(dojo.create('tr'), this.table);
84 var selectorTd = dojo.place(dojo.create('td'), row);
85 var valueTd = dojo.place(dojo.create('td'), row);
86 dojo.place(selector.domNode, selectorTd);
89 dojo.place(new dijit.form.TextBox().domNode, valueTd);
91 // when a field is selected, update the value widget
93 dojo.connect(selector, 'onChange',
96 if(valueTd.childNodes[0])
97 valueTd.removeChild(valueTd.childNodes[0]);
99 var widget = new openils.widget.AutoFieldWidget({
100 fmClass : self.fmClass,
102 parentNode : dojo.place(dojo.create('div'), valueTd)
106 if(self.widgetCache[selector.widgetIndex]) {
107 self.widgetCache[selector.widgetIndex].widget.destroy();
108 delete self.widgetCache[selector.widgetIndex];
111 selector.widgetIndex = this.widgetIndex;
112 self.widgetCache[self.widgetIndex++] = widget;
117 compileFilter : function() {
119 for(var i in this.widgetCache) {
120 var widget = this.widgetCache[i];
121 filter[widget.fmField] = widget.getFormattedValue();