if( typeof destination == 'string' )
destination = $(destination);
- var builder = new FMObjectBuilder(obj, args.display);
+ var builder = new FMObjectBuilder(obj, args);
destination.appendChild(builder.build());
return builder;
}
/* Constructor for the builder object */
-function FMObjectBuilder( obj, display, styleToggle ) {
+function FMObjectBuilder( obj, args ) {
this.obj = obj;
this.table = elem('table');
this.thead = elem('thead');
this.tbody = elem('tbody');
this.thead_tr = elem('tr');
this.subtables = [];
- this.display = display;
- this.styleToggle = styleToggle;
+ this.display = args.display;
+ this.selectCol = args.selectCol;
+ this.selectColName = args.selectColName;
+ this.rows = [];
if(!this.display) this.display = {};
this.table.appendChild(this.thead);
}
+FMObjectBuilder.prototype.getSelected = function() {
+ var objs = [];
+ for( var i = 0; i < this.rows.length; i++ ) {
+ var r = $(this.rows[i]);
+ if( $n(r,'selected').checked )
+ objs.push(this.obj[i]);
+ }
+ return objs;
+}
+
/* Builds the table */
FMObjectBuilder.prototype.build = function() {
var o = this.obj;
if( o ) {
this.setKeys(o);
+ if( this.selectCol )
+ this.thead_tr.appendChild(elem('td',null,this.selectColName));
for( var i = 0; i < this.keys.length; i++ )
this.thead_tr.appendChild(elem('td',null,this.keys[i]));
/* Inserts one row into the table to represent a single object */
FMObjectBuilder.prototype.buildObjectRow = function(obj) {
var row = elem('tr');
+ row.id = 'fm_table_' + (ID_GEN++);
+ this.rows.push(row.id);
+
+ if(this.selectCol) {
+ var td = elem('td');
+ td.appendChild(elem('input',{type:'checkbox',name:'selected'}));
+ row.appendChild(td);
+ }
+
for( var i = 0; i < this.keys.length; i++ ) {
var td = elem('td');
var data = obj[this.keys[i]]();
FMObjectBuilder.prototype.buildSubTable = function(td, obj, key) {
- var left = td.offsetLeft;
+ var left = parseInt(td.offsetLeft);
var div = elem('div');
var row = elem('tr');
var subtd= elem('td');
addCSSClass(td, 'fm_selected');
subtd.setAttribute('colspan',this.keys.length);
+ if(this.selectCol)
+ subtd.setAttribute('colspan',this.keys.length + 1);
- subtd.setAttribute('style', 'width: 100%; padding-left:'+left+';');
+ subtd.setAttribute('style', 'width: 100%; padding-left:'+left+'px;');
var builder = drawFMObjectTable({dest:div, obj:obj, display:this.display});
builder.table.setAttribute('style', 'width: auto;');
addCSSClass(builder.table, 'fm_selected');
var newleft = left - (builder.table.clientWidth / 2) + (td.clientWidth / 2);
if( newleft < left ) {
- _debug("left = "+left+" : newleft = "+newleft);
+ if( newleft < 0 ) newleft = 0;
+ newleft = parseInt(newleft);
var style = subtd.getAttribute('style');
style = style.replace(new RegExp(left), newleft);
subtd.setAttribute('style', style);
#oils_rpt_folder_table_left_td {
vertical-align: top;
+ width: 25%;
}
#oils_rpt_folder_table_right_td {
text-align: center;
vertical-align: top;
padding: 10px;
- width: 75%;
}
.oils_rpt_folder_window {
}
-oils_rpt_folder_window_div {
+#oils_rpt_folder_window_contents_div {
width: 100%;
}
border: 1px solid #808080;
padding: 5px;
}
+
+#oils_rpt_folder_details_table {
+ width: 100%;
+ margin-bottom: 10px;
+}
+#oils_rpt_folder_details_table tr {
+ border: 1px solid #808080;
+}
+
+#oils_rpt_folder_details_table td {
+ text-align: center;
+ padding: 5px;
+}
+
+#oils_rpt_template_folder_go_row {
+ border-bottom: 1px solid #808080;
+ margin-bottom: 10px;
+}
+
+#oils_rpt_param_editor_table {
+ width: 100%;
+ border: 1px solid #808080;
+}
+
+#oils_rpt_param_editor_table thead td {
+ font-weight: bold;
+}
+
+.oils_rpt_folder_tree {
+ margin: 5px;
+}
+
+.oils_rpt_folder_tree_div {
+ border: 1px solid #808080;
+ margin: 10px;
+}
+
+.oils_rpt_folder_contents {
+ min-width: 200px;
+}
+
+.oils_rpt_folder_window_contents_row {
+ border-bottom: 1px solid #808080;
+ margin: 10px;
+}
+
+#oils_rpt_folder_window_contents_table {
+ width: 100%;
+}
+#oils_rpt_folder_window_contents_table td {
+ text-align: center;
+}
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = setMousePos;
+ DEBUG = 1;
+
var cgi = new CGI();
fetchUser(cgi.param('ses'));
DOM.oils_rpt_user.appendChild(text(USER.usrname()));
if( reportObj )
this.params = JSON2js(reportObj.data());
+ if(!this.params) this.params = {};
}
oilsReport.prototype.toString = function() {
}
oilsReport.prototype.gatherParams = function() {
- if(oilsRptObjectKeys(this.params).length == 0) return;
-
+ //if(oilsRptObjectKeys(this.params).length == 0) return;
_debug("we have params: " + js2JSON(this.params));
var params = [];
var key;
var op;
+ /* add select transform support */
+
if( typeof node == 'string' ) {
key = node.match(/::.*/);
} else {
value : this.params[key],
column : obj.column,
type : type,
- relation : obj.relation
+ relation : obj.relation,
+ field : field
});
}
}
<tbody>
<tr>
<td id='oils_rpt_folder_table_left_td'>
- <div id='oils_rpt_folder_tree_div'>
+ <div class='oils_rpt_folder_tree_div'>
+ <div><b>My Folders</b></div>
+ <div id='oils_rpt_template_folder_tree' class='oils_rpt_folder_tree'/>
+ <div id='oils_rpt_report_folder_tree' class='oils_rpt_folder_tree'/>
+ <div id='oils_rpt_output_folder_tree' class='oils_rpt_folder_tree'/>
+ </div>
+ <div class='oils_rpt_folder_tree_div'>
+ <div><b>Shared Folders</b></div>
+ <div id='oils_rpt_template_shared_folder_tree' class='oils_rpt_folder_tree'/>
+ <div id='oils_rpt_report_shared_folder_tree' class='oils_rpt_folder_tree'/>
+ <div id='oils_rpt_output_shared_folder_tree' class='oils_rpt_folder_tree'/>
</div>
</td>
+ <td/>
<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>
+ <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>
+ <table id='oils_rpt_folder_details_table'>
+ <tbody>
+ <tr>
+ <td>
+ <span><b id='oils_rpt_folder_name_label'/>: created by </span><b id='oils_rpt_folder_creator_label'/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
<div>
- <!--#include virtual="oils_rpt_template_folder_window.xhtml"-->
- <!--#include virtual="oils_rpt_report_folder_window.xhtml"-->
+
+ <!--#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>
</tbody>
</table>
+ <!--#include virtual="oils_rpt_param_editor.xhtml"-->
+
</body>
</html>
<script language='javascript' src='/opac/common/js/init.js'> </script>
<script language='javascript' src='/opac/common/js/RemoteRequest.js'> </script>
<script language='javascript' src='/opac/common/js/slimtree.js'> </script>
+<script language='javascript' src='/opac/common/js/sorttable.js'> </script>
+<script language='javascript' src='/opac/common/js/fm_table.js'> </script>
+<script language='javascript' src='/opac/common/js/fm_table_conf.js'> </script>
<script>
stpicopen = '../opac/images/slimtree/folder2.gif';
stpicclose = '../opac/images/slimtree/folderopen2.gif';
<script type="text/javascript" src="oils_rpt_folders.js"></script>
<script type="text/javascript" src="oils_rpt_folder_window.js"></script>
<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>
+<link type='text/css' rel='stylesheet' href="/opac/common/css/fm_table.css"/>
<link rel="stylesheet" type="text/css" href="oils_rpt.css"> </link>
<script>function _l(l) { location.href = l + location.search; }</script>
-var oilsRptTemplateCache = {};
-var oilsRptReportCache = {};
-/* 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());
- switch(type) {
- case 'template':
- return new oilsRptTemplateFolderWindow(node);
- case 'report':
- return new oilsRptReportFolderWindow(node);
- case 'output':
- 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 oilsRptTemplateCache[id] = r.result();
+ var t = oilsRptGetCache('rt', id);
+ if(!t) {
+ var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
+ r.send(true);
+ t = r.result();
+ oilsRptCacheObject('rt', t, id);
+ }
+ return t;
}
/* generic folder window class */
-oilsRptFolderWindow.prototype = new oilsRptObject();
-oilsRptFolderWindow.prototype.constructor = oilsRptFolderWindow;
-oilsRptFolderWindow.baseClass = oilsRptObject.prototype.constructor;
-function oilsRptFolderWindow() { }
+oilsRptSetSubClass('oilsRptFolderWindow', 'oilsRptObject');
+function oilsRptFolderWindow(type, folderId) {
+ var node = oilsRptCurrentFolderManager.findNode(type, folderId);
+ this.init2(node, type);
+ this.selector = DOM.oils_rpt_folder_contents_selector;
+}
+
+
oilsRptFolderWindow.prototype.init2 = function(node, type) {
this.folderNode = node;
this.type = type;
this.init();
}
-oilsRptFolderWindow.prototype.openWindow = function(node) {
- hideMe(DOM.oils_rpt_template_folder_window_contents_div);
- hideMe(DOM.oils_rpt_report_folder_window_contents_div);
+
+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);
- unHideMe(node);
+ this.drawFolderDetails();
+
+ var obj = this;
+ DOM.oils_rpt_folder_content_action_go.onclick =
+ function() {obj.doFolderAction()}
+
+ this.fetchFolderData();
+
+ var sel = DOM.oils_rpt_folder_contents_action_selector;
+ for( var i = 0; i < sel.options.length; i++ ) {
+ var opt = sel.options[i];
+ if( opt.getAttribute('type') == this.type )
+ unHideMe(opt);
+ else hideMe(opt);
+ }
+}
+
+oilsRptFolderWindow.prototype.doFolderAction = function() {
+ var objs = this.fmTable.getSelected();
}
-oilsRptFolderWindow.prototype.fetchFolderData = function(type, selector, cache, callback) {
- removeChildren(selector);
+
+oilsRptFolderWindow.prototype.drawFolderDetails = function() {
+ appendClear(DOM.oils_rpt_folder_creator_label,
+ text(this.folderNode.folder.owner().usrname()));
+ appendClear(DOM.oils_rpt_folder_name_label,
+ text(this.folderNode.folder.name()));
+}
+
+
+oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
+ removeChildren(this.selector);
var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
- SESSION, type, this.folderNode.folder.id());
+ SESSION, this.type, this.folderNode.folder.id());
+ var obj = this;
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];
- }
+ obj.fmTable = drawFMObjectTable(
+ {
+ dest : obj.selector,
+ obj : r.getResultObject(),
+ selectCol : true,
+ selectColName : 'Select Row'
+ }
+ );
+ //sortables_init();
if(callback) callback();
}
);
}
+/*
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);
+ this.openWindow();
+ this.fetchFolderData('template', DOM.oils_rpt_folder_contents_selector, oilsRptTemplateCache);
var obj = this;
- DOM.oils_rpt_template_action_selector.onchange = function() {
- var action = getSelectVal(DOM.oils_rpt_template_action_selector.onchange);
+ DOM.oils_rpt_template_folder_window_go.onclick = function() {
+ var action = getSelectorVal(DOM.oils_rpt_template_action_selector);
+ var template = getSelectorVal(DOM.oils_rpt_template_selector);
switch(action) {
case 'create_report':
- obj.createReport();
+ obj.createReport(template);
break;
}
}
}
-oilsRptTemplateFolderWindow.prototype.createReport = function() {
+oilsRptTemplateFolderWindow.prototype.createReport = function(templateId) {
+ unHideMe(DOM.oils_rpt_template_folder_new_report);
+ DOM.oils_rpt_template_folder_new_report_next.onclick = function() {
+ var name = DOM.oils_rpt_template_folder_new_report_name.value;
+ var desc = DOM.oils_rpt_template_folder_new_report_desc.value;
+ var rpt = new rr();
+ rpt.template(templateId);
+ rpt.name(name);
+ rpt.description(desc);
+ DOM.oils_rpt_template_folder_window_contents_div.appendChild(
+ DOM.oils_rpt_param_editor_div);
+ unHideMe(DOM.oils_rpt_param_editor_div);
+ var e = new oilsRptParamEditor(
+ new oilsReport(oilsRptFetchTemplate(templateId), rpt),
+ DOM.oils_rpt_param_editor_tbody);
+ e.draw();
+ }
}
function oilsRptReportFolderWindow(node) { this.init2(node, 'report'); }
oilsRptReportFolderWindow.prototype.draw = function() {
- this.openWindow(DOM.oils_rpt_report_folder_window_contents_div);
+ this.openWindow();
var obj = this;
this.fetchFolderData('report',
DOM.oils_rpt_report_selector, oilsRptReportCache,
var rpt = obj.getSelectedReport();
var tmpl = oilsRptFetchTemplate(rpt.template());
obj.oilsReport = new oilsReport( tmpl, rpt );
- var params = obj.oilsReport.gatherParams();
- obj.drawParamEditor(params);
};
}
oilsRptReportFolderWindow.prototype.drawParamEditor = function(params) {
_debug('drawing params: \n' + formatJSON(js2JSON(params)));
- this.drawSelectParamEditor(grep(params,
- function(p) { return (p.type == 'select')}));
- this.drawWhereParamEditor(grep(params,
- function(p) { return (p.type == 'where')}));
- this.drawHavingParamEditor(grep(params,
- function(p) { return (p.type == 'having')}));
}
var oilsRptReportFolderSelectParamRow;
oilsRptReportFolderWindow.prototype.drawSelectParamEditor = function(params) {
if(params.length == 0) return;
- unHideMe(DOM.oils_rpt_report_folder_window_display_params_table);
-
- var tbody = $n(DOM.oils_rpt_report_folder_window_display_params_table,'tbody');
- if(!oilsRptReportFolderSelectParamRow)
- oilsRptReportFolderSelectParamRow = tbody.removeChild($n(tbody,'tr'));
-
- for( var p = 0; p < params.length; p++ ) {
-
- var row = oilsRptReportFolderSelectParamRow.cloneNode(true);
- var par = params[p];
- $n(row, 'column').appendChild(text(par.column.colname));
- $n(row, 'transform').appendChild(text(par.column.transform));
-
- if( typeof par.value == 'string' ) {
- unHideMe($n(row, 'param'));
- $n(row, 'param').value = par.value;
- } else {
- switch(par.transform) {
- case 'substring':
- unHideMe($n(row,'string_substring_widget'));
- break;
- }
- }
- tbody.appendChild(row);
- }
+ //unHideMe(DOM.oils_rpt_report_folder_window_display_params_table);
+
+ //var tbody = $n(DOM.oils_rpt_report_folder_window_display_params_table,'tbody');
+ //if(!oilsRptReportFolderSelectParamRow)
+ //oilsRptReportFolderSelectParamRow = tbody.removeChild($n(tbody,'tr'));
+//
+ //for( var p = 0; p < params.length; p++ ) {
+//
+ //var row = oilsRptReportFolderSelectParamRow.cloneNode(true);
+ //var par = params[p];
+ //$n(row, 'column').appendChild(text(par.column.colname));
+ //$n(row, 'transform').appendChild(text(par.column.transform));
+//
+ //if( typeof par.value == 'string' ) {
+ //unHideMe($n(row, 'param'));
+ //$n(row, 'param').value = par.value;
+ //} else {
+ //switch(par.transform) {
+ //case 'substring':
+ //unHideMe($n(row,'string_substring_widget'));
+ //break;
+ //}
+ //}
+ //tbody.appendChild(row);
+ //}
}
oilsRptReportFolderWindow.prototype.drawWhereParamEditor = function(params) {
this.hideWindows();
this.openWindow(null);
}
+*/
var oilsRptFolderNodeCache = {};
+oilsRptFolderNodeCache.template = {};
+oilsRptFolderNodeCache.report = {};
+oilsRptFolderNodeCache.output = {};
-oilsRptFolderManager.prototype = new oilsRptObject();
-oilsRptFolderManager.prototype.constructor = oilsRptFolderManager;
-oilsRptFolderManager.baseClass = oilsRptObject.prototype.constructor;
+oilsRptSetSubClass('oilsRptFolderManager','oilsRptObject');
-function oilsRptFolderManager(node) {
- this.node = node;
+function oilsRptFolderManager() {
this.folderTree = {};
- this.init();
+ this.super.init();
+ this.tId = oilsNextId();
+ this.rId = oilsNextId();
+ this.oId = oilsNextId();
+ this.stId = oilsNextId();
+ this.srId = oilsNextId();
+ this.soId = oilsNextId();
+ this.orgTrail = {};
+ this.orgTrail.template = {};
+ this.orgTrail.report = {};
+ this.orgTrail.output = {};
}
oilsRptFolderManager.prototype.draw = function(auth) {
- var tree = oilsRptFolderTree =
- new SlimTree(this.node, 'oilsRptFolderTree');
+ oilsRptTemplateFolderTree = new SlimTree(DOM.oils_rpt_template_folder_tree, 'oilsRptTemplateFolderTree');
+ oilsRptTemplateFolderTree.addNode(this.tId, -1, 'Templates')
- this.rootTreeId = oilsNextId();
- this.templateTreeId = oilsNextId();
- this.reportTreeId = oilsNextId();
- this.outputTreeId = oilsNextId();
+ oilsRptReportFolderTree = new SlimTree(DOM.oils_rpt_report_folder_tree, 'oilsRptReportFolderTree');
+ oilsRptReportFolderTree.addNode(this.rId, -1, 'Reports')
- tree.addNode(this.rootTreeId, -1, 'Report Folders');
- tree.addNode(this.templateTreeId, this.rootTreeId, 'Template Folders');
- tree.addNode(this.reportTreeId, this.rootTreeId, 'Report Folders');
- tree.addNode(this.outputTreeId, this.rootTreeId, 'Output Folders');
+ oilsRptOutputFolderTree = new SlimTree(DOM.oils_rpt_output_folder_tree, 'oilsRptOutputFolderTree');
+ oilsRptOutputFolderTree.addNode(this.oId, -1, 'Output')
+
+ oilsRptSharedTemplateFolderTree = new SlimTree(DOM.oils_rpt_template_shared_folder_tree, 'oilsRptSharedTemplateFolderTree');
+ oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, 'Templates')
+
+ oilsRptSharedReportFolderTree = new SlimTree(DOM.oils_rpt_report_shared_folder_tree, 'oilsRptSharedReportFolderTree');
+ oilsRptSharedReportFolderTree.addNode(this.srId, -1, 'Reports')
+
+ oilsRptSharedOutputFolderTree = new SlimTree(DOM.oils_rpt_output_shared_folder_tree, 'oilsRptSharedOutputFolderTree');
+ oilsRptSharedOutputFolderTree.addNode(this.soId, -1, 'Output')
this.fetchFolders(auth);
}
oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
- _debug('making folder tree '+type);
- switch(type) {
- case 'template': tid = this.templateTreeId; break;
- case 'report': tid = this.reportTreeId; break;
- case 'output': tid = this.outputTreeId; break;
+ var tree;
+
+ folders = folders.sort(
+ function(a,b) {
+ var asw = a.share_with().id();
+ var bsw = b.share_with().id();
+ if( asw ) asw = findOrgDepth(findOrgUnit(asw));
+ else asw = -1;
+ if( bsw ) bsw = findOrgDepth(findOrgUnit(bsw));
+ else bsw = -1;
+ if( asw < bsw ) return 1;
+ if( asw > bsw ) return -1;
+ return 0;
+ }
+ );
+
+
+ for( var i = 0; i < folders.length; i++ ) {
+ var folder = folders[i];
+ var id = oilsNextId();
+ var node = { folder : folder, treeId : id };
+ oilsRptFolderNodeCache[type][folder.id()] = node;
+ node.folderWindow = new oilsRptFolderWindow(type, folder.id())
+ }
+
+
+ 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;
+
+ switch(type) {
+ case 'template':
+ if(mine) {
+ tree = oilsRptTemplateFolderTree;
+ treename = 'oilsRptTemplateFolderTree';
+ pid = this.tId;
+ } else {
+ tree = oilsRptSharedTemplateFolderTree;
+ treename = 'oilsRptSharedTemplateFolderTree';
+ pid = this.stId;
+ }
+ break;
+ case 'report':
+ if(mine) {
+ tree = oilsRptTemplateFolderTree;
+ treename = 'oilsRptTemplateFolderTree';
+ pid = this.rId;
+ } else {
+ tree = oilsRptSharedTemplateFolderTree;
+ treename = 'oilsRptSharedTemplateFolderTree';
+ pid = this.srId;
+ }
+ break;
+ case 'output':
+ if(mine) {
+ tree = oilsRptTemplateFolderTree;
+ treename = 'oilsRptTemplateFolderTree';
+ pid = this.oId;
+ } else {
+ tree = oilsRptSharedTemplateFolderTree;
+ treename = 'oilsRptSharedTemplateFolderTree';
+ pid = this.soId;
+ }
+ }
+
+ if(!mine) {
+ if(!this.orgTrail[type][folder.share_with().id()]) {
+ tree.addNode(id, pid, folder.share_with().shortname());
+ tree.close(pid);
+ pid = id;
+ id = oilsNextId();
+ this.orgTrail[type][folder.share_with().id()] = pid;
+ } else {
+ pid = this.orgTrail[type][folder.share_with().id()];
+ id = oilsNextId();
+ }
+ }
+
+ 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);
+ tree.addNode(id, pid, folder.name(), action);
+ tree.close(pid);
}
- this.folderTree[type] = { children : [] };
- this.makeTree(type, folders, this.folderTree[type], tid );
}
-/* builds an in-memory version of the folder trees as well as the UI trees */
-oilsRptFolderManager.prototype.makeTree = function(type, folders, node, parentId) {
+/*
+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;
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];
}
<table>
<tbody>
<tr>
- <td>Select a report:</td>
- <td><select id='oils_rpt_report_selector'/></td>
- <td>
- <span>Report Description: </span><span id='oils_rpt_report_description'/>
+ <td colspan='3'>
+ <div><b>Folder Contents</b></div>
+ <div id='oils_rpt_report_selector'/>
</td>
</tr>
<tr>
<div id='oils_rpt_template_folder_window_contents_div' class='hide_me oils_rpt_folder_window_div'>
- <table>
+ <table id='oils_rpt_template_folder_window_contents_table'>
<tbody>
<tr>
- <td>Select a template:</td>
- <td><select id='oils_rpt_template_selector'/></td>
+ <td colspan='3'>
+ <div><b>Folder Contents</b></div>
+ <div id='oils_rpt_template_selector'/>
+ </td>
</tr>
<tr>
<td>Select an action:</td>
</div>
</td>
</tr>
- <tr>
- <td colspan='3' align='center'>
- <button id='oils_rpt_template_folder_window_go'>Go!</button>
+ <tr id='oils_rpt_template_folder_go_row'>
+ <td colspan='3' align='left'>
+ <button id='oils_rpt_template_folder_window_go'>Continue...</button>
</td>
</tr>
</tbody>
</table>
+
+ <div style='margin-top: 10px;'>
+ <div id='oils_rpt_template_folder_new_report' class='hide_me'>
+ <table>
+ <tbody>
+ <tr>
+ <td>Give the new report a name:</td>
+ <td><input id='oils_rpt_template_folder_new_report_name' type='text'/></td>
+ </tr>
+ <tr>
+ <td>Give the new report a description:</td>
+ <td><textarea id='oils_rpt_template_folder_new_report_desc' cols='40' rows='2'/></td>
+ </tr>
+ <tr>
+ <td colspan='2' align='left'>
+ <button id='oils_rpt_template_folder_new_report_next'>Continue..</button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
</div>
return oilsRptObjectCache[id];
}
+function oilsRptCacheObject(type, obj, id) {
+ if( !oilsRptObjectCache[type] )
+ oilsRptObjectCache[type] = {};
+ oilsRptObjectCache[type][id] = obj;
+}
+
+function oilsRptGetCache(type, id) {
+ if( !oilsRptObjectCache[type] )
+ return null;
+ return oilsRptObjectCache[type][i];
+}
+
/* -------------------------------------------- */
function oilsRptObject() {}
/* UI tree */
var oilsRptTree;
-/* UI tree of report folders */
-var oilsRptFolderTree;
+var oilsRptTemplateFolderTree;
+var oilsRptReportFolderTree;
+var oilsRptOutputFolderTree;
+var oilsRptSharedTemplateFolderTree;
+var oilsRptSharedReportFolderTree;
+var oilsRptSharedOutputFolderTree;
+
/* URL to retrieve the IDL from */
var OILS_IDL_URL = "/reports/fm_IDL.xml";
var oilsRptCurrentFolderManager;
//var oilsRptFolderWindowCache = {};
+
+var oilsRptObjectCache = {};
appendClear(this.node, this.dest);
}
+/* ----------------------------------------------------------- */
+
+oilsRptSetSubClass('oilsRptMultiInputWidget', 'oilsRptWidget');
+function oilsRptMultiInputWidget(args) {
+ this.init(args);
+}
+
+oilsRptMultiInputWidget.prototype.init = function(args) {
+ if(!args) return;
+ this.super.init(args);
+ this.count = (args.count) ? args.count : 2;
+ this.dest = [];
+ for( var i = 0; i < this.count; i++ )
+ this.dest.push(elem('input',{type:'text'}));
+}
+
+oilsRptMultiInputWidget.prototype.getValue = function() {
+ var vals = [];
+ for( var i = 0; i < this.dest.length; i++ )
+ vals.push(this.dest.value);
+ return vals;
+}
+
+oilsRptMultiInputWidget.prototype.draw = function() {
+ removeChildren(this.node);
+ for( var i = 0; i < this.dest.length; i++ ) {
+ this.node.appendChild(this.label[i]);
+ this.node.appendChild(this.dest[i]);
+ }
+}
+
+oilsRptMultiInputWidget.prototype.setLabels = function(labels) {
+ this.labels = labels;
+}
+
+
+
/* ----------------------------------------------------------- */