From: erickson Date: Fri, 29 Sep 2006 17:01:52 +0000 (+0000) Subject: added some folder actions and framework, more to come X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=a824760724c11f43bf469a2ee5b74813cfb13541;p=Evergreen.git added some folder actions and framework, more to come git-svn-id: svn://svn.open-ils.org/ILS/trunk@6265 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/reports/oils_rpt.css b/Open-ILS/web/reports/oils_rpt.css index 1b3a5130f2..c435d9fd43 100644 --- a/Open-ILS/web/reports/oils_rpt.css +++ b/Open-ILS/web/reports/oils_rpt.css @@ -5,6 +5,9 @@ table { border-collapse: collapse; } .welcome_box { position:absolute; top: 5px; right: 5px; } +/* override some slimtree settings */ +.fm_table thead tr { background: #F0F0F0; } + .oils_rpt_main_link { padding: 5px; font-size: 10pt; @@ -174,7 +177,7 @@ button { .oils_rpt_folder_window { border: 1px solid blue; - background: #E0F0F0; + background: #E6F0F0; text-align: left; } @@ -185,6 +188,7 @@ button { #oils_rpt_folder_window_contents_div { width: 100%; + margin-top: 15px; } .oils_rpt_param_table thead td { @@ -216,6 +220,9 @@ button { #oils_rpt_param_editor_table { width: 100%; +} + +#oils_rpt_param_editor_table td { border: 1px solid #808080; } @@ -251,3 +258,16 @@ button { #oils_rpt_editor_div { width: 100%; } + + + +.oils_rpt_table_row_borders { width: 100%; } +.oils_rpt_table_row_borders tr { border: 1px solid #808080; } +.oils_rpt_table_row_borders td { padding: 5px; } + +.oils_rpt_generic_table { width: 100%; } +.oils_rpt_generic_table td { border: 1px solid #808080; padding: 5px; } + + + + diff --git a/Open-ILS/web/reports/oils_rpt.js b/Open-ILS/web/reports/oils_rpt.js index 8722d3a971..de9d902ec3 100644 --- a/Open-ILS/web/reports/oils_rpt.js +++ b/Open-ILS/web/reports/oils_rpt.js @@ -5,12 +5,21 @@ 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())); oilsRptDebugEnabled = cgi.param('dbg'); + if(oilsRptDebugEnabled) DEBUG = 1; + + DEBUG = 1; + + oilsLoadRptTree( + function() { + hideMe(DOM.oils_rpt_tree_loading); + unHideMe(DOM.oils_rpt_folder_table); + } + ) } function oilsRtpInitFolders() { @@ -22,6 +31,8 @@ function oilsRtpInitFolders() { function oilsCleanupReports() { try {oilsRptDebugWindow.close();} catch(e) {} DOM = null; + oilsRptObjectCache = null; + oilsRptObject.objectCache = null; } diff --git a/Open-ILS/web/reports/oils_rpt.xhtml b/Open-ILS/web/reports/oils_rpt.xhtml index 23852475ad..9db1786c38 100644 --- a/Open-ILS/web/reports/oils_rpt.xhtml +++ b/Open-ILS/web/reports/oils_rpt.xhtml @@ -22,8 +22,11 @@ Build a New Report +
+ Loading... +
- +
@@ -68,6 +70,9 @@
+
+ +
@@ -80,7 +85,10 @@
@@ -44,14 +47,12 @@
- : created by + : + created by
- + + + Action Succeeded + diff --git a/Open-ILS/web/reports/oils_rpt_builder.js b/Open-ILS/web/reports/oils_rpt_builder.js index 791771c762..7682637a65 100644 --- a/Open-ILS/web/reports/oils_rpt_builder.js +++ b/Open-ILS/web/reports/oils_rpt_builder.js @@ -48,23 +48,6 @@ function oilsRptBuildCalendars() { */ -/* creates a label "path" based on the column path */ -function oilsRptMakeLabel(path) { - var parts = path.split(/-/); - var str = ''; - for( var i = 0; i < parts.length; i++ ) { - if(i%2 == 0) { - if( i == 0 ) - str += oilsIDL[parts[i]].label; - } else { - var f = oilsRptFindField(oilsIDL[parts[i-1]], parts[i]); - str += ":"+f.label; - } - } - return str; -} - - /* adds an item to the display window */ function oilsAddRptDisplayItem(path, name, tform, params) { if( ! oilsAddSelectorItem(oilsRptDisplaySelector, path, name) ) diff --git a/Open-ILS/web/reports/oils_rpt_editor.xhtml b/Open-ILS/web/reports/oils_rpt_editor.xhtml index 82a9fa02dd..9d21506751 100644 --- a/Open-ILS/web/reports/oils_rpt_editor.xhtml +++ b/Open-ILS/web/reports/oils_rpt_editor.xhtml @@ -1,5 +1,5 @@
- +
@@ -24,6 +24,11 @@ + + + + diff --git a/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml b/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml new file mode 100644 index 0000000000..d608c7a1a0 --- /dev/null +++ b/Open-ILS/web/reports/oils_rpt_folder_manager.xhtml @@ -0,0 +1,55 @@ +
+ + + +
+ +
+ Enter new name: + + +
+ +
+
Template Name:

Choose a report folder as the destination: +

+ + + + + + + + + + + + + + + +
Folder Name:
Share this folder: + +
Share with:
+ +
+
+ + + + + Are you sure you wish to change this folder's name? + + + Are you sure you wish to create new subfolder + + + diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.js b/Open-ILS/web/reports/oils_rpt_folder_window.js index 3fad8dda86..fb50590beb 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.js +++ b/Open-ILS/web/reports/oils_rpt_folder_window.js @@ -1,5 +1,4 @@ - function oilsRptFetchTemplate(id) { var t = oilsRptGetCache('rt', id); if(!t) { @@ -12,7 +11,6 @@ function oilsRptFetchTemplate(id) { } - /* generic folder window class */ oilsRptSetSubClass('oilsRptFolderWindow', 'oilsRptObject'); function oilsRptFolderWindow(type, folderId) { @@ -30,6 +28,19 @@ oilsRptFolderWindow.prototype.init2 = function(node, type) { oilsRptFolderWindow.prototype.draw = function() { + unHideMe(DOM.oils_rpt_folder_window_contents_div); + hideMe(DOM.oils_rpt_folder_manager_div); + + DOM.oils_rpt_folder_window_manage_tab.onclick = function() { + unHideMe(DOM.oils_rpt_folder_window_contents_div); + hideMe(DOM.oils_rpt_folder_manager_div); + } + DOM.oils_rpt_folder_window_edit_tab.onclick = function() { + hideMe(DOM.oils_rpt_folder_window_contents_div); + unHideMe(DOM.oils_rpt_folder_manager_div); + } + + this.setFolderEditActions(); hideMe(DOM.oils_rpt_template_folder_new_report); unHideMe(DOM.oils_rpt_folder_table_right_td); @@ -49,8 +60,54 @@ oilsRptFolderWindow.prototype.draw = function() { unHideMe(opt); else hideMe(opt); } + + this.drawEditActions(); + +} + +oilsRptFolderWindow.prototype.drawEditActions = function() { + if( this.folderNode.folder.owner().id() != USER.id() ) + hideMe(DOM.oils_rpt_folder_manager_tab_table); + else + unHideMe(DOM.oils_rpt_folder_manager_tab_table); + + if( isTrue(this.folderNode.folder.shared())) { + DOM.oils_rpt_folder_manager_share_opt.disabled = true; + DOM.oils_rpt_folder_manager_unshare_opt.disabled = false; + } else { + DOM.oils_rpt_folder_manager_share_opt.disabled = false; + DOM.oils_rpt_folder_manager_unshare_opt.disabled = true; + } + + this.hideFolderActions(); + var obj = this; + + DOM.oils_rpt_folder_manager_actions_submit.onclick = function() { + var act = getSelectorVal(DOM.oils_rpt_folder_manager_actions); + _debug("doing folder action: " + act); + obj.hideFolderActions(); + switch(act) { + case 'change_name': + unHideMe(DOM.oils_rpt_folder_manager_change_name_div); + break; + case 'create_sub_folder': + unHideMe(DOM.oils_rpt_folder_manager_create_sub); + obj.myOrgSelector = new oilsRptMyOrgsWidget( + DOM.oils_rpt_folder_manager_sub_lib_picker, USER.ws_ou()); + obj.myOrgSelector.draw(); + break; + } + } + +} + + +oilsRptFolderWindow.prototype.hideFolderActions = function() { + hideMe(DOM.oils_rpt_folder_manager_change_name_div); + hideMe(DOM.oils_rpt_folder_manager_create_sub); } + oilsRptFolderWindow.prototype.doFolderAction = function() { var objs = this.fmTable.getSelected(); if( objs.length == 0 ) @@ -61,7 +118,7 @@ oilsRptFolderWindow.prototype.doFolderAction = function() { 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])); + new oilsRptReportEditor(new oilsReport(objs[0]), this); break; } } @@ -98,138 +155,56 @@ oilsRptFolderWindow.prototype.fetchFolderData = function(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(); - this.fetchFolderData('template', DOM.oils_rpt_folder_contents_selector, oilsRptTemplateCache); - var obj = this; - - 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(template); - break; - } - } -} - - -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(); - } +oilsRptFolderWindow.prototype.setSelected = function(folderNode) { + this.selectedFolder = folderNode; } +oilsRptFolderWindow.prototype.setFolderEditActions = function() { + var folder = this.folderNode.folder; - -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(); var obj = this; - this.fetchFolderData('report', - DOM.oils_rpt_report_selector, oilsRptReportCache, - function() { - appendClear(DOM.oils_rpt_report_description, - text(obj.getSelectedReport().description())); + DOM.oils_rpt_folder_manager_name_input.value = folder.name(); + DOM.oils_rpt_folder_manager_change_name_submit.onclick = function() { + var name = DOM.oils_rpt_folder_manager_name_input.value; + if(name) { + folder.name( name ); + if(confirmId('oils_rpt_folder_manager_change_name_confirm')) { + oilsRptUpdateFolder(folder, obj.type, + function(success) { + if(success) oilsRptAlertSuccess(); + } + ); } - ); - - DOM.oils_rpt_report_folder_window_go.onclick = function() { - var rpt = obj.getSelectedReport(); - var tmpl = oilsRptFetchTemplate(rpt.template()); - obj.oilsReport = new oilsReport( tmpl, rpt ); - }; -} - -oilsRptReportFolderWindow.prototype.drawParamEditor = function(params) { - _debug('drawing params: \n' + formatJSON(js2JSON(params))); -} - - -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); - //} -} - -oilsRptReportFolderWindow.prototype.drawWhereParamEditor = function(params) { -} - -oilsRptReportFolderWindow.prototype.drawHavingParamEditor = function(params) { -} - - - -oilsRptReportFolderWindow.prototype.getSelectedReport = function() { - return oilsRptReportCache[getSelectorVal(DOM.oils_rpt_report_selector)]; -} - -oilsRptReportFolderWindow.prototype.getSelectedAction = function() { - return getSelectorVal(DOM.oils_rpt_report_selector, force); -} + } + } + DOM.oils_rpt_folder_manager_sub_lib_create.onclick = function() { + var folder; + if( obj.type == 'report' ) folder = new rrf(); + if( obj.type == 'template' ) folder = new rtf(); + if( obj.type == 'output' ) folder = new rof(); + folder.owner(USER.id()); + folder.parent(obj.folderNode.folder.id()); + folder.name(DOM.oils_rpt_folder_manager_sub_name.value); + var shared = getSelectorVal(DOM.oils_rpt_folder_manager_sub_shared); + folder.shared( (shared == 'yes') ? 't' : 'f'); + if( folder.shared() == 't' ) + folder.share_with( obj.myOrgSelector.getValue() ); + _debug("Creating new folder: " + js2JSON(folder)); -oilsRptOutputFolderWindow.prototype = new oilsRptFolderWindow(); -oilsRptOutputFolderWindow.prototype.constructor = oilsRptOutputFolderWindow; -oilsRptOutputFolderWindow.baseClass = oilsRptFolderWindow.prototype.constructor; -function oilsRptOutputFolderWindow(node) { this.init2(node, 'output'); } + if(confirm(DOM.oils_rpt_folder_manager_new_confirm.innerHTML + ' "'+folder.name()+'"')) { + oilsRptCreateFolder(folder, obj.type, + function(success) { + if(success) oilsRptAlertSuccess(); + } + ); + } + } -oilsRptOutputFolderWindow.prototype.draw = function() { - this.hideWindows(); - this.openWindow(null); } -*/ diff --git a/Open-ILS/web/reports/oils_rpt_folder_window.xhtml b/Open-ILS/web/reports/oils_rpt_folder_window.xhtml index 02cd68168d..a1899b4304 100644 --- a/Open-ILS/web/reports/oils_rpt_folder_window.xhtml +++ b/Open-ILS/web/reports/oils_rpt_folder_window.xhtml @@ -24,34 +24,5 @@ - - - diff --git a/Open-ILS/web/reports/oils_rpt_folders.js b/Open-ILS/web/reports/oils_rpt_folders.js index 7adeca2fdc..6366f20214 100644 --- a/Open-ILS/web/reports/oils_rpt_folders.js +++ b/Open-ILS/web/reports/oils_rpt_folders.js @@ -14,10 +14,11 @@ function oilsRptFolderManager() { this.stId = oilsNextId(); this.srId = oilsNextId(); this.soId = oilsNextId(); - this.orgTrail = {}; - this.orgTrail.template = {}; - this.orgTrail.report = {}; - this.orgTrail.output = {}; + + this.ownerFolders = {}; + this.ownerFolders.template = {}; + this.ownerFolders.report = {}; + this.ownerFolders.output = {}; } oilsRptFolderManager.prototype.draw = function(auth) { @@ -95,11 +96,11 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { folders = folders.sort( function(a,b) { - var asw = a.share_with().id(); - var bsw = b.share_with().id(); - if( asw ) asw = findOrgDepth(findOrgUnit(asw)); + var asw = a.share_with(); + var bsw = b.share_with(); + if( asw ) asw = findOrgDepth(findOrgUnit(asw.id())); else asw = -1; - if( bsw ) bsw = findOrgDepth(findOrgUnit(bsw)); + if( bsw ) bsw = findOrgDepth(findOrgUnit(bsw.id())); else bsw = -1; if( asw < bsw ) return 1; if( asw > bsw ) return -1; @@ -114,6 +115,7 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { var node = { folder : folder, treeId : id }; oilsRptFolderNodeCache[type][folder.id()] = node; node.folderWindow = new oilsRptFolderWindow(type, folder.id()) + _debug("creating folder node for "+folder.name()+" : id = "+folder.id()+' treeId = '+id); } @@ -159,10 +161,12 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { } } + id = this.findNode(type, folder.id()).treeId; 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()); @@ -175,11 +179,33 @@ oilsRptFolderManager.prototype.drawFolders = function(type, folders) { id = oilsNextId(); } } + */ + + var fname = folder.name(); + + if(!mine) { + fname = folder.name() + ' ('+folder.share_with().shortname()+')'; + if(!this.ownerFolders[type][folder.owner().id()]) { + tree.addNode(id, pid, folder.owner().usrname()); + tree.close(pid); + pid = id; + id = oilsNextId(); + this.ownerFolders[type][folder.owner().id()] = pid; + } else { + pid = this.ownerFolders[type][folder.owner().id()]; + id = oilsNextId(); + } + } else { + if(isTrue(folder.shared())) + fname = folder.name() + ' ('+folder.share_with().shortname()+')'; + } 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); + + _debug('adding node '+fname+' id = ' + id + ' pid = '+pid + ' parent = ' + folder.parent() ); + + tree.addNode(id, pid, fname, action); tree.close(pid); } } @@ -194,4 +220,40 @@ oilsRptFolderManager.prototype.findNode = function(type, id) { +/* this only works if the initial folder tree has been drawn + if defined, "action" must be a function pointer that takes the + folder node as the param */ +var __someid; +function oilsRptBuildFolder(type, node, treeVar, rootName, action) { + removeChildren(node); + var tree = new SlimTree(node, treeVar); + this.treeId = oilsNextId(); + tree.addNode(this.treeId, -1, rootName); + + __someid = oilsNextId(); + + var cache = oilsRptFolderNodeCache[type]; + + for( var c in cache ) { + var tid = cache[c].treeId + __someid; + var pid = this.treeId; + var f = cache[c].folder; + + if(f.parent()) { + /* find the parent's tree id so we can latch on to it */ + var pnode = cache[f.parent()]; + var pid = pnode.treeId + __someid; + } + + tree.addNode(tid, pid, f.name(), __setFolderCB(tree, tid, action, cache[c])); + } + eval(treeVar +' = tree;'); +} + +function __setFolderCB(tree, id, action, node) { + var act; + if( action ) + act = function() { tree.toggle(id); action( node ); }; + return act; +} diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.js b/Open-ILS/web/reports/oils_rpt_param_editor.js index 833dc47dc3..5bdc4f0fc0 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.js +++ b/Open-ILS/web/reports/oils_rpt_param_editor.js @@ -18,6 +18,7 @@ oilsRptParamEditor.prototype.draw = function() { for( var p = 0; p < params.length; p++ ) { var par = params[p]; var row = oilsRptParamEditor.row.cloneNode(true); + $n(row, 'object').appendChild(text(oilsRptMakeLabel(par.relation))); $n(row, 'column').appendChild(text(par.column.colname)); $n(row, 'action').appendChild(text(par.op)); this.buildWidget(par, $n(row, 'widget')).draw(); diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml index 4449d4fe7b..901227970a 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.xhtml +++ b/Open-ILS/web/reports/oils_rpt_param_editor.xhtml @@ -5,10 +5,11 @@ - + +
ColumnActionUser Params
ObjectColumnActionUser Params
diff --git a/Open-ILS/web/reports/oils_rpt_report_editor.js b/Open-ILS/web/reports/oils_rpt_report_editor.js index e9f5530a73..59615a5680 100644 --- a/Open-ILS/web/reports/oils_rpt_report_editor.js +++ b/Open-ILS/web/reports/oils_rpt_report_editor.js @@ -1,7 +1,9 @@ oilsRptSetSubClass('oilsRptReportEditor', 'oilsRptObject'); +var oilsRptReportEditorFolderTree; function oilsRptReportEditor(rptObject) { var tmpl = rptObject.templateObject; var rpt = rptObject.reportObject; + this.folderWindow = folderWindow; appendClear(DOM.oils_rpt_report_editor_template_name, tmpl.name()); appendClear(DOM.oils_rpt_report_editor_template_creator, tmpl.owner().usrname()); @@ -14,4 +16,15 @@ function oilsRptReportEditor(rptObject) { this.paramEditor = new oilsRptParamEditor( rptObject, DOM.oils_rpt_param_editor_tbody); this.paramEditor.draw(); + + var obj = this; + oilsRptBuildFolder( + 'report', + DOM.oils_rpt_report_editor_dest_folder, + 'oilsRptReportEditorFolderTree', + 'Report Folders', + function(node) { obj.selectedFolder = node; }); } + + + diff --git a/Open-ILS/web/reports/oils_rpt_tree.js b/Open-ILS/web/reports/oils_rpt_tree.js index c67e8144d5..fe8895cdf3 100644 --- a/Open-ILS/web/reports/oils_rpt_tree.js +++ b/Open-ILS/web/reports/oils_rpt_tree.js @@ -2,7 +2,7 @@ var oilsIDLCache = {}; /* fetchs and draws the report tree */ function oilsDrawRptTree(callback) { - oilsLoadRptTree(callback); + oilsLoadRptTree(function(){oilsRenderRptTree(callback)}); } /* fetches the IDL XML */ @@ -52,7 +52,8 @@ function oilsParseRptTree(IDL, callback) { oilsIDL[id] = obj; } - oilsRenderRptTree(callback); + if( callback ) callback(); + //oilsRenderRptTree(callback); } /* parses the links and fields portion of the IDL */ diff --git a/Open-ILS/web/reports/oils_rpt_utils.js b/Open-ILS/web/reports/oils_rpt_utils.js index a58d24b029..d3c8013f4d 100644 --- a/Open-ILS/web/reports/oils_rpt_utils.js +++ b/Open-ILS/web/reports/oils_rpt_utils.js @@ -14,6 +14,7 @@ function oilsRptNextParam() { } +/* function oilsRptCacheObject(obj) { var id = oilsNextId(); oilsRptObjectCache[id] = obj; @@ -23,6 +24,7 @@ function oilsRptCacheObject(obj) { function oilsRptFindObject(id) { return oilsRptObjectCache[id]; } +*/ function oilsRptCacheObject(type, obj, id) { if( !oilsRptObjectCache[type] ) @@ -74,6 +76,23 @@ function oilsRptPathRel(path) { return parts.join('-'); } +/* creates a label "path" based on the column path */ +function oilsRptMakeLabel(path) { + var parts = path.split(/-/); + var str = ''; + for( var i = 0; i < parts.length; i++ ) { + if(i%2 == 0) { + if( i == 0 ) + str += oilsIDL[parts[i]].label; + } else { + var f = oilsRptFindField(oilsIDL[parts[i-1]], parts[i]); + str += ":"+f.label; + } + } + return str; +} + + function oilsRptResetParams() { @@ -205,3 +224,44 @@ function oilsRptSetSubClass(cls, parent) { eval(str); } + +function oilsRptUpdateFolder(folder, type, callback) { + + _debug("updating folder " + folder.id() + ' : ' + folder.name()); + + var req = new Request(OILS_RPT_UPDATE_FOLDER, SESSION, type, folder); + if( callback ) { + req.callback( + function(r) { + if( r.getResultObject() == 1 ) + callback(true); + else callback(false); + } + ); + req.send(); + } else { + req.send(true); + return req.result(); + } +} + +function oilsRptCreateFolder(folder, type, callback) { + _debug("creating folder "+ folder.name()); + var req = new Request(OILS_RPT_CREATE_FOLDER, SESSION, type, folder); + if( callback ) { + req.callback( + function(r) { + if( r.getResultObject() > 0 ) + callback(true); + else callback(false); + } + ); + req.send(); + } else { + req.send(true); + return req.result(); + } +} + +function oilsRptAlertSuccess() { alertId('oils_rpt_generic_success'); } + diff --git a/Open-ILS/web/reports/oils_rpt_vars.js b/Open-ILS/web/reports/oils_rpt_vars.js index 48ead71ffa..5abc46ff46 100644 --- a/Open-ILS/web/reports/oils_rpt_vars.js +++ b/Open-ILS/web/reports/oils_rpt_vars.js @@ -53,6 +53,9 @@ 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 OILS_RPT_UPDATE_FOLDER = 'open-ils.reporter:open-ils.reporter.folder.update'; +var OILS_RPT_CREATE_FOLDER = 'open-ils.reporter:open-ils.reporter.folder.create'; +var OILS_RPT_FETCH_ORG_FULL_PATH = 'open-ils.reporter:open-ils.reporter.org_unit.full_path'; var oilsRptCurrentFolderManager; diff --git a/Open-ILS/web/reports/oils_rpt_widget.js b/Open-ILS/web/reports/oils_rpt_widget.js index 4d53e892e1..0e910cd538 100644 --- a/Open-ILS/web/reports/oils_rpt_widget.js +++ b/Open-ILS/web/reports/oils_rpt_widget.js @@ -174,6 +174,40 @@ oilsRptRemoteWidget.prototype.setFetch = function(func) { } +/* --------------------------------------------------------------------- */ + +/* standalone org widget */ +function oilsRptMyOrgsWidget(node, orgid) { + this.node = node; + this.orgid = orgid; +} + +oilsRptMyOrgsWidget.prototype.draw = function() { + var req = new Request(OILS_RPT_FETCH_ORG_FULL_PATH, this.orgid); + var obj = this; + req.callback( + function(r) { obj.drawWidget(r.getResultObject()); } + ); + req.send(); +} + +oilsRptMyOrgsWidget.prototype.drawWidget = function(orglist) { + var sel = this.node; + _debug('here'); + for( var i = 0; i < orglist.length; i++ ) { + var org = orglist[i]; + _debug('here + ' + org.shortname()); + var opt = insertSelectorVal( this.node, -1, + org.name(), org.id(), null, findOrgDepth(org) ); + if( org.id() == this.orgid ) + opt.selected = true; + } +} + +oilsRptMyOrgsWidget.prototype.getValue = function() { + return getSelectorVal(this.node); +} +