From: erickson Date: Thu, 28 Sep 2006 21:37:42 +0000 (+0000) Subject: made the folder window more generic, showing contents via fm_table objects X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=b3157d645383a45d8cb85e1d299065931c4f3927;p=Evergreen.git made the folder window more generic, showing contents via fm_table objects git-svn-id: svn://svn.open-ils.org/ILS/trunk@6255 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/opac/common/js/fm_table.js b/Open-ILS/web/opac/common/js/fm_table.js index 794ab4fe99..dfb7e67a74 100644 --- a/Open-ILS/web/opac/common/js/fm_table.js +++ b/Open-ILS/web/opac/common/js/fm_table.js @@ -13,22 +13,24 @@ function drawFMObjectTable( args ) { 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); @@ -41,6 +43,16 @@ function FMObjectBuilder( obj, display, styleToggle ) { } +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; @@ -52,6 +64,8 @@ FMObjectBuilder.prototype.build = function() { 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])); @@ -83,6 +97,15 @@ FMObjectBuilder.prototype.setKeys = function(o) { /* 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]](); @@ -161,7 +184,7 @@ FMObjectBuilder.prototype.hideSubTables = function() { 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'); @@ -177,8 +200,10 @@ FMObjectBuilder.prototype.buildSubTable = function(td, obj, key) { 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'); @@ -186,7 +211,8 @@ FMObjectBuilder.prototype.buildSubTable = function(td, obj, key) { 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); diff --git a/Open-ILS/web/reports/oils_rpt.css b/Open-ILS/web/reports/oils_rpt.css index faa54e263d..78ac7318f3 100644 --- a/Open-ILS/web/reports/oils_rpt.css +++ b/Open-ILS/web/reports/oils_rpt.css @@ -162,6 +162,7 @@ button { #oils_rpt_folder_table_left_td { vertical-align: top; + width: 25%; } #oils_rpt_folder_table_right_td { @@ -169,7 +170,6 @@ button { text-align: center; vertical-align: top; padding: 10px; - width: 75%; } .oils_rpt_folder_window { @@ -183,7 +183,7 @@ button { } -oils_rpt_folder_window_div { +#oils_rpt_folder_window_contents_div { width: 100%; } @@ -195,3 +195,55 @@ oils_rpt_folder_window_div { 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; +} diff --git a/Open-ILS/web/reports/oils_rpt.js b/Open-ILS/web/reports/oils_rpt.js index 44e8f9c0ca..9c6feb7d5d 100644 --- a/Open-ILS/web/reports/oils_rpt.js +++ b/Open-ILS/web/reports/oils_rpt.js @@ -5,6 +5,8 @@ function oilsInitReports() { 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())); @@ -49,6 +51,7 @@ function oilsReport(templateObj, reportObj) { if( reportObj ) this.params = JSON2js(reportObj.data()); + if(!this.params) this.params = {}; } oilsReport.prototype.toString = function() { @@ -60,8 +63,7 @@ oilsReport.prototype.toHTMLString = 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 = []; @@ -80,6 +82,8 @@ oilsReport.prototype._gatherParams = function(params, arr, type, field) { var key; var op; + /* add select transform support */ + if( typeof node == 'string' ) { key = node.match(/::.*/); } else { @@ -97,7 +101,8 @@ oilsReport.prototype._gatherParams = function(params, arr, type, field) { value : this.params[key], column : obj.column, type : type, - relation : obj.relation + relation : obj.relation, + field : field }); } } diff --git a/Open-ILS/web/reports/oils_rpt.xhtml b/Open-ILS/web/reports/oils_rpt.xhtml index 4f31a22f82..e144cf097a 100644 --- a/Open-ILS/web/reports/oils_rpt.xhtml +++ b/Open-ILS/web/reports/oils_rpt.xhtml @@ -27,23 +27,52 @@ -
+
+
My Folders
+
+
+
+
+
+
Shared Folders
+
+
+
+ @@ -51,6 +80,8 @@ + + diff --git a/Open-ILS/web/reports/oils_rpt_common.xhtml b/Open-ILS/web/reports/oils_rpt_common.xhtml index c93b671e3c..6280d36c60 100644 --- a/Open-ILS/web/reports/oils_rpt_common.xhtml +++ b/Open-ILS/web/reports/oils_rpt_common.xhtml @@ -12,6 +12,9 @@ + + + + + diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.js b/Open-ILS/web/reports/oils_rpt_folder_window.js index 1c2abe93a8..ae6f08672b 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.js +++ b/Open-ILS/web/reports/oils_rpt_folder_window.js @@ -1,64 +1,85 @@ -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(); } ); @@ -66,28 +87,46 @@ oilsRptFolderWindow.prototype.fetchFolderData = function(type, selector, cache, } +/* 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(); + } } @@ -98,7 +137,7 @@ 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.openWindow(); var obj = this; this.fetchFolderData('report', DOM.oils_rpt_report_selector, oilsRptReportCache, @@ -112,50 +151,42 @@ oilsRptReportFolderWindow.prototype.draw = function() { 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) { @@ -187,6 +218,7 @@ 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 ffeee02aff..376eb99c30 100644 --- a/Open-ILS/web/reports/oils_rpt_folders.js +++ b/Open-ILS/web/reports/oils_rpt_folders.js @@ -1,28 +1,43 @@ 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); } @@ -44,19 +59,106 @@ oilsRptFolderManager.prototype.fetchFolders = function(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; @@ -89,8 +191,11 @@ oilsRptFolderManager.prototype.makeTree = function(type, folders, node, parentId 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_report_folder_window.xhtml b/Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml index 251958f138..f4843b5c09 100644 --- a/Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml +++ b/Open-ILS/web/reports/oils_rpt_report_folder_window.xhtml @@ -2,10 +2,9 @@ - - - diff --git a/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml b/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml index 9d9533d721..cbf502be39 100644 --- a/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml +++ b/Open-ILS/web/reports/oils_rpt_template_folder_window.xhtml @@ -1,9 +1,11 @@
-
Select a report: - Report Description: + +
Folder Contents
+
+
- - + @@ -19,12 +21,35 @@ - - +
Select a template: +
Folder Contents
+
+
Select an action:
- +
+
+ +
+
+ + + + + + + + +
Give the new report a name:
Give the new report a description: