2 ================================================================================
4 ================================================================================
5 Copyright (C) 2017 AT&T Intellectual Property
6 ================================================================================
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18 ================================================================================
20 <%@page import="org.openecomp.portalsdk.analytics.system.AppUtils" %>
21 <%@page import="org.openecomp.portalsdk.analytics.model.runtime.ReportRuntime"%>
22 <%@page import="org.openecomp.portalsdk.analytics.util.AppConstants"%>
23 <%@page import="org.openecomp.portalsdk.analytics.system.Globals"%>
26 boolean isFolderAllowed = false;
27 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
28 boolean adminUser = AppUtils.isAdminUser(request);
29 if (Globals.isFolderTreeAllowed()) {
31 isFolderAllowed = true;
32 } else if (!Globals.isFolderTreeAllowedOnlyForAdminUsers()) {
33 isFolderAllowed = true;
34 } else isFolderAllowed = false;
42 <script src='dwr/engine.js'></script>
43 <script src='dwr/util.js'></script>
44 <script src='dwr/interface/folderNavAjax.js'></script>
48 var imgFolder = '<%=AppUtils.getImgFolderURL()%>';
49 var isFolderAllowed = '<%= isFolderAllowed%>';
51 <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/ajax.js"></script>
52 <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/context-menu.js"></script>
53 <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/tree/drag-drop-folder-tree.js">
54 <script type="text/javascript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js">
56 <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/raptor.css">
57 <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/tree/drag-drop-folder-tree.css">
58 <link rel="stylesheet" type="text/css" href="<%= AppUtils.getBaseFolderURL() %>css/tree/context-menu.css">
59 <style type="text/css">
60 /* CSS for the demo */
66 var doCollapse = '<%=request.getParameter("doCollapseTree")%>';
68 var ajaxObjects = new Array();
70 // Use something like this if you want to save data by Ajax.
73 saveString = treeObj.getNodeOrders();
75 var ajaxIndex = ajaxObjects.length;
76 ajaxObjects[ajaxIndex] = new sack();
79 ajaxObjects[ajaxIndex].requestFile = url; // Specifying which file to get
80 ajaxObjects[ajaxIndex].onCompletion = function() { saveComplete(ajaxIndex); } ; // Specify function that will be executed after file has been found
81 ajaxObjects[ajaxIndex].runAJAX(url); // Execute AJAX function
84 function saveComplete(index)
86 alert(ajaxObjects[index].response);
90 // Call this function if you want to save it by a form.
91 function saveMyTree_byForm()
94 var data=folderNavAjax.saveFolderStructure(treeObj.getNodeOrders(), "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
98 function cancelMyTree_byForm(){
99 //document.treeFrm.submit();
101 var data=folderNavAjax.getFolderListString("<%=AppUtils.getUserID(request)%>", fillFolderStructure);
104 function deleteMyTree_byForm()
106 //document.treeForm.submit();
108 var data=folderNavAjax.deleteFolderStructure(document.treeFrm.deleteIds.value, "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
111 function addMyTree_byForm()
113 //document.treeFrm.submit();
115 selectedFolderId = document.treeFrm.saveString.value;
116 var data=folderNavAjax.createNewFolder(document.treeFrm.saveString.value, document.treeFrm.newName.value, "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
120 function renameMyTree_byForm()
122 //document.treeFrm.submit();
124 var data=folderNavAjax.renameFolder(document.treeFrm.renameId.value, document.treeFrm.newName.value, "<%=AppUtils.getUserID(request)%>", fillFolderStructure);
128 function createFolder(){
129 if(JSTreeObj.selectedItem == null || JSTreeObj.selectedItem.parentNode.id.substr(0,3) == '000')
131 if (JSTreeObj.isAddAllowed(JSTreeObj.selectedItem.parentNode.id) == false){
132 alert("You do not have rights on this folder");
135 selectedFolderId = JSTreeObj.selectedItem.parentNode.id;
137 if (JSTreeObj.addItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem) == false){
142 function deleteFolder(){
143 if(JSTreeObj.selectedItem == null) {
146 var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
147 if (JSTreeObj.isDeleteAllowed(id) == false){
148 alert("You do not have rights on this folder");
151 if(id.substr(0,3) == '000') {
155 if (JSTreeObj.deleteItem(JSTreeObj.selectedItem, JSTreeObj.selectedItem) == false){
163 if (JSTreeObj == null || JSTreeObj.selectedItem == null){
167 var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
168 if(id.substr(0,3) != '000') {
171 //displayFolderInfo();
172 id = id.substr(3, id.length);
173 addBreadCrumb(true, id);
174 if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
175 window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
177 else if (document.getElementById('searchContentContainer')){
178 document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.run&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
179 //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
181 document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
185 document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.run&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
186 document.treeFrm.submit();
190 function editReport()
192 if (JSTreeObj == null || JSTreeObj.selectedItem == null){
196 var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
197 if(id.substr(0,3) != '000') {
200 id = id.substr(3, id.length);
201 if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
202 window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
204 else if (document.getElementById('searchContentContainer')){
205 document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
206 //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
208 document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
211 document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.edit&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
212 document.treeFrm.submit();
215 function deleteReport()
217 if (JSTreeObj == null || JSTreeObj.selectedItem == null){
221 var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
222 if(id.substr(0,3) != '000') {
225 id = id.substr(3, id.length);
226 if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
227 window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
229 else if (document.getElementById('searchContentContainer')){
230 document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
231 //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
233 document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
237 document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.delete&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
238 document.treeFrm.submit();
242 function createReport()
244 if (JSTreeObj == null || JSTreeObj.selectedItem == null){
247 var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
248 addBreadCrumb(false, id);
249 if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
250 window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.create&folder_id=' + id + '&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
252 else if (document.getElementById('searchContentContainer')){
253 document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.create&folder_id=" + id + "&c_master=' + id + '&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
254 //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
256 document.getElementById('content_Iframe').location = '<%= AppUtils.getRaptorActionURL() %>report.create.container&folder_id=' + id + '&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
261 document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.create.container&folder_id=' + id + '&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
262 document.treeFrm.submit();
265 function getFolderReports(id)
267 addBreadCrumb(false, id);
268 if (window.frames && window.frames[0] && window.frames[0].name == 'content_Iframe'){
269 window.frames[0].location='<%= AppUtils.getRaptorActionURL() %>report.folderlist_iframe&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
271 else if (document.getElementById('searchContentContainer')){
272 document.getElementById('searchContentContainer').innerHTML = "<div id='breadCrumbArea'> </div><iframe name='content_Iframe' frameborder='0' id='content_Iframe' src='<%= AppUtils.getRaptorActionURL() %>report.folderlist_iframe&c_master=" + id + "&PAGE_ID=HOME&refresh=Y' width='100%' height='450' ></iframe>";
273 //document.getElementById('content_Iframe').height=document.body.offsetHeight - 210;
275 document.getElementById('content_Iframe').location = "<%= AppUtils.getRaptorActionURL() %>report.folderlist_iframe&c_master=" + id + "&PAGE_ID=HOME&refresh=Y";
279 document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.folderlist&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
280 document.treeFrm.submit();
284 function getAllFolderReports()
286 var id = JSTreeObj.selectedItem.parentNode.id.replace(/[^0-9]/gi,'');
287 document.treeFrm.action='<%= AppUtils.getRaptorActionURL() %>report.folderlist&c_master=' + id + '&PAGE_ID=HOME&refresh=Y';
288 document.treeFrm.submit();
292 function displayFolderInfo()
294 var infoDiv = document.getElementById('loadingMessageDiv');
297 infoDiv.style.left = document.body.offsetWidth - 100 ;
298 infoDiv.style.top = document.getElementById('scrollableTable').style.top;
299 infoDiv.style.display='block';
301 function hideFolderInfo()
303 var infoDiv = document.getElementById('loadingMessageDiv');
306 infoDiv.style.display='none';
309 function displayTree(id){
310 if (isFolderAllowed ){
312 selectedFolderId = id;
313 if (document.getElementById('reportFolderTree') == null){
315 var data=folderNavAjax.getFolderListString("<%=AppUtils.getUserID(request)%>", fillFolderStructure);
317 document.getElementById('expandedTree').style.display='block';
318 document.getElementById('collapsedTree').style.display='none';
319 if (document.getElementById('folderTreeContainer'))
320 document.getElementById('folderTreeContainer').width="25%";
322 //document.getElementById('scrollableTable').style.height=window.screen.height - 320;
323 //document.getElementById('scrollableTable').style.height=document.body.offsetHeight - 260;
325 folderNavAjax.displayTree();
331 document.getElementById('expandedTree').style.display='none';
332 document.getElementById('collapsedTree').style.display='block';
333 //GET BREAD CRUMBS and assign
334 if (document.getElementById('folderTreeContainer'))
335 document.getElementById('folderTreeContainer').width="2px";
336 folderNavAjax.hideTree();
338 function refreshTree(id){
340 if (isFolderAllowed ){
342 selectedFolderId = id;
344 var data=folderNavAjax.getFolderListString("<%=AppUtils.getUserID(request)%>", fillFolderStructure);
346 document.getElementById('expandedTree').style.display='block';
347 document.getElementById('collapsedTree').style.display='none';
348 if (document.getElementById('folderTreeContainer'))
349 document.getElementById('folderTreeContainer').width="25%";
351 //document.getElementById('scrollableTable').style.height=document.body.offsetHeight - 210;
353 folderNavAjax.displayTree(selectedFolderId);
356 function addBreadCrumb(isReport, id){
358 // var data=folderNavAjax.getBreadCrumb(isReport, id, addBreadCrumbCallback);
361 function addBreadCrumbCallback(data){
362 var collapsedTree = document.getElementById('breadCrumbArea');
363 if (collapsedTree == null)
365 collapsedTree.innerHTML = "<font class=rtabletext style='background-color:white'>" + data + "</font>";
367 function collapseAllTree(){
368 treeObj.collapseAll();
372 <form name='treeFrm' method='post'>
374 <input type='hidden' id='newName' name='newName'/>
375 <input type='hidden' id='saveString' name='saveString'/>
376 <input type='hidden' id='deleteIds' name='deleteIds'/>
377 <input type='hidden' id='renameId' name='renameId'/>
380 <tr id="def" height="0">
381 <td colspan="10"></td>
384 <tr width="100%" ><td valign='top' width='300'>
385 <% if(isFolderAllowed) { %>
386 <div id="expandedTree" style="position:absoulte;top:0;width:100%;height:25px;display:none;">
387 <table width="100%" border="0" cellspacing="1" align="left">
389 <td colspan=2 align="right"><img border="0" src="<%= AppUtils.getImgFolderURL() %>tree/grnarrowleft.gif" onClick="javascript:hideTree()" alt='Hide Folder Tree' style='cursor:hand'>
396 <div id="scrollableTable" class="scrollableTable" style="position:absoulte;top:0;width:100%;height:430px;display:block;overflow:scroll">
397 <table id="folderTree" width="100%" border="0" cellspacing="1" align="center">
404 <div id='loadingMessageDiv' style="position:absolute;top:150;left:650;width:40px;height:25px;display:none">
405 <table><tr bgcolor='red'><td class=rcolheader> Loading...</td></tr></table>
411 <td class=rtabletext width='100%'>
412 <a href="#" onclick='javascript:createFolder();'>New Folder</a> |
413 <a href="#" onclick='javascript:deleteFolder();'>Delete Folder</a> |
414 <a href="#" onclick='javascript:runReport();'>Run</a> |
415 <a href="#" onclick="treeObj.collapseAll()">Collapse</a> |
416 <a href="#" onclick="treeObj.expandAll()">Expand</a> |
417 <a href="#" onclick="javascript:refreshTree()">Refresh Tree</a>
428 <% if(isFolderAllowed) { %>
429 <div id="collapsedTree" style="position:absolute;top=122;display:block;width:550">
430 <img border="0" src="<%= AppUtils.getImgFolderURL() %>tree/grnarrowright.gif" onClick="javascript:displayTree()" alt='Show Folder Tree' style='cursor:hand'>
439 <script type="text/javascript">
441 <% if(isFolderAllowed) { %>
442 document.body.scroll="no";
445 //window.onscroll = floatMenu;
446 window.onresize = resizeWindow;
450 var elem = document.getElementById("def");
451 var sy = document.body.scrollTop;
452 //elem.style.left = startX;
453 if (sy == null || sy == 0)
459 function fillFolderStructure(data){
460 document.getElementById("folderTree").childNodes[0].childNodes[0].childNodes[0].innerHTML=data;
466 function initializeTree(){
467 treeObj = new JSDragDropTree();
468 treeObj.setTreeId('reportFolderTree');
469 treeObj.setMaximumDepth(7);
470 treeObj.setMessageMaximumDepthReached('Maximum depth reached'); // If you want to show a message when maximum depth is reached, i.e. on drop.
471 treeObj.initTree(selectedFolderId);
473 treeObj.collapseAll();
474 if (selectedFolderId && selectedFolderId != '0')
475 treeObj.showSelectedNode(selectedFolderId);
479 if (doCollapse == 'N')