1 var oilsRptTemplateCache = {};
2 var oilsRptReportCache = {};
4 /* utility method to find and build the correct folder window object */
5 function oilsRptBuildFolderWindow( type, folderId ) {
6 var node = oilsRptCurrentFolderManager.findNode(type, folderId);
7 _debug('drawing folder window for folder ' + node.folder.name());
10 return new oilsRptTemplateFolderWindow(node);
12 return new oilsRptReportFolderWindow(node);
14 return new oilsRptOutputFolderWindow(node);
18 function oilsRptFetchTemplate(id) {
19 if( oilsRptTemplateCache[id] )
20 return oilsRptTemplateCache[id];
21 var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
23 return oilsRptTemplateCache[id] = r.result();
28 /* generic folder window class */
29 oilsRptFolderWindow.prototype = new oilsRptObject();
30 oilsRptFolderWindow.prototype.constructor = oilsRptFolderWindow;
31 oilsRptFolderWindow.baseClass = oilsRptObject.prototype.constructor;
32 function oilsRptFolderWindow() { }
33 oilsRptFolderWindow.prototype.init2 = function(node, type) {
34 this.folderNode = node;
39 oilsRptFolderWindow.prototype.openWindow = function(node) {
40 hideMe(DOM.oils_rpt_template_folder_window_contents_div);
41 hideMe(DOM.oils_rpt_report_folder_window_contents_div);
42 unHideMe(DOM.oils_rpt_folder_table_right_td);
46 oilsRptFolderWindow.prototype.fetchFolderData = function(type, selector, cache, callback) {
47 removeChildren(selector);
48 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
49 SESSION, type, this.folderNode.folder.id());
52 var ts = r.getResultObject();
54 for( var i = 0; i < ts.length; i++ ) {
55 var name = ts[i].name();
56 if( type == 'report' )
57 name = oilsRptFetchTemplate(ts[i].template()).name() + ' : ' + name;
59 insertSelectorVal(selector, -1, name, ts[i].id());
60 cache[ts[i].id()] = ts[i];
62 if(callback) callback();
69 oilsRptTemplateFolderWindow.prototype = new oilsRptFolderWindow();
70 oilsRptTemplateFolderWindow.prototype.constructor = oilsRptTemplateFolderWindow;
71 oilsRptTemplateFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
72 function oilsRptTemplateFolderWindow(node) { this.init2(node, 'template'); }
74 oilsRptTemplateFolderWindow.prototype.draw = function() {
75 this.openWindow(DOM.oils_rpt_template_folder_window_contents_div);
76 this.fetchFolderData('template', DOM.oils_rpt_template_selector, oilsRptTemplateCache);
79 DOM.oils_rpt_template_action_selector.onchange = function() {
80 var action = getSelectVal(DOM.oils_rpt_template_action_selector.onchange);
90 oilsRptTemplateFolderWindow.prototype.createReport = function() {
95 oilsRptReportFolderWindow.prototype = new oilsRptFolderWindow();
96 oilsRptReportFolderWindow.prototype.constructor = oilsRptReportFolderWindow;
97 oilsRptReportFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
98 function oilsRptReportFolderWindow(node) { this.init2(node, 'report'); }
100 oilsRptReportFolderWindow.prototype.draw = function() {
101 this.openWindow(DOM.oils_rpt_report_folder_window_contents_div);
103 this.fetchFolderData('report',
104 DOM.oils_rpt_report_selector, oilsRptReportCache,
106 appendClear(DOM.oils_rpt_report_description,
107 text(obj.getSelectedReport().description()));
111 DOM.oils_rpt_report_folder_window_go.onclick = function() {
112 var rpt = obj.getSelectedReport();
113 var tmpl = oilsRptFetchTemplate(rpt.template());
114 obj.oilsReport = new oilsReport( tmpl, rpt );
115 var params = obj.oilsReport.gatherParams();
116 obj.drawParamEditor(params);
120 oilsRptReportFolderWindow.prototype.drawParamEditor = function(params) {
121 _debug('drawing params: \n' + formatJSON(js2JSON(params)));
122 this.drawSelectParamEditor(grep(params,
123 function(p) { return (p.type == 'select')}));
124 this.drawWhereParamEditor(grep(params,
125 function(p) { return (p.type == 'where')}));
126 this.drawHavingParamEditor(grep(params,
127 function(p) { return (p.type == 'having')}));
131 var oilsRptReportFolderSelectParamRow;
132 oilsRptReportFolderWindow.prototype.drawSelectParamEditor = function(params) {
133 if(params.length == 0) return;
134 unHideMe(DOM.oils_rpt_report_folder_window_display_params_table);
136 var tbody = $n(DOM.oils_rpt_report_folder_window_display_params_table,'tbody');
137 if(!oilsRptReportFolderSelectParamRow)
138 oilsRptReportFolderSelectParamRow = tbody.removeChild($n(tbody,'tr'));
140 for( var p = 0; p < params.length; p++ ) {
142 var row = oilsRptReportFolderSelectParamRow.cloneNode(true);
144 $n(row, 'column').appendChild(text(par.column.colname));
145 $n(row, 'transform').appendChild(text(par.column.transform));
147 if( typeof par.value == 'string' ) {
148 unHideMe($n(row, 'param'));
149 $n(row, 'param').value = par.value;
151 switch(par.transform) {
153 unHideMe($n(row,'string_substring_widget'));
157 tbody.appendChild(row);
161 oilsRptReportFolderWindow.prototype.drawWhereParamEditor = function(params) {
164 oilsRptReportFolderWindow.prototype.drawHavingParamEditor = function(params) {
169 oilsRptReportFolderWindow.prototype.getSelectedReport = function() {
170 return oilsRptReportCache[getSelectorVal(DOM.oils_rpt_report_selector)];
173 oilsRptReportFolderWindow.prototype.getSelectedAction = function() {
174 return getSelectorVal(DOM.oils_rpt_report_selector, force);
181 oilsRptOutputFolderWindow.prototype = new oilsRptFolderWindow();
182 oilsRptOutputFolderWindow.prototype.constructor = oilsRptOutputFolderWindow;
183 oilsRptOutputFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
184 function oilsRptOutputFolderWindow(node) { this.init2(node, 'output'); }
186 oilsRptOutputFolderWindow.prototype.draw = function() {
188 this.openWindow(null);