]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_folder_window.js
more work on folder window interface, started on a generic report editor interface
[working/Evergreen.git] / Open-ILS / web / reports / oils_rpt_folder_window.js
1
2
3 function oilsRptFetchTemplate(id) {
4         var t = oilsRptGetCache('rt', id);
5         if(!t) {
6                 var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
7                 r.send(true);
8                 t = r.result();
9                 oilsRptCacheObject('rt', t, id);
10         }
11         return t;
12 }
13
14
15
16 /* generic folder window class */
17 oilsRptSetSubClass('oilsRptFolderWindow', 'oilsRptObject');
18 function oilsRptFolderWindow(type, folderId) { 
19         var node = oilsRptCurrentFolderManager.findNode(type, folderId);
20         this.init2(node, type);
21         this.selector = DOM.oils_rpt_folder_contents_selector;
22 }
23
24
25 oilsRptFolderWindow.prototype.init2 = function(node, type) {
26         this.folderNode = node;
27         this.type = type;
28         this.init();
29 }
30
31
32 oilsRptFolderWindow.prototype.draw = function() {
33
34         hideMe(DOM.oils_rpt_template_folder_new_report);
35         unHideMe(DOM.oils_rpt_folder_table_right_td);
36         hideMe(DOM.oils_rpt_folder_table_alt_td);
37         this.drawFolderDetails();
38
39         var obj = this;
40         DOM.oils_rpt_folder_content_action_go.onclick = 
41                 function() {obj.doFolderAction()}
42
43         this.fetchFolderData();
44
45         var sel = DOM.oils_rpt_folder_contents_action_selector;
46         for( var i = 0; i < sel.options.length; i++ ) {
47                 var opt = sel.options[i];
48                 if( opt.getAttribute('type') == this.type )
49                         unHideMe(opt);
50                 else hideMe(opt);
51         }
52 }
53
54 oilsRptFolderWindow.prototype.doFolderAction = function() {
55         var objs = this.fmTable.getSelected();
56         if( objs.length == 0 ) 
57                 return alert('Please select an item from the list');
58         var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector);
59
60         switch(action) {
61                 case 'create_report' :
62                         hideMe(DOM.oils_rpt_folder_table_right_td);
63                         unHideMe(DOM.oils_rpt_folder_table_alt_td);
64                         new oilsRptReportEditor(new oilsReport(objs[0]));
65                         break;
66         }
67 }
68
69
70 oilsRptFolderWindow.prototype.drawFolderDetails = function() {
71         appendClear(DOM.oils_rpt_folder_creator_label, 
72                 text(this.folderNode.folder.owner().usrname()));
73         appendClear(DOM.oils_rpt_folder_name_label, 
74                 text(this.folderNode.folder.name()));
75 }
76
77
78 oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
79         removeChildren(this.selector);
80         var req = new Request(OILS_RPT_FETCH_FOLDER_DATA, 
81                 SESSION, this.type, this.folderNode.folder.id());
82         var obj = this;
83         req.callback(
84                 function(r) {
85                         obj.fmTable = drawFMObjectTable( 
86                                 { 
87                                         dest : obj.selector, 
88                                         obj : r.getResultObject(),
89                                         selectCol : true,
90                                         selectColName : 'Select Row'    
91                                 }
92                         );
93                         //sortables_init();
94                         if(callback) callback();
95                 }
96         );
97         req.send();
98 }
99
100
101 /*
102 oilsRptTemplateFolderWindow.prototype = new oilsRptFolderWindow();
103 oilsRptTemplateFolderWindow.prototype.constructor = oilsRptTemplateFolderWindow;
104 oilsRptTemplateFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
105 function oilsRptTemplateFolderWindow(node) { this.init2(node, 'template'); }
106
107 oilsRptTemplateFolderWindow.prototype.draw = function() {
108         this.openWindow();
109         this.fetchFolderData('template', DOM.oils_rpt_folder_contents_selector, oilsRptTemplateCache);
110         var obj = this;
111
112         DOM.oils_rpt_template_folder_window_go.onclick = function() {
113                 var action = getSelectorVal(DOM.oils_rpt_template_action_selector);
114                 var template = getSelectorVal(DOM.oils_rpt_template_selector);
115                 switch(action) {
116                         case 'create_report':
117                                 obj.createReport(template);
118                                 break;
119                 }
120         }
121 }
122
123
124 oilsRptTemplateFolderWindow.prototype.createReport = function(templateId) {
125         unHideMe(DOM.oils_rpt_template_folder_new_report);
126         DOM.oils_rpt_template_folder_new_report_next.onclick = function() {
127                 var name = DOM.oils_rpt_template_folder_new_report_name.value;
128                 var desc = DOM.oils_rpt_template_folder_new_report_desc.value;
129                 var rpt = new rr();
130                 rpt.template(templateId);
131                 rpt.name(name);
132                 rpt.description(desc);
133                 DOM.oils_rpt_template_folder_window_contents_div.appendChild(
134                         DOM.oils_rpt_param_editor_div);
135                 unHideMe(DOM.oils_rpt_param_editor_div);
136                 var e = new oilsRptParamEditor(
137                         new oilsReport(oilsRptFetchTemplate(templateId), rpt),
138                         DOM.oils_rpt_param_editor_tbody);
139                 e.draw();
140         }
141 }
142
143
144
145 oilsRptReportFolderWindow.prototype = new oilsRptFolderWindow();
146 oilsRptReportFolderWindow.prototype.constructor = oilsRptReportFolderWindow;
147 oilsRptReportFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
148 function oilsRptReportFolderWindow(node) { this.init2(node, 'report'); }
149
150 oilsRptReportFolderWindow.prototype.draw = function() {
151         this.openWindow();
152         var obj = this;
153         this.fetchFolderData('report', 
154                 DOM.oils_rpt_report_selector, oilsRptReportCache, 
155                         function() {
156                                 appendClear(DOM.oils_rpt_report_description, 
157                                         text(obj.getSelectedReport().description()));
158                         }
159         );
160
161         DOM.oils_rpt_report_folder_window_go.onclick = function() {
162                 var rpt = obj.getSelectedReport();
163                 var tmpl = oilsRptFetchTemplate(rpt.template());
164                 obj.oilsReport = new oilsReport( tmpl, rpt );
165         };
166 }
167
168 oilsRptReportFolderWindow.prototype.drawParamEditor = function(params) {
169         _debug('drawing params: \n' + formatJSON(js2JSON(params)));
170 }
171
172
173 var oilsRptReportFolderSelectParamRow;
174 oilsRptReportFolderWindow.prototype.drawSelectParamEditor = function(params) {
175         if(params.length == 0) return;
176         //unHideMe(DOM.oils_rpt_report_folder_window_display_params_table);
177
178         //var tbody = $n(DOM.oils_rpt_report_folder_window_display_params_table,'tbody');
179         //if(!oilsRptReportFolderSelectParamRow)
180                 //oilsRptReportFolderSelectParamRow = tbody.removeChild($n(tbody,'tr'));
181 //
182         //for( var p = 0; p < params.length; p++ ) {
183 //
184                 //var row = oilsRptReportFolderSelectParamRow.cloneNode(true);
185                 //var par = params[p];
186                 //$n(row, 'column').appendChild(text(par.column.colname));
187                 //$n(row, 'transform').appendChild(text(par.column.transform));
188 //
189                 //if( typeof par.value == 'string' ) {
190                         //unHideMe($n(row, 'param'));
191                         //$n(row, 'param').value = par.value;
192                 //} else {
193                         //switch(par.transform) {
194                                 //case 'substring':
195                                         //unHideMe($n(row,'string_substring_widget'));
196                                         //break;
197                         //}
198                 //}
199                 //tbody.appendChild(row);
200         //}
201 }
202
203 oilsRptReportFolderWindow.prototype.drawWhereParamEditor = function(params) {
204 }
205
206 oilsRptReportFolderWindow.prototype.drawHavingParamEditor = function(params) {
207 }
208
209
210
211 oilsRptReportFolderWindow.prototype.getSelectedReport = function() {
212         return oilsRptReportCache[getSelectorVal(DOM.oils_rpt_report_selector)];
213 }
214
215 oilsRptReportFolderWindow.prototype.getSelectedAction = function() {
216         return getSelectorVal(DOM.oils_rpt_report_selector, force);
217 }
218
219
220
221
222
223 oilsRptOutputFolderWindow.prototype = new oilsRptFolderWindow();
224 oilsRptOutputFolderWindow.prototype.constructor = oilsRptOutputFolderWindow;
225 oilsRptOutputFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
226 function oilsRptOutputFolderWindow(node) { this.init2(node, 'output'); }
227
228 oilsRptOutputFolderWindow.prototype.draw = function() {
229         this.hideWindows();
230         this.openWindow(null);
231 }
232 */
233
234
235
236