OXIESEC PANEL
- Current Dir:
/
/
home
/
cubot
/
docroot
/
showcase
/
js
/
geoChart
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
12/31/2022 06:53:36 AM
rwxr-xr-x
📄
Bank_16.png
673 bytes
08/14/2022 11:05:27 AM
rw-r--r--
📄
Bank_24.png
1.53 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
Bank_24_green.png
1.23 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
Bank_24_orange.png
1.11 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
Bank_24_red.png
1.39 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
Bank_red.png
1017 bytes
08/14/2022 11:05:26 AM
rw-r--r--
📄
MapGeocode.js
17.86 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
MapGeocode.js_05jan
17.7 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
blue-dot-1.png
1.14 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
blue-dot.png
1.31 KB
08/14/2022 11:05:26 AM
rw-r--r--
📄
blue_MarkerA.png
1.32 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
blue_MarkerB.png
1.32 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
blue_MarkerC.png
1.36 KB
08/14/2022 11:05:26 AM
rw-r--r--
📄
callout-background.png
6.08 KB
08/14/2022 11:05:26 AM
rw-r--r--
📄
highlightMap.js
37.5 KB
08/14/2022 11:05:26 AM
rw-r--r--
📄
latLng.js
21.65 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
mapAll.js
30.56 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
marker-green.png
2.31 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
marker_yellow.png
1.39 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
orange_MarkerM.png
1.26 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
red-dot-1.png
1.16 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
red-dot.png
1.31 KB
08/14/2022 11:05:27 AM
rw-r--r--
📄
stock-illustration-4811372-bank-icon.jpg
67.5 KB
08/14/2022 11:05:27 AM
rw-r--r--
Editing: MapGeocode.js
Close
function getGeoChart(authToken, gid, divId, moduleId, column, isFullrep, format, Height, Width, newId){ var reportMetaDataCollection=createReportList(authToken, userId); var reportMetaData=reportMetaDataCollection.getReportById(gid, "Personal"); displayObj.RDsetGeneral(); displayObj.RD.General.divId=divId; displayObj.RD.General.authToken=authToken; var newReportObj = new Report(); populateReportFromID(authToken, reportMetaData, plotGeoChart, displayObj, newReportObj); $(".moduleTitle", document.getElementById(moduleId)).html(getAnalyzeLink(gid, reportMetaData.SystemTitle, reportMetaData.SubTitle, reportMetaData.Title)); } function getGeoDimensionPosition(ReportObj){ var metaDataCollection=createItemList(ReportObj.dispObj.RD.General.authToken); var dimsArray=ReportObj.getdimensionIds(); var geoLocationArray=new Array(); var item=""; for(var i=0; i<dimsArray.length; i++){ item=metaDataCollection.getItemById(dimsArray[i]); if(item.DataType.toLowerCase() == 'geo'){ geoLocationArray.push(i); } } return geoLocationArray; } function getMapTypeFromDimName(geoLocationArray, ReportData){ if(geoLocationArray.length>0 && ReportData[0][geoLocationArray[0]] == "Circle") return "India-Telecom"; else if(geoLocationArray.length>0 && ReportData[0][geoLocationArray[0]] == "State" || ReportData[0][geoLocationArray[0]] == "City") return "India-States"; else return "World"; } function getMapOptionsByMapType(mapType){ var opt={}; switch (mapType){ case "World" : opt.tableId=422725; opt.latLng = new google.maps.LatLng(20,-10); opt.zoom = 2; break; case "India-Telecom": case "India-States": opt.tableId=576885; opt.latLng = new google.maps.LatLng(23,82); opt.zoom = 5; break; case 'usa': opt.tableId=422725; opt.latLng = new google.maps.LatLng(37.09024, -95.71289100000001); opt.zoom=2; break; case 'North America': opt.tableId=422725; opt.latLng = new google.maps.LatLng(62.431074,-107.226562); opt.zoom=2; break; case 'South America': opt.tableId=422725; 422725 opt.latLng = new google.maps.LatLng(-24.367114,-68.90625); opt.zoom=3; break; case 'Africa': opt.tableId=422725; opt.latLng = new google.maps.LatLng(-0.35156,10.898438); opt.zoom=3; break; case 'Europe': opt.tableId=422725; opt.latLng = new google.maps.LatLng(56.46249,18.105469); opt.zoom=3; break; case 'Asia': opt.tableId=422725; opt.latLng = new google.maps.LatLng(46.437857,99.316406); opt.zoom=2; break; case 'Southeast Asia': opt.tableId=576885; opt.latLng = new google.maps.LatLng(7.710992,108.500977); opt.zoom=5; break; case 'Australia': opt.tableId=422725; opt.latLng = new google.maps.LatLng(-27.293689,134.472656); opt.zoom=4; break; case 'Malaysia': opt.tableId=422725; opt.latLng = new google.maps.LatLng(4.210484, 101.97576600000002); opt.zoom=5; break; case 'Singapore': opt.tableId=422725; opt.latLng = new google.maps.LatLng(1.352083, 103.81983600000001); opt.zoom=11; break; default: opt.tableId=422725; opt.latLng = new google.maps.LatLng(20,-10); opt.zoom=2; break; } return opt; } function plotGeoChart(ReportData, ReportObj){ var mapType="World"; var containerId = ReportObj.dispObj.RD.General.divId; var geoLocationArray = getGeoDimensionPosition(ReportObj); var callBack = updateChartByValue; if(ReportObj.dispObj.RD.General.callback) callBack=ReportObj.dispObj.RD.General.callback; if(ReportObj.getheight()>getMheight()*.7){ $('div#'+containerId).css('height', ReportObj.getheight()); } else{ $('div#'+containerId).css('height', getMheight()*.7); } if(ReportObj.dispObj.RD.General.mapType){ mapType=ReportObj.dispObj.RD.General.mapType; } else{ mapType=getMapTypeFromDimName(geoLocationArray, ReportData); } ReportObj.setdata(ReportData); setAvg(geoLocationArray, ReportData, ReportObj.dimensions.length); plotGeoChartGoogle(mapType, containerId, geoLocationArray, ReportData, callBack, ReportObj); } var mapAvg=new Array(); function setAvg(geoLocationArray, ReportData, ndims){ var max=0, distDim=new Array(); for(var j=0; j<geoLocationArray.length; j++) distDim[j]=new Array(); for(var i=1; i<ReportData.length; i++){ max+=+ReportData[i][ndims]; for(var j=0; j<geoLocationArray.length; j++) distDim[j].push(ReportData[i][geoLocationArray[j]]); } for(i=0; i<distDim.length; i++){ distDim[i]=unique(distDim[i].sort()); mapAvg[geoLocationArray[i]]=max/distDim[i].length; } } function plotGeoChartGoogle(mapType, containerId, geoLocationArray, ReportData, callBack, context){ if(typeof google ==="undefined"){ $("#"+containerId).html("<center><font color=red>Google maps not been loaded, Please check internet connections..</font></center>"); return; } var geocoder = new google.maps.Geocoder(); var opt=getMapOptionsByMapType(mapType); var FT_TableID=opt.tableId, z=opt.zoom, myLatLng=opt.latLng; var mapOptions = { zoom:z, center:myLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById(containerId), mapOptions); //var layer = highlightMap(map, mapType, FT_TableID) for(var i=1; i<ReportData.length; i++){ for(var j=context.dimensions.length, k=0; j< ReportData[i].length; j++, k++) ReportData[i][j]=formatData(ReportData[i][j], context.formats[k], 0); } var ReportDataSet = parse2DArray(ReportData); var l = _(ReportDataSet).size(); var geo_lable1 = []; var ix=0; for(var iy=0; iy<l && geoLocationArray.length>0; iy++){ geo_lable1[ix++]= _(ReportDataSet[iy]).values()[geoLocationArray[0]].replace("&", "&").replace("&", "&").replace("NULL",""); } geo_lable1 = unique(geo_lable1.sort()); for(iy=0; iy<geo_lable1.length && geoLocationArray.length>0; iy++){ codeAddress(geocoder, map, mapType, ReportDataSet, geo_lable1[iy], geoLocationArray, geoLocationArray[0], callBack, context); } google.maps.event.addListener(map, 'zoom_changed', function() { zoomChangeBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function(event) { if (this.getZoom() >= z && this.initialZoom == true) { //layer.setMap(map); } if (this.getZoom() < z && this.initialZoom == true) { //layer.setMap(null); } google.maps.event.removeListener(zoomChangeBoundsListener); }); }); map.initialZoom = true; } function clickMarker(geocoder, map, mapType, ReportDataSet, location, geoLocationArray, geoColPos, callback, context, marker) { google.maps.event.addListener(marker, 'mouseover', function() { showInfoWindow(map, marker, location, ReportDataSet, geoColPos, context); }); // setTimeout(function () { infowindow.close(); }, 2000);AKS google.maps.event.addListener(marker, 'mouseout', function () { infowindow.close(); }); google.maps.event.addListener(marker, 'click', function() { callback(location, geoColPos, geoLocationArray, context); if(geoLocationArray.length>1){ map.setZoom(3); showMarkers(geocoder, map, ReportDataSet, location, geoLocationArray, geoColPos+1, callback, context); } }); } function codeAddress(geocoder, map, mapType, ReportDataSet, location, geoLocationArray, geoColPos, callback, context) { var address = location; switch(location){ case 'MIDDLEEAST': address='Iraq'; break; case 'UPE': address='Lucknow'; break; case 'UPW': address='Meerut'; break; case 'NESA': address='Arunachal Pradesh'; break; } if((latLng=Countries[address.toUpperCase()]) || (latLng=States[address.toUpperCase()]) || (latLng=City[address.toUpperCase()])){ var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(latLng[0], latLng[1]), //icon: new google.maps.MarkerImage('/showcase/js/geoChart/'+getIconByAddress(mapType, capitalizeFirst(address))), icon: new google.maps.MarkerImage('/showcase/js/geoChart/'+getIconByAvg(context, geoLocationArray[geoColPos], location)), draggable:true, //title:location }); clickMarker(geocoder, map, mapType, ReportDataSet, location, geoLocationArray, geoColPos, callback, context, marker) ; } else{ geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location, //icon: new google.maps.MarkerImage('/showcase/js/geoChart/'+getIconByAddress(mapType, capitalizeFirst(address))), icon: new google.maps.MarkerImage('/showcase/js/geoChart/'+getIconByAvg(context, geoLocationArray[geoColPos], location)), draggable:true, //title:location }); console.log("Missing LAT LANG:"+address+"["+results[0].geometry.location+"]"); clickMarker(geocoder, map, mapType, ReportDataSet, location, geoLocationArray, geoColPos, callback, context, marker) ; } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { setTimeout(function() { codeAddress(geocoder, map, mapType, ReportDataSet, location, geoLocationArray, geoColPos, callback, context); }, 1000); } else { //alert('Geocode was not successful for the following reason: codeAddress()'+ location +'' + status); } }); } } function showMarkers(geocoder, map, ReportDataSet, location, geoLocationArray, geoColPos, callback, context){ var nextAddrArray=[], nextAddr=""; var currGeoPos = geoLocationArray[geoColPos]; var prevGeoPos = geoLocationArray[geoColPos-1]; for(var dataRowNum=0; dataRowNum<_(ReportDataSet).size(); dataRowNum++){ var z= _(ReportDataSet[dataRowNum]).values()[prevGeoPos]; if( z==location){ nextAddr=_(ReportDataSet[dataRowNum]).values()[currGeoPos]; if(nextAddrArray.indexOf(nextAddr)<0){ nextAddrArray.push(nextAddr); pushMarkers(geocoder, map, ReportDataSet, nextAddr, geoLocationArray, currGeoPos, callback, context); } } } } function capitalizeFirst(str){ return (str.charAt(0).toUpperCase() + str.substr(1).toLowerCase()); } function pushMarkers(geocoder, map, ReportDataSet, address, geoLocationArray, geoColPos, callback, context){ geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location, icon: new google.maps.MarkerImage('/showcase/js/geoChart/'+getIconByAvg(context, geoLocationArray[geoColPos], address)), title: address }); google.maps.event.addListener(marker, 'click', function() { if(geoLocationArray.length>geoColPos+1){ map.setZoom(5); showMarkers(geocoder, map, ReportDataSet, address, geoLocationArray, geoColPos+1, callback, context); } else{ showInfoWindow(map, marker, address, ReportDataSet, geoColPos, context); map.setZoom(3); map.setCenter(marker.getPosition()); //marker.setIcon('/showcase/js/geoChart/blue-dot.png'); callback(address, geoColPos, geoLocationArray, context); } }); } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { setTimeout(function() { pushMarkers(geocoder, map, ReportDataSet, address, geoLocationArray, geoColPos, callback, context); }, 1); } else { alert('Geocode was not successful for the following reason: pushMarkers() '+ address +'' + status); } }); } var infowindow = ""; function showInfoWindow(map, marker, location, ReportDataSet, geoColPos, ReportObj){ var j=0; var contentString = '<TABLE >'; contentString+="<TR class=tbl_titles><TH>No.</TH><TH>"+_(ReportDataSet[0]).keys().join("</TH><TH>")+"</TH></TR>"; for(var i=0; i<ReportDataSet.length; i++){ if(_(ReportDataSet[i]).values()[geoColPos]== location){ j++; if(j%2) contentString+="<TR class=txtrow><TD>"+j+"</TD><TD>"+_(ReportDataSet[i]).values().join("</TD><TD>")+"</TD></TR>"; else contentString+="<TR class=txtoddrow><TD>"+j+"</TD><TD>"+_(ReportDataSet[i]).values().join("</TD><TD>")+"</TD></TR>"; } } contentString+= '</TABLE>'; var ndims = ReportObj.dimensions.length; var nmeas = ReportObj.measures.length; var contentString = '<TABLE height=100% cellpadding=0 cellspacing=0 class=info_tbl>'; contentString+='<TR><TH>#</TH>'; for(var i=0; i<ReportObj.data[0].length; i++){ contentString+="<TH align='"+(i<ndims?"left":"right")+"'>"+ReportObj.data[0][i]+"</TH>"; } contentString+='</TR>'; for(var j=1, k=1; j<ReportObj.data.length; j++){ if(ReportObj.data[j][geoColPos] == location){ contentString+='<TR><TD>'+(k++)+'</TD>'; for(var i=0; i<ReportObj.data[j].length; i++){ contentString+="<TD align='"+(i<ndims?"left":"right")+"'>"+ReportObj.data[j][i]+"</TD>"; } contentString+='</TR>'; } } contentString+='</TABLE>'; if(infowindow == "") infowindow = new google.maps.InfoWindow(); infowindow.setContent(contentString); infowindow.open(map,marker); //setTimeout(function () { infowindow.close(); }, 2000); } function clearOverlays(markers1) { if (markers1) { for (i in markers1) { markers1[i].setMap(null); } } } function showOverlays(map, markers1, loc) { if (markers1) { for (i in markers1) { if(markers1[i].title!=loc){ markers1[i].setMap(map); } } } } function updateChartByValue(location, geoColPos, geoLocationArray, ReportObj){ var divId=""; var x = $(".module:visible", $.jpolite.Content['c2']).get(); if(typeof x[0] == "undefined"){ addReport(ReportObj.graphId, decodeFormat(ReportObj.gtype)); } var x = $(".module:visible", $.jpolite.Content['c2']).get(); if(typeof x[0] != "undefined"){ divId="div"+x[0].id; } else { alert("Expecting a report next to the map chart so that dill map value can be plot next to it."); return; } var reportMetaDataCollection=createReportList(ReportObj.dispObj.RD.General.authToken, userId); var reportMetaData=reportMetaDataCollection.getReportById(x[0].url, "Personal"); var displayObj=new displayOptions(multiDash.getReportDisplayOptions(x[0].id)); displayObj.RDsetGeneral(); displayObj.RD.General.divId=divId; displayObj.RD.General.moduleId=x[0].id; displayObj.RD.General.authToken=ReportObj.dispObj.RD.General.authToken; var newReportObj = new Report(); getReportObjByReportMeta(ReportObj.dispObj.RD.General.authToken, reportMetaData, displayObj, newReportObj); newReportObj.setgtype(_modules[x[0].id].f); if(geoLocationArray[0] == geoColPos) G_FilterList=new reportFilterList(); filter= new reportFilter(); filter.itemId = ReportObj.getdimensionIds()[geoColPos]; filter.itemName=ReportObj.getdimensions()[geoColPos]; filter.operator = "eq"; filter.filterType = ''; filter.values.push(location); G_FilterList.deleteFilter(filter); G_FilterList.addFilter(filter); newReportObj.setdimensionFilters(""); newReportObj.addDimensionFilters(G_FilterList.getFilterString("D")); /* Delete filtered dimensions */ //newReportObj.delDimensionIds(ReportObj.getdimensionIds()[geoColPos]); //newReportObj.delDimensions(ReportObj.getdimensions()[geoColPos]); createReport(ReportObj.dispObj.RD.General.authToken, false, showFilteredChart, newReportObj); } function showFilteredChart(reportDataArray, ReportObj){ $(".moduleTitle", document.getElementById(ReportObj.dispObj.RD.General.moduleId)).html(getAnalyzeLink(ReportObj.graphId , ReportObj.systitle, ReportObj.subtitle, ReportObj.title)+' : '+G_FilterList.getReadableFilterString('D')); if(reportDataArray.length>1){ formatReportData(reportDataArray, ReportObj.getdimmeta(), ReportObj.getlayout(), ReportObj.gettopn()); } else{ $('div#'+ReportObj.dispObj.RD.General.divId).html('<font color=red><center>'+getLabel("No Data Found")+'</center></font>'); G_FilterList=new reportFilterList(); return; } ReportObj.setdata(reportDataArray); ReportObj.setwidth(parseFloat($('div#'+ReportObj.dispObj.RD.General.divId).css("width"))); ReportObj.setheight(parseFloat($('div#'+ReportObj.dispObj.RD.General.divId).css("height"))); if(ReportObj.getgtype() == 'M'){ plotGeoChart(reportDataArray, ReportObj); } else{ drawCharts(ReportObj, ReportObj.dispObj.RD.General.divId, ReportObj.graphId); } } function getIconByAvg(ReportObj, dimPos, location){ var ReportData=ReportObj.getdata(); var nDims=ReportObj.dimensions.length; var val=0; for(var i=1; i<ReportData.length; i++){ if(ReportData[i][dimPos] == location) val+=+(ReportData[i][nDims].replace(/,/g,'')); } if(val>= mapAvg[dimPos]){ if(ReportData[0][dimPos].indexOf('Branch')>=0) return "Bank_24_green.png"; else return "blue-dot-1.png"; } else{ if(ReportData[0][dimPos].indexOf('Branch')>=0) return "Bank_24_red.png"; else return "red-dot-1.png"; } } function getIconByAddress(mapType, address){ if(mapType=="India-Telecom"){ if(address=='Delhi' || address=='Mumbai' || address=='Kolkata'){ return "orange_MarkerM.png"; } else if(address=='Gujarat' || address=='Karnataka' || address=='Tamil Nadu' || address=='Andhra Pradesh' || address=='Maharashtra' || address=='Pune'){ return "blue_MarkerA.png"; } else if(address=='Haryana' || address=='Punjab' || address=='Kerala' || address=='Rajasthan' || address=='West Bengal' || address=='Lucknow' || address=='Meerut' || address=='Madhya Pradesh'){ return "blue_MarkerB.png"; } else if(address=='Bihar' || address=='Assam' || address=='Orissa' || address=='Sikkim' || address=='Himachal Pradesh' || address=='Jammu' || address=='Srinagar' || address=='Meghalaya' || address=='Mizoram' || address=='Tripura' || address=='Arunachal Pradesh' || address=='Manipur' || address=='Nagaland' || address=='Chhattisgarh' || address=='Jharkhand'){ return "blue_MarkerC.png"; } } else{ return "red-dot.png"; } } function getLatLngFromAddress(addrArray){ var address = addrArray.join(", "); var geocoder = new google.maps.Geocoder(); var latLng=new Array(); geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { latLng.push(results[0].geometry.location.Pa); latLng.push(results[0].geometry.location.Qa); } else { console.log("Geocode was not successful for the following reason: " + status); } }); return latLng; }