From 97a65946edddaac0a63f7e61a7fe5d7fd74e0d8c Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 27 Sep 2006 16:06:23 +0000 Subject: [PATCH] continued work on the folder contents editor and general folder window framework git-svn-id: svn://svn.open-ils.org/ILS/trunk@6230 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/reports/oils_rpt.css | 30 +++++- Open-ILS/web/reports/oils_rpt.js | 1 - Open-ILS/web/reports/oils_rpt.xhtml | 17 ++- Open-ILS/web/reports/oils_rpt_builder.xhtml | 2 +- Open-ILS/web/reports/oils_rpt_folder_window.js | 117 ++++++++++++++++++--- Open-ILS/web/reports/oils_rpt_folders.js | 12 ++- .../reports/oils_rpt_report_folder_window.xhtml | 26 +++++ .../reports/oils_rpt_template_folder_window.xhtml | 30 ++++++ Open-ILS/web/reports/oils_rpt_utils.js | 37 +++++++ Open-ILS/web/reports/oils_rpt_vars.js | 3 + 10 files changed, 253 insertions(+), 22 deletions(-) create mode 100644 Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml create mode 100644 Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml diff --git a/Open-ILS/web/reports/oils_rpt.css b/Open-ILS/web/reports/oils_rpt.css index 483a4e0d75..ecceb50a83 100644 --- a/Open-ILS/web/reports/oils_rpt.css +++ b/Open-ILS/web/reports/oils_rpt.css @@ -29,6 +29,10 @@ table { border-collapse: collapse; } padding: 5px; } +#oils_rpt_table tr { + -moz-border-radius: 5px 5px 5px 5px; +} + #oils_rpt_table td { vertical-align: top; padding: 3px; @@ -100,22 +104,24 @@ button { } -#oils_rpt_editor_tab_table { +.oils_rpt_tab_table { width: 100%; background: #F0F0F0; margin: 4px; margin-bottom: 10px; border: 1px solid #808080; border-collapse: collapse; + text-align: center; } -#oils_rpt_editor_tab_table td { +.oils_rpt_tab_table td { border-left: 1px solid #808080; border-right: 1px solid #808080; padding: 2px; } + #oils_rpt_column_editor_close_div { margin-top: 5px; padding-top: 5px; @@ -155,10 +161,28 @@ button { } #oils_rpt_folder_table_left_td { - width: 25%; + vertical-align: top; } #oils_rpt_folder_table_right_td { border-left: 2px solid #E0E0E0; + text-align: center; + vertical-align: top; + padding: 10px; + width: 75%; } +.oils_rpt_folder_window { + border: 1px solid blue; + background: #E0F0F0; + text-align: left; +} + +.oils_rpt_folder_window td { + padding: 5px; +} + + +oils_rpt_folder_window_div { + width: 100%; +} diff --git a/Open-ILS/web/reports/oils_rpt.js b/Open-ILS/web/reports/oils_rpt.js index 7c0820eee0..2e8160ecd1 100644 --- a/Open-ILS/web/reports/oils_rpt.js +++ b/Open-ILS/web/reports/oils_rpt.js @@ -1,4 +1,3 @@ - function oilsInitReports() { oilsRptIdObjects(); diff --git a/Open-ILS/web/reports/oils_rpt.xhtml b/Open-ILS/web/reports/oils_rpt.xhtml index 431b5401a5..4f31a22f82 100644 --- a/Open-ILS/web/reports/oils_rpt.xhtml +++ b/Open-ILS/web/reports/oils_rpt.xhtml @@ -30,8 +30,21 @@
- -
+ + diff --git a/Open-ILS/web/reports/oils_rpt_builder.xhtml b/Open-ILS/web/reports/oils_rpt_builder.xhtml index 3bacf284a7..ae3c4ec09c 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.xhtml +++ b/Open-ILS/web/reports/oils_rpt_builder.xhtml @@ -63,7 +63,7 @@
- +
diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.js b/Open-ILS/web/reports/oils_rpt_folder_window.js index e05a0f7503..d2b9aeda0c 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.js +++ b/Open-ILS/web/reports/oils_rpt_folder_window.js @@ -1,30 +1,121 @@ +var oilsRptTemplateCache = {}; +var oilsRptReportCache = {}; -function oilsRptDrawFolderWindow( type, folderId ) { +/* utility method to find and build the correct folder window object */ +function oilsRptBuildFolderWindow( type, folderId ) { var node = oilsRptCurrentFolderManager.findNode(type, folderId); _debug('drawing folder window for folder ' + node.folder.name()); - - var div = DOM.oils_rpt_folder_window_div; - switch(type) { case 'template': - oilsRptDrawTemplateWindow(node); - break; + return new oilsRptTemplateFolderWindow(node); case 'report': - oilsRptDrawReportWindow(node); - break; + return new oilsRptReportFolderWindow(node); case 'output': - oilsRptDrawOutputWindow(node); - break; + return new oilsRptOutputFolderWindow(node); } } +function oilsRptFetchTemplate(id) { + if( oilsRptTemplateCache[id] ) + return oilsRptTemplateCache[id]; + var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id); + r.send(true); + return r.result(); +} + -function oilsRptDrawTemplateWindow(node) { + +/* generic folder window class */ +oilsRptFolderWindow.prototype = new oilsRptObject(); +oilsRptFolderWindow.prototype.constructor = oilsRptFolderWindow; +oilsRptFolderWindow.baseClass = oilsRptObject.prototype.constructor; +function oilsRptFolderWindow() { } +oilsRptFolderWindow.prototype.init2 = function(node, type) { + this.folderNode = node; + this.type = type; + this.init(); + _debug('id = ' + this.id); } -function oilsRptDrawReportWindow(node) { +oilsRptFolderWindow.prototype.openWindow = function(node) { + hideMe(DOM.oils_rpt_template_folder_window_contents_div); + hideMe(DOM.oils_rpt_report_folder_window_contents_div); + unHideMe(DOM.oils_rpt_folder_table_right_td); + unHideMe(node); } -function oilsRptDrawOutputWindow(node) { +oilsRptFolderWindow.prototype.fetchFolderData = function(type, selector, cache) { + removeChildren(selector); + var req = new Request(OILS_RPT_FETCH_FOLDER_DATA, + SESSION, type, this.folderNode.folder.id()); + req.callback( + function(r) { + var ts = r.getResultObject(); + if(!ts) return; + for( var i = 0; i < ts.length; i++ ) { + var name = ts[i].name(); + if( type == 'report' ) + name = oilsRptFetchTemplate(ts[i].template()).name() + ' : ' + name; + + insertSelectorVal(selector, -1, name, ts[i].id()); + cache[ts[i].id()] = ts[i]; + } + } + ); + req.send(); } + +oilsRptTemplateFolderWindow.prototype = new oilsRptFolderWindow(); +oilsRptTemplateFolderWindow.prototype.constructor = oilsRptTemplateFolderWindow; +oilsRptTemplateFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor; +function oilsRptTemplateFolderWindow(node) { this.init2(node, 'template'); } + +oilsRptTemplateFolderWindow.prototype.draw = function() { + this.openWindow(DOM.oils_rpt_template_folder_window_contents_div); + this.fetchFolderData('template', DOM.oils_rpt_template_selector, oilsRptTemplateCache); + var obj = this; + + DOM.oils_rpt_template_action_selector.onchange = function() { + var action = getSelectVal(DOM.oils_rpt_template_action_selector.onchange); + switch(action) { + case 'create_report': + obj.createReport(); + break; + } + } +} + + +oilsRptTemplateFolderWindow.prototype.createReport = function() { +} + + + +oilsRptReportFolderWindow.prototype = new oilsRptFolderWindow(); +oilsRptReportFolderWindow.prototype.constructor = oilsRptReportFolderWindow; +oilsRptReportFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor; +function oilsRptReportFolderWindow(node) { this.init2(node, 'report'); } + +oilsRptReportFolderWindow.prototype.draw = function() { + this.openWindow(DOM.oils_rpt_report_folder_window_contents_div); + this.fetchFolderData('report', DOM.oils_rpt_report_selector, oilsRptReportCache); +} + + + + + +oilsRptOutputFolderWindow.prototype = new oilsRptFolderWindow(); +oilsRptOutputFolderWindow.prototype.constructor = oilsRptOutputFolderWindow; +oilsRptOutputFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor; +function oilsRptOutputFolderWindow(node) { this.init2(node, 'output'); } + +oilsRptOutputFolderWindow.prototype.draw = function() { + this.hideWindows(); + this.openWindow(null); +} + + + + diff --git a/Open-ILS/web/reports/oils_rpt_folders.js b/Open-ILS/web/reports/oils_rpt_folders.js index 3d01007326..ffeee02aff 100644 --- a/Open-ILS/web/reports/oils_rpt_folders.js +++ b/Open-ILS/web/reports/oils_rpt_folders.js @@ -1,8 +1,13 @@ var oilsRptFolderNodeCache = {}; +oilsRptFolderManager.prototype = new oilsRptObject(); +oilsRptFolderManager.prototype.constructor = oilsRptFolderManager; +oilsRptFolderManager.baseClass = oilsRptObject.prototype.constructor; + function oilsRptFolderManager(node) { this.node = node; this.folderTree = {}; + this.init(); } oilsRptFolderManager.prototype.draw = function(auth) { @@ -68,8 +73,10 @@ oilsRptFolderManager.prototype.makeTree = function(type, folders, node, parentId id = oilsNextId(); - var action = 'javascript:oilsRptDrawFolderWindow("'+ - type+'","'+node.folder.id()+'");oilsRptFolderTree.toggle("'+id+'");'; + node.folderWindow = oilsRptBuildFolderWindow(type, node.folder.id()); + + var action = 'javascript:oilsRptObject.find('+node.folderWindow.id+').draw();'+ + 'oilsRptFolderTree.toggle("'+id+'");'; oilsRptFolderTree.addNode(id, parentId, node.folder.name(), action); node.treeId = id; @@ -92,3 +99,4 @@ oilsRptFolderManager.prototype.findNode = function(type, id) { + diff --git a/Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml b/Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml new file mode 100644 index 0000000000..82f57233cb --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml @@ -0,0 +1,26 @@ +
+
Display Items Filters
+ + + + + + + + + + + + + +
Select a report:
Select an action: + +
+
+
+
+
+ diff --git a/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml b/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml new file mode 100644 index 0000000000..518daa1454 --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml @@ -0,0 +1,30 @@ +
+ + + + + + + + + + + + + + + + + +
Select a template:
Select an action: + +
+
+
+
+ +
+
+ diff --git a/Open-ILS/web/reports/oils_rpt_utils.js b/Open-ILS/web/reports/oils_rpt_utils.js index 933ed48e15..e090050209 100644 --- a/Open-ILS/web/reports/oils_rpt_utils.js +++ b/Open-ILS/web/reports/oils_rpt_utils.js @@ -1,13 +1,50 @@ var oilsRptID = 0; var oilsRptID2 = 0; +var oilsRptID3 = 0; function oilsNextId() { return 'oils_'+ (oilsRptID++); } +function oilsNextNumericId() { + return oilsRptID3++; +} + function oilsRptNextParam() { return '::PARAM'+ (oilsRptID2++); } + +function oilsRptCacheObject(obj) { + var id = oilsNextId(); + oilsRptObjectCache[id] = obj; + return id; +} + +function oilsRptFindObject(id) { + return oilsRptObjectCache[id]; +} + + +/* -------------------------------------------- */ +function oilsRptObject() {} +oilsRptObject.prototype.init = function() { + oilsRptObject.cache(this); +} +oilsRptObject.objectCache = {}; +oilsRptObject.find = function(id) { + return oilsRptObject.objectCache[id]; +} +oilsRptObject.cache = function(obj) { + obj.id = oilsNextNumericId(); + oilsRptObject.objectCache[obj.id] = obj; + return obj.id; +} +/* -------------------------------------------- */ + + + + + function oilsRptResetParams() { oilsRptID2 = 0; } diff --git a/Open-ILS/web/reports/oils_rpt_vars.js b/Open-ILS/web/reports/oils_rpt_vars.js index bf1d2b648f..0646f05d75 100644 --- a/Open-ILS/web/reports/oils_rpt_vars.js +++ b/Open-ILS/web/reports/oils_rpt_vars.js @@ -47,5 +47,8 @@ var oilsRptCurrentFilterOpManager; var OILS_RPT_FETCH_FOLDERS = 'open-ils.reporter:open-ils.reporter.folder.visible.retrieve'; var OILS_RPT_FETCH_FOLDER_DATA = 'open-ils.reporter:open-ils.reporter.folder_data.retrieve'; +var OILS_RPT_FETCH_TEMPLATE = 'open-ils.reporter:open-ils.reporter.template.retrieve'; var oilsRptCurrentFolderManager; + +//var oilsRptFolderWindowCache = {}; -- 2.11.0