OXIESEC PANEL
- Current Dir:
/
/
home
/
cubot
/
docroot
/
showcase
/
js
/
jpolite
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
12/31/2022 06:53:36 AM
rwxr-xr-x
📄
exportGraphAsImage.js
9.11 KB
08/14/2022 11:05:24 AM
rw-r--r--
📄
graph.drill.js
194 bytes
08/14/2022 11:05:23 AM
rw-r--r--
📄
jpolite.core.js
15.75 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
jpolite.ext.js
115.09 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
jpolite.ext.js_09jan18
105.94 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
jpolite.ext.js_14Dec2019
110.24 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
jpolite.ext.js_27.22.17
105.91 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
jpoliteAll.js
188.35 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
jqModal-1.4.0.js
10.86 KB
08/14/2022 11:05:22 AM
rw-r--r--
📄
jqModal.js
3.37 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
json.js
23.93 KB
08/14/2022 11:05:23 AM
rw-r--r--
📄
s.log
6.61 KB
08/14/2022 11:05:23 AM
rw-r--r--
Editing: jpolite.ext.js
Close
var logged_in = false; var auth_token_key = "?authenticity_token="; var numTabs=6; var userList="", groupList="", isCurrentPageRefreshRequired = false; /* * Here you can add your own Advanced Control definitions * like Tabs, Accordion, ... as jQuery plugin to apply on * target HTML sections */ $.fn.extend({ // Apply on pre-formated <DIV><UL.tabsul><DIVs></DIV> section Tabs: function() { return this.each(function() { var x = $(this); var targets = x.children("div").addClass("tabsdiv").hide(); x.children(".tabsul").children("li").each(function(i) { this.target = targets[i]; $(this).click(function() { if (!$(this).cub_on()) return; $(this.target).siblings("div:visible").andSelf().toggle(); //Ajax Lazy Loading Support var a = $("a", this); if ((a.length > 0) && !this.loaded) { $(this.target).load(_modules[a[0].rel].url, $.widgetize); this.loaded = true; } }); }).eq(0).click(); }); }, // Apply on pre-formated <DL.accordion> section Accordion: function() { return this.each(function() { $(this).children("dt").click(function(){ var x = $(this); if (!x.cub_on()) return; x.siblings("dd:visible").add(x.next()).slideToggle(); }).eq(0).click(); }); }, // Used on pre-formated <DL.maccordion> section MAccordion: function() { return this.each(function() { var x = $(this); x.addClass("accordion").children("dd").slideDown(); x.children("dt").addClass("on").click(function(){ $(this).toggleClass("on").next().slideToggle(); }); }); }, // Used on FORM.jsonform, shall call the CallBack function with returned data JsonForm: function() { this.append($("<div class='error'/><div class='notice'/>").hide()); return this.submit(function(){ var f = this; $.post(this.action, $(this).serialize() + auth_token_key, function(data){ if ($.HandleMessage(data)) $(".jqmWindow:visible").jqmHide(); },"json"); return false; }); }, //Apply on UL.menu, when clicked, replace the visible module in a column with another SideMenu: function() { return this.each(function(){ $(this).children().click(function(){ var m = $("a", this)[0].rel.split(":"); var x = $(".module:visible", $.jpolite.Content['c2']).get(); if(x[0]){ multiDash.setReportId(x[0].id, m[0]); _modules[x[0].id].url=m[0]; $('#'+x[0].id)[0].url=m[0]; _modules[x[0].id].f=m[1]; $('#'+x[0].id)[0].f=m[1]; $('#'+x[0].id)[0].loadContent(true); } else{ addReport(m[0], m[1]); } }) }) } }); function openGraphTypeWindow(moduleId){ var htmlStr=""; if(Graph == "CUBOT"){ htmlStr=' <div class=gtypeGroupClass moduleId='+moduleId+'> <table border=0 cellpadding=0 cellspacing=0 class=gtypeTable> <tr> <td><span class=gtypeClass><b class="actionReportPie" title="Pie"></b></span> </td> <td><span class=gtypeClass><b class="actionReportLine" title="Line"></b></span> </td> <td><span class=gtypeClass><b class="actionReportColumn" title="Column chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportStack" title="Stacked Bar"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportCombo" title="Combo"></b></span> </td> <td><span class=gtypeClass><b class="actionReportMap" title="Map"></b></span> </td> <td><span class=gtypeClass><b class="actionReportText" title="Text Report"></b></span> </td> <td><span class=gtypeClass><b class="actionReportSVG" title="Custom SVG Chart"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportStatusBar" title="Status Bar"></b></span> </td> <td><span class=gtypeClass><b class="actionReportTraffic" title="Traffic Light"></b></span> </td> </tr> </table> </div>'; } else { htmlStr='<div class=gtypeGroupClass moduleId='+moduleId+'><table border=0 cellpadding=0 cellspacing=0 class=gtypeTable> <tr> <td><span class=gtypeClass><b class="actionReportPie" title="Pie"></b></span> </td> <td><span class=gtypeClass><b class="actionReportDonut" title="Donut Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportSunburst" title="Sunburst Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportRadar" title="Radar Chart"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportLine" title="Line"></b></span> </td> <td><span class=gtypeClass><b class="actionReportStock" title="Stock Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportStackedArea" title="Stacked Area Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportCombo" title="Combo"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportBar" title="Bar"></b></span> </td> <td><span class=gtypeClass><b class="actionReportColumn" title="Column chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportStack" title="Stacked Bar"></b></span> </td> <td><span class=gtypeClass><b class="actionWaterfall" title="Waterfall Chart"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportGauge" title="Gauge"></b></span> </td> <td><span class=gtypeClass><b class="actionReportBullet" title="Bullet Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportTree" title="Tree Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionFunnelChart" title="Funnel Chart"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportZoomTree" title="Zoomable Tree"></b></span> </td> <td><span class=gtypeClass><b class="actionReportHeat" title="Heat Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionCalendar" title="Calendar Chart"> <td><span class=gtypeClass><b class="actionReportText" title="Text Report"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportMap" title="Map"></b></span> </td> <td><span class=gtypeClass><b class="actionReportPC" title="Parallel Coordinate Chart"></b></span> </td> <!--td><span class=gtypeClass><b class="actionReportSVG" title="Custom SVG Chart"></b></span> </td--> <td><span class=gtypeClass><b class="actionReportStatusBar" title="Status Bar"></b></span> </td> <td><span class=gtypeClass><b class="actionReportDataTable" title="Data Table"></b></span> </td><tr> <td><span class=gtypeClass><b class="actionReportTraffic" title="Traffic Light"></b></span> </td><td><span class=gtypeClass><b class="actionFilledArea" title="Filled Area Percent"></b></span></td><td></td><td></td> </tr></tr> </table> </div>'; // htmlStr='<div class=gtypeGroupClass moduleId='+moduleId+'><table border=0 cellpadding=0 cellspacing=0 class=gtypeTable> <tr> <td><span class=gtypeClass><b class="actionReportDonut" title="Donut Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportSunburst" title="Sunburst Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportStock" title="Stock Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportBar" title="Bar"></b></span> </td> </tr> <tr> <td><span class=gtypeClass><b class="actionReportColumn" title="Column chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportStack" title="Stacked Bar"></b></span> </td> <td><span class=gtypeClass><b class="actionReportTree" title="Tree Chart"></b></span> </td> <td><span class=gtypeClass><b class="actionReportText" title="Text Report"></b></span> </td> </tr> </table> </div>'; } $("#ChartTypeDIV").html(htmlStr); $("#ChartTypeDIV").show(); } function chartLiveEvents(cssClassName, chartType){ $(document).on("click", cssClassName, function(){ var moduleId=$(this).parents(".gtypeGroupClass").prop("moduleId"); _modules[moduleId].f = chartType; $("div#"+moduleId)[0].loadContent(true); multiDash.setReportDisplayType(moduleId, chartType); }); } function handleHide(){ $(".graphConfigureUL").hide("slow"); $("#ChartTypeDIV").hide("slow"); } function returnGroups(userGroupArray){ var groups=[]; for(var i=0; i<userGroupArray.length; i++){ if(groupList && groupList.indexOf(userGroupArray[i])>=0) groups.push(userGroupArray[i]); } return groups; } function returnUsers(userGroupArray){ var users=[]; for(var i=0; userGroupArray && i<userGroupArray.length; i++){ for(var j=0; userList && j<userList.length; j++){ if(userList[j][0] == userGroupArray[i]) users.push(userGroupArray[i]); } } return users; } function editShare(id, type){ $("input[name=dash]").prop("checked", false); $("input[name=page]").prop("checked", false); if(type == 'D'){ var dashCheckbox=$("input[name=dash]").filter("input#"+id); $(dashCheckbox).prop("checked",true); checkDashPage($(dashCheckbox).prop("id"), -1); } else { var pageCheckbox=$("input[name=page]").filter("input#"+id); $(pageCheckbox).prop("checked",true); checkDashPage($(pageCheckbox).prop("class"), $(pageCheckbox).prop("id")); } showHide(".share", ".sharedList"); } function unshare(dashPageId, dashPageType){ shareObject(sessionid, dashPageId, dashPageType, "users=ALL;groups=ALL", 'Remove'); getAllSharedObjects(populateSharedList); } function populateSharedList(){ var dashPageIds=Object.keys(_shared); var htmlstr="<table class='sharedListTable'><tr><th>Name</th><th>Type</th><th>Users</th><th>Groups</th><th>Actions</th></tr>"; for(var i=0; i<dashPageIds.length; i++){ if(_shared[dashPageIds[i]].type=='D'){ var dashId=dashPageIds[i]; var Name=multiDash.getDashNameById(dashId); htmlstr+="<tr><td>"+Name+"</td><td>Dashboard</td><td>"+returnUsers(_shared[dashId].users)+"</td><td>"+returnGroups(_shared[dashId].users)+"</td><td><a onclick='editShare("+dashId+", \"D\")'>Edit</a> | <a onclick='unshare("+dashId+",\"D\")'>Unshare</a></td></tr>" } else{ var pageId=dashPageIds[i]; var Name=multiDash.getPageNameById(pageId); htmlstr+="<tr><td>"+Name+"</td><td>Page</td><td>"+returnUsers(_shared[pageId].users)+"</td><td>"+returnGroups(_shared[pageId].users)+"</td><td><a onclick='editShare("+pageId+", \"P\")'>Edit</a> | <a onclick='unshare("+pageId+",\"P\")'>Unshare</a></td></tr>" } } htmlstr+="</table>"; $(".sharedList").html(htmlstr); } /* * Here you can add your own Live Event definitions */ function myLiveEvents(){ $(document).on("click", "span.gtypeClass b", function(){ var moduleId=$(this).parents(".gtypeGroupClass").attr("moduleId"); var chartType=getReportTypeByClassName(this.className); _modules[moduleId].f = chartType; $("div#"+moduleId)[0].loadContent(true); multiDash.setReportDisplayType(moduleId, chartType); handleHide(); }); $(document).on("mouseover", ".graphConfigure", function(){ var moduleId=$(this).parents(".module")[0].id; $(".graphConfigureUL").prop("moduleId", moduleId); $(".graphConfigureUL").show("slow"); $(".graphConfigureUL").css("left", $(this)[0].offsetLeft-175); $(".graphConfigureUL").css("top", $(this)[0].offsetTop+18); //enableDisableByChartType(moduleId); $("#dashConfList").hide("slow"); } ); $(document).on("mouseover", ".moduleContent, #main_nav", function(){ handleHide(); }); $(document).on("mousedown", ".actionRefresh", function(){ var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); $("div#"+moduleId)[0].loadContent(false); }); $(document).on("mousedown", ".actionExport", function(){ var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); //jqplotToImage($("#div"+moduleId)); var title = document.getElementById(moduleId).querySelectorAll(".moduleTitle")[0].textContent + ".png"; saveSvgAsPng(document.getElementById('div'+moduleId).getElementsByTagName("svg")[1], title, {scale: 2, backgroundColor: "#FFFFFF"}); return false; }); function addslashesNew( str ) { return (str+'') .replace(/\"/g, "\"\"") // escape double quotes .replace(/\0/g, "\\0"); // replace nulls with 0 }; $('.actionExportData').click(function() { var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); var divId = "div"+moduleId; var isDownload = true; var rptContext=new reportContext("DT", 0, 0, moduleId, divId, isDownload); var dispObj=new displayOptions(multiDash.getReportDisplayOptions(moduleId)); var gid = _modules[moduleId].url; getReportDataByItemsUsingReportId(gid, dispObj, divId, rptContext); }); // Clicked on full sceen icon $(document).on("click", ".actionFullScreen", function(){ $(".graphConfigureUL").hide(); var Height=getMheight()-150; var Width=getWidthBySpan(24); $(function() { $( "#dialog" ).dialog({ height: Height, width: Width, modal: true, resizable: true, autoResize: true, autoOpen: false, // position:[10,10] }); }); var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); var gid = _modules[moduleId].url; var format=_modules[moduleId].f; var htmlstr='<div id="full'+gid+'" style="height:'+(Height)+'px;width:'+(Width-40)+'px;overflow:hidden;position:relative;"></div><script language=javascript>getReport("'+gid+'","full'+gid+'","'+format+'","30","'+moduleId+'", false);</script>'; // if(format != 'T') // htmlstr+='<div id="full2'+gid+'" style="height:200px;width:'+(Width-40)+'px;overflow:auto"></div><script language=javascript>getReport("'+gid+'","full2'+gid+'","T","30","'+moduleId+'", false);</script>'; $("#dialog").html(htmlstr).dialog().dialog("open"); return false; }); $(document).on("click", "#Export", function(){ $(function() { $( "#dialogS" ).dialog({ height: 'auto', width: 'auto', modal: true, resizable: true, autoResize: true, autoOpen: false, position:['center',100] }); }); $("span.ui-dialog-title").text(getLabel('Export Dashboard and Pages')); var dashId=0, dashName='', pageId=0, pageName='', i=0, j=0; htmlstr='<div id=dashMsg align=center></div><div><table width="100%" border="0" cellspacing="0" cellpadding="0" >'; for(i=0; i<multiDash.dashObj.length; i++){ dashId=multiDash.dashObj[i].id; dashName=multiDash.dashObj[i].name; htmlstr+='<tr><td colspan=10><input type="checkbox" name="dash" id='+dashId+' onclick="checkDashPage('+ dashId+',-1)" title="'+dashName+'"/>'+dashName+'</td></tr>'; htmlstr+='<tr><td> </td>'; for(j=0; j<multiDash.dashObj[i].pages.length; j++){ pageId=multiDash.dashObj[i].pages[j].id; pageName=multiDash.dashObj[i].pages[j].name; if(j !=0 && j%10 == 0) htmlstr+='</tr><tr><td></td>'; htmlstr+='<td><input type="checkbox" name="page" class="'+dashId+'" id='+pageId+' onclick="checkDashPage('+ dashId+','+ pageId+')" title="'+pageName+'"/>'+pageName+'</td>'; } htmlstr+='</tr><tr><td colspan=10 class=dash_divider></td></tr>'; } htmlstr+='</table><div width=100%>'; //htmlstr+=getLabel("File type")+': <input type="radio" name="exportType" checked=checked value="PDF"/>'+getLabel("PDF")+' <input type="radio" name="exportType" value="Excel"/>'+getLabel("Excel")+' | '; htmlstr+=getLabel("Action")+': <input type="checkbox" name="Export" checked=checked value="Y"/>'+getLabel("Export")+' <input type="checkbox" name="Email" value="Y" id=CEmail onclick="onoffEmaildiv()"/>'+getLabel("Email")+'</div>'; htmlstr+="<div width=100% id=email><div style=\"width:80%;float:left\"><table width=100% class=EmailTable>"; htmlstr+="<tr><td>To :</td><td><textarea id=EmailTo maxlength=2048 cols=70 rows=3></textarea></td><td rowspan=3 valign=top></td></tr>"; htmlstr+="<tr><td>Subject :</td><td><textarea id=Subject maxlength=256 cols=70 rows=1></textarea></td></tr>"; htmlstr+="<tr><td>Content :</td><td><textarea id=Content maxlength=2048 cols=70 rows=3></textarea></td></tr>"; htmlstr+="</table></div>"; s = new dTree('s'); s.config.useStatusText=true; s.config.closeSameLevel=false; s.config.useCookies=false; s.config.target=""; s.add(0,0,getLabel('Group and User List'),'','','','','/showcase/css/g/User-Group-icon.png'); s.add(100000,0,getLabel('Groups')); s.add(200000,0,getLabel('Users')); var users=getUserList(sessionid); for(i=0; i<users.length; i++){ if(users[i][0] == userId) continue; s.add( (i+1), 200000, users[i][0], '', '', users[i][1], '', '/edash/assets/default/images/user.gif', '','', '<input type="checkbox" name="user" value="'+users[i][2]+'" title="'+users[i][2]+'" onclick="fillTo(this.value, this.checked)"/>' ); } htmlstr+="<div style=\"width:18%; float:right;height:200px;overflow:auto\">"+s+"</div>"; htmlstr+="</div>"; htmlstr+="<div style=\"background:black;width:200px;padding-left:50px\"><button type=button onclick=exportDashboard(\"PDF\")>"+getLabel('Go')+"</div>"; htmlstr+='<form name=exportForm action="pdfreport.rx" method=POST target="_blank"></form>'; htmlstr+='</div>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); return false; }); //Clicked on share link $(document).on("click", "#share", function(){ $(function() { $( "#dialogS" ).dialog({ height: 'auto', width: 'auto', modal: true, resizable: true, autoResize: true, autoOpen: false, position:['center',100], title: 'Share Dashboard and Pages' }); }); $("span.ui-dialog-title").text(getLabel('Share Dashboard and Pages')); var dashId=0, dashName='', pageId=0, pageName='', i=0, j=0; htmlstr='<div><a href="#" onclick="showHide(\'.share\',\'.sharedList\')">Share</a> | <a href="#" onclick="showHide(\'.sharedList\', \'.share\')">Shared List</a></div><div id=dashMsg align=center></div><div class=share><div class=dash><div class=heading1>1. '+getLabel("Select Dashboard, Pages")+'</div><table width="100%" border="0" cellspacing="0" cellpadding="0" class=shareSubtable>'; for(i=0; i<multiDash.dashObj.length; i++){ dashId=multiDash.dashObj[i].id; dashName=multiDash.dashObj[i].name; htmlstr+='<tr><td width=16px><input type="checkbox" name="dash" id='+dashId+' onclick="checkDashPage('+ dashId+',-1)" title="'+dashName+'"/></td><td>'+dashName+'</td></tr>'; for(j=0; j<multiDash.dashObj[i].pages.length; j++){ pageId=multiDash.dashObj[i].pages[j].id; pageName=multiDash.dashObj[i].pages[j].name; htmlstr+='<tr><td></td><td><input type="checkbox" name="page" class="'+dashId+'" id='+pageId+' onclick="checkDashPage('+ dashId+','+ pageId+')" title="'+pageName+'"/>'+pageName+'</td></tr>'; } } htmlstr+='</table>'; htmlstr+='</div><div class=usergrp>'; htmlstr+='<div class=heading2>2. '+getLabel('Select Groups, Users')+'</div>'; var groups=getGroupList(sessionid); groupList=groups[0]||[]; s = new dTree('s'); s.config.useStatusText=true; s.config.closeSameLevel=false; s.config.useCookies=false; s.config.target=""; //Node(id, pid, name, url, udelete, title, target, icon, iconOpen, open) s.add(0,0,getLabel('Group and User List'),'','','','','/showcase/css/g/User-Group-icon.png'); s.add(100000,0,getLabel('Groups')); s.add(200000,0,getLabel('Users')); for(i=0; i<groups.length; i++){ s.add( (i+1), 100000, groups[i][0], '', '', groups[i][0], '', '/edash/assets/default/images/grp.gif', '','', '<input type="checkbox" name="group" value="'+groups[i][0]+'" title="'+groups[i][0]+'"/>' ); } var users=getUserList(sessionid); userList=users||[]; for(i=0; i<users.length; i++){ if(users[i][0] == userId) continue; s.add( (i+1), 200000, users[i][0], '', '', users[i][1], '', '/edash/assets/default/images/user.gif', '','', '<input type="checkbox" name="user" value="'+users[i][0]+'" title="'+users[i][0]+'"/>' ); } htmlstr+="<div class=dtreeShare>"+s+"</div>"; htmlstr+='</div><div class=rightPanel><div class=heading3>3. '+getLabel('Confirm, Go')+'</div><div id=confirmShare></div><center style="margin-left:10px"><button type=reset class=button_orange >'+getLabel("Reset")+'</button><button type=button class=button_green onclick="shareDash()">'+getLabel("Apply")+'</button></center></div></div>'; /* Shared dashboard list */ htmlstr+=' <div class="sharedList" style="display:none">'; htmlstr+='</div>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); getAllSharedObjects(populateSharedList); return false; }); $(document).on("click", "input:checkbox[name=group]", function(){ if(!this.checked){ checkForUnshare(this.value, 'group'); } fillConfirmSharing(); }); $(document).on("click", "input:checkbox[name=user]", function(){ if(!this.checked){ checkForUnshare(this.value, 'user'); } fillConfirmSharing(); }); //Link To Page icon clicked $(document).on("click", ".actionLinktoPage", function(){ $(function() { $( "#dialogS" ).dialog({ height:400, width:200, modal: true, resizable: true, autoResize: true, autoOpen: false, position:['center',100] }); }); $("span.ui-dialog-title").text('Link to Dashboard Page'); var dashId=0, dashName='', pageId=0, pageName='', i=0, j=0, rptId=$(this).parents(".graphConfigureUL").prop("moduleId"); var dashIdNpageId=multiDash.getReportDashLink(rptId), dId=-1, pId=-1; if((dashIdNpageId.length >0) && (dashIdNpageId[0]>0)){ dId=dashIdNpageId[0]; } htmlstr='<table width="100%" border="0" cellspacing="0" cellpadding="0" class=settings><tr><td colspan=3 id=dashMsg align=center></td></tr>'; htmlstr+='<tr><td></td><td><input type="radio" name="link" checked=checked onclick="createReportDashLink('+rptId+',\'\',\'\')"/>None</td><td></td></tr>'; for(i=0; i<multiDash.dashObj.length; i++){ dashId=multiDash.dashObj[i].id; dashName=multiDash.dashObj[i].name; if(dashId == dId) pId=dashIdNpageId[1]; htmlstr+='<tr><td colspan=3><b><u>'+dashName+'</u></b></td></tr>'; for(j=0; j<multiDash.dashObj[i].pages.length; j++){ pageId=multiDash.dashObj[i].pages[j].id; pageName=multiDash.dashObj[i].pages[j].name; if(pId == pageId) checked='checked=checked'; else checked=''; htmlstr+='<tr><td></td><td><input type="radio" name="link" '+checked+' onclick="createReportDashLink('+rptId+','+ dashId+','+ pageId+')"/>'+pageName+'</td><td></td></tr>'; } } htmlstr+='</table>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); return false; }); $(document).on("click", ".actionNote", function(){ var noteId=$(this).parents(".graphConfigureUL").prop("moduleId"); var gid = _modules[noteId].url; var title= getReportMetaData(sessionid, gid)[3]; displayNotes(noteId, "Notes for <span class=R>"+ title +" </span>"+getLabel("Report")); return false; }); //Dashboard Settings Clicked $(document).on("click", "#dashsettings", function(){ $(function() { $( "#dialogS" ).dialog({ height: 'auto', width: 'auto', modal: true, resizable: true, autoResize: true, autoOpen: false,position:['center',100], title:'Dashboard Settings' });}); $("span.ui-dialog-title").text(getLabel('Dashboard Settings')); var dashArray=multiDash.getDashboards(); var sharedArray=getSharedDashboardJson(); htmlstr='<table id=dashSettingTable width="100%" border="0" cellspacing="0" cellpadding="0" id=dashord class=settings><tbody class=content><tr class="nodrag nodrop"><td colspan=3 id=dashMsg align=center></td></tr><tr class="nodrag nodrop"><td><b><u>'+getLabel("Default Dashboard")+'</u></b></td>'; htmlstr+='<td><select id="defaultDashDiv">'; for(var i=0; i<dashArray.length; i++){ var idName= dashArray[i].split(':'); htmlstr+= '<option value="'+idName[0]+'">'+idName[1]+'</option>'; } for(var i=0; i<sharedArray.length; i++){ htmlstr+= '<option value="'+sharedArray[i].id+'">'+sharedArray[i].name+'('+sharedArray[i].Owner.id+')</option>'; } htmlstr+="</select></td>"; htmlstr+='</tr><tr class="nodrag nodrop"><td colspan=3><b><u>'+getLabel("Add Dashboard")+'</u></b></td></tr><tr class="nodrag nodrop"><td>'+getLabel("Dashboard Name")+'</td><td><input type="text" id="NewDash" value="" Maxlength="16" onkeyup="vPageName(this.value, this.id)"></td><td><a class="clickable" onclick="addDash(document.getElementById(\'NewDash\').value)">'+getLabel('Add')+'</a></td></tr>'; htmlstr+='<tr class="nodrag nodrop"><td colspan=3><b><u>'+getLabel('Change Dashboard')+'</u></b></td></tr>'; //var dashArray=multiDash.getDashboards(); for(var i=0; i<dashArray.length; i++){ var idName= dashArray[i].split(':'); htmlstr+='<tr id="trED'+idName[0]+'"><td class=dragHelp title="'+getLabel("Drag to change order.")+'"></td><td><input type="text" id="ED'+idName[0]+'" value="'+idName[1]+'" Maxlength="16" onkeyup="vPageName(this.value, this.id)"></td><td><a class="clickable" onclick="renameDash(\''+ idName[0] +'\')">'+getLabel('Rename')+'</a> | <a class="clickable" onclick="removeDash(\''+ idName[0] +'\')">'+getLabel('Remove')+'</a></td></tr>'; } htmlstr+='</tbody></table>'; if(i>0) htmlstr+='<div style="float:right;margin-right:10px;"> <button type=button class=button_green onclick="saveDragAndDropDashboard(\'dashSettingTable\')" title="'+getLabel("Click to save dashboard order")+'">'+getLabel("Apply")+'</button></div>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); var defaultDashID = getSelectedDashID(); if(defaultDashID){ $("#defaultDashDiv").val(defaultDashID); } applyDnD('#dashSettingTable', '#dashMsg'); return false; }); $(document).on("click", "#sharedDashPageSettings", function(){ $(function() { $("#dialogS").dialog({ height: 'auto', width: 'auto', modal: true, resizable: true, autoResize: true, autoOpen: false, position:['center',100], title: 'Page Settings' }); }); $("span.ui-dialog-title").text(getLabel('Page Settings')); var htmlstr = '<table id=pageSettings width="100%" border="0" cellspacing="0" cellpadding="0" class=settings><tr><td colspan=2><b>Enable Login Filter</b></td></tr>'; var pageArray=multiDash.getCurrentPages(); for(var i=0; i<pageArray.length; i++){ var idName= pageArray[i].split(':'); var isLoginFilterChecked = 'checked'; if(idName[0] in pageLoginFilterObj) if(!pageLoginFilterObj[idName[0]]) isLoginFilterChecked = ""; htmlstr+= '<tr><td>'+idName[1]+'</td><td style="text-align:center"><input type="checkbox" onclick="enableLoginFilter(\''+ idName[0] +'\')" id="enableLoginFilter'+idName[0]+'" '+isLoginFilterChecked+'></td></tr>'; } htmlstr+='</table>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); return false; }); //Page Settings clicked $(document).on("click", "#settings", function(){ $(function() { $( "#dialogS" ).dialog({ height: 'auto', width: 'auto', modal: true, resizable: true, autoResize: true, autoOpen: false, position:['center',100], title: 'Page Settings' }); }); $("span.ui-dialog-title").text(getLabel('Page Settings')); htmlstr='<table id=pageSettings width="100%" border="0" cellspacing="0" cellpadding="0" class=settings><tr class="nodrag nodrop"><td colspan=3 id=dashMsg></td></tr><tr class="nodrag nodrop"><td colspan=3><b><u>'+getLabel('Add Page')+'</u></b></td></tr><tr class="nodrag nodrop"><td>'+getLabel('Page Name')+':</td><td><input type="text" id="NewPage" value="" Maxlength="16" onkeyup="vPageName(this.value, this.id)"></td><td><a class="clickable" onclick="addPage(document.getElementById(\'NewPage\').value)">'+getLabel('Add')+'</a></td></tr>'; htmlstr+='<tr class="nodrag nodrop"><td colspan=3><b><u>'+getLabel('Change Page')+'</u></b></td><td class="login-filter-item"><b>Enable Login Filter</b></td></tr>'; var pageArray=multiDash.getCurrentPages(); for(var i=0; i<pageArray.length; i++){ var idName= pageArray[i].split(':'); var isLoginFilterChecked = 'checked'; if(idName[0] in pageLoginFilterObj) if(!pageLoginFilterObj[idName[0]]) isLoginFilterChecked = ""; htmlstr+='<tr id="trED'+idName[0]+'"><td class=dragHelp title="'+getLabel("Drag to change order.")+'"></td><td><input type="text" id="ED'+idName[0]+'" value="'+idName[1]+'" Maxlength="16" onkeyup="vPageName(this.value, this.id)"></td><td><a class="clickable" onclick="renameDashPage(\''+ idName[0] +'\')">'+getLabel('Rename')+'</a> | <a class="clickable" onclick="removePage(\''+ idName[0] +'\')">'+getLabel('Remove')+'</a></td><td class="login-filter-item" style="text-align:center"><input type="checkbox" onclick="enableLoginFilter(\''+ idName[0] +'\')" id="enableLoginFilter'+idName[0]+'" '+isLoginFilterChecked+'></td></tr>'; } htmlstr+='</table>'; if(i > 0) htmlstr+='<div style="float:right;margin-right:10px;"> <button type=button class=button_green onclick="saveDragAndDropPages(\'pageSettings\')" title="'+getLabel("Click to save page order")+'">'+getLabel("Apply")+'</button></div>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); if(!userLoginFilter) $(".login-filter-item").hide() applyDnD('#pageSettings', '#dashMsg'); return false; }); $(document).on("click", "#Copy", function(){ copyToPersonalSpace(); }); $(document).on("click", "#menu_btn", function(){ showFilterTemplate(); }); $(document).on("click", "#menu_filter", function(){ filterDivToggle(); }); $(document).on("click", "#dashConfigSetting", function(){ $("#dashConfList").toggle("slow"); handleHide(); }); $(document).on("mousedown", ".actionGraphSettings", function(){ var rptId=$(this).parents(".graphConfigureUL").prop("moduleId"); displayObj.RD=multiDash.getReportDisplayOptions(rptId); if(typeof displayObj.RD == "undefined") displayObj.RD={}; setGraphOptions(rptId); }); $(document).on("mousedown", ".actionGotoPage", function(){ executeReportDashLink($(this).parents(".graphConfigureUL").prop("moduleId")); }); $(document).on("mousedown", ".actionMax", function(){ var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); if(typeof moduleId != "undefined"){ $("div#"+moduleId)[0].max(); } else{ /* Template B */ $(this).parents(".module")[0].max(); $(this).hide().siblings(".actionMin").show(); } }); $(document).on("mousedown", ".actionMin", function(){ var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); if(typeof moduleId != "undefined"){ $("div#"+moduleId)[0].min(); } else{ /* Template B */ $(this).parents(".module")[0].min(); $(this).hide().siblings(".actionMax").show(); } }); $(document).on("mousedown", ".actionClose", function(){ var ReportId=$(this).parents(".graphConfigureUL").prop("moduleId"); if( typeof ReportId == "undefined") ReportId=$(this).parents(".module")[0].id; if(multiDash.isShared != 1){ multiDash.removeReportFromPage(ReportId); removeNote(sessionid, ReportId, "All"); } $("div#"+ReportId)[0].close(); handleHide(); if($(".module").length == 0){ $("#no_reports").show(); } }); $(document).on("dblclick", ".moduleHeader", function(){ $(this).parents(".cc").toggleClass("max").siblings(".cc").toggleClass("min"); $(this).parents(".module")[0].loadContent(true); return false; }); $(document).on("click", "a.tab", function(){ $.jpolite.gotoTab(this.rel); return false; }); $(document).on("click", "a.local", function(){ $(this).parents(".module")[0].loadContent(this.href, true); return false; }); $(".onOffIcons").off("mouseover"); $(document).on("mouseover", ".onOffIcons", function(){ $("#ChartTypeDIV").css("left", $(this).parents()[0].offsetLeft-158); $("#ChartTypeDIV").css("top", $(this).parents()[0].offsetTop); openGraphTypeWindow($(this).parents(".graphConfigureUL").prop("moduleId")); return false; }); $(document).on("click", "ul.layout li a", function(){ $("ul.layout li a").removeClass('selected'); $(this).addClass('selected'); var selTab=$("ul#main_nav li.on").prop('id'); _columnLayout[selTab]=Layout[this.id]; //session_columnLayout[selTab]=this.id; $.jpolite.Nav.switchTab(selTab); multiDash.setPageLayout(selTab, this.id); return false; }); $(document).on("click", "div#closelayout", function() { $("#pageConfId").hide(); return false; }); $(document).on("keyup", ".noteTextarea", function(ev){ if(ev.keyCode == 13){ if(putNote(sessionid, this.id, null, this.value.replace(/\n$/,''))=='') displayNotes(this.id, $("span.ui-dialog-title").html()); } else if(this.value.length>254){ this.value=this.value.substring(0,254); } return false; }); $(document).on("click", ".deleteNote", function(){ if(removeNote(sessionid, this.id.split(':')[0], this.id.split(':')[1])=='') displayNotes(this.id.split(':')[0], $("span.ui-dialog-title").html()); return false; }); $(document).on("click", "#print", function(){ myprint(); return false; }); $(document).on("click", ".firstTab", function(){ showFirstTab(); }); $(document).on("click", ".prevTab", function(){ showPreviousTab(); }); $(document).on("click", ".nextTab", function(){ showNextTab(); }); $(document).on("click", ".lastTab", function(){ showLastTab(); }); $(window).resize(function() { resizeNumTabs(); }); $(document).on("click", "div#toolbar-minimized", function() { if($("div#toolbar-minimized").css("background-image").indexOf("show_bar.png")>0){ $("div#toolbar-minimized").css("background-image", "url('/showcase/css/g/hide_bar.png')"); $("div#toolbar-minimized").prop("title", getLabel("Hide Bar")); $("div#header").slideToggle("slow"); if(G_THEME == "modern") $("body").css("padding-top", "100px"); } else{ $("div#toolbar-minimized").css("background-image", "url('/showcase/css/g/show_bar.png')"); $("div#toolbar-minimized").prop("title", getLabel("Show Bar")); $("div#header").slideToggle("slow"); $("body").css("padding-top", "0px"); } }); $(document).on("click", ".actionFreeze", function(){ var moduleId=$(this).parents(".graphConfigureUL").prop("moduleId"); freezeTextHeader("div"+moduleId); }); $(document).on("click", "ul.graphConfigureUL li", function(){ if(this.className != "onOffIcons") $("#ChartTypeDIV").hide(); }); }; /* * Here you can register Custom System Events */ function myCustomEvents(){ $.regEvent({ "moduleLoadedEvent": function(e, msg){ $.alert({title:'Report Loaded',text:msg}) }, "moduleLoadingEvent": function(e, msg){ $.alert({title:'Loading Report...',text:msg}) } }); //Ajax Start & Stop event processor registered with jQuerys methods $("#loading").ajaxStart(function(){ $(this).css("visibility","visible"); }).ajaxStop(function(){ $(this).css("visibility","hidden"); }) }; /* * Here you can register the message handlers for messages returned from Server side */ function myMessageHandlers() { $.regMsgHandlers({ login: Login, resource: function(res){ for (var i in res) { var o = res[i]; var p = [o.name]; if (o.url) p.push(o.url); p.push(true); $.triggerEvent(o.method == 'destroy' ? "destroyEvent" : "refreshEvent", p); } return true; }, //Promot a important notices in a JsonForm notice: function(note) { var f = $("form:visible"); if (note.length) { //Array, Possibly a error / warning message note = $.map(note, function(o, i){ return o.join(" -- "); }); if (f.length > 0) $(".notice", f).html(note.join("<br/>")).hide().slideDown(); } return false; }, //Prompt user about errors in a JsonForm error: function(err) { var f = $("form:visible"); if (f.length > 0) $(".error", f).html(err).hide().slideDown(); return false; } }) }; /* * Here you can define which controls you want in the format of * {selector} : [callBackFunction, {one:argument}] or * {selector} : [callBackFunction, [array, of, arguments]] * The callBackFunctions will be called upon each module content */ function myControls(){ //Assign Controls handlers to selectors $.regControls({ //JPolite native controls, zero arguement ".tabs": [$.fn.Tabs], ".accordion": [$.fn.Accordion], ".maccordion": [$.fn.MAccordion], ".jsonform": [$.fn.JsonForm], ".menu": [$.fn.SideMenu], //jqModal controls, One object as arguement ".jqmWindow": [$.fn.jqm, {toTop:true}], //Below are controls from jQuery UI, check out m801.html ".accordion1": [$.fn.accordion,{ header: "h3" }], ".tabs1": [$.fn.tabs], ".dialog": [$.fn.dialog, { autoOpen: false, width: 600, buttons: { "Ok": function() {$(this).dialog("close");}, "Cancel": function() {$(this).dialog("close");} } }], ".datepicker": [$.fn.datepicker, {inline: true}], //".slider": [$.fn.slider,{range: true, values: [17, 67]}], ".progressbar": [$.fn.progressbar,{value: 20}], //hover takes 2 arguements --> pass them in an Array "#dialog_link, ul#icons li": [$.fn.hover, [ function() { $(this).addClass('ui-state-hover'); }, function() { $(this).removeClass('ui-state-hover'); } ] ] }); }; /* * A traditional navigation tabs initializer with tricks from Dragon Interactive: * http://labs.dragoninteractive.com/pufferfish_article.php */ function TraditionalTabs(){ /*this.children("li").each(function(){ //$("<b class='hover'></b>").text(this.innerHTML).prependTo(this); $(this).hover( function(){$(".hover", this).stop().animate({opacity:.9},700, 'easeOutSine')}, function(){$(".hover", this).stop().animate({opacity:0},700, 'easeOutExpo')} ); })*/ }; function showHide(showClass, hideClass){ $(showClass).show(); $(hideClass).hide(); } /* Functions used in Report List creation */ function clearText(){ document.getElementById('iname').style.background="#FFFFFF"; document.getElementById('iname').value=""; } //Get unique values function sort_unique(arr) { if(typeof arr =="undefined" || arr.length<1) return arr; arr = arr.sort(function (a, b) { return a*1 - b*1; }); var ret = [arr[0]]; for (var i = 1; i < arr.length; i++) { // start loop at 1 as element 0 can never be a duplicate if (arr[i-1] !== arr[i]) { ret.push(arr[i]); } } return ret; } /* * Function to help creating tree structure. */ function completeTreeStructure(reportList){ var pidArray=new Array(); var missedParentEntry=new Array(); var i=0, j=0, found=0; for(i=0; i<reportList.length; i++){ pidArray[i]=reportList[i][1]; } pidArray=sort_unique(pidArray); for(i=0; i<pidArray.length; i++){ found=0; for(j=0; j<reportList.length; j++){ if(pidArray[i]==reportList[j][0]){ found=1; break; } } if(found==0){ missedParentEntry.push(pidArray[i]); } } return missedParentEntry; } function getProperParent(pidArray, pid, isFolder, isShared, owner){ if(isFolder == 'Folder' && isShared == 'Shared' && owner != userId) return 10; for(var i=0; i<pidArray.length; i++) if(pidArray[i] == pid) return 0; return pid; } /* * Load a module menu on the fly and enable the menu button actions, you can choose to load * a dynamic menu or use a different trigger * -----Report List----- */ function loadModuleMenu(refresh) { if($('#module_menu').html().length > 1 && refresh==false) return false; $('#module_menu').jqm().html(""); $('#module_menu').jqm().html(function(){ var reportList = getReportMetaData(sessionid, 'null'); var MetaDataArray = getMetaData(sessionid); var len = reportList.length; var imgstr=""; if(len>0){ reportList=reportList.sort(multiDimensional); } var missedParentEntry=completeTreeStructure(reportList); var contentStr="<div class=ui-widget-header style=\"position:relative\"><b> "+getLabel('Report List')+" </b><div id=closemenu>"+getLabel('close')+" </div></div>\n"; contentStr +="<div id='rptlist_msg'></div><div class=search><input id=iname placeholder=\""+getLabel('Search Reports')+"\" type=text onclick=\"clearText()\" onkeyup=\"DtreeRptList.Isearch(this.value);\"></div>"; DtreeRptList = new dTree('DtreeRptList'); DtreeRptList.config.useStatusText=true; DtreeRptList.config.closeSameLevel=false; DtreeRptList.config.useCookies=false; DtreeRptList.config.target=""; // Node(id, pid, name, url, udelete, title, target, icon, iconOpen, open) // new Array( "Id", "ParentId", "Owner", "Title" , "Description", "CreateDate", "LastAccessDate", "GenerationTimeInSec", "SubTitle", "NRows", "NCols", "ReportType", "ReportLayout", "Dimensions", "Measures", "MeasuresFormat", "ReportPermission", "MinMaxLevels" ); DtreeRptList.add(0,0,getLabel("Dashboard Report List")+' [ <a href="javascript: DtreeRptList.openAll();"><font color=blue>'+getLabel('Expand all')+'</font></a> | <a href="javascript: DtreeRptList.closeAll();"><font color=blue>'+getLabel("Collapse all")+'</font></a> ]'); DtreeRptList.add(10,0,getLabel("Shared Reports")); for(var i=0; i<reportList.length; i++){ if(reportList[i][11]=='Folder'){ DtreeRptList.add( reportList[i][0], getProperParent(missedParentEntry, reportList[i][1], reportList[i][11], reportList[i][16], reportList[i][2]), reportList[i][3], '', '', reportList[i][4], '', '' ); } } for(var i=0; i<reportList.length; i++){ if(reportList[i][11]!='Folder'){ DtreeRptList.add( reportList[i][0], getProperParent(missedParentEntry, reportList[i][1], reportList[i][11], reportList[i][16], reportList[i][2]), reportList[i][3], reportList[i][11]=='Folder'?'':'javascript:addReport(\''+reportList[i][0]+'\',\''+reportList[i][11]+'\');', '', reportList[i][4], '', reportList[i][11]=='Folder'?'':(reportList[i][16]=='Personal'?'/showcase/css/g/report.png':'/showcase/css/g/shared.png') ); } } // Node(id, pid, name, url, udelete, title, target, icon, iconOpen, open) var appList=getAppList(sessionid,''); if(appList.length >0){ DtreeRptList.add(15,0,getLabel("My Application")); for(i=0; i<appList.length; i++){ DtreeRptList.add( appList[i][0], 15, appList[i][1], 'javascript:addReport(\''+appList[i][2]+'\',\'APP\');' ); } } $('#module_menu').append(contentStr+'<div class=dtreeParent>'+DtreeRptList+'<div class=newMod onClick=addReportList()>• '+getLabel("Add Report List")+'</div></div>'); }); $('#addReport').click(function(){ $('#module_menu').jqmShow(); }); $('#closemenu').click(function(){ $('#module_menu').jqmHide(); }); }; function getColPosition(){//Enhancement No:1129 var c1 = $(".module:visible", $.jpolite.Content['c1']).length; var c2 = $(".module:visible", $.jpolite.Content['c2']).length; var c3 = $(".module:visible", $.jpolite.Content['c3']).length; var c4 = $(".module:visible", $.jpolite.Content['c4']).length; var selTab=$("ul#main_nav li.on").prop('id'); if(_columnLayout[selTab]['c1'].indexOf('hide')>-1) c1=9999; if(_columnLayout[selTab]['c2'].indexOf('hide')>-1) c2=9999; if(_columnLayout[selTab]['c3'].indexOf('hide')>-1) c3=9999; if(_columnLayout[selTab]['c4'].indexOf('hide')>-1) c4=9999; var M=Math.min(c1,c2,c3,c4); return (c1==M?'c1':c2==M?'c2':c3==M?'c3':'c4'); } function addReport(reportId, graphType){ $("#no_reports").hide(); var format = encodeFormat(graphType); var template=''; if(graphType == 'APP'){ template='B'; } if(!_modules[reportId]){ var newReport ={url:reportId, f: format}; var id=getNextSequenceId(); _modules[id] = newReport; var colPosition=getColPosition(); $.jpolite.addModule({ id: id, c: colPosition, //Add to c1 of current tab by default mc: '', mt: template }); multiDash.addReport2Page(id, reportId, format, colPosition, -1); addToModuleLayout(reportId); Message('rptlist_msg', "<font color=blue>"+getLabel('Report Added')+"</font>"); }else{ getModulePosition(reportId); } } function addReportList(){ var reportId="ReportList.html"; var newReport ={url:reportId, f: ''}; var id=getNextSequenceId(); _modules[id] = newReport; $.jpolite.addModule({ id: id, c: 'c1', mc: '', mt: 'B' }); multiDash.addReport2Page(id, reportId, '', 'c1', -1); addToModuleLayout(reportId); reportId=""; var format="T"; for(var i in reportMetaDataCache){ if(reportMetaDataCache[i].meta[11] != 'Folder'){ reportId=reportMetaDataCache[i].meta[0]; format=encodeFormat(reportMetaDataCache[i].meta[11]); break; } } newReport ={url:reportId, f: format}; id=getNextSequenceId(); _modules[id] = newReport; $.jpolite.addModule({ id: id, c: 'c2', mc: '', mt: '' }); multiDash.addReport2Page(id, reportId, format, 'c2', -1); addToModuleLayout(reportId); Message('rptlist_msg', "<font color=blue>"+getLabel('Report List Added')+"</font>"); } /* * Performance Twist: Load one page on demand */ function getPopulateLoadPage(pageId){ var pages=multiDash.dashObj[multiDash.defaultDashboard].pages; for(var i=0; i<pages.length; i++){ if(pages[i].id == pageId){ if(pages[i].layout){ /* Page is complete no neet to get it from db */ return false; } else{ console.log("Get Page Details"); multiDash.setDefaultPage(pageId); var pageStr=""; if(multiDash.isShared != 1){ pageStr=getContent("Page", pageId); } else{ pageStr=getOneSharedContent(sessionid, pageId, "page") } pages[i]=$.evalJSON(pageStr); clearGraphs(); initDashboard(1); return true; } break; } } } /* * Load pages on demand */ function checkAndLoadPages(){ var pages=multiDash.dashObj[multiDash.defaultDashboard].pages; for(var i=0; i<pages.length; i++){ if(!pages[i].layout){ /* Page is complete no neet to get it from db */ var pageStr=getContent("Page", pages[i].id); pages[i]=$.evalJSON(pageStr); } } } /* * Initialization Code */ $(function(){ getPermanentFilters(sessionid); var filterInfo = getContentData(sessionid, 'pageFilter', 0); if(filterInfo) pageLoginFilterObj = JSON.parse(filterInfo); initDashboard(0); showFilterScreen(); }); var eventLoaded=0; function initDashboard(option){ /*Load Live / Custom Events & Message Handlersm */ populateDashboard(option); //checkAndLoadPages(); populateModules(); if(!eventLoaded){ myLiveEvents(); myCustomEvents(); eventLoaded=1; } myMessageHandlers(); myControls(); loadModuleMenu(false); //Here you can see how to customize the look & feel of the navigation tabs //Details about Kwicks can be found here: http://plugins.jquery.com/project/kwicks //Demos about lavaLamp can be found here: http://nixbox.com/demos/jquery-lavalamp.php var s, customNav = window.name; //Read Nav Tab style set in index.html switch (customNav) { case '1': //Kwicks //A little cusomization to the appearance of tabs, for production system, set it in CSS instead $("li", "#main_nav").css({width:'90px', padding:0, textAlign:'center'}); s = { navInit:$.fn.kwicks, navInitArguments:{max:130, spacing:5, sticky:true, event:'click'} }; break; case '2': //LavaLamp //A little cusomization to the appearance of tabs, for production system, set it in CSS instead $("li", "#main_nav").css({background:"transparent", border:0}); s = { navInit:$.fn.lavaLamp, navInitArguments:{startItem:0, speed:800} }; break; default://3 or else - Traditional s = {navInit:TraditionalTabs}; } /** * Default initialization parameters: * * cts: "#main_nav", //Navigation Tab container id * its: "li", //Navigation Tab selector * t1: $.fn.fadeOut, //Content transition Out callback * t2: $.fn.fadeIn, //Content transition In callback * navInit: TraditionalTabs, //Navigation Tab Initialization callback * navInitArguments: {}, //Navigation Tab Initialization parameters * moduleSortable: true //Whether to allow module drag-n-drop * layoutPersistence: [] //Methods to load/save layout of modules */ s.its = "li, dd" s.layoutPersistence = [ function() { //call function to get layout TODO1 //return window["eval"]("(" + $.cookie('jpolite2layout') + ")") //Original Line return _moduleLayout; }, function(s) { //call function to save layout TODO2 _moduleLayout=eval("("+s+")"); saveDragAndDropReports(); return ""; } ]; $.jpolite.init(s); $.jpolite.gotoTab(get_firstChildIdWithReport('main_nav')); //Activate the first tab by default, or another id of your choice //getPopulateLoadPage(get_firstChildIdWithReport('main_nav')); showHideNavButtons(); $("#maxAll").click(function(){ var x = $(".module:visible").get(); for (i in x) x[i].max(); }); $("#minAll").click(function(){ var x = $(".module:visible").get(); for (i in x) x[i].min(); }); /* $.alert({ title: 'Notification powered by CUBOT', text: 'Loading User Dashboard...' });*/ } function showHideNavButtons(){ var numTabs=$.jpolite.Nav.its.length; if(numTabs<=6) $(".tabNavDiv").hide(); else $(".tabNavDiv").show(); } function Login(){ LOGIN = $("#logins"); $.getJSON("/users?timer=" + (new Date()).getMilliseconds(), function(json){ if (json.name) { logged_in = true; LOGIN.html("Welcome <a href='/profile'>" + json.name + "</a> | <a href='/logout'>Logout</a>"); $("#t2").show().click(); } else { LOGIN.html("<a rel='#LOGIN_FORM' class='jqm'>Log in</a> | <a rel='#SIGNUP_FORM' class='jqm'>Sign up</a>"); } auth_token_key = "&authenticity_token=" + encodeURIComponent(json.auto); }); }; /* Added Functions by Arun */ function isValidName(alphane) { var numaric = alphane; for(var j=0; j<numaric.length; j++){ var alphaa = numaric.charAt(j); var hh = alphaa.charCodeAt(0); // if((hh > 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123)) { // } // else{ if(hh == 34 || hh == 39){ return false; } } return true; } /* Validate Page Name */ function vPageName(pageName, eid){ if(isValidName(pageName)){ document.getElementById(eid).style.backgroundColor="white"; } else{ document.getElementById(eid).style.backgroundColor="#FDEEF4"; } } /* Functions for Page selections */ function get_lastChildId(id){ var y=document.getElementById(id).lastChild; while (y.nodeType!=1) { y=y.previousSibling; if(y == null) return "t1"; } return y.id; } function get_firstChildIdWithReport(id){ /*var y=document.getElementById(id).firstChild; while (1) { if(y.nodeType==1 && _moduleLayout[y.id]) return y.id; y=y.nextSibling; if(y == null)*/ if(multiDash.defaultDashboard != -1 && multiDash.defaultPage != -1) return multiDash.dashObj[multiDash.defaultDashboard].pages[multiDash.defaultPage].id; else return multiDash.dashObj[0].pages[0].id; //} } function get_firstChildId(id){ var y=document.getElementById(id).firstChild; while (y.nodeType!=1) { y=y.nextSibling; if(y == null) return "t1"; } return y.id; } /* Print message while saving, editing Dashboard and Pages */ function Message(msgDiv, msg){ $('#'+msgDiv).html(msg); // $('#'+msgDiv).show('slow'); setTimeout(function (){ $('#'+msgDiv).html(""); }, 5000); } /* Will return the position of the report in the dashboard */ function getModulePosition(moduleId){ for(var i in _moduleLayout){ for(var j=0; j<_moduleLayout[i].length; j++){ modArray=_moduleLayout[i][j].split(":"); if(modArray[0] == moduleId){ var msg=getLabel('Report already added on Dashboard Tab')+" '"+$("#"+i+" .hover").text() +"' Column -"+ modArray[1].split("c")[1]+"."; Message('rptlist_msg', msg); return true; } } } } /* Function to add Page */ function addPage(pageName){ if(pageName.length<1){ alert(geLabel('Please Specify Page Name')); return false; } if(!isValidName(pageName)){ alert(getLabel("Enter valid Page Name")); return false; } var pageId=getNextSequenceId(); showHideTabs(1, 0, -1); $("#main_nav").append('<li id="' + pageId + '"><b class="hover">'+pageName+'</b><span class=arrow> </span></li>'); $('#pageSettings tr:last').after('<tr id="trED'+pageId+'"><td class=dragHelp title="'+getLabel("Drag to change order.")+'"></td><td><input type="text" id="ED'+pageId+'" value="'+pageName+'" Maxlength="16" onkeyup="vPageName(this.value, this.id)"></td><td><a class="clickable" onclick="renameDashPage(\''+pageId+'\')">Rename</a> | <a class="clickable" onclick="removePage(\''+pageId+'\')">Remove</a></tr>'); updateDnD('#pageSettings', '#dashMsg'); multiDash.addPage2dashboard(pageId, pageName); _columnLayout[pageId]=Layout['L_2_0']; var cts = "#main_nav"; var its = "li"; var t = $.jpolite.Nav.tabs; $.jpolite.Nav.its = $(its, cts).each(function(){ if(this.id == pageId){ this.modules = {}; $(".arrow", this).click(function (){ $("#pageConfId").toggle(); $("ul.layout li a").removeClass('selected'); $("#"+multiDash.getPageLayout()).addClass('selected'); }); $(".hover", this).click(function (){ if($(this).text().length >0 && multiDash.isShared!=1){ $(this).html("<input type=textbox value='"+$(this).text()+"' class=tabTxt id=tabTxtId Maxlength='16' onkeyup='vPageName(this.value, this.id)'>"); $(".tabTxt", this).focus(); $(".tabTxt", this).focusout(function(i){ if(this.value){ multiDash.renamePage(this.parentNode.parentNode.id, this.value); $(this).parent().html(this.value); } }); $(".tabTxt", this).keydown(function(i){ if(i.keyCode == 13){ multiDash.renamePage(this.parentNode.parentNode.id, this.value); $(this).parent().html(this.value); } }); } }); } this.showModules = $.jpolite.Nav.showModules; t[this.id] = this; //"this" is a main nav item DOM node $(this).click(function(e){ if (!$(this).cub_on() && !$(".on",this).length){ return false; } if (e.originalEvent || $(".on",this).length == 0) { $.jpolite.Nav.switchTab(this.id); $(".on", $.jpolite.Nav.its).not(this).not($(this).parents()).removeClass("on"); } $(this.parentNode).click(); return false; }); }); Message('dashMsg','<font color=blue>'+getLabel("Added page")+' '+pageName+' </font>'); $.jpolite.gotoTab(pageId); showHideNavButtons(); } /* Remove page from dashboard */ function removePage(pageId){ var layoutArray=_moduleLayout[pageId]; if(!layoutArray) layoutArray=""; for(var i=0; i<layoutArray.length; i++){ var splittedArray=layoutArray[i].split(":"); if(splittedArray[0].length > 1){ } } $.jpolite.Nav.its.map(function(){ var m = this.modules; for (var i in m){ if(this.id == pageId){ m[i].close(); } } }); if($.jpolite.Nav.tabs[pageId]){ delete $.jpolite.Nav.tabs[pageId]; showHideTabs(0, 1, pageId); $.jpolite.Content.saveLayout(); $("#" + pageId).remove(); $("#trED" + pageId).remove(); multiDash.removePageFromDashboard(pageId); removeNote(sessionid, pageId, "All"); Message('dashMsg','<font color=blue>'+getLabel("Page Removed")+'.</font>'); } return false; } function enableLoginFilter(pageId){ var value = false; if($("#enableLoginFilter"+pageId+":checked").length) value = true; pageLoginFilterObj[pageId] = value; saveContent("pageFilter", 0, JSON.stringify(pageLoginFilterObj)); if(value) Message('dashMsg','<font color=blue>Login filter is enabled for the page <b>'+multiDash.getPageNameById(pageId)+ '</b></font>'); else Message('dashMsg','<font color=blue>Login filter is disabled for the page <b>'+multiDash.getPageNameById(pageId)+ '</b></font>'); if(multiDash.getSelectedPageId() == pageId){ isCurrentPageRefreshRequired = true; } } /* Rename Page */ function renameDashPage(pageId){ var PageName = $('#'+pageId+' .hover').html(); if(PageName){ var innerString = $('#'+pageId).html(); var newPageName = $('#ED'+pageId).prop('value'); $('#'+pageId).html(innerString.replace(new RegExp(PageName,'g'), newPageName)); multiDash.renamePage(pageId, newPageName); Message('dashMsg','<font color=blue>'+getLabel("Page renamed to")+' '+newPageName+' </font>'); } } /* Add dashboard */ function addDash(dashName){ var dashId=getNextSequenceId(); multiDash.adddashboard(dashId, dashName, userId, userName); addDashHtml(dashId, dashName); Message('dashMsg','<font color=blue>'+getLabel("Dashboard")+' '+dashName+' '+getLabel("added")+'</font>'); } /* Rename Dashboard */ function renameDash(dashId){ var newDashName = $('#ED'+dashId).prop('value'); multiDash.renameDashboard(dashId, newDashName); renameDashHtml(dashId, newDashName); Message('dashMsg','<font color=blue>'+getLabel("Dashboard renamed to")+' \''+newDashName+'\' </font>'); } /* Remove dashboard */ function removeDash(dashId){ multiDash.removeDashboard(dashId); removeNote(sessionid, dashId, "All"); $("#trED" + dashId).remove(); removeDashHtml(dashId); Message('dashMsg','<font color=blue>'+getLabel("Dashboard Removed")+' </font>'); } /* Create Report DashLink */ function createReportDashLink(rptId,dashId,pageId){ multiDash.setReportDashLink(rptId, dashId, pageId); Message('dashMsg','<font color=blue>'+getLabel("Link Created")+' </font>'); } function addToModuleLayout(rptId){ var ul = document.getElementById('main_nav'); var lis = ul.getElementsByTagName('li'); for (var i=0; i<lis.length; i++){ if(lis[i].className.indexOf( "on" ) !== -1){ var pageId=lis[i].id; break; } } var layoutArray=_moduleLayout[pageId]; if(!layoutArray){ layoutArray=new Array(); } layoutArray.push(rptId+":c1"); _moduleLayout[pageId]=layoutArray; } var _modules={ }; var _moduleLayout={ }; var _columnLayout = { _default: { bg:'normal', c1:'span-8', c2:'span-8', c3:'span-8 last', c4:'hide' } }; //var session_columnLayout = {}; /* Layout styles */ var Layout = { L_1_0: { bg:'normal', c1:'span-24 last', c2:'span-24 last', c3:'span-24 last', c4:'span-24 last' }, L_2_0: { bg:'normal', c1:'span-12', c2:'span-12 last', c3:'span-12', c4:'span-12 last' }, L_2_1: { bg:'normal', c1:'span-6', c2:'span-18 last', c3:'span-6', c4:'span-18 last' }, L_3_0: { bg:'normal', c1:'span-8', c2:'span-8', c3:'span-8 last', c4:'span-8 last' }, L_3_1: { bg:'normal', c1:'span-24 last', c2:'span-12', c3:'span-12 last', c4:'span-24 last' }, L_3_2: { bg:'normal', c1:'span-12', c2:'span-12 last', c3:'span-24 last', c4:'span-24 last' }, L_4_0: { bg:'normal', c1:'span-6', c2:'span-6', c3:'span-6', c4:'span-6 last' }, L_4_1: { bg:'normal', c1:'span-16', c2:'span-8 last', c3:'span-8', c4:'span-8 last' }, L_4_2: { bg:'normal', c1:'span-24 last', c2:'span-8', c3:'span-8', c4:'span-8 last' }, L_4_3: { bg:'normal', c1:'span-8', c2:'span-8', c3:'span-8 last', c4:'span-24 last' }, L_4_4: { bg:'normal', c1:'span-8', c2:'span-16 last', c3:'span-8', c4:'span-8 last' }, L_4_5: { bg:'normal', c1:'span-24 last', c2:'span-12', c3:'span-12 last', c4:'span-24 last' }, L_4_6: { bg:'normal', c1:'span-16', c2:'span-8 last', c3:'span-8', c4:'span-16 last' } }; function deleteFromArrayByValue(sourceArray, deleteElement){ var i=0; for(i=0; i<sourceArray.length; i++){ if(sourceArray[i] == deleteElement){ sourceArray.splice(i, 1); break; } } } //var gnameHash={}; defined in ws.ext.js file function sortUniqReplaceReportIds(pageArray){ var reportIdArray=new Array(); for(var i=0; i<pageArray.length; i++){ for(var j=0; j<multiDash.dashObj.length; j++){ for(var k=0; k<multiDash.dashObj[j].pages.length; k++){ if(multiDash.dashObj[j].pages[k].id == pageArray[i]){ for(var l=0; multiDash.dashObj[j].pages[k].reports && l<multiDash.dashObj[j].pages[k].reports.length; l++){ if(multiDash.dashObj[j].pages[k].reports[l].ReportId.indexOf('htm')<0) reportIdArray.push(multiDash.dashObj[j].pages[k].reports[l].ReportId); } } } } } reportIdArray=unique(reportIdArray.sort()); gnameHash={}; for(i=0; i<reportIdArray.length; i++){ gnameHash[reportIdArray[i]]=reportIdArray[i]; replaceNewGname(reportIdArray[i]); } } function addElementToForm(formName, type, name, value) { var element = document.createElement("input"); element.setAttribute("type", type); element.setAttribute("value", value); element.setAttribute("name", name); var form = document.getElementsByName(formName)[0]; form.appendChild(element); } function fillTo(val, checked){ var prev=$("#EmailTo").prop('value'); if(!checked && val.length>0){ prev=prev.replace(val,"").replace(",,",","); if(prev.length<5) prev=""; } else{ if(prev.length>0 && prev.indexOf(val)<0) prev=prev+","+val; else if(prev.length<1) prev=val; } $("#EmailTo").prop('value', prev); } function onoffEmaildiv(){ if($("#CEmail").prop('checked')) $("#email").show(); else $("#email").hide(); } function exportDashboard(){ var dashArray=$("input:checked[name=dash]").map(function() { return $(this).prop('id'); }).get(); var pageArray=$("input:checked[name=page]").map(function() { return $(this).prop('id'); }).get(); var params="" , prev=-1; sortUniqReplaceReportIds(pageArray); addElementToForm("exportForm", "hidden", "conn", getFromURL('conn')); addElementToForm("exportForm", "hidden", "loc", "D"); for(var i=0; i<pageArray.length; i++){ for(var j=0; j<multiDash.dashObj.length; j++){ for(var k=0; k<multiDash.dashObj[j].pages.length; k++){ if(multiDash.dashObj[j].pages[k].id == pageArray[i]){ if(prev != j){ addElementToForm("exportForm", "hidden", "dashname"+j, multiDash.dashObj[j].name); prev=j; } addElementToForm("exportForm", "hidden", "pagename-"+j+"-"+k, multiDash.dashObj[j].pages[k].name); params=""; for(var l=0; multiDash.dashObj[j].pages[k].reports && l<multiDash.dashObj[j].pages[k].reports.length; l++){ if(params.length>0) params+=","; if(multiDash.dashObj[j].pages[k].reports[l].ReportId.indexOf('htm')<0) params+=gnameHash[multiDash.dashObj[j].pages[k].reports[l].ReportId]+":"+multiDash.dashObj[j].pages[k].reports[l].DisplayType; } addElementToForm("exportForm", "hidden", "page-"+j+"-"+k, params); // k=multiDash.dashObj[j].pages.length-1; // j=multiDash.dashObj.length-1; } } } } if($("#CEmail").prop('checked')){ if($("input:checkbox[name=Export]").prop('checked')){ addElementToForm("exportForm", "hidden","export", 'Y'); } addElementToForm("exportForm", "hidden","email", 'Y'); addElementToForm("exportForm", "hidden","mailto", $("#EmailTo").prop('value')); addElementToForm("exportForm", "hidden","subject",$("#Subject").prop('value')); addElementToForm("exportForm", "hidden","content",$("#Content").prop('value')); } if(pageArray.length>0){ document.exportForm.submit(); } else{ alert(getLabel("Select Dashboard/Page To Export.")); } } /* Share Dashboard */ function shareDash(){ var i=0, j=0; var userStr=$("input:checked[name=user]").map(function() { return $(this).val(); }).get().join(':'); var groupStr=$("input:checked[name=group]").map(function() { return $(this).val(); }).get().join(':'); var pageArray=$("input:checked[name=page]").map(function() { return $(this).prop('id'); }).get(); var dashArray=$("input:checked[name=dash]").map(function() { return $(this).prop('id'); }).get(); var pageForDashArray="", accessStr="", i=0; for(i=0; i<dashArray.length; i++){ pageForDashArray=multiDash.getDashboardPages(dashArray[i]); for(j=0; j<pageForDashArray.length; j++) deleteFromArrayByValue(pageArray, pageForDashArray[j].split(':')[0]); } accessStr="Users="+userStr+";Groups="+groupStr; if(userStr.length >0 || groupStr.length >0){ for(i=0; i<dashArray.length; i++){ shareObject(sessionid, dashArray[i], 'D', accessStr, 'Remove'); shareObject(sessionid, dashArray[i], 'D', accessStr, 'Add'); dashPageArray=multiDash.getDashboardPages(dashArray[i]); for(j=0; j<dashPageArray.length; j++) shareObject(sessionid, dashPageArray[j].split(':')[0], 'P', accessStr, 'Remove'); } for(i=0; i<pageArray.length; i++){ shareObject(sessionid, pageArray[i], 'P', accessStr, 'Remove'); shareObject(sessionid, pageArray[i], 'P', accessStr, 'Add'); } if(dashArray.length == 0 && pageArray.length ==0) Message('dashMsg','<font color=orange>'+getLabel("No Dashboard or Page selected")+'. </font>'); else Message('dashMsg','<font color=blue>'+getLabel("Dashboard and pages shared successfully")+'. </font>'); getAllSharedObjects(populateSharedList); } else{ Message('dashMsg','<font color=orange>'+getLabel("No users or groups selected")+'. </font>'); } } var lastPageDashClick=-1; function checkForUnshare(userGroupName, userGroup){ if(lastPageDashClick == -1) return; var dashPageType=lastPageDashClick.split(':')[0]; var dashPageId=lastPageDashClick.split(':')[1]; var accessStr=""; if(isSharedWith(dashPageId, userGroupName)){ if(dashPageType=='D') Name=multiDash.getDashNameById(dashPageId); else Name=multiDash.getPageNameById(dashPageId); if(userGroup=="user") accessStr="Users="+userGroupName+";Groups="; else accessStr="Users=;Groups="+userGroupName; if(confirm(getLabel('Stop sharing')+" [ "+Name+" ]"+getLabel('with')+" "+userGroup+" [ "+userGroupName+" ]")){ shareObject(sessionid, dashPageId, dashPageType, accessStr, 'Remove'); getAllSharedObjects(); } else{ $("input:checkbox[value="+userGroupName+"]").prop("checked", true); } } } function isSharedWith(dashPageId, userGroupName){ if(typeof _shared[dashPageId] != 'undefined'){ for(i in _shared[dashPageId].users){ if(_shared[dashPageId].users[i] == userGroupName) return true; } } return false; } function showSharedWith(type,dashPageId){ if(typeof _shared[dashPageId] != 'undefined'){ lastPageDashClick=type+":"+dashPageId; s.openAll(); for(var i in _shared[dashPageId].users){ $("input:checkbox[value='"+_shared[dashPageId].users[i]+"']").prop("checked", true); } } } /* * */ function fillConfirmSharing(){ var userArray=$("input:checked[name=user]").map(function() { return $(this).prop('title'); }).get(); var groupArray=$("input:checked[name=group]").map(function() { return $(this).prop('title'); }).get(); var pageArray=$("input:checked[name=page]").map(function() { return $(this).prop('title'); }).get(); var dashArray=$("input:checked[name=dash]").map(function() { return $(this).prop('title'); }).get(); var dashIds=$("input[name=dash]").map(function() { return $(this).prop('id'); }).get(); var htmlstr="<p>You have selected</p><ul>" for(var i=0; dashIds && i<dashIds.length; i++){ var dashName=$("#"+dashIds[i]).prop("title"); var pageArray=$("input:checked[class="+dashIds[i]+"]").map(function() { return $(this).prop('title'); }).get(); if(pageArray.length>0) htmlstr+="<li><span class=P>"+pageArray.join(', ')+"</span> page"+(pageArray.length>1?'s':'')+" in <span class=D>"+dashName+"</span> dashboard</li>" } htmlstr+="</ul>"; htmlstr+="<u>"+getLabel("Users")+":</u><ul>"; for(i=0; i<userArray.length; i++) htmlstr+="<li>"+userArray[i]+"</li>"; htmlstr+="</ul>"; htmlstr+="<u>"+getLabel("Group")+":</u><ul>"; for(i=0; i<groupArray.length; i++) htmlstr+="<li>"+groupArray[i]+"</li>"; htmlstr+="</ul>"; $("#confirmShare").html(htmlstr); } /* * Function called when you click on dashboard or page. And we check share and unshare options for last clicked dashboard or page. */ function checkDashPage(dashId, pageId){ lastPageDashClick=-1; $("input:checked[name=user]").prop("checked", false); $("input:checked[name=group]").prop("checked", false); if(pageId == -1 && ($("input:checked[id="+dashId+"]").is(':checked'))){ //Dashboard Name clicked $("input:checkbox[class="+dashId+"]").prop("checked", true); showSharedWith('D',dashId); } else if(pageId == -1 && (!$("input:checked[id="+dashId+"]").is(':checked'))){ //Dashboard Name clicked $("input:checkbox[class="+dashId+"]").prop("checked", false); } else { if($("input:checked[id="+pageId+"]").is(':checked')){ $("input:checkbox[id="+dashId+"]").prop("checked", false); showSharedWith('P', pageId); } else{ $("input:checkbox[id="+dashId+"]").prop("checked", false); } if($('input:checkbox:not(:checked)[class='+dashId+']').length == 0){ $("input:checkbox[id="+dashId+"]").prop("checked", true); } } fillConfirmSharing(); } function addDashHtml(id, name){ $("ul.subnav").append('<li><a rel="'+id+'">'+name+'</a></li>'); $("ul.subnav li a").unbind('click', dashClick); $("ul.subnav li a").bind('click', dashClick); $('#dashSettingTable tr:last').after('<tr id="trED'+id+'"><td class=dragHelp title="'+getLabel("Drag to change order.")+'"></td><td><input type="text" id="ED'+id+'" value="'+name+'" Maxlength="16" onkeyup="vPageName(this.value, this.id)"></td><td><a class="clickable" onclick="renameDash(\''+id+'\')">Rename</a> | <a class="clickable" onclick="removeDash(\''+id+'\')">Remove</a></tr>'); updateDnD('#dashSettingTable', '#dashMsg'); } function renameDashHtml(dashId, newDashName){ $("[rel="+dashId+"]").html(newDashName); if(multiDash.getSelectedDashId() == dashId) $("#defaultDash").text(newDashName); } function removeDashHtml(dashId){ $("[rel="+dashId+"]").remove(); } /* moved from json.js */ /* ** Function to clear the current graphs. ** Use this function when you want to redraw graphs. ** Used when we are switching dashboards ** If you are not using it, The already drawn graphs treated as static modules. **/ function clearGraphs(){ $("#c1").empty(); $("#c2").empty(); $("#c3").empty(); $("#c4").empty(); } var refreshDashPage=false; function applyDnD(idClass, msgIdClass){ $(idClass).tableDnD({ onDragClass: "dragClass", onDrop: function(table, row) { refreshDashPage=true; } }); } function updateDnD(idClass, msgIdClass){ $(idClass).tableDnDUpdate({ onDragClass: "dragClass", onDrop: function(table, row) { refreshDashPage=true; } }); } function getRowIdByTableId(tblId){ var rows = $('#'+tblId)[0].tBodies[0].rows; var idArray=new Array(), id=new Array(); for (var i=0; i<rows.length; i++) { id=rows[i].id.split('trED'); if(typeof id[1] != 'undefined') idArray.push(id[1]); } return idArray; } /* ** Save positions of reports after drag and drop **/ function saveDragAndDropReports(){ var defaultPage=multiDash.dashObj[multiDash.defaultDashboard].pages[multiDash.defaultPage]; if(typeof defaultPage == 'undefined') return; var modulePositionArray=_moduleLayout[defaultPage.id]; var i=0, idPos=''; for(i=0; i<modulePositionArray.length; i++){ idPos=modulePositionArray[i].split(':'); multiDash.setReportPosition(idPos[0],idPos[1]); } if(multiDash.isShared != 1) savePages(getSelectedDashId(), getSelectedPageId()); } function saveDragAndDropPages(tblId){ if(!refreshDashPage && isCurrentPageRefreshRequired){ refreshCurrentPage(); return; } if(!refreshDashPage || (multiDash.isShared==1)) return; refreshDashPage=false; var pageIdArray=getRowIdByTableId(tblId); if(pageIdArray.length>0){ var newDash = jQuery.extend(true, {}, multiDash.dashObj[multiDash.defaultDashboard]); for(i=0; i<pageIdArray.length; i++) //newDash.pages[i]="@#"+pageIdArray[i]; newDash.pages[i]={ id: pageIdArray[i], name:multiDash.getPageNameById(pageIdArray[i]) } saveContent("Dashboard", newDash.id, $.toJSON(newDash)); saveContent("DashPage", multiDash.dashObj[multiDash.defaultDashboard].id, pageIdArray.join(':')); /***Store selected dashboard and page id to restore again ****/ dashIdCache=multiDash.getSelectedDashId(); pageIdCache=multiDash.getSelectedPageId(); clearGraphs(); multiDash=""; initDashboard(0); /*** Reset stored dashboard and page id to -1 ****/ dashIdCache=-1; pageIdCache==-1; Message('dashMsg','<font color=blue>'+getLabel("Page order saved.")+' </font>'); } } function saveDragAndDropDashboard(tblId){ multiDash.selectedDefaultDashboard = document.getElementById('defaultDashDiv').value; if(multiDash.selectedDefaultDashboard){ //multiDash.setDefaultDash(multiDash.selectedDefaultDashboard); saveContent("defaultDashId", 0, multiDash.selectedDefaultDashboard); defaultDashIdCache = multiDash.selectedDefaultDashboard; } if(!refreshDashPage || (multiDash.isShared==1)) return; refreshDashPage=false; var dashIdArray=getRowIdByTableId(tblId); var defaultDash = document.getElementById('defaultDashDiv').value; multiDash.selectedDefaultDashboard = document.getElementById('defaultDashDiv').value; if(dashIdArray.length>0){ saveContent("DashboardCollection", 0, dashIdArray.join(':')); var liStr=""; if($("ul.subnav").html().indexOf('Shared..') > 0) liStr='<li class=topBdr><a rel="222" title="Show dashboards shared to me.">Shared..</a></li>'; else if($("ul.subnav").html().indexOf('Personal..') > 0) liStr='<li class=topBdr><a rel="111" title="Show dashboards created by me.">Personal..</a></li>'; else liStr=""; $("ul.subnav").html(''); for(var i=0; i<dashIdArray.length; i++){ $("ul.subnav").append('<li><a rel="'+dashIdArray[i]+'">'+multiDash.getDashNameById(dashIdArray[i])+'</a></li>'); } if(liStr.length>10) $("ul.subnav").append(liStr); $("ul.subnav li a").unbind('click', dashClick); $("ul.subnav li a").bind('click', dashClick); Message('dashMsg','<font color=blue>'+getLabel("Dashboard order saved.")+' </font>'); } } /* **Populate hashes used as base structure in showcase. **Example: **_modules:{"100748":{"url":"100032","f":"T"},"100749":{"url":"100036","f":"N"},"100750":{"url":"100059","f":"G"},"100752":{"url":"100058","f":"T"},"100753":{"url":"100059","f":"B"},"100754":{"url":"100058","f":"T"}} **_moduleLayout:{"100747":["100748:c1","100749:c3","100750:c2"],"100751":["100752:c1","100753:c2","100754:c3"]} **_columnLayout:{"100747":{"bg":"normal","c1":"span-8","c2":"span-8","c3":"span-8 last","c4":"span-8"},"100751":{"bg":"normal","c1":"span-12","c2":"span-12 last","c3":"span-24 last","c4":"span-24 last"}} **session_columnLayout:{"100747":"L_3_0","100751":"L_3_2"} **/ function populateModules(){ var str=""; var i=0; var tmpArray1=new Array(); /* Get chart type for User */ if(chartOption){ //var str=getContent("CHART", "0"); var str = "Jqplot"; if(str.length>1) Graph=str; } else{ Graph="Jqplot"; $("#chartOption").hide(); } //enableDisableByChartType(); $("#main_nav").empty(); str=multiDash.getCurrentPages(); if(str.length<1){ addPage("Page1"); } else{ for(i=0; i<str.length; i++){ tmpArray1=str[i].split(":"); if(i<numTabs) { $("#main_nav").append('<li id="' + tmpArray1[0] + '"><b class="hover">'+tmpArray1[1]+'</b><span class=arrow> </span></li>'); } else{ $("#main_nav").append('<li style="display:none" id="' + tmpArray1[0] + '"><b class="hover">'+tmpArray1[1]+'</b><span class=arrow> </span></li>'); } } } refreshModules(); } function refreshModules(){ var tmpArray1=new Array(); var tmpArray2=new Array(); _modules={}; var str=multiDash.getAllReports(); if(str.length>0){ for(var i=0; i<str.length; i++){ tmpArray1=str[i].split("@"); ID=tmpArray1[0]; tmpArray2=tmpArray1[1].split(":"); _modules[ID]={url:tmpArray2[0], f:tmpArray2[1]}; } } _moduleLayout={}; str=multiDash.getReportLayout(); if(str.length>0){ for(var i=0; i<str.length; i++){ tmpArray1=str[i].split("@"); ID=tmpArray1[0]; tmpArray2=tmpArray1[1].split(","); _moduleLayout[ID]=tmpArray2; } } _columnLayout={}; //session_columnLayout={}; str=multiDash.getCurrentPages(); for(var i=0; i<str.length; i++){ tmpArray1=str[i].split(":"); _columnLayout[tmpArray1[0]]=Layout[tmpArray1[2]]; //session_columnLayout[tmpArray1[0]]=tmpArray1[2]; } } function SwitchPersonalShared(ShareType){ if(ShareType == 'P'){ $("#addReport").show(); $("#dashsettings").show(); $("#settings").show(); $("#share").show(); $("#Export").hide(); $("#print").hide(); $("#DN").show(); $("#PN").show(); $("#Copy").hide(); $('#sharedDashPageSettings').hide(); } else { $("#addReport").hide(); $("#dashsettings").hide(); $("#settings").hide(); $("#share").hide(); $("#Export").hide(); $("#print").hide(); $("#DN").hide(); $("#PN").hide(); $("#Copy").show(); $('#sharedDashPageSettings').hide(); } } /* **switch beetween personal and shared **/ function enableDisableControls(){ if(multiDash && multiDash.isShared == 1){ SwitchPersonalShared('S'); } else { SwitchPersonalShared('P'); } } /* ** Function called on dash click. ** Do all the actions when dashboard is loaded. This is same as login freshly. Only difference is the cache contains some data. **/ var dashClick=function() { var option=0; if(multiDash.getSelectedDashId() == this.rel){ alert(getLabel("Dashboard Already Selected.")); return false; } if(this.text == "Personal.."){ reqState=0; } else if(this.text == "Shared.."){ reqState=1; } else{ $("#defaultDash").text(this.innerHTML); multiDash.setDefaultDash(this.rel); multiDash.defaultPage=0; reqState=multiDash.isShared; option=1; } multiDash.defaultPage=0; clearGraphs(); initDashboard(option); setNotesCount('D'); } /* ** Function to populate dashboard. **Steps Followed: ** 1. Get dashboard JSON from web service . ** 2. Show personal or shared ui depends on JSON. ** 3. Configure UI using JSON data. **/ function populateDashboard(option){ if(option==1) return false; if(userId==""){ getUserAccess(sessionid); getUserProperties(sessionid); initLabels(); initTitleBar(); } getDashboardJSON(); enableDisableControls(); var dashArray=multiDash.getDashboards(); $("ul.subnav").empty(); for(var i=0; i<dashArray.length; i++){ idName=dashArray[i].split(':'); $("ul.subnav").append('<li><a rel="'+idName[0]+'">'+idName[1]+((multiDash.isShared)?' ('+idName[2]+')':'')+'</a></li>'); } if(multiDash.isShared == 1){ $("ul.subnav").append('<li class=topBdr><a rel="111" title="Show dashboards created by me.">Personal..</a></li>'); } else{ if(getSharedList(sessionid, 'P', 1).length > 0 || getSharedList(sessionid, 'D', 1).length > 0) $("ul.subnav").append('<li class=topBdr><a rel="222" title="Show dashboards shared to me.">Shared..</a></li>'); } $("ul.topnav li span").hover(function() { $(this).parent().find("ul.subnav").slideDown('fast').show(); $(this).parent().hover(function() { }, function(){ $(this).parent().find("ul.subnav").slideUp('slow'); }); }); $("ul.subnav li a").click(dashClick); if(multiDash.defaultDashboard >= -1){ $("#defaultDash").text(multiDash.dashObj[multiDash.defaultDashboard].name); $("#defaultDash").val(multiDash.dashObj[multiDash.defaultDashboard].name); $("#defaultDashDiv").text(multiDash.dashObj[multiDash.defaultDashboard].name); $("#defaultDashDiv").val(multiDash.dashObj[multiDash.defaultDashboard].name); } setNotesCount('D'); } function setNotesCount(type){ var notes=getNotes(sessionid, type == 'D'?multiDash.getSelectedDashId():multiDash.getSelectedPageId(), null);//"Date", "PostedBy", "NoteId", "Note" if(type == 'D') $('#DN').html(getLabel('Dashboard Notes')+' ('+notes.length+')'); else $('#PN').html(getLabel('Page Notes')+' ('+notes.length+')'); } /*** Function to show the notes for dashboard and page. Called in index.html ***/ function showNotes(type){ if(type == 'D'){ displayNotes(multiDash.getSelectedDashId(), "Notes for <span class=D>"+multiDash.getDashNameById(multiDash.getSelectedDashId())+" </span>"+getLabel("Dashboard")); } else{ displayNotes(multiDash.getSelectedPageId(), "Notes for <span class=P>"+multiDash.getPageNameById(multiDash.getSelectedPageId())+" </span>"+getLabel("Page")); } } //Display Notes icon clicked function displayNotes(noteId, title){ $(function() { $( "#dialogS" ).dialog({ height:"auto", width:"auto", modal: false, resizable: true, autoResize: true, autoOpen: false, position:['center',100] }); }); $("span.ui-dialog-title").html(title); var notes=getNotes(sessionid, noteId, null);//"Date", "PostedBy", "NoteId", "Note" if(multiDash.getSelectedDashId() == noteId) $('#DN').html(getLabel('Dashboard Notes')+' ('+notes.length+')'); else $('#PN').html(getLabel('Page Notes')+' ('+notes.length+')'); htmlstr="<div class=noteDiv><ul class=noteUl>"; if(notes.length==0) htmlstr+="<li><center style='padding-top:20px'>"+getLabel('There are no notes')+".</center></li>"; for(var i=0; i<notes.length; i++){ htmlstr+="<li class=noteLi><table class=noteTable><tr><td class=noteUser rowspan=2>"+notes[i][1]+"</td><td class=noteContent>"+notes[i][3]+"</td><td class=noteOptions>"; if((multiDash.isShared != 1) || (notes[i][1] == userId)) htmlstr+="<div class=deleteNote id='"+noteId+":"+notes[i][2]+"' title='Remove Note'></div>"; htmlstr+="</td></tr><tr><td class=noteSent>"+formatDate(notes[i][0])+"</td><td></td></tr></table></li>"; } htmlstr+="</ul></div>"; htmlstr+="<div class=noteWrite><table class=noteTable><tr><td colspan=3><textarea class=noteTextarea id='"+noteId+"' ></textarea> </td></tr></table></div>"; $("#dialogS").html(htmlstr).dialog().dialog("open"); } function getLabel(label){ return label; } function returnMeasureLinksbyModuleId(moduleId){ var rptId=multiDash.getReportIdById(moduleId); var reportMetaDataArray = getReportMetaData(sessionid, rptId); var measNameArr=[], measIdArr=[]; if(reportMetaDataArray && reportMetaDataArray.length>23){ measNameArr=reportMetaDataArray[14].split(":"); measIDArr=reportMetaDataArray[23].split(":"); } var htmlStr="<ul class=measUl>"; for(var i=0; i<measNameArr.length; i++) htmlStr+="<li onclick='putGraphSettingHtml(\"Measures\","+moduleId+","+measIDArr[i]+",\""+measNameArr[i]+"\")'>"+measNameArr[i]+"</li>"; htmlStr+="</ul>"; return htmlStr; } function setGraphOptions(id){ $(function() { $( "#dialogS" ).dialog({ height: 'auto', width: 'auto', modal: false, resizable: true, autoResize: true, autoOpen: false, position:['center',100] }); }); $("span.ui-dialog-title").text(getLabel('Graph Settings')); htmlstr='<div id="GSmain"> <div id="GSList"> <div id=Grid onclick=\'putGraphSettingHtml("Grid",'+id+')\'>'+getLabel("Grid")+'</div> <div id=Axes onclick=\'putGraphSettingHtml("Axes",'+id+')\'>'+getLabel("Axes")+'</div> <div id=Legends onclick=\'putGraphSettingHtml("Legends",'+id+')\'>'+getLabel("Legends")+'</div> <div id=TopX onclick=\'putGraphSettingHtml("TopX",'+id+')\'>'+getLabel("Top X")+'</div> <div id=Threshold onclick=\'putGraphSettingHtml("Threshold",'+id+')\'>'+getLabel("Threshold")+'</div> <div id=Measures>'+getLabel("Measure:")+'</div>'+returnMeasureLinksbyModuleId(id)+' <div id=resetAll><button class=button_red type="button" onclick ="resetAllPref('+id+')">'+getLabel("Reset All")+'</button></div> </div> <div id="GSwork"> </div>'; $("#dialogS").html(htmlstr).dialog().dialog("open"); putGraphSettingHtml("Grid",id); return false; } function putGraphSettingHtml(option,id, measId, measName){ $(".gsel").removeClass("gsel"); $("#"+option).addClass("gsel"); $("#GSwork").html(getHtmlForOption(option,id, measId, measName)); $("div.jPicker").remove(); populateGraphOptions(option,id, measId, measName); $("#measColor,#upperColor,#lowerColor").jPicker({ window: { title: null, effects: { type: 'slide', speed: { show: 'slow', hide: 'fast' } }, position: { x: "center", y:"center"}, expandable: false }, images:{ clientPath: '/showcase/css/images/jPicker/' } }); } function populateGraphOptions(option,id, measId, measName){ if(option == "Grid"){ $("#color").val(displayObj.getBgColor()); $("[name=showgridlines]").filter("[value="+displayObj.getShowGridLines()+"]").prop("checked",true); $("[name=shadow]").filter("[value="+displayObj.getShadow()+"]").prop("checked",true); $("select#ShadowAngle option[value="+displayObj.getShadowAngle()+"]").prop("selected", "selected"); $("select#ShadowOffset option[value="+displayObj.getShadowOffset()+"]").prop("selected", "selected"); $("[name=drawBorder]").filter("[value="+displayObj.getdrawBorder()+"]").prop("checked",true); $("[name=pointLabel]").filter("[value="+displayObj.getpointLabel()+"]").prop("checked",true); $("select#pointTooltip option[value="+displayObj.getpointTooltip()+"]").prop("selected", "selected"); } else if(option == "Axes"){ $("select#pad option[value="+displayObj.getPad()+"]").prop("selected", "selected"); $("[name=axes]").filter("[value="+displayObj.getMultiAxes()+"]").prop("checked",true); $("[name=showtickmarks]").filter("[value="+displayObj.getMark()+"]").prop("checked",true); $("[name=showticks]").filter("[value="+displayObj.getShowTicks()+"]").prop("checked",true); $("[name=showlabels]").filter("[value="+displayObj.getShowLabel()+"]").prop("checked",true); $("[name=showticklabels]").filter("[value="+displayObj.getShowTickLabels()+"]").prop("checked",true); $("[name=showxfrom]").filter("[value="+displayObj.getxFrom()+"]").prop("checked",true); $("[name=xpos]").filter("[value="+displayObj.getxPos()+"]").prop("checked",true); if(displayObj.getxLength()>0) $("input#xlen").prop("value", displayObj.getxLength()); } else if (option == "Legends"){ $("[name=showlegend]").filter("[value="+displayObj.getShowLegend()+"]").prop("checked",true); $("[name=showLabels]").filter("[value="+displayObj.getShowLabels()+"]").prop("checked",true); $("[name=legendPlace]").filter("[value="+displayObj.getlegendPlacement()+"]").prop("checked",true); $("select#numOfRows option[value="+displayObj.getNumRows()+"]").prop("selected", "selected"); $("select#LegendLocation option[value='"+displayObj.getLocation()+"']").prop("selected", "selected"); } else if (option == "TopX"){ var topxType=displayObj.getTopxType(); var val=displayObj.getTopxValues(); $("[name='topx']").filter("[value="+topxType+"]").prop("checked",true); showHideTR(); if(topxType == 'S' || topxType == 'D'){ if(val == 5 || val == 10 || val == 15){ $("[name='num']").filter("[value="+val+"]").prop("checked",true); } else{ $("[name='num']").filter("[value=cust]").prop("checked",true); $("input#custom").prop("value", val); } } else if(topxType == 'M'){ var valArray=val.split(':'); for(var i=0; i<valArray.length; i++) $("[name='nexttopn']").filter("[id=topTxt"+(i+1)+"]").prop("value", valArray[i]); } } else if(option == "Threshold"){ var Threshold=displayObj.getThreshold(); $("#redFrom").val(Threshold.redFrom||0), $("#redTo").val(Threshold.redTo||30), $("#yellowFrom").val(Threshold.yellowFrom||30), $("#yellowTo").val(Threshold.yellowTo||60), $("#greenFrom").val(Threshold.greenFrom||60), $("#greenTo").val(Threshold.greenTo||100), $("#upperVal").val(Threshold.upperValue), $("#upperColor").val(Threshold.upperColor.replace("#","")), $("#upperLine").val(Threshold.upperLine), $("#upperDisp").val(Threshold.upperLabel), $("#lowerVal").val(Threshold.lowerValue), $("#lowerColor").val(Threshold.lowerColor.replace("#","")), $("#lowerLine").val(Threshold.lowerLine), $("#lowerDisp").val(Threshold.lowerLabel), $("[name=spcvalues]").filter("[value="+Threshold.spcLines+"]").prop("checked",true); } else if(option == "Measures"){ var measureDetails=displayObj.RDgetMeasure(measId); if(measureDetails.id){ $("#measId").prop("checked", measureDetails.showMe), $("#measDisp").val(measureDetails.displayAs), $("#measColor").val(measureDetails.color.replace("#","")), $("#curr").val(measureDetails.currency), $("#isShort").val(measureDetails.dispType), $("#prec").val(measureDetails.precision), $("#pre").val(measureDetails.prefix), $("#suf").val(measureDetails.suffix); } } } function showHideTR(){ var topx = $("input[name='topx']:checked").val() ; if(topx == 'S' || topx == 'D'){ $("tr.M").hide(); $("tr.SD").show(); } else if(topx == 'N'){ $("tr.M").hide(); $("tr.SD").hide(); } else{ $("tr.M").show(); $("tr.SD").hide(); } } function resetAllPref(id){ displayObj.RDreset('Grid'); displayObj.RDreset('Axes'); displayObj.RDreset('Legends'); displayObj.RDreset('General settings'); displayObj.RDreset('TopX'); displayObj.RDreset('Threshold'); displayObj.RDreset('Measures'); putGraphSettingHtml('Grid',id); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function resetPref(option, id){ if(option=="Grid"){ displayObj.RDreset('Grid'); } else if(option == "Axes"){ displayObj.RDreset('Axes'); } else if(option == "Legends"){ displayObj.RDreset('Legends'); } else if(option == "General settings"){ displayObj.RDreset('General settings'); } else if(option == "TopX"){ displayObj.RDreset('TopX'); } else if(option == "Measures"){ displayObj.RDreset('Measures'); } else if(option == "Threshold"){ displayObj.RDreset('Threshold'); } putGraphSettingHtml(option,id); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function getHtmlForOption(option, id, measId, measName){ var htmlstr=""; if(option=="Grid"){ htmlstr = '<div class=GSDIV><table class="GStable" cellpadding=0 cellspacing=0 border=0> <tbody> <tr> <td> <input type="checkbox" name="showgridlines" value="true"></td> <td>Show grid lines</td> </tr> <tr> <td></td> <td>Background color <input type=textbox id="color"></td> </tr> <tr> <td> <input type="checkbox" name="shadow" value="true"> </td> <td>Shadow</td> </tr> <tr> <td></td> <td>Angle <select id="ShadowAngle"> <option>0 </option>10 <option>20 </option> <option>30 </option> <option selected="selected">40 </option> </select> </td> </tr> <tr> <td></td> <td>Offset <select id="ShadowOffset"> <option>0 </option> <option selected="selected">1 </option> <option>2 </option> <option>3 </option> <option>4 </option> </select> </td> </tr> <tr> <td> <input type="checkbox" name="drawBorder" value="true"> </td> <td>Border</td> </tr> <tr> <td> <input type="checkbox" name="pointLabel" value="true"> </td> <td>Show point labels <select id="pointTooltip"> <option selected="selected" value="A">Actual</option> <option value="F">Formated </option></td> </tr> </tbody> </table></div><div class=ApplyReset><table width=100% align=center><tr> <td></td> <td> <button type="button" class=button_orange onclick="resetPref(\'Grid\','+id+')">Reset</button> <button type="button" class=button_green onclick="getGrid('+id+')">Apply</button> </td> </tr></table></div>'; } else if(option == "Axes"){ htmlstr = '<div class=GSDIV><table class="GStable" cellpadding=0 cellspacing=0 border=0> <tbody> <tr> <td><input type="checkbox" name="axes" value="true"></td> <td colspan=4>Show multiple axes</td> </tr> <tr> <td></td> <td colspan=4>Pad <select id="pad"> <option>0 </option> <option>10 </option> <option>20 </option> <option>30 </option> <option>40 </option> </select> </td> </tr> <tr> <td> <input type="checkbox" name="showticks" value="true" checked="checked"> </td> <td colspan=4>Show ticks</td> </tr> <tr> <td> <input type="checkbox" name="showtickmarks" value="true" checked="checked"> </td> <td colspan=4>Show tick marks </td> </tr> <tr> <td> <input type="checkbox" name="showlabels" value="true" checked="checked"> </td> <td colspan=4>Show label</td> </tr> <tr> <td> <input type="checkbox" name="showticklabels" value="true" checked="checked"> </td> <td colspan=4>Show tick labels</td> </tr> <tr> <td></td> <td colspan=4>X-axis labels </td> <tr> <td></td> <td colspan=4> <input type="radio" name="xpos" value="A" checked="checked">Angle </td> </tr> <tr> <td></td> <td colspan=4> <input type="radio" name="xpos" value="S">Straight </td> </tr> <tr> <td></td> <td colspan=4>Show</td> </tr> <tr> <td></td> <td> <input type="radio" name="showxfrom" value="first">First </td> <td style="width:15px;border-top:1px solid grey;border-right:1px solid grey;border-bottom:0px"> </td> <td style="width:25px; border-bottom:1px solid grey;"> </td> <td rowspan=2><input type="text" name="showxval" id="xlen" maxlength="2" style="width:20px"> letters in X-axis</td> </tr> <tr> <td></td> <td> <input type="radio" name="showxfrom" value="last">Last </td> <td style="width:15px;border-bottom:1px solid grey;border-right:1px solid grey;border-top:0px"> </td> <td style="width:15px"> </td> </tr> <tr> <td></td> <td colspan=4> <input type="radio" name="showxfrom" value="all" checked="checked">All </td> </tr></tbody> </table></div><div class=ApplyReset><table width=100% align=center> <tr> <td></td> <td colspan=4> <button type="button" class=button_orange onclick="resetPref(\'Axes\','+id+')">Reset </button> <button type="button" class=button_green onclick="getAxes('+id+')">Apply </button> </td> </tr> </table></div>'; } else if(option == "Legends"){ htmlstr = '<div class=GSDIV> <table class=GStable> <tr> <td> <input type="checkbox" name="showlegend" value="true" checked ="checked" /> </td> <td>'+getLabel("Show legends")+' </td> </tr> <tr> <td> <input type="checkbox" name="showLabels" value="true" checked ="checked" /> </td> <td>'+getLabel("Show labels")+' </td> </tr> <tr> <td> </td> <td> <input type="radio" name="legendPlace" value="outsideGrid" checked ="checked" />'+getLabel("Place outside grid")+' </td> </tr> <tr> <td> </td> <td> <input type="radio"name="legendPlace" value="insideGrid" />'+getLabel("Place inside grid")+' </td> </tr> <tr> <td> </td> <td>'+getLabel("Locate legend at")+' <select id ="LegendLocation"> <option value="w">'+getLabel("Left")+' </option> <option value="e">'+getLabel("Right")+' </option> <option value="n">'+getLabel("Top")+' </option> <option value="nw">'+getLabel("Top Left")+' </option> <option value="ne">'+getLabel("Top Right")+' </option> <option value="s">'+getLabel("Bottom")+' </option> <option value="sw">'+getLabel("Bottom Left")+' </option> <option value="se">'+getLabel("Bottom Right")+' </option> </select> </td> </tr> <tr> <td> </td> <td>'+getLabel("Number Of Rows")+' <select id="numOfRows"> <option> </option> <option>1 </option> <option>2 </option> <option>3 </option> <option>4 </option> <option>5 </option> <option>6 </option> <option>7 </option> <option>8 </option> <option>9 </option> <option>10 </option> </select> </td> </tr> </tbody> </table> </div> <div class=ApplyReset> <table width=100% align=center> <tr><td></td> <td colspan=2><button type="button" class=button_orange onclick ="resetPref(\'Legends\','+id+')">'+getLabel("Reset")+' </button><button type="button" class=button_green onclick="getLegend('+id+')">'+getLabel("Apply")+' </button></td> </tr> </table> </div>'; } else if(option == "Threshold"){ htmlstr='<div class=GSDIV> <table class=GStable> <tr><td colspan=4 style="padding-bottom:20px">Insert Threshold Values(%): </td></tr><tr><td style="width:50px;background:#DC3912"></td><td><input type=text id=redFrom value="0" onkeyup="validateThreshold()" class=rangeText></td><td>-</td><td><input type=text id=redTo value="" onkeyup="validateThreshold()" class=rangeText></td></td></tr> <tr><td style="width:50px;background:#FF9900"></td><td><input type=text id=yellowFrom value="" onkeyup="validateThreshold()" class=rangeText></td><td>-</td><td><input type=text id=yellowTo value="60" onkeyup="validateThreshold()" class=rangeText></td></td></tr> <tr><td style="width:50px;background:#109618"></td><td><input type=text id=greenFrom value="60" onkeyup="validateThreshold()" class=rangeText></td><td>-</td><td><input type=text id=greenTo value="100" onkeyup="validateThreshold()" class=rangeText></td></td></tr><tr><td colspan=4><input type="checkbox" name="spcvalues" id="spcvalues" value="true" >Enable Manual UCL / LCL</input></tr><tr><td>Upper:</td><td><input type="text" id="upperVal" value="30" class=upperText></td><td><input id="upperColor" type="text" placeholder="Color" value=""></td><td><select id="upperLine"> <option>stroke </option> <option>dash</option> </select> </td> <td><input id="upperDisp" placeholder="Label" type="text" value=""></td><tr><td>Lower:</td><td><input type=text id=lowerVal value="30" class=lowerText></td><td><input id="lowerColor" placeholder="Color" type="text" value=""></td><td> <select id="lowerLine"> <option>stroke </option> <option>dash</option> </select> </td><td><input id="lowerDisp" type="text" placeholder="Label" value=""></td></tr></tbody> </table> </div> <div class=ApplyReset> <table width=100% align=center> <tr><td></td> <td colspan=2><button type="button" class=button_orange onclick ="resetPref(\'Threshold\','+id+')">'+getLabel("Reset")+' </button> <button type="button" class=button_green onclick="getThreshold('+id+')">'+getLabel("Apply")+' </button></td> </tr> </table> </div>'; } else if(option == "TopX"){ htmlstr ='<div class=GSDIV> <table class=GStable> <tr> <td> <input type="radio" name="topx" value="N" checked="checked" onclick="showHideTR()"/> </td> <td> Show all records</td> </tr> <tr> <td> <input type="radio" name="topx" value="S" onclick="showHideTR()"/> </td> <td> Show top records</td> </tr> <tr class=SD> <td></td><td><input type="radio" name="num" value="5" checked= "checked"/>5</td></tr> <tr class=SD> <td></td><td><input type="radio" name="num" value="10" checked= "checked"/>10</td></tr> <tr class=SD> <td></td><td><input type="radio" name="num" value="15" checked= "checked"/>15</td></tr> <tr class=SD> <td></td><td><input type="radio" name="num" value="cust" /><input type="text" name="custom" id="custom" style="width:50px"/></td></tr> </tbody> </table> </div> <div class=ApplyReset> <table width=100% align=center> <tr><td></td> <td colspan=2><button type="button" class=button_orange onclick ="resetPref(\'TopX\','+id+')">'+getLabel("Reset")+' </button> <button type="button" class=button_green onclick="getTopX('+id+')">'+getLabel("Apply")+' </button></td> </tr> </table> </div>'; } else if(option == "Measures"){ htmlstr = '<div class=GSDIV><table class=GStable><tr><td colspan=3><b>'+getLabel("Measure")+':'+measName+'</b></td></tr>'; htmlstr+= '<tr><td><input type=checkbox id=measId value="'+measId+'" checked="checked"></td><td>Show measure</td></tr>'; htmlstr+='<tr><td></td><td>Display As:</td><td><input id="measDisp" type="text" value=""></td></tr>'; htmlstr+='<tr><td></td><td>Color:</td><td><input id="measColor" type="text" value=""></td></tr>'; htmlstr+='<tr><td></td><td> Format</td> <td> <select id="curr" class="formatNumber"> <option value="INR">Indian </option> <option value="USD">US </option> <option value="EUR">European </option></select> </td> </tr>'; htmlstr+='<tr><td></td><td> Display:</td> <td> <select id="isShort" class="formatNumber"> <option value="actual">Actuals</option> <option value="short">Short</option></select></td></tr>'; htmlstr+='<tr> <td></td><td> Precision: </td> <td> <input class="cPrec textBox2Char" maxlength="2" type="Textbox" id="prec" value="0" title="Enter number of digits after decimal"> </td> </tr>'; htmlstr+='<tr> <td></td><td>Prefix: </td> <td> <input class="cPrefix textBox1Char" maxlength="10" type="Textbox" id="pre" value="" title="Prefix Character for Values"> </td> </tr>'; htmlstr+='<tr> <td></td><td> Suffix: </td> <td> <input class="cSuffix textBox1Char" maxlength="10" type="Textbox" id="suf" value="" title="Suffix Character for Values"> </td></tr></table></div>'; htmlstr+='<div class=ApplyReset> <table width=100% align=center> <tr><td></td> <td colspan=2><button type="button" class=button_orange onclick ="resetPref(\'Measures\','+id+')">'+getLabel("Reset")+' </button> <button type="button" class=button_green onclick="getMeasureDetails('+id+','+measId+',\''+measName+'\')">'+getLabel("Apply")+' </button></td> </tr> </table> </div>'; } return htmlstr; } function blockSpecialChar(e) { var k = e.keyCode || e.charCode; return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 9 || k == 32 || k == 95 || (k >= 48 && k <= 57)); } function refreshChart(id, getData){ $('#'+id)[0].loadContent(getData); } function isCheckedByName(checkName){ /* We need true or false as string */ var checked=$("input[name='"+checkName+"']:checked").is(":checked"); if(checked) return "true"; else return "false"; } function getGrid(id){ var BgColor= $("#color").val(); var ShowGridLine = isCheckedByName('showgridlines'); var Shadow = isCheckedByName('shadow'); var ShadowAngle =$("#ShadowAngle option:selected").text(); var ShadowOffset=$("#ShadowOffset option:selected").text(); var drawBorder= isCheckedByName('drawBorder'); var pointLabel= isCheckedByName('pointLabel'); var pointTooltip=$("#pointTooltip option:selected").val(); displayObj.RDsetGrid(BgColor, ShowGridLine, Shadow, ShadowAngle, ShadowOffset, drawBorder, pointLabel,pointTooltip); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function getAxes(id){ var Pad = $("#pad option:selected").text(); var Axes = isCheckedByName('axes'); var ShowTickMarks= isCheckedByName('showtickmarks'); var ShowTicks= isCheckedByName('showticks'); var ShowLabels = isCheckedByName('showlabels'); var ShowTickLabels = isCheckedByName('showticklabels'); var xFrom = $("input[name='showxfrom']:checked").val(); var xLength= $("#xlen").val(); var xPos = $("input[name='xpos']:checked").val(); displayObj.RDsetAxes(Pad,Axes,ShowTickMarks,ShowTicks,ShowLabels,ShowTickLabels,xFrom,xLength,xPos); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function getLegend(id){ var ShowLegend = isCheckedByName('showlegend') ; var showLabels = isCheckedByName('showLabels') ; var LegendPlace = $("input[name='legendPlace']:checked").val() ; var LegendLoc = $("#LegendLocation option:selected").val(); var NumRows = $("#numOfRows option:selected").text(); displayObj.RDsetLegends(ShowLegend, showLabels, LegendPlace, LegendLoc, NumRows); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function getTopX(id){ var topx = $("input[name='topx']:checked").val() ; var value=""; if(topx != 'M'){ value = $("input[name='num']:checked").val() ; if(value == 'cust') value= $("#custom").val(); } else{ value=$("input[name=nexttopn]").map(function() { return $(this).prop('value'); }).get().join(':'); } if(topx == 'N') displayObj.RDreset('TopX'); else displayObj.RDsetTopx(topx, value); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function getThreshold(id){ var redFrom=$("#redFrom").val()||0, redTo=$("#redTo").val()||30, yellowFrom=$("#yellowFrom").val()||30, yellowTo=$("#yellowTo").val()||60, greenFrom=$("#greenFrom").val()||60, greenTo=$("#greenTo").val()||100, spcLines= isCheckedByName('spcvalues'), upperValue=$("#upperVal").val(), upperColor="#"+$("#upperColor").val(), upperLine = $("#upperLine option:selected").val(), upperLabel=$("#upperDisp").val(), lowerValue=$("#lowerVal").val(), lowerColor="#"+$("#lowerColor").val(), lowerLine = $("#lowerLine option:selected").val(), lowerLabel=$("#lowerDisp").val(); displayObj.RDsetThreshold(+redFrom, +redTo, +yellowFrom, +yellowTo, +greenFrom, +greenTo, spcLines, upperValue, upperColor, upperLine, upperLabel, lowerValue, lowerColor, lowerLine, lowerLabel); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function getMeasureDetails(id, measId, measName){ var showMe=$("#measId").is(":checked"), displayAs=$("#measDisp").val(), color="#"+$("#measColor").val(), currency=$("#curr").val(), dispType=$("#isShort").val(), precision=$("#prec").val(), prefix=$("#pre").val(), suffix=$("#suf").val(); if(color =="#" || String(color).length<4) color=""; displayObj.RDsetMeasure(measId, measName, showMe, displayAs, color, currency, dispType, precision, prefix, suffix); multiDash.setReportDisplayOptions(id, displayObj.RD); refreshChart(id, false); } function validateThreshold(){ var inputArr=["redFrom", "redTo", "yellowFrom", "yellowTo", "greenFrom", "greenTo"]; $.each(inputArr, function(key, value){ if(isNaN($("#"+value).val())) $("#"+value).val(0); if($("#"+value).val()<0) $("#"+value).val(0); else if($("#"+value).val()>100) $("#"+value).val(100); }); } function refreshPage(){ var selTab=$("ul#main_nav li.on").prop('id'); $.jpolite.Nav.switchTab(selTab); //enableDisableByChartType(); } /*function enableDisableByChartType(moduleId){ if(Graph == "CUBOT"){ $('.actionReportBar').hide(); $('.actionGraphSettings').hide(); $('.actionReportGauge').hide(); $('.actionExport').hide(); $('.actionReportPC').hide(); $('.actionReportBullet').hide(); $('.actionReportTree').hide(); $('.actionCalendar').hide(); $('.actionReportHeat').hide(); $('.actionReportRadar').hide(); $('.actionReportStock').hide(); $('.actionReportSunburst').hide(); $('.actionReportZoomTree').hide(); } else{ $('.actionReportBar').show(); $('.actionGraphSettings').show(); $('.actionReportGauge').show(); $('.actionExport').show(); $('.actionReportPC').show(); $('.actionReportBullet').show(); $('.actionReportTree').show(); $('.actionCalendar').show(); $('.actionReportHeat').show(); $('.actionReportRadar').show(); $('.actionReportStock').show(); $('.actionReportSunburst').show(); $('.actionReportZoomTree').show(); } var format=_modules[moduleId].f if(format == 'T'){ $(".actionFreeze").show(); } else{ $(".actionFreeze").hide(); } }*/ function initTitleBar(){ $('#addReport').html(getLabel('Add Reports')); $('#SET').html(getLabel('Settings')); $('#dashsettings').html(getLabel('Dashboard Settings')); $('#settings').html(getLabel('Page Settings')); $('#Export').html(getLabel('Export')); $('#print').html(getLabel('Print')); $('#share').html(getLabel('Share')); $('#Copy').html(getLabel('Copy to Personal Space')); $('#NT').html(getLabel('Notes')); $('#DN').html(getLabel('Dashboard Notes')); $('#PN').html(getLabel('Page Notes')); $('#C1').html(getLabel('View Modern Style')); $('#C2').html(getLabel('View Classic Style')); $('#Themes').html(getLabel('Themes')); $('#mod').html(getLabel('Modern')); $('#silv').html(getLabel('Silver')); $('#clas').html(getLabel('Classic')); $('#maxAll').html(getLabel('Expand All')); $('#minAll').html(getLabel('Collapse All')); //$('#CPL').html(getLabel('Change Page Layout')); $('#sharedDashPageSettings').html(getLabel('Page Settings')); $('.actionGraphSettings').prop('title', getLabel('Graph Settings')); $('.actionGotoPage').prop('title', getLabel('Go To Link Page')); $('.actionFullScreen').prop('title', getLabel('FullScreen')); $('.actionRefresh').prop('title', getLabel('Refresh')); $('.actionMin').prop('title', getLabel('Collapse')); $('.actionMax').prop('title', getLabel('Expand')); $('.actionClose').prop('title', getLabel('close')); $('.actionLinkPage').prop('title', getLabel('Link To Page')); $('.actionNote').prop('title', getLabel('Display Notes')); $('.onOffIcons').prop('title', getLabel('Click to see graph Icons')); $('.actionReportPie').prop('title', getLabel('Pie')); $('.actionReportDonut').prop('title', getLabel('Donut')); $('.actionReportLine').prop('title', getLabel('Line')); $('.actionReportBar').prop('title', getLabel('Bar')); $('.actionReportColumn').prop('title', getLabel('Column Chart')); $('.actionReportStack').prop('title', getLabel('Stacked Bar')); $('.actionReportStackedArea').prop('title', getLabel('Stacked Area')); $('.actionReportCombo').prop('title', getLabel('Combo')); $('.actionReportGauge').prop('title', getLabel('Gauge')); $('.actionReportMap').prop('title', getLabel('Map')); $('.actionReportText').prop('title', getLabel('Text Report')); $('.actionReportPC').prop('title', getLabel('Parallel Coordinate Chart')); $('.actionReportBullet').prop('title', getLabel('Bullet Chart')); $('.actionReportTree').prop('title', getLabel('Tree Chart')); $('.actionCalendar').prop('title', getLabel('Calendar Chart')); $('.actionReportHeat').prop('title', getLabel('Heat Chart')); $('.actionReportRadar').prop('title', getLabel('Radar Chart')); $('.actionReportStock').prop('title', getLabel('Stock Chart')); $('.actionFilledArea').prop('title', getLabel('Filled Area Percent')); $('.actionReportDataTable').prop('title', getLabel('Data Table')); $('.actionExport').prop('title', getLabel('Export As Png')); $('#maxAll').prop('title', getLabel('Expand All Modules')); $('#minAll').prop('title', getLabel('Collapse All Modules')); $('#PL').html(getLabel('Layout..')); $('#PLC').html(getLabel('Close')); $("div#toolbar-minimized").prop("title", getLabel("Hide Bar")); } /* Show hide tabs */ function showHideTabs(isAdd, isRemove, pageId){ if(getTabCount() >= numTabs){ if(isAdd){ showLastTab(); $('ul#main_nav li:visible:first').hide(); } if(isRemove && pageId>0){ if($("#" + pageId).is(':visible')){ if($('ul#main_nav li:visible:last').next().text()){ $('ul#main_nav li:visible:last').next().show(); } else if($('ul#main_nav li:visible:first').prev().text()){ $('ul#main_nav li:visible:first').prev().show(); } } } } } function showFirstTab(){ $('ul#main_nav li').hide(); $('ul#main_nav li:lt('+numTabs+')').show(); } function showPreviousTab(){ if($('ul#main_nav li:visible:first').prev().text()){ $('ul#main_nav li:visible:last').hide('slow'); $('ul#main_nav li:visible:first').prev().show('slow'); } } function showNextTab(){ if($('ul#main_nav li:visible:last').next().text()){ $('ul#main_nav li:visible:first').hide('slow'); $('ul#main_nav li:visible:last').next().show('slow'); } } function showLastTab(){ $('ul#main_nav li').hide(); $('ul#main_nav li').slice(-numTabs).show(); } function getTabCount(){ return $('ul#main_nav li').length; } function resizeNumTabs(){ var width=getMwidth(); var grace=450; var tabLen=120; if(width>grace+tabLen){ numTabs=parseInt((width-grace)/tabLen); if(G_THEME == 'modern' && numTabs>6) numTabs=6; showFirstTab(); } } function reloadModuleMenu() { if(typeof reportMetaDataCache != undefined && reportMetaDataCache=="") loadModuleMenu(true); } function showFilterTemplate(){ var Height=getMheight()-130; var Width=getMwidth()-20; var Title=$(this).parents().prev(".moduleTitle").html(); $(function() { $( "#dialog" ).dialog({ title:Title, height: Height, width: Width, modal: true, resizable: true, autoResize: true, autoOpen: false, position:['center',0], close: function(){reloadModuleMenu()} }); }); $("span.ui-dialog-title").html(multiDash.dashObj[multiDash.defaultDashboard].pages[multiDash.defaultPage].name); var htmlstr='<div id=DFA_page > <div id=DFA_columns> <div id=DFA_left_column><div style="height:20px" class="ui-widget-content"><span class="NewReport" title="Click to add new report">New Report</span><span class="EditDimMeasFilter" title="Edit dimension filters">Edit Filters</span></div> <div id=DFA_dimension_filter class="ui-widget-content"> <h4 class="ui-widget-header">Dimension Filter:</h4> </div> <div id=DFA_measure_filter class="ui-widget-content"> <h4 class="ui-widget-header">Measure Filter: <img src="/showcase/css/g/actionRefresh.png" style="vertical-align: middle;cursor:pointer" onclick="$.DFA.refreshMeasureFilters()" title="Refresh" /></h4> </div> </div> <div id=DFA_center_column> </div> <div id=DFA_right_column> </div><div id=DFA_tmpDialog> </div></div> </div>'; $("#dialog").html(htmlstr).dialog().dialog("open"); var reportIdArray = new Array(); var reports = multiDash.dashObj[multiDash.defaultDashboard].pages[multiDash.defaultPage].reports; for(i=0; reports && i<reports.length; i++){ reportIdArray.push(reports[i].ReportId+':'+reports[i].DisplayType); } $.DFA.startApp(sessionid, multiDash.dashObj[multiDash.defaultDashboard].pages[multiDash.defaultPage]); } function clearFilters(){ G_FilterList = new reportFilterList(); $(".dimfilteritem").prop("checked", false); $(".searchDimVal").val(""); refreshCurrentPage(); //var selTab=$("ul#main_nav li.on").prop('id'); //$.jpolite.Nav.switchTab(selTab); //$("#filterDiv").toggle(); $("#DFA_page_header").hide(); $("#DFA_page_header").html(""); } function refreshCurrentPage(){ //$.jpolite.gotoTab(multiDash.dashObj[multiDash.defaultDashboard].pages[multiDash.defaultPage].id); var selTab=$("ul#main_nav li.on").prop('id'); $.jpolite.Nav.switchTab(selTab); if(isCurrentPageRefreshRequired){ isCurrentPageRefreshRequired = false; return; } $("#DFA_page_header").show(); $("#filterDiv").toggle(); } function filterDivToggle(){ $("#filterDiv").toggle(); } function showFilterScreen(){ // $("#filterDiv").toggle(); var selTab=$("ul#main_nav li.on").prop('id'); // if(G_FilterLoadedFor != selTab){ $("#filterDiv").html("<div id=accordion></div><div><button style=\"margin:2px 20px 2px 0px;float:right;\"onclick=\"refreshCurrentPage()\">Apply</button> <button style=\"margin:2px 20px 2px 0px;float:right;\"onclick=\"clearFilters()\">Clear</button></div>"); //G_DimsArray=sort_unique(G_DimsArray); metaDataCollection=createItemList(authToken); authToken=sessionid; for(var i=0; i<G_DimsArray.length && i<MAX_FILTER;i++){ var item=metaDataCollection.getItemById(G_DimsArray[i]); $.DFA.addDimFilterUI("accordion", item); } var permanent_item = {Id:11000,Name:"PermanentFilters",Column:"filters"}; $.DFA.addDimFilterUI("accordion", permanent_item); $( "#accordion" ).accordion({header: "> h5", heightStyle: "content"}); G_FilterLoadedFor=selTab; G_FilterList = new reportFilterList(); // } }