OXIESEC PANEL
- Current Dir:
/
/
home
/
cubot
/
docroot
/
VBox
/
map
/
map_bkup
/
js
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/14/2022 11:04:59 AM
rwxr-xr-x
📄
jquery-1.9.1.js
262.09 KB
08/14/2022 11:05:00 AM
rw-r--r--
📄
jquery-ui-1.10.3.custom.js
425.6 KB
08/14/2022 11:05:00 AM
rw-r--r--
📄
map.js
36.62 KB
08/14/2022 11:05:00 AM
rw-r--r--
Editing: map.js
Close
function callbackReportData(reportDataArray, ReportObj){ showReport( reportDataArray, ReportObj); } function showReport( reportDataArray, ReportObj){ if(typeof reportDataArray == undefined || reportDataArray.length<2){ if(ReportObj.getgtype() != 'M'){ $('div#'+ReportObj.dispObj.RD.General.divId).html("No Data Found"); return false; } else{ alert("No Data Found"); /* For Map we will plot map without data */ } } if(ReportObj.getlayout()=="CrossTab" && ReportObj.getmeasures().length==1 && ReportObj.getdimensions().length == 2 && reportDataArray.length>0){ reportDataArray=makeXtab(reportDataArray); ReportObj.setlayout("CrossTab"); } /* Format report data for time related dimensions like moth,fin month, quarter, fin quartes ... */ formatReportData(reportDataArray, ReportObj.getdimmeta(), ReportObj.getlayout(), ReportObj.gettopn()); ReportObj.setdata(reportDataArray); var dfiltStr = ReportObj.filterList.getReadableFilterString('D'); var mfiltStr = ReportObj.filterList.getReadableFilterString('M'); ReportObj.setwidth(parseFloat($('div#'+ReportObj.dispObj.RD.General.divId).css("width"))-10); if(ReportObj.dispObj.RD.General.divId =="div0C") ReportObj.setheight(getMheight()-100); else ReportObj.setheight(parseFloat($('div#'+ReportObj.dispObj.RD.General.divId).css("height"))-0); if(reportDataArray.length>15){ //displayObj.RDsetAxes(Pad,Axes,ShowTickMarks,ShowTicks,ShowLabels,ShowTickLabels,xFrom,xLength,xPos); ReportObj.dispObj.RDsetAxes(0,false,false,true,true,true,'first','10','A'); } var numLegend=reportDataArray[0].length - ReportObj.getdimensions().length; if(ReportObj.getgtype()=='P') numLegend=reportDataArray.length-1; /* first record is heading*/ ReportObj.dispObj.RDsetLegends(true, true, "outsideGrid", "s", String(Math.ceil(numLegend/5))); if(ReportObj.getgtype() == 'M'){ ReportObj.dispObj.RD.General.callback=refreshChartsByFilterValue; plotGeoChart(reportDataArray, ReportObj); } else{ drawCharts(ReportObj, ReportObj.dispObj.RD.General.divId); } } function getLocationNameCache(){ var Arr=new Array(), data={}; for(var name in Countries) Arr.push({label:name, category:"Country"}); for(var name in States) Arr.push({label:name, category:"State"}); for(var name in City) Arr.push({label:name, category:"City"}); return Arr; } function showQuickFilters(){ $("#tmpDialog1").dialog({ title:"Quick Filters", height:"auto", width: "300", modal: false, resizable: true, autoResize: false, autoOpen: false, position:['center',20] }); if(map){ var htmlStr='<table class="filter" cellpadding="0" cellspacing="0" border="0"><tbody>' ; htmlStr+='<tr><td>Layer:</td><td><span class="Qfilter sel" title="Show coloured map layer"><b class="colorLayerMap"></b></span></td><td><span class="Qfilter unsel" title="Show normal map"><b class=NormalMap></b></span></td> </tr>'; htmlStr+='<tr><td>Overlay:</td><td><span class="Qfilter sel" title="Show overlay charts"><b class="mapOverLayYes"></b></span></td><td><span class="Qfilter unsel" title="Do not show overlay charts"><b class=mapOverLayNo></b></span></td> </tr>'; htmlStr+='<tr><td>Circle:</td><td><span class="Qfilter sel" title="Show different coloured circles"><b class=circleColorMap></b></span></td><td><span class="Qfilter unsel" title="Show different size circles"><b class=circleSizeMap></span></td> </tr>'; htmlStr+='<tr><td>Color:</td><td colspan=2><input type=text id=circleColor value="'+circleColor.replace("#","")+'" style="width:50px">'; htmlStr+=' Border: <input type=text id=strokeColor value="'+strokeColor.replace("#","")+'" style="width:50px"></td> </tr>'; htmlStr+='<tr><td>Zoom:</td><td colspan="2"> <span class="zoomOut" onclick="zoomCircle(\'-\')"><img src="css/images/zoomOut.png"></span> Circle <span class="zoomIn" onclick="zoomCircle(\'+\')"><img src="css/images/zoomIn.png"></span> </td> </tr>'; htmlStr+='<tr><td>Go To:</td><td colspan="2"><input type=text id=autocomplete value="" onkeyup="goToMapLocation(event, this.value)"></td> </tr>'; htmlStr+='<tr><td><input type=checkbox onclick="showMapDetails()" class="showDetails" '+(showDetails==1?"checked=checked":"")+'></td><td colspan=2>Show Details</td> </tr>'; htmlStr+='</tbody> </table><div id=QF_measure_filter></div>'; } else{ var htmlStr=""; } $("#tmpDialog1").html(htmlStr).dialog("open"); handleQfilterStyles(QMoverlay, 0, 1); handleQfilterStyles(QMcircleColor, 2, 3); handleQfilterStyles(QMlayer, 4, 5); $("#circleColor").jPicker({window:{position:{x:"right",y:"center"},expandable: true}}, applyCircleColor); $("#strokeColor").jPicker({window:{position:{x:"right",y:"center"},expandable: true}}, applyCircleStroke); if(reportCollection[0].getmeasureIds().length>0){ var filterObj=new reportFilter(reportCollection[0].getmeasureIds()[0], reportCollection[0].getmeasures()[0],"bw", "A", "Column"); putSlider(applyMeasureFilters, filterObj, "QF_measure_filter", mapMin, mapMax, mapMin, mapMax, ""); } $.widget( "custom.catcomplete", $.ui.autocomplete, { _renderMenu: function( ul, items ) { var that = this, currentCategory = ""; $.each( items, function( index, item ) { if ( item.category != currentCategory ) { ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" ); currentCategory = item.category; } that._renderItemData( ul, item ); }); } }); var tags = getLocationNameCache(); $( "#autocomplete" ).catcomplete({ delay: 0, source: function( request, response ) { var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" ); response( $.grep( tags, function( item ){ return matcher.test( item.label ); }) ); } }); } function showMapDetails(){ if($(".showDetails").prop("checked") == true){ showDetails=1; showCurrentVisibleMarkerData(); } else{ showDetails=0; $("#overlayTable").dialog("close"); } } function applyCircleColor(color, context){ var all = color.val('all'); circleColor=(all && '#' + all.hex || circleColor); plotGeoChart(reportCollection[0].getdata(), reportCollection[0]); } function applyCircleStroke(color, context){ var all = color.val('all'); strokeColor=(all && '#' + all.hex || circleColor); plotGeoChart(reportCollection[0].getdata(), reportCollection[0]); } /* Global variables */ var reportCollection=new Array(), mapAvg=new Array(), geoMarker=new Array(), mapMin=0, mapMax=0, MAX=0, gtype=['M','L','P','B'], authToken="", curPos=0, dimLen=0, QMoverlay=1, QMcircleColor=0, QMlayer=1, map="", layer="",circleColor="#001758", strokeColor="#FFFFFF", showDetails=0; function startApp(){ authToken= getCookie("RXSESSION"); sessionid=authToken; if(authToken == undefined || authToken.length<5){ $("div.moduleHeader").html("Sessionid missing"); return; } $("#div_map").append(returnPortletHtml("0", ['div0C'])); //$(".portletTitle","#div_map").html("<div id=mapLocId></div><div id=mapMarkerId><input class=circleGreen type=checkbox checked onclick=showHideCircle()><font color=green size=5>•</font> <input class=circleOrange type=checkbox checked onclick=showHideCircle()><font color=orange size=5>•</font> <input class=circleRed type=checkbox checked onclick=showHideCircle()><font color=red size=5>•</font> <input checked class=overlay type=checkbox>Overlay</div>"); //$(".portletTitle","#div_map").html("<div id=mapLocId></div><div id=mapMarkerId><input checked class=overlay type=checkbox>Overlay</div>"); $(".portletTitle","#div_map").html("<div id=mapLocId></div>"); var htmlStr='<li style=" margin: 0px 0px 0px 2px; padding: 0px 0px 0px 2px; text-align: left;" onclick="showQuickFilters()">Quick Filters</li>'; /*htmlStr+='<li style=" margin: 0px 0px 0px 2px; padding: 0px 0px 0px 2px; text-align: left;"><input checked="" class="overlay" type="checkbox"><span align="right" style="width: 55px; position: absolute;">Overlay</span></li>'; htmlStr+='<li style=" margin: 0px 0px 0px 2px; padding: 0px 0px 0px 2px; text-align: left;"><input checked="" class="Multicolor" type="checkbox"><span align="right" style="width: 66px; position: absolute;">Multicolor</span></li>'; htmlStr+='<li style=" margin: 0px 0px 0px 2px; padding: 0px 0px 0px 2px; text-align: left;"><input checked="" class="MapLayer" type="checkbox" onclick="toggleMapLayer()"><span align="right" style="width: 70px; position: absolute;">Map Color</span></li>'; htmlStr+='<li style=" margin: 0px 0px 0px 2px; padding: 0px 0px 0px 2px; text-align: left; width: 100%; white-space: nowrap; text-align: right;"><span class="zoomIn" onclick="zoomCircle(\'+\')" style=" float: left; margin-left: 4px;margin-right:10px "></span>Circle<span class="zoomOut" onclick="zoomCircle(\'-\')" style=" float: right; margin-right: 15px; margin-left:5px "> </span></li>';*/ $(".graphConfigureUL","#div_map").append(htmlStr); var tagLine="<a class=click1>Click on Map to see the chart</a>"; $("#div1").append(returnPortletHtml("1", ['div1C'])); $("#div1C").html(tagLine); $("#div2").append(returnPortletHtml("2", ['div2C'])); $("#div2C").html(tagLine); $("#div3").append(returnPortletHtml("3", ['div3C'])); $("#div3C").html(tagLine); hideOverlay(); for(var i=0; i<1; i++){ loadNRefreshChart(authToken, i, true); } $( "#div_overlay" ).draggable({handle:"#dragHeader"}); registerLiveEvents(authToken); } function setPos(pos){ curPos=pos; portlet=0; G_FilterList.filterList.splice(pos,10); /*for(var i=pos; i<reportCollection[portlet].dimensionIds.length; i++){ var filter= new reportFilter(); filter.itemId = reportCollection[portlet].dimensionIds[i]; filter.itemName=reportCollection[portlet].dimensions[i]; filter.operator = "eq"; filter.filterType = ''; G_FilterList.clearFilter(filter); }*/ loadNRefreshChart(authToken, 0, true); } function loadNRefreshChart(authToken, portlet, refresh){ if(refresh === undefined || refresh != true){ applyGtypeLayoutTopx(reportCollection[portlet]); saveLocContent(authToken, reportCollection[portlet], portlet, ""); curPos=0; G_FilterList=new reportFilterList(); } var tmpReportObj=""; if(reportCollection && reportCollection[portlet] && reportCollection[portlet].data){ tmpReportObj=reportCollection[portlet]; } reportCollection[portlet]=getLOCdetailsFromDB(authToken, portlet); if(portlet == 0 && reportCollection[portlet].gtype =="M" && reportCollection[portlet].dimensionIds.length>0){ if(curPos>=reportCollection[portlet].dimensionIds.length){ reportCollection[portlet]=tmpReportObj; return; } var htmlStr=""; for(var i=0; i<reportCollection[portlet].dimensions.length; i++){ if(i >curPos) break; var dimName= reportCollection[portlet].dimensions[i]; var filterVal=G_FilterList.getFilterValuesByItemId(reportCollection[portlet].dimensionIds[i]); if(i>0) htmlStr+=" => "; if(i >curPos-1) htmlStr+="<span style='color:black;font-weight:normal;text-decoration:none'>"+dimName; else htmlStr+="<span style='color:maroon;cursor:pointer;font-weight:normal;text-decoration:underline' onClick=\"setPos("+i+")\">"+dimName; if(filterVal.length>0) htmlStr+="( "+filterVal+")"; htmlStr+="</span>"; } $("#mapLocId", "div#0").html(htmlStr); dimLen=reportCollection[portlet].dimensionIds.length; reportCollection[portlet].dimensionIds=[reportCollection[portlet].dimensionIds[curPos]]; reportCollection[portlet].dimensions=[reportCollection[portlet].dimensions[curPos]]; curPos++; } $("div#div"+portlet+"C").html("<center><img src=/showcase/css/g/loading.gif></img></center>"); prepareNshowChart(authToken, "div"+portlet+"C", reportCollection[portlet].gtype,"", reportCollection[portlet]); /*$("#tmpDialog1").dialog("close", "slow");*/ } function handleQfilterStyles(isTrue, cl1, cl2){ var cssArr=[".mapOverLayYes", ".mapOverLayNo", ".circleColorMap", ".circleSizeMap", ".colorLayerMap", ".NormalMap"]; if(isTrue){ $(cssArr[cl1]).parent().removeClass("unsel"); $(cssArr[cl1]).parent().addClass("sel"); $(cssArr[cl2]).parent().removeClass("sel"); $(cssArr[cl2]).parent().addClass("unsel"); } else{ $(cssArr[cl1]).parent().removeClass("sel"); $(cssArr[cl1]).parent().addClass("unsel"); $(cssArr[cl2]).parent().removeClass("unsel"); $(cssArr[cl2]).parent().addClass("sel"); } } function registerLiveEvents(authToken){ $(".actionRefresh").live("click", function() { var portlet=$(this).parents().eq(3).attr("id"); curPos=0; G_FilterList=new reportFilterList(); geoMarker=new Array(); loadNRefreshChart(authToken, portlet, true); } ); $(".actionSetting").live("click", function() { var portlet=$(this).parents().eq(3).attr("id"); openLOCconfigurePage(authToken, portlet); } ); $(".remove").live("click", function (){$(this).parent().remove();}); $(".Expand").live("click", function (){ $(this).toggleClass('Expand Collapse'); showOverlay(); }); $(".Collapse").live("click", function (){ $(this).toggleClass('Collapse Expand'); hideOverlay(); }); $(".action").live("mouseover", function(e){ blinkMarker($(this).text()); }); $(".action").live("click", function(e){ $("#tmpDialog").dialog({ title:"Actions", height:"100", width: "200", modal: false, resizable: true, autoResize: false, autoOpen: false, position:[e.pageX+10,e.pageY] }); $("#tmpDialog").html($(this).text()).dialog("open"); }); $(".rowHide").live("click", function(){ $(this).parent().hide(); applyLogicOnVisibleRows(); }); /* Quick Filters */ $(".mapOverLayYes").live("click", function(){ QMoverlay=1; handleQfilterStyles(QMoverlay, 0, 1); showOverlay(); }); $(".mapOverLayNo").live("click", function(){ QMoverlay=0; handleQfilterStyles(QMoverlay, 0, 1); hideOverlay(); }); $(".circleColorMap").live("click", function(){ QMcircleColor=1; handleQfilterStyles(QMcircleColor, 2, 3); plotGeoChart(reportCollection[0].getdata(), reportCollection[0]); }); $(".circleSizeMap").live("click", function(){ QMcircleColor=0; handleQfilterStyles(QMcircleColor, 2, 3); plotGeoChart(reportCollection[0].getdata(), reportCollection[0]); }); $(".colorLayerMap").live("click", function(){ QMlayer=1; handleQfilterStyles(QMlayer, 4, 5); toggleMapLayer(QMlayer); }); $(".NormalMap").live("click", function(){ QMlayer=0; handleQfilterStyles(QMlayer, 4, 5); toggleMapLayer(QMlayer); }); } function showOverlay(){ $("div#div_overlay").css("top","50%"); } function hideOverlay(){ $("div#div_overlay").css("top","95%"); } function getLOCdetailsFromDB(authToken, portlet){ var ReportObj = new Report(), item=""; initReportObj(ReportObj); ReportObj.gtype=gtype[portlet]; var report = getContentData(authToken, 'LOC', portlet); if(report.length>0) report=$.evalJSON(report); else return ReportObj; var metaDataCollection=createItemList(authToken); for(var i=0; i<report.dimensionIds.length; i++){ item=metaDataCollection.getItemById(report.dimensionIds[i]); ReportObj.addDimensionToReport(item); } for(var i=0; i<report.measureIds.length; i++){ item=metaDataCollection.getItemById(report.measureIds[i]); ReportObj.addMeasureToReport(item); } if(report.formats != undefined) ReportObj.formats=report.formats; ReportObj.filterList.filterList=report.filterList; ReportObj.setgtype(report.gtype); ReportObj.setlayout(report.layout); ReportObj.settopn(report.topn); ReportObj.dispObj=new displayOptions(); ReportObj.dispObj.RDsetGeneral(); if(report.mapType) ReportObj.dispObj.RD.General.mapType=report.mapType; else ReportObj.dispObj.RD.General.mapType="World"; return ReportObj; } function openLOCconfigurePage(authToken, portlet){ reportCollection[portlet]=getLOCdetailsFromDB(authToken, portlet); openConfigurePage(authToken, portlet, "LOC", loadNRefreshChart); } function saveLocContent(authToken, ReportObj, portlet, TYPE){ var mapType="World"; if(ReportObj.dispObj.RD && ReportObj.dispObj.RD.General && ReportObj.dispObj.RD.General.mapType) mapType=ReportObj.dispObj.RD.General.mapType; var report={ dimensionIds:ReportObj.dimensionIds, measureIds:ReportObj.measureIds, filterList:ReportObj.filterList.filterList, gtype:ReportObj.getgtype(), mapType:mapType, layout:ReportObj.getlayout(), topn:ReportObj.gettopn() }; putContentData(authToken, 'LOC', portlet, $.toJSON(report)); } function stopApp(authToken){ logoutCubot(authToken); setCookie("RXSESSION","-1", null); } function applyDimensionHierarchy(){ getNextDimInHierarchy(authToken, dimensionId, selectionSeq); } function refreshChartsByFilterValue(location, geoColPos, geoLocationArray, ReportObj){ //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.clearFilter(filter); G_FilterList.addFilter(filter); var numChart=4; /* Introduce Dimension Hierarchy */ if(QMoverlay){ $(".Expand").toggleClass('Expand Collapse'); showOverlay(); } else{ numChart=1; } for(var i=0; i<numChart; i++){ loadNRefreshChart(authToken, i, true); } hilightCircle(location); } $(function(){ startApp(); appLiveEvents(); }); /************** Geo Chart Coding goes here ********************/ function goToMapLocation(e, address){ var code = (e.keyCode ? e.keyCode : e.which); var latLng=""; if(code == 13) { //Enter keycode if(latLng=Countries[address.toUpperCase()]){ zoom=5; } else if(latLng=States[address.toUpperCase()]){ zoom=8; } else if(latLng=City[address.toUpperCase()]){ zoom=12; } if(latLng){ map.setZoom(zoom); map.setCenter(new google.maps.LatLng(latLng[0], latLng[1])); var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(latLng[0], latLng[1]), title:address, icon: new google.maps.MarkerImage('/showcase/js/geoChart/red-dot.png') }); } else { var geocoder = new google.maps.Geocoder(); geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if(results[0] && results[0].types && results[0].types[0]){ if(results[0].types[0] == "locality") map.setZoom(14); else if(results[0].types[0] == "administrative_area_level_2") map.setZoom(6); else if(results[0].types[0] == "administrative_area_level_1") map.setZoom(5); else if(results[0].types[0] == "country") map.setZoom(5); } map.setCenter(results[0].geometry.location); map.setMapTypeId(google.maps.MapTypeId.ROADMAP); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location , title:results[0].formatted_address, icon: new google.maps.MarkerImage('/showcase/js/geoChart/red-dot.png') }); } else{ alert('Geocode was not successful for the following reason ('+ location +'):' + status); } }); } } } 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") 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 "Bangalore": opt.tableId=576885; opt.latLng = new google.maps.LatLng(12.9715987, 77.59456269999998); opt.zoom = 12; break; case "Punjab": opt.tableId=576885; opt.latLng = new google.maps.LatLng(30.9673371, 74.96617549999996); opt.zoom = 8; break; case "India-Odisha": opt.tableId=576885; opt.latLng = new google.maps.LatLng(20.951666,85.098524); opt.zoom = 6; break; case "India": 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 = refreshChartsByFilterValue; 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); } if(typeof ReportData[1][ReportObj.dimensions.length] != "undefined" && String(ReportData[1][ReportObj.dimensions.length]).indexOf(",")<0) setMax(geoLocationArray, ReportData); //setAvg(geoLocationArray, ReportData, ReportObj.dimensions.length); plotGeoChartGoogle(mapType, containerId, geoLocationArray, ReportData, callBack, ReportObj); //showHideCircle(); } function setMax(geoLocationArray, ReportData){ for(var i=1; i<ReportData.length; i++){ MAX=(ReportData[i][0]>MAX)?ReportData[i][0]:MAX; } mapAvg[0]=MAX; } function setAvg(geoLocationArray, ReportData, ndims){ var total=0, distDim=new Array(); for(var j=0; j<geoLocationArray.length; j++) distDim[j]=new Array(); for(var i=1; i<ReportData.length; i++){ total+=+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]]=total/distDim[i].length; } } function plotGeoChartGoogle(mapType, containerId, geoLocationArray, ReportData, callBack, context){ var geocoder = new google.maps.Geocoder(); var opt=getMapOptionsByMapType(mapType); var FT_TableID=opt.tableId, z=opt.zoom, myLatLng=opt.latLng; z=opt.zoom+curPos-1; if(ReportData[0][0]== "Village"){ z=15; } var mapOptions = { zoom:z, center:myLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById(containerId), mapOptions); layer = highlightMap(map, mapType, FT_TableID); /*if(typeof ReportData[1][context.dimensions.length] != "undefined" && String(ReportData[1][context.dimensions.length]).indexOf(",")<0){ 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("&", "&"); } geoMarker=new Array(); 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); } if(mapType == "Bangalore") putExtraMarkers(map); /*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(null); } if (this.getZoom() < z && this.initialZoom == true) { layer.setMap(map); } google.maps.event.removeListener(zoomChangeBoundsListener); }); });*/ google.maps.event.addListener(map, 'zoom_changed', function(event) { if(showDetails) showCurrentVisibleMarkerData(); }); /* can be use idle */ google.maps.event.addListener(map, 'dragend', function(event) { if(showDetails) showCurrentVisibleMarkerData(); }); map.initialZoom = true; toggleMapLayer(QMlayer); createGridTable(ReportData); if(showDetails) showCurrentVisibleMarkerData(); } function toggleMapLayer(isShow){ if(isShow) { layer.setMap(map); } else { layer.setMap(null); } } 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); }); google.maps.event.addListener(marker, 'click', function() { callback(location, geoColPos, geoLocationArray, 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: getCircle(context, geoLocationArray[geoColPos], location), //icon: new google.maps.MarkerImage('/showcase/js/geoChart/red-dot.png'), draggable:true }); clickMarker(geocoder, map, mapType, ReportDataSet, location, geoLocationArray, geoColPos, callback, context, marker) ; geoMarker.push(marker); if(geoMarker.length==1){ map.setCenter(geoMarker[0].getPosition()); } } else{ for(var i=G_FilterList.filterList.length; i>0; i--) address+=","+G_FilterList.filterList[i-1].values.join(''); 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: getCircle(context, geoLocationArray[geoColPos], location), //icon: new google.maps.MarkerImage('/showcase/js/geoChart/red-dot.png'), draggable:true }); geoMarker.push(marker); if(geoMarker.length==1){ map.setCenter(geoMarker[0].getPosition()); } 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); } }); } } var infowindow = new google.maps.InfoWindow(); function showInfoWindow(map, marker, location, ReportDataSet, geoColPos, RportObj){ var ndims = RportObj.dimensions.length; var nmeas = RportObj.measures.length; var contentString = '<TABLE height=100% cellpadding=0 cellspacing=0 class=info_tbl>'; contentString+='<TR><TH>#</TH>'; for(var i=0; i<RportObj.data[0].length; i++){ contentString+="<TH align='"+(i<ndims?"left":"right")+"'>"+RportObj.data[0][i]+"</TH>"; } contentString+='</TR>'; for(var j=1, k=1; j<RportObj.data.length; j++){ if(RportObj.data[j][geoColPos] == location){ contentString+='<TR><TD>'+(k++)+'</TD>'; for(var i=0; i<RportObj.data[j].length; i++){ if(i<ndims){ contentString+="<TD align='left'>"+RportObj.data[j][i]+"</TD>"; } else{ contentString+="<TD align='right'>"+formatData(RportObj.data[j][i], RportObj.formats[i-ndims],0) +"</TD>"; } } contentString+='</TR>'; } } contentString+='</TABLE>'; /*var contentString = ''; // Bank Icon contentString+='<div style="width: 580px;height:300px;border:1px solid green;border-radius:5px;overflow:hidden"><div style="width:260px;height: 300px;float: left;padding: 5px;">'; contentString+='<div style="font-size: 16px;text-align:center" >'+ location +'</div> <div style=""><img src="/VBox/map/css/images/Bank-icon.png"> </div> </div> <div style=" float: left; width: 300px; height: 300px; border-left: 1px solid #ddd; padding-left: 5px;padding-top: 20px; ">'; var ndims = RportObj.dimensions.length; var nmeas = RportObj.measures.length; for(var j=0; j<RportObj.data.length; j++){ if(RportObj.data[j][geoColPos] == location){ for(var i=0; i<nmeas; i++){ contentString+='<div style=" height:'+ (100/nmeas)+'\%; width: 100%;"> '+RportObj.measures[i]+' : '+RportObj.data[j][ndims+i]+'</div>'; } break; } } contentString+='</div> </div>';*/ infowindow.setContent(contentString); infowindow.open(map,marker); } function getCircle(ReportObj, dimPos, location) { var ReportData=ReportObj.getdata(); var nDims=ReportObj.dimensions.length; var val=0, total=0; var colors = ["#ffffff","#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58", "#001758"]; for(var i=1; i<ReportData.length; i++){ if(ReportData[i][dimPos] == location) val+=+(ReportData[i][nDims].replace(/,/g,'')); total+=+(ReportData[i][nDims].replace(/,/g,'')); } var color=circleColor/*, strokeColor="white"*/; var percent=10, opacity=1; if(QMcircleColor){ opacity=val/mapAvg[dimPos]; if(opacity<0.1) opacity=0.3; } else if(0 && QMcircleColor){ var avgPercent=(val/mapAvg[dimPos])*100; if(avgPercent<10) color=colors[0]; else if(avgPercent<20) color=colors[1]; else if(avgPercent<30) color=colors[2]; else if(avgPercent<40) color=colors[3]; else if(avgPercent<50) color=colors[4]; else if(avgPercent<60) color=colors[5]; else if(avgPercent<70) color=colors[6]; else if(avgPercent<80) color=colors[7]; else if(avgPercent<90) color=colors[8]; else if(avgPercent<100) color=colors[9]; else color=colors[10]; } else{ //var color=colors[4]; percent=(val/total)*50; if(percent <1) percent=1; } if(val<mapMin) mapMin=val; if(val>mapMax) mapMax=val; var circle={ path: google.maps.SymbolPath.CIRCLE, fillColor: color, fillOpacity: opacity, scale: percent, strokeColor: strokeColor, strokeWeight: .5, val:val, location:location }; return circle; } function blinkMarker(location){ /* In Complete */ var icon; for(var i=0; i<geoMarker.length; i++){ if(geoMarker[i].icon.location == location){ geoMarker[i].setVisible(false); geoMarker[i].setVisible(true); } } } function hilightCircle(location){ /*for(var i=0; i<geoMarker.length; i++){ var i=geoMarker[i].icon.fillColor geoMarker[i].setVisible(green); }*/ } function mkProper(loc){ return String(loc).replace(/ /g,'_').replace(/\./g,'_'); } function createGridTable(reportData){ var htmlStr="<TABLE cellpadding=0 cellspacing=0 class=\"sortable\" id=gridTableId >"; htmlStr+="<thead><tr><th width=16px>X</th><th align=left>"+reportData[0][0]+"</th><th>"+reportData[0][1]+"</th><th width=\"100px\"> </th></tr></thead><tbody>"; var val=0; for(var i=1; i<reportData.length; i++){ val=reportData[i][1].replace(/,/g,''); htmlStr+='<tr class="tr_'+mkProper(reportData[i][0])+'"><td class="rowHide"> </td><td class="action">'+reportData[i][0]+'</td><td align=right val="'+val+'">'+formatData(val, reportCollection[0].formats[0], 0)+'</td><td><span style="background:blue;width:100px;height:10px;display:block"></span></td></tr>'; } htmlStr+="</tbody><tfoot><tr><td></td><td align=left>Total</td><td id=gridTableTotal align=right></td><td></td></tr></tfoot>"; htmlStr+="</table>"; $("#overlayTable").html(htmlStr); sorttable.makeSortable($(".sortable")[0]); } function showCurrentVisibleMarkerData(){ var icon=""; if($("#overlayTable").hasClass('ui-dialog-content')){ $("#overlayTable").dialog("open"); } else{ $("#overlayTable").dialog({ title:"Details", height:getMheight()-200, width: "auto", modal: false, resizable: true, autoResize: false, autoOpen: false, position:['center',20] }); $("#overlayTable").dialog("open"); } //var total=0, max=0; $("#gridTableId tbody tr").hide(); for(var i=0; i<geoMarker.length; i++){ if(map.getBounds().contains(geoMarker[i].getPosition()) && geoMarker[i].getVisible()){ icon=geoMarker[i].getIcon(); $("'tr[class=tr_"+mkProper(icon.location)+"]'").show(); } } applyLogicOnVisibleRows(); } function applyLogicOnVisibleRows(){ var total=0, max=0, val=0; $("#gridTableId tbody tr:visible").each(function(index){ val=parseFloat($(this).children().eq(2).attr('val')); total+=val; if(val>max) max=val; }); $("#gridTableTotal").text(formatData( total, reportCollection[0].formats[0], 0)); $("#gridTableId tbody tr:visible").each(function(index){ var width=($(this).children().eq(2).attr('val')/max)*100; $(this).children().eq(3).children().eq(0).css("width", width+"px") }); } function applyMeasureFilters(filterObj, from, to, option){ var icon=""; for(var i=0; i<geoMarker.length; i++){ icon=geoMarker[i].getIcon(); if(icon.val>=from && icon.val<=to) geoMarker[i].setVisible(true); else geoMarker[i].setVisible(false); } if(showDetails) showCurrentVisibleMarkerData(); } function zoomCircle(option){ var icon=""; for(var i=0; i<geoMarker.length; i++){ icon=geoMarker[i].getIcon(); if(option == "-") icon.scale=icon.scale-(icon.scale*.2); else icon.scale=icon.scale+(icon.scale*.2); geoMarker[i].setIcon(icon); } } function showHideCircle(){ var green=orange=red=true; if($(".circleGreen").prop("checked") == false){ green=false; } if($(".circleRed").prop("checked") == false){ red=false; } if($(".circleOrange").prop("checked") == false){ orange=false; } for(var i=0; i<geoMarker.length; i++){ if(geoMarker[i].icon.fillColor == "green") geoMarker[i].setVisible(green); else if(geoMarker[i].icon.fillColor == "orange") geoMarker[i].setVisible(orange); else if(geoMarker[i].icon.fillColor == "red") geoMarker[i].setVisible(red); geoMarker[i].setDraggable(true); //geoMarker[i].icon.scaledSize++; } } 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]) return "blue-dot-1.png"; else return "red-dot-1.png"; } function putExtraMarkers(map){ var mallIcon="/showcase/js/geoChart/orange_MarkerM.png"; var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(12.926728, 77.675096), icon:mallIcon , title:"Central Mall, Bellandur" }); var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(12.934697,77.611272), icon:mallIcon , title:"The Forum,Koramangala" }); var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(12.992891,77.570808), icon:mallIcon , title:"Mantri Mall,Malleshwaram" }); var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(13.011353,77.555104), icon:mallIcon , title:"Orion Mall,Rajajinagar" }); var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(12.994501,77.703098), icon:mallIcon , title:"Phoneix Maket City,Whitefield Road" }); }