]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/reports/oils_rpt_folder_window.js
continued work on the folder contents editor and general folder window framework
[working/Evergreen.git] / Open-ILS / web / reports / oils_rpt_folder_window.js
1 var oilsRptTemplateCache = {};
2 var oilsRptReportCache = {};
3
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());
8         switch(type) {
9                 case 'template': 
10                         return new oilsRptTemplateFolderWindow(node);
11                 case 'report':
12                         return new oilsRptReportFolderWindow(node);
13                 case 'output':
14                         return new oilsRptOutputFolderWindow(node);
15         }
16 }
17
18 function oilsRptFetchTemplate(id) {
19         if( oilsRptTemplateCache[id] )
20                 return oilsRptTemplateCache[id];
21         var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
22         r.send(true);
23         return r.result();
24 }
25
26
27
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;
35         this.type = type;
36         this.init();
37         _debug('id = ' + this.id);
38 }
39
40 oilsRptFolderWindow.prototype.openWindow = function(node) {
41         hideMe(DOM.oils_rpt_template_folder_window_contents_div);       
42         hideMe(DOM.oils_rpt_report_folder_window_contents_div);
43         unHideMe(DOM.oils_rpt_folder_table_right_td);
44         unHideMe(node);
45 }
46
47 oilsRptFolderWindow.prototype.fetchFolderData = function(type, selector, cache) {
48         removeChildren(selector);
49         var req = new Request(OILS_RPT_FETCH_FOLDER_DATA, 
50                 SESSION, type, this.folderNode.folder.id());
51         req.callback(
52                 function(r) {
53                         var ts = r.getResultObject();
54                         if(!ts) return;
55                         for( var i = 0; i < ts.length; i++ )  {
56                                 var name = ts[i].name();
57                                 if( type == 'report' ) 
58                                         name = oilsRptFetchTemplate(ts[i].template()).name() + ' : ' + name;
59                                 
60                                 insertSelectorVal(selector, -1, name, ts[i].id());
61                                 cache[ts[i].id()] = ts[i];
62                         }
63                 }
64         );
65         req.send();
66 }
67
68
69 oilsRptTemplateFolderWindow.prototype = new oilsRptFolderWindow();
70 oilsRptTemplateFolderWindow.prototype.constructor = oilsRptTemplateFolderWindow;
71 oilsRptTemplateFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
72 function oilsRptTemplateFolderWindow(node) { this.init2(node, 'template'); }
73
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);
77         var obj = this;
78
79         DOM.oils_rpt_template_action_selector.onchange = function() {
80                 var action = getSelectVal(DOM.oils_rpt_template_action_selector.onchange);
81                 switch(action) {
82                         case 'create_report':
83                                 obj.createReport();
84                                 break;
85                 }
86         }
87 }
88
89
90 oilsRptTemplateFolderWindow.prototype.createReport = function() {
91 }
92
93
94
95 oilsRptReportFolderWindow.prototype = new oilsRptFolderWindow();
96 oilsRptReportFolderWindow.prototype.constructor = oilsRptReportFolderWindow;
97 oilsRptReportFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
98 function oilsRptReportFolderWindow(node) { this.init2(node, 'report'); }
99
100 oilsRptReportFolderWindow.prototype.draw = function() {
101         this.openWindow(DOM.oils_rpt_report_folder_window_contents_div);
102         this.fetchFolderData('report', DOM.oils_rpt_report_selector, oilsRptReportCache);
103 }
104
105
106
107
108
109 oilsRptOutputFolderWindow.prototype = new oilsRptFolderWindow();
110 oilsRptOutputFolderWindow.prototype.constructor = oilsRptOutputFolderWindow;
111 oilsRptOutputFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor;
112 function oilsRptOutputFolderWindow(node) { this.init2(node, 'output'); }
113
114 oilsRptOutputFolderWindow.prototype.draw = function() {
115         this.hideWindows();
116         this.openWindow(null);
117 }
118
119
120
121