more work on folder window interface, started on a generic report editor interface
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 29 Sep 2006 03:37:36 +0000 (03:37 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 29 Sep 2006 03:37:36 +0000 (03:37 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6260 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_common.xhtml
Open-ILS/web/reports/oils_rpt_editor.xhtml [new file with mode: 0644]
Open-ILS/web/reports/oils_rpt_folder_window.js
Open-ILS/web/reports/oils_rpt_folder_window.xhtml
Open-ILS/web/reports/oils_rpt_folders.js
Open-ILS/web/reports/oils_rpt_param_editor.js [new file with mode: 0644]
Open-ILS/web/reports/oils_rpt_param_editor.xhtml [new file with mode: 0644]
Open-ILS/web/reports/oils_rpt_report_editor.js [new file with mode: 0644]

index 78ac731..1b3a513 100644 (file)
@@ -247,3 +247,7 @@ button {
 #oils_rpt_folder_window_contents_table td {
        text-align: center;
 }
+
+#oils_rpt_editor_div {
+       width: 100%;
+}
index 9c6feb7..8722d3a 100644 (file)
@@ -67,7 +67,6 @@ oilsReport.prototype.gatherParams = function() {
        _debug("we have params: " + js2JSON(this.params));
 
        var params      = [];
-       this._gatherParams(params, this.def.select, 'select', 'alias');
        this._gatherParams(params, this.def.where, 'where', 'condition');
        this._gatherParams(params, this.def.having, 'having', 'condition');
        return params;
index e144cf0..2385247 100644 (file)
                                                        </table>
 
                                                        <div>
-
                                                                <!--#include virtual="oils_rpt_folder_window.xhtml"-->
-
-                                                               <!--
-                                                               <|||#include virtual="oils_rpt_template_folder_window.xhtml"||>
-                                                               <|||#include virtual="oils_rpt_report_folder_window.xhtml"||>
-                                                               -->
                                                        </div>
                                                </div>
                                        </td>
+
+                                       <td id='oils_rpt_folder_table_alt_td' class='hide_me'>
+                                               <div class='oils_rpt_folder_window'>
+                                                       <!--#include virtual="oils_rpt_editor.xhtml"-->
+                                               </div>
+                                       </td>
+
                                </tr>
                        </tbody>
                </table>
 
-               <!--#include virtual="oils_rpt_param_editor.xhtml"-->
 
        </body>
 </html>
index 6280d36..a2794e8 100644 (file)
@@ -42,6 +42,7 @@
 <script type="text/javascript" src="oils_rpt_widget.js"></script>
 <script type="text/javascript" src="oils_rpt_param_editor.js"></script>
 <script type="text/javascript" src="oils_rpt.js"></script>
+<script type="text/javascript" src="oils_rpt_report_editor.js"></script>
 
 <link type='text/css' rel='stylesheet' href="/opac/common/css/fm_table.css"/>
 <link rel="stylesheet" type="text/css" href="oils_rpt.css"> </link>
diff --git a/Open-ILS/web/reports/oils_rpt_editor.xhtml b/Open-ILS/web/reports/oils_rpt_editor.xhtml
new file mode 100644 (file)
index 0000000..82a9fa0
--- /dev/null
@@ -0,0 +1,39 @@
+<div id='oils_rpt_editor_div'>
+       <table>
+               <tbody>
+                       <tr>
+                               <td>Template Name:</td>
+                               <td><b id='oils_rpt_report_editor_template_name'/></td>
+                       </tr>
+                       <tr>
+                               <td>Template Creator:</td>
+                               <td><b id='oils_rpt_report_editor_template_creator'/></td>
+                       </tr>
+                       <tr>
+                               <td>Template Description:</td>
+                               <td><b id='oils_rpt_report_editor_template_description'/></td>
+                       </tr>
+
+                       <tr>
+                               <td>Report Name:</td>
+                               <td><input type='text' id='oils_rpt_report_editor_name'/></td>
+                       </tr>
+                       <tr>
+                               <td>Report Description:</td>
+                               <td><input type='text' id='oils_rpt_report_editor_name'/></td>
+                       </tr>
+                       <tr><td colspan='2'><hr/></td></tr>
+                       <tr>
+                               <td colspan='2'>
+                                       <!--#include virtual="oils_rpt_param_editor.xhtml"-->
+                               </td>
+                       </tr>
+                       <tr><td colspan='2'><hr/></td></tr>
+                       <tr>
+                               <td colspan='2'>
+                                       Add scheduling interface ...
+                               </td>
+                       </tr>
+               </tbody>
+       </table>
+</div>
index ae6f086..3fad8dd 100644 (file)
@@ -32,8 +32,8 @@ oilsRptFolderWindow.prototype.init2 = function(node, type) {
 oilsRptFolderWindow.prototype.draw = function() {
 
        hideMe(DOM.oils_rpt_template_folder_new_report);
-       hideMe(DOM.oils_rpt_param_editor_div);
        unHideMe(DOM.oils_rpt_folder_table_right_td);
+       hideMe(DOM.oils_rpt_folder_table_alt_td);
        this.drawFolderDetails();
 
        var obj = this;
@@ -53,6 +53,17 @@ oilsRptFolderWindow.prototype.draw = function() {
 
 oilsRptFolderWindow.prototype.doFolderAction = function() {
        var objs = this.fmTable.getSelected();
+       if( objs.length == 0 ) 
+               return alert('Please select an item from the list');
+       var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector);
+
+       switch(action) {
+               case 'create_report' :
+                       hideMe(DOM.oils_rpt_folder_table_right_td);
+                       unHideMe(DOM.oils_rpt_folder_table_alt_td);
+                       new oilsRptReportEditor(new oilsReport(objs[0]));
+                       break;
+       }
 }
 
 
index 99563f0..02cd681 100644 (file)
@@ -5,8 +5,8 @@
                                <td> 
                                        <span>
                                                <select id='oils_rpt_folder_contents_action_selector' style='width: auto;'>
-                                                       <option type='template' value='clone_template'>Clone template</option>
                                                        <option type='template' value='create_report'>Create a new report from template</option>
+                                                       <option type='template' value='clone_template'>Clone template</option>
                                                        <option type='report' value='change_params'>Clone report</option>
                                                        <option type='report' value='schedule_report'>Schedule report</option>
                                                </select>
@@ -17,7 +17,7 @@
                        <tr class='oils_rpt_folder_window_contents_row'>
                                <td width='100%' align='center'>
                                        <table width='100%'><tbody>
-                                               <tr><td align='center'><b>Folder Contents</b></td></tr>
+                                               <tr><td align='center'><h4>Folder Contents</h4></td></tr>
                                                <tr><td><div id='oils_rpt_folder_contents_selector'/></td></tr>
                                        </tbody></table>
                                </td>
index 376eb99..7adeca2 100644 (file)
@@ -21,22 +21,54 @@ function oilsRptFolderManager() {
 }
 
 oilsRptFolderManager.prototype.draw = function(auth) {
-       oilsRptTemplateFolderTree = new SlimTree(DOM.oils_rpt_template_folder_tree, 'oilsRptTemplateFolderTree');
+
+       oilsRptTemplateFolderTree = 
+               new SlimTree(
+                       DOM.oils_rpt_template_folder_tree, 
+                       'oilsRptTemplateFolderTree');
+                       //'images/template-page.gif');
+
        oilsRptTemplateFolderTree.addNode(this.tId, -1, 'Templates')
 
-       oilsRptReportFolderTree = new SlimTree(DOM.oils_rpt_report_folder_tree, 'oilsRptReportFolderTree');
+       oilsRptReportFolderTree = 
+               new SlimTree(
+                       DOM.oils_rpt_report_folder_tree, 
+                       'oilsRptReportFolderTree');
+                       //'images/report-page.gif');
+
        oilsRptReportFolderTree.addNode(this.rId, -1, 'Reports')
 
-       oilsRptOutputFolderTree = new SlimTree(DOM.oils_rpt_output_folder_tree, 'oilsRptOutputFolderTree');
+
+       oilsRptOutputFolderTree = 
+               new SlimTree(
+                       DOM.oils_rpt_output_folder_tree, 
+                       'oilsRptOutputFolderTree');
+                       //'images/output-page.gif');
+
        oilsRptOutputFolderTree.addNode(this.oId, -1, 'Output')
 
-       oilsRptSharedTemplateFolderTree = new SlimTree(DOM.oils_rpt_template_shared_folder_tree, 'oilsRptSharedTemplateFolderTree');
+       oilsRptSharedTemplateFolderTree = 
+               new SlimTree(
+                       DOM.oils_rpt_template_shared_folder_tree, 
+                       'oilsRptSharedTemplateFolderTree');
+                       //'images/template-page.gif');
+
        oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, 'Templates')
 
-       oilsRptSharedReportFolderTree = new SlimTree(DOM.oils_rpt_report_shared_folder_tree, 'oilsRptSharedReportFolderTree');
+       oilsRptSharedReportFolderTree = 
+               new SlimTree(
+                       DOM.oils_rpt_report_shared_folder_tree, 
+                       'oilsRptSharedReportFolderTree');
+                       //'images/report-page.gif');
+
        oilsRptSharedReportFolderTree.addNode(this.srId, -1, 'Reports')
 
-       oilsRptSharedOutputFolderTree = new SlimTree(DOM.oils_rpt_output_shared_folder_tree, 'oilsRptSharedOutputFolderTree');
+       oilsRptSharedOutputFolderTree = 
+               new SlimTree(
+                       DOM.oils_rpt_output_shared_folder_tree, 
+                       'oilsRptSharedOutputFolderTree');
+                       //'images/output-page.gif');
+
        oilsRptSharedOutputFolderTree.addNode(this.soId, -1, 'Output')
 
        this.fetchFolders(auth);
@@ -88,7 +120,6 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
        for( var i = 0; i < folders.length; i++ ) {
 
                var folder = folders[i];
-               _debug(js2JSON(folder));
                var mine = (folder.owner().id() == USER.id());
                var pid;
                var treename;
@@ -128,6 +159,10 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
                                }
                }
 
+               if( folder.parent() ) 
+                       pid = this.findNode(type, folder.parent()).treeId;
+
+
                if(!mine) {
                        if(!this.orgTrail[type][folder.share_with().id()]) {
                                tree.addNode(id, pid, folder.share_with().shortname());
@@ -141,9 +176,6 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
                        }
                }
 
-               if( folder.parent() ) 
-                       pid = this.findNode(type, folder.parent()).treeId;
-
                var action = 'javascript:oilsRptObject.find('+
                        node.folderWindow.id+').draw();'+treename+'.toggle("'+id+'");';
                _debug('adding node '+folder.name()+' pid = '+pid);
@@ -153,49 +185,7 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
 }
 
 
-/*
-oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
-       this.folderTree[type] = { children : [] };
-       this.makeTree(type, folders, this.folderTree[type], -1 );
-}
-oilsRptFolderManager.prototype.makeTree = function(type, folders, node, parentId, tree) {
-       if(!node) return;
-       var id = parentId;
-       var childNodes;
-
-       if( ! node.folder ) {
-               childNodes = grep(folders, function(f){return (!f.parent())});
-
-       } else {
-               _debug("making subtree with folder "+node.folder.name());
-
-               var c = oilsRptFolderNodeCache;
-               if(!c[type]) c[type] = {};
-               c[type][node.folder.id()] = node;
-
-               id = oilsNextId();
-
-               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;
-               node.children = [];
-               childNodes = grep(folders, 
-                       function(i){return (i.parent() == node.folder.id())});
-       } 
-
-       if(!childNodes) return;
-       for( var i = 0; i < childNodes.length; i++ ) 
-               this.makeTree( type, folders, { folder : childNodes[i] }, id );
-}
-*/
-
-
 oilsRptFolderManager.prototype.findNode = function(type, id) {
-               _debug('finding : type = ' + type + ' : ' + id);
        return oilsRptFolderNodeCache[type][id];
 }
 
diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.js b/Open-ILS/web/reports/oils_rpt_param_editor.js
new file mode 100644 (file)
index 0000000..833dc47
--- /dev/null
@@ -0,0 +1,38 @@
+oilsRptSetSubClass('oilsRptParamEditor','oilsRptObject');
+function oilsRptParamEditor(report, tbody) {
+       this.tbody = tbody;
+       this.report = report;
+}
+
+
+oilsRptParamEditor.prototype.draw = function() {
+       var params = this.report.gatherParams();
+
+       if(!oilsRptParamEditor.row)
+               oilsRptParamEditor.row = 
+                       DOM.oils_rpt_param_editor_tbody.removeChild(
+                       $n(DOM.oils_rpt_param_editor_tbody, 'tr'));
+
+       _debug(formatJSON(js2JSON(params)));
+                       
+       for( var p = 0; p < params.length; p++ ) {
+               var par = params[p];
+               var row = oilsRptParamEditor.row.cloneNode(true);
+               $n(row, 'column').appendChild(text(par.column.colname));
+               $n(row, 'action').appendChild(text(par.op));
+               this.buildWidget(par, $n(row, 'widget')).draw();
+               this.tbody.appendChild(row);
+       }
+}
+
+
+oilsRptParamEditor.prototype.buildWidget = function(param, node) {
+       _debug("building widget with param op "+ param.op);
+       switch(param.op) {
+               default:
+                       return new oilsRptWidget({node:node});
+       }
+}
+
+
+
diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml
new file mode 100644 (file)
index 0000000..4449d4f
--- /dev/null
@@ -0,0 +1,21 @@
+<div id='oils_rpt_param_editor_div'>
+       <div>
+               <b id='oils_rpt_param_editor_report_name'> </b>
+       </div>
+
+       <table id='oils_rpt_param_editor_table'>
+               <thead>
+                       <tr><td>Column</td><td>Action</td><td>User Params</td></tr>
+               </thead>
+               <tbody id='oils_rpt_param_editor_tbody'>
+                       <tr name='tr'>
+                               <td name='column'/>
+                               <td name='action'/>
+                               <td name='widget'/>
+                       </tr>
+               </tbody>
+       </table>
+</div>
+
+
+
diff --git a/Open-ILS/web/reports/oils_rpt_report_editor.js b/Open-ILS/web/reports/oils_rpt_report_editor.js
new file mode 100644 (file)
index 0000000..e9f5530
--- /dev/null
@@ -0,0 +1,17 @@
+oilsRptSetSubClass('oilsRptReportEditor', 'oilsRptObject');
+function oilsRptReportEditor(rptObject) {
+       var tmpl = rptObject.templateObject;
+       var rpt = rptObject.reportObject;
+
+       appendClear(DOM.oils_rpt_report_editor_template_name, tmpl.name());
+       appendClear(DOM.oils_rpt_report_editor_template_creator, tmpl.owner().usrname());
+       appendClear(DOM.oils_rpt_report_editor_template_description, tmpl.description());
+
+       if( rpt ) {
+               DOM.oils_rpt_report_editor_name.value = rpt.name();
+               DOM.oils_rpt_report_editor_description.value = rpt.description();
+       }
+       this.paramEditor = new oilsRptParamEditor(
+               rptObject, DOM.oils_rpt_param_editor_tbody);
+       this.paramEditor.draw();
+}