continued work on the folder contents editor and general folder window framework
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 27 Sep 2006 16:06:23 +0000 (16:06 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 27 Sep 2006 16:06:23 +0000 (16:06 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6230 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/reports/oils_rpt.css
Open-ILS/web/reports/oils_rpt.js
Open-ILS/web/reports/oils_rpt.xhtml
Open-ILS/web/reports/oils_rpt_builder.xhtml
Open-ILS/web/reports/oils_rpt_folder_window.js
Open-ILS/web/reports/oils_rpt_folders.js
Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml [new file with mode: 0644]
Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml [new file with mode: 0644]
Open-ILS/web/reports/oils_rpt_utils.js
Open-ILS/web/reports/oils_rpt_vars.js

index 483a4e0..ecceb50 100644 (file)
@@ -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%;
+}
index 7c0820e..2e8160e 100644 (file)
@@ -1,4 +1,3 @@
-
 function oilsInitReports() {
        oilsRptIdObjects();
 
index 431b540..4f31a22 100644 (file)
                                                <div id='oils_rpt_folder_tree_div'>
                                                </div>
                                        </td>
-                                       <td id='oils_rpt_folder_table_right_td'>
-                                               <div id='oils_rpt_folder_window_div'>
+                                       <td id='oils_rpt_folder_table_right_td' class='hide_me'>
+                                               <div class='oils_rpt_folder_window'>
+
+                                                       <table class='oils_rpt_tab_table'><tbody>
+                                                               <tr>
+                                                                       <td width='33%'><a id='oils_rpt_folder_window_manage_tab' href='javascript:void(0);'>Manage Folder Contents</a></td>
+                                                                       <td width='33%'><a id='oils_rpt_folder_window_edit_tab' href='javascript:void(0);'>Edit This Folder</a></td>
+                                                                       <td width='33%'><a id='oils_rpt_child_folders_tab' href='javascript:void(0);'>Add New Folders</a></td>
+                                                               </tr>
+                                                       </tbody></table>
+
+                                                       <div>
+                                                               <!--#include virtual="oils_rpt_template_folder_window.xhtml"-->
+                                                               <!--#include virtual="oils_rpt_report_folder_window.xhtml"-->
+                                                       </div>
                                                </div>
                                        </td>
                                </tr>
index 3bacf28..ae3c4ec 100644 (file)
@@ -63,7 +63,7 @@
 
                <div id='oils_rpt_column_editor' class='floaty hide_me'>
 
-                       <table id='oils_rpt_editor_tab_table'><tbody>
+                       <table id='oils_rpt_editor_tab_table' class='oils_rpt_tab_table'><tbody>
                                <tr>
                                        <td width='33%'><a id='oils_rpt_tform_tab' href='javascript:void(0);'>Display Items</a></td>
                                        <td width='33%'><a id='oils_rpt_filter_tab' href='javascript:void(0);'>Filters</a></td>
index e05a0f7..d2b9aed 100644 (file)
+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);
+}
+
+
+
+
index 3d01007..ffeee02 100644 (file)
@@ -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 (file)
index 0000000..82f5723
--- /dev/null
@@ -0,0 +1,26 @@
+<div id='oils_rpt_report_folder_window_contents_div' class='hide_me oils_rpt_folder_window_div'>
+       <table>
+               <tbody>
+                       <tr>
+                               <td>Select a report:</td>
+                               <td><select id='oils_rpt_report_selector'/></td>
+                       </tr>
+                       <tr>
+                               <td>Select an action:</td>
+                               <td> 
+                                       <select id='oils_rpt_report_action_selector'>
+                                               <option value='change_params'>Edit report parameters</option>
+                                               <option value='schedule_report'>Schedule report</option>
+                                       </select>
+                               </td>
+                       </tr>
+                       <tr>
+                               <td id='oils_rpt_report_folder_window_actions'>
+                                       <div id='oils_rpt_report_edit_report'>
+                                       </div>
+                               </td>
+                       </tr>
+               </tbody>
+       </table>
+</div>
+
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 (file)
index 0000000..518daa1
--- /dev/null
@@ -0,0 +1,30 @@
+<div id='oils_rpt_template_folder_window_contents_div' class='hide_me oils_rpt_folder_window_div'>
+       <table>
+               <tbody>
+                       <tr>
+                               <td>Select a template:</td>
+                               <td><select id='oils_rpt_template_selector'/></td>
+                       </tr>
+                       <tr>
+                               <td>Select an action:</td>
+                               <td> 
+                                       <select id='oils_rpt_template_action_selector'>
+                                               <option value='create_report'>Create report from template</option>
+                                       </select>
+                               </td>
+                       </tr>
+                       <tr>
+                               <td id='oils_rpt_template_folder_window_actions'>
+                                       <div id='oils_rpt_template_create_report'>
+                                       </div>
+                               </td>
+                       </tr>
+                       <tr>
+                               <td colspan='2'>
+                                       <button id='oils_rpt_template_folder_window_go'>Go!</button>
+                               </td>
+                       </tr>
+               </tbody>
+       </table>
+</div>
+
index 933ed48..e090050 100644 (file)
@@ -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;
 }
index bf1d2b6..0646f05 100644 (file)
@@ -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 = {};