padding: 5px;
}
+#oils_rpt_table tr {
+ -moz-border-radius: 5px 5px 5px 5px;
+}
+
#oils_rpt_table td {
vertical-align: top;
padding: 3px;
}
-#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;
}
#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%;
+}
-
function oilsInitReports() {
oilsRptIdObjects();
<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>
<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>
+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);
+}
+
+
+
+
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) {
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;
+
--- /dev/null
+<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>
+
--- /dev/null
+<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>
+
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;
}
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 = {};