/*================================================================================================================\
+
+ Project : GODATA-VECV
+ Filename : RouteWiseBreakdownReport.js
+ Module Name : GeoModule
+ Purpose : To show the Route wise breakdown Report.
+ Coded By : Parul Gupta
+
+================================================================================================================*/
/**
* To show and export reports.
* @module Geo
*/
/**
* To show geo analysis report.
* @class RouteWiseBreakdown
* @constructor
*/
var vTwmLat = "";
var vTempLong = "";
var ArrEOSVAN = new Array();
var ArrOpenTicket = new Array();
var ArrCloseTicket = new Array();
var ArrDealerDetl = new Array();
var ArrSlaNotMeet = new Array();
var ArrSlaMeet = new Array();
var ArrOppurtunity = new Array();
var latlngbounds, xhr_exportExportCsv;
var ccplMapGeo = null,
geoCoder;
var infoWindow = new google.maps.InfoWindow();
var displayDisplay = "", defaultLat = 26.916877147482698,
defaultLng = 75.81169622802736; //route direction display
var routeDirectionsService = new google.maps.DirectionsService(); //direction google map api
var ZoomLevel = 9;
var displayHighway = ""; //highway display
//initialize markers
var CloseTicketMarker = '../../Scripts/map_api/icons/AnalysisIcons/slaMeet.png'; //marker for source
var OpenTicketMarker = '../../Scripts/map_api/icons/AnalysisIcons/OpenTicketyellow.png';
var availableVansMarkers = '../../Content/css/images/avil-van.png'; //marker for available vans
var dealerMarker = '../../Content/css/images/dealer-icon.png'; //marker for dealers
var slaNotMeetMarkerImage = "../../Scripts/map_api/icons/AnalysisIcons/SlaNotMeet.png";
var slaMeetMarkerImage = "../../Scripts/map_api/icons/AnalysisIcons/CloseTicketgreen.png";
var OpportunoityLostImage = "../../Scripts/map_api/icons/AnalysisIcons/Opportunity.png";
//array of source and destination markers
var openTicketMarkerArray = [];
var closeTicketMarkerArray = [];
var dealerDetailMarkerArray = [];
var vanEOSMarkerArray = [];
var slaNotMeetMarkerArray = [];
var slaMeetMarkerArray = [];
var opportunityLostMarkerArray = [];
// Instance of MarkerClusterer.js.
var masterClusterInstance = '';
// Instance of OverlappingMarkerSpiderfier.js.
var oms = '';
// MarkerClusterer options
var clusterOptions = { gridSize: 60, maxZoom: 9 };
//var vOppUrtunitytoogle = true;
//var vSetSLAMEET = true;
//var vSerSLANOTMeet = true;
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
/**
* Convert HH:mm format to Minutes.
* @method convertToMin
* @param {String} time input timei in HH:mm format
* @for TileDashboard
*/
function convertToMin(time) {
var timeArray = time.split(":");
return parseInt(timeArray[0], 10) * 60 + parseInt(timeArray[1], 10);
}
/**
* Function to Add Kendo Window.
* @method addKendoWindowToDiv
* @param {String} divId Id of Kendo Window
* @param {String} titleText Title Of Kendo Window
* @param {String} width width Of Kendo Window
* @param {String} left left Of Kendo Window
* @param {String} top top Of Kendo Window
* @for GeoAnalysis
*/
function addKendoWindowToDiv(divId, titleText, width, left, top) {
$(divId).kendoWindow({
width: width,
title: titleText,
modal: true,
resizable: false,
draggable: true,
position: {
top: top,
left: left
}
});
}
/**
* Function to Set the Title Of kendo Window.
* @method SetKendoWindowTitle
* @param {String} divId Id of Kendo Window
* @param {String} titleText Title Of Kendo Window
* @for GeoAnalysis
*/
function SetKendoWindowTitle(divId, titleText) {
var dialog = $(divId).data("kendoWindow");
dialog.title(titleText);
}
/**
* Function to Close the kendo Window.
* @method closeWindow
* @param {String} divId Id of Kendo Window
* @for GeoAnalysis
*/
function closeWindow(divId) {
$(divId).data("kendoWindow").close();
}
/*================================================Map Function=============================================*/
/**
* Load google map on Button Click.
* @method initMapGeo
* @param {String} id HTML element id where map is loaded.
* @for GeoAnalysis
*/
function initMapGeo(id) {
latlngbounds = new google.maps.LatLngBounds(); // Creating Lat-Long bounds instance to fit all the markers on the map
//Empty All Array
vanEOSMarkerArray = [];
openTicketMarkerArray = [];
closeTicketMarkerArray = [];
dealerDetailMarkerArray = [];
// Set Mass By passing the Div Id
SetMap(id);
latlngbounds = new google.maps.LatLngBounds(); // Creating Lat-Long bounds instance to fit all the markers on the map
/*Create a instance of OverlappingMarkerSpiderfier*/
oms = new OverlappingMarkerSpiderfier(ccplMapGeo,
{ markersWontMove: true, markersWontHide: true });
//Put Marker On Map
PutMarker(ArrEOSVAN, availableVansMarkers, false);
PutMarker(ArrDealerDetl, dealerMarker, false);
PutMarker(ArrOpenTicket, OpenTicketMarker, false);
PutMarker(ArrCloseTicket, CloseTicketMarker, false);
//Set Map zoom Level
ccplMapGeo.setZoom(ZoomLevel);
// Set Map in center Acc. to lattitude And Longitude
ccplMapGeo.setCenter({ lat: defaultLat, lng: defaultLng });
//Set All Map Array In One Array so that Cluster Effect will show
var vTempMarkerCluster = vanEOSMarkerArray.concat(openTicketMarkerArray);
vTempMarkerCluster = vTempMarkerCluster.concat(closeTicketMarkerArray);
vTempMarkerCluster = vTempMarkerCluster.concat(dealerDetailMarkerArray);
masterClusterInstance = new MarkerClusterer(ccplMapGeo, vTempMarkerCluster, { maxZoom: 9 });
}
/**
* Complete Calling For Geo Analysis Report.
* @method showReport
* @for GeoAnalysis
*/
function showReport() {
$("#spanRoute").hide();
var routeId = $("#RouteId").val();
if (routeId == null || routeId == "") {
$("#spanRoute").show();
} else {
GetDetailFromServer();
}
//initMapGeo("divMapContainerGeo");
//SetBitTrue();
}
/**
* Function to Put the Marker On Google Map.
* @method PutMarker
* @param {Array} Arr Array That is put On Google Map.
* @param {String} MarkerImagePath Marker Image Path
* @param {boolean} IsAnimation Is Marker will Animate Or not
* @for GeoAnalysis
*/
function PutMarker(Arr, MarkerImagePath, IsAnimation) {
var bounds = new google.maps.LatLngBounds();
// Display multiple markers on a map
ticketDetailsMarkerArray = [];
// Loop through our array of markers & place each one on the map
if (Arr.length > 0) {
for (i = 0; i < Arr.length; i++) {
var position = new google.maps.LatLng(Arr[i].DefaultLattitude, Arr[i].DefaultLongitude);
bounds.extend(position);
//console.log(Arr[i].TicketIdAlias);
if (Arr[i].TicketIdAlias == null)
Arr[i].TicketIdAlias = "";
var marker = new google.maps.Marker({
position: position,
map: ccplMapGeo,
title: Arr[i].TicketIdAlias,
TicketId: Arr[i].Id,
icon: MarkerImagePath,
Latitude: Arr[i].DefaultLattitude,
Longitude: Arr[i].DefaultLongitude,
ServiceEngineerName: Arr[i].ServiceEnggName,
DealerName: Arr[i].DealerName,
MobileNo: Arr[i].ServiceEnggContactNumber,
VanRegNo: Arr[i].VanRegistrationNumber,
TicketStatus: Arr[i].TicketStatusAlias,
AssignedTo: Arr[i].AssignTo,
TicketCreationDate: Arr[i].CreationTime,
DealerCityName: Arr[i].City,
DealerStateName: Arr[i].State,
lstType: Arr[i].lstType,
SlaMet: Arr[i].SlaMet,
CustomerContactNumber: Arr[i].CustomerContactNumber,
CustomerName: Arr[i].CustomerName,
DealerContact: Arr[i].DealerContact,
IsOppurLost: Arr[i].oppurLost
});
if (Arr[i].DefaultLattitude == "0") {
Arr[i].DefaultLattitude = 25;
}
if (Arr[i].DefaultLongitude == "0") {
Arr[i].DefaultLongitude = 72;
}
var sourceVan = new google.maps.LatLng(Arr[i].DefaultLattitude, Arr[i].DefaultLongitude); // ceating van lat-long object
latlngbounds.extend(sourceVan); // extending lat-long object
// Add marker to OMS.
oms.addMarker(marker);
/*Add Marker To Cluster*/
//if (IsAnimation)
// marker.setAnimation(google.maps.Animation.BOUNCE);
// In Which Array Marker is Push
//0 : EOS VAN
//1 : Open Ticket
//2 : Close Ticket
//3 : Dealer Detail
//4 : SlA Meet
//5 : SLA Not Meet
//6 : Opportunity Lost
switch (Arr[i].lstType) {
case 0:
vanEOSMarkerArray.push(marker);
break;
case 1:
openTicketMarkerArray.push(marker);
break;
case 2:
closeTicketMarkerArray.push(marker);
break;
case 3:
dealerDetailMarkerArray.push(marker);
break;
case 4:
slaMeetMarkerArray.push(marker);
break;
case 5:
slaNotMeetMarkerArray.push(marker);
break;
case 6:
opportunityLostMarkerArray.push(marker);
break;
}
// Automatically center the map fitting all markers on the screen
google.maps.event.addListener(marker, 'click', AddInfoWindow);
}
//ccplMapGeo.fitBounds(latlngbounds);
//var position = new google.maps.LatLng(defaultLat, defaultLng);
//bounds.extend(position);
//var sourceVan = new google.maps.LatLng(van.VanDefaultLatitude, van.VanDefaultLongitude); // ceating van lat-long object
//latlngbounds.extend(sourceVan); // extending lat-long object
}
}
/**
* Function to AddInfo On Click On marker.
* @method AddInfoWindow
* @for GeoAnalysis
*/
function AddInfoWindow(e) {
infoWindow.close();
var infoWindowContent = GetInfoWindowsTemplate(this);
infoWindow.setContent(infoWindowContent);
infoWindow.open(ccplMapGeo, this);
}
/**
* Function to Initalize google map
* @method SetMap
* @param {string} id Id Of Google Map.
* @for GeoAnalysis
*/
function SetMap(id) {
getLocation();
ccplMapGeo = new google.maps.Map(document.getElementById(id), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: new google.maps.LatLng(defaultLat, defaultLng),
zoom: ZoomLevel
});
}
/**
* Function to Get the User Location
* @method SetMap
* @param {string} id Id Of Google Map.
* @for GeoAnalysis
*/
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
/**
* Function to Show the Position
* @method showPosition
* @param {object} position Contains Cordinate Lattitude and longitude.
* @for GeoAnalysis
*/
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude;
defaultLat = position.coords.latitude;
defaultLng = position.coords.longitude;
}
/**
* Function to Set the Info Wimdow Template
* @method GetInfoWindowsTemplate
* @param {Object} vObj Contain Information About Marker Object.
* @for GeoAnalysis
*/
function GetInfoWindowsTemplate(vObj) {
var vReturn = "";
// Set Info Window Template According to List Type
//0 : EOS VAN
//1 : Open Ticket
//2 : Close Ticket
//3 : Dealer Detail
//4 : SLA Meet
//5 : SLA Not Met
//6 : Opportunity Lost
switch (vObj.lstType) {
case 0:
vReturn = "
EOS Team Member : " + vObj.ServiceEngineerName + "
" +
"" +
"| Dealer Name | " + vObj.DealerName + " | " +
"Mobile No. | " + vObj.DealerContact + " | " +
"Van Reg. No. | " + vObj.VanRegNo + " | " +
"
";
break;
case 1:
vReturn = " Open Ticket : " + vObj.title + "
" +
"" +
"| Ticket Creation Date | " + vObj.TicketCreationDate + " | " +
"Ticket Status | " + vObj.TicketStatus + " | " +
"Customer Name | " + vObj.CustomerName + " | " +
"View Detail | " +
"
" +
"| EOS Team Member | " + vObj.ServiceEngineerName + " | " +
"Mobile No. | " + vObj.CustomerContactNumber + " | " +
"Assigned To | " + vObj.AssignedTo + " | " +
"
";
break;
case 2:
vReturn = " Close Ticket : " + vObj.title + "
" +
"" +
"| Ticket Creation Date | " + vObj.TicketCreationDate + " | " +
"Customer Name | " + vObj.CustomerName + " | " +
"Assigned To | " + vObj.AssignedTo + " | " +
"
" +
"| EOS Team Member | " + vObj.ServiceEngineerName + " | " +
"Mobile No. | " + vObj.CustomerContactNumber + " | " +
"View Detail | " +
"
|
";
break;
case 3:
vReturn = " Dealer : " + vObj.DealerName + "
" +
"" +
"| State | " + vObj.DealerStateName + " | " +
"City | " + vObj.DealerCityName + " | " +
"Mobile No. | " + vObj.DealerContact + " | " +
"View Detail | " +
"
";
break;
case 4:
case 5:
case 6:
var vTitle = "";
if (vObj.lstType == 4) {
vTitle = "SLA Met";
}
else if (vObj.lstType == 5) {
vTitle = "SLA Not Met";
}
else if (vObj.lstType == 6) {
vTitle = "Opportunity Lost";
}
vReturn = "" + vTitle + " : " + vObj.title + "
" +
"" +
"| Ticket Creation Date | " + vObj.TicketCreationDate + " | " +
"Customer Name | " + vObj.CustomerName + " | " +
"Assigned To | " + vObj.AssignedTo + " | " +
"
" +
"| EOS Team Member | " + vObj.ServiceEngineerName + " | " +
"Mobile No. | " + vObj.CustomerContactNumber + " | " +
"
";
break;
}
return vReturn;
}
/**
* Function to get Information From Server According to Year, Month, Eos van, Open Ticket, close Ticket, Dealer.
* @method GetDetailFromServer
* @for GeoAnalysis
*/
function GetDetailFromServer() {
openTicketMarkerArray = []; //array of source and destination markers
closeTicketMarkerArray = [];
dealerDetailMarkerArray = [];
vanEOSMarkerArray = [];
ArrSlaNotMeet = [];
ArrSlaMeet = [];
ArrOppurtunity = [];
var vFromDate = $("#fromDatePicker").val(),
vToDate = $("#fromMonthPicker").val(),
vRouteId = $("#RouteId").val();
oAnalysis = {};
oAnalysis.FromDate = vFromDate;
oAnalysis.ToDate = vToDate;
oAnalysis.RouteId = vRouteId;
//if (oAnalysis.IsVan == true || oAnalysis.IsDealer == true || oAnalysis.IsOpenTicket == true || oAnalysis.IsClosedTickets == true) {
$("#div_load").show();
$.ajax({
type: "GET",
url: "/Analysis/Analysis_RouteWiseBreakdownReport_GetReport/",
data: oAnalysis,
dataType: "json",
success: function (data) {
//console.log(data);
var model = data.kpiData.GeoAnalysisModelReport.lsCloseTicket;
var dataCount = 0;
if ((data != null) && (data.data.GeoAnalysisModelReport.lsCloseTicket != null) && (data.data.GeoAnalysisModelReport.lsCloseTicket.length) > 0) {
dataCount = data.data.GeoAnalysisModelReport.lsCloseTicket.length;
$('.excelIcon').show();
} else {
$('.excelIcon').hide();
}
console.log(dataCount);
$("#total_breakdown").text(dataCount);
$("#textFor_total_breakdown").text("Total Breakdown");
ArrEOSVAN = data.data.GeoAnalysisModelReport.lsCloseTicket.filter(function (el) {
//console.log(el);
return el.AssignTo.toLowerCase() == "van"
});
ArrDealerDetl = data.data.GeoAnalysisModelReport.lsCloseTicket.filter(function (el) {
return el.AssignTo.toLowerCase() == "dealer"
});
initMapGeo("divMapContainerGeo");
for (var i = 0; i < model.length; i++) {
if (model[i].Key == "average_response_time") {
$("#average_response_time").text((model[i].KeyValue != null && model[i].KeyValue != "") ? model[i].KeyValue : "");
$("#textFor_average_response_time").text(model[i].KeyName);
if (parseInt(convertToMin(model[i].KeyValue, 10)) > 120) {
$("#average_response_time").css('background-color', '#ee1d23');
} else {
$("#average_response_time").css('background-color', '#669999');
}
}
// Getting and setting value for average response time dealer
else if (model[i].Key == "average_closure_time") {
$("#average_closure_time").text((model[i].KeyValue != null && model[i].KeyValue != "") ? model[i].KeyValue : "");
$("#textFor_average_closure_time").text(model[i].KeyName);
if (parseInt(convertToMin(model[i].KeyValue, 10)) > 120) {
$("#average_closure_time").css('background-color', '#ee1d23');
} else {
$("#average_closure_time").css('background-color', '#669999');
}
}
}
},
complete: function () {
$("#div_load").hide();
onChangeRoute();
//console.log(latlngbounds);
setTimeout(ccplMapGeo.fitBounds(latlngbounds), 1000);
////$("#stateCombobox").data('kendoComboBox').select(0);
},
error: function (jqXHR, textStatus, errorThrown) {
}
});
//}
//else {
// jAlert(MANAGE_GEOANALYSIS_MESSAGES.atleastOnecheckbox, "Message");
//}
}
/**
* Function to Set Opportunity Lost Marker On Map
* @method GetOpportunityLost
* @for GeoAnalysis
*/
function GetOpportunityLost() {
if (closeTicketMarkerArray.length == 0) {
jAlert(MANAGE_GEOANALYSIS_MESSAGES.oppurtunityLostValidation, 'message', function (result) {
if (result) {
$("#btnOpportunityLost").prop('checked', false);
}
});
}
else {
if ($("#btnOpportunityLost").is(':checked') == false) {
if (closeTicketMarkerArray.length != 0) {
for (var i = 0; i < closeTicketMarkerArray.length; i++) {
var marker = closeTicketMarkerArray[i];
if (marker.IsOppurLost == true) {
marker.setAnimation(null);
marker.icon = CloseTicketMarker;
marker.lstType = 2;
//if ($("#btnSlaMeet").is(':checked') == false && marker.SlaMet == "True")
// marker.setAnimation(null);
//if ($("#btnSlaNotMeet").is(':checked') == false && marker.SlaMet == "False")
// marker.setAnimation(null);
}
}
}
}
else {
var CheckOppLost = true;
if (closeTicketMarkerArray.length != 0) {
for (var i = 0; i < closeTicketMarkerArray.length; i++) {
var marker = closeTicketMarkerArray[i];
if (marker.IsOppurLost) {
marker.lstType = 6;
marker.Id = marker.Id + "( Close Ticket )";
//ArrSlaNotMeet.push(marker);
marker.setAnimation(google.maps.Animation.BOUNCE);
marker.icon = OpportunoityLostImage;
CheckOppLost = false;
}
}
}
if (CheckOppLost) {
jAlert(MANAGE_GEOANALYSIS_MESSAGES.oppurtunityLostValidation, 'message', function (result) {
if (result) {
$("#btnOpportunityLost").prop('checked', false);
}
});
}
//HideAllMap();
//PutMarker(ArrOppurtunity, OpportunoityLostImage, true);
}
//vOppUrtunitytoogle = !vOppUrtunitytoogle;
}
}
/**
* Function to Set SLA Meet Marker On Map
* @method GetSLAMeet
* @for GeoAnalysis
*/
function GetSLAMeet() {
if (openTicketMarkerArray.length == 0 && closeTicketMarkerArray.length == 0) {
jAlert(MANAGE_GEOANALYSIS_MESSAGES.SLAMetValidation, 'message', function (result) {
if (result) {
$("#btnSlaMeet").prop('checked', false);
}
});
}
else {
var ImagePath = slaMeetMarkerImage;
if ($("#btnSlaMeet").is(':checked') == false) {
if (openTicketMarkerArray.length != 0) {
for (var i = 0; i < openTicketMarkerArray.length; i++) {
var marker = openTicketMarkerArray[i];
if (marker.SlaMet == "True") {
//ArrSlaMeet.push(marker);
marker.icon = OpenTicketMarker;
marker.lstType = 1;
marker.setAnimation(null);
}
}
}
if (closeTicketMarkerArray.length != 0) {
for (var i = 0; i < closeTicketMarkerArray.length; i++) {
var marker = closeTicketMarkerArray[i];
if (marker.SlaMet == "True" && marker.IsOppurLost == false) {
//ArrSlaMeet.push(marker);
if ($("#btnOpportunityLost").is(':checked') == false) {
marker.setAnimation(null);
marker.icon = CloseTicketMarker;
marker.lstType = 2;
}
else {
if (marker.IsOppurLost == false) {
marker.icon = CloseTicketMarker;
marker.lstType = 2;
marker.setAnimation(null);
}
}
}
}
}
}
else {
var CheckSLAMeet = true;
if (openTicketMarkerArray.length != 0) {
for (var i = 0; i < openTicketMarkerArray.length; i++) {
var marker = openTicketMarkerArray[i];
if (marker.SlaMet == "True") {
marker.lstType = 4;
marker.Id = marker.Id + "( Open Ticket )";
//ArrSlaMeet.push(marker);
marker.icon = slaMeetMarkerImage;
marker.setAnimation(google.maps.Animation.BOUNCE);
CheckSLAMeet = false;
}
}
}
if (closeTicketMarkerArray.length != 0) {
for (var i = 0; i < closeTicketMarkerArray.length; i++) {
var marker = closeTicketMarkerArray[i];
if (marker.SlaMet == "True" && marker.IsOppurLost == false) {
marker.lstType = 4;
marker.Id = marker.Id + "( Close Ticket )";
//ArrSlaMeet.push(marker);
marker.icon = slaMeetMarkerImage;
marker.setAnimation(google.maps.Animation.BOUNCE);
CheckSLAMeet = false;
}
}
}
if (CheckSLAMeet) {
jAlert(MANAGE_GEOANALYSIS_MESSAGES.SLAMetValidation, 'message', function (result) {
if (result) {
$("#btnSlaMeet").prop('checked', false);
}
});
}
// HideAllMap();
//PutMarker(ArrSlaMeet, ImagePath, true);
}
//vSetSLAMEET = !vSetSLAMEET;
}
}
/**
* Function to Set SLA Not Meet Marker On Map
* @method GetSLANotMeet
* @for GeoAnalysis
*/
function GetSLANotMeet() {
if (openTicketMarkerArray.length == 0 && closeTicketMarkerArray.length == 0) {
jAlert(MANAGE_GEOANALYSIS_MESSAGES.SLANotMetValidation, 'message', function (result) {
if (result) {
$("#btnSlaNotMeet").prop('checked', false);
}
});
}
else {
var ImagePath = slaNotMeetMarkerImage;
if ($("#btnSlaNotMeet").is(':checked') == false) {
if (openTicketMarkerArray.length != 0) {
for (var i = 0; i < openTicketMarkerArray.length; i++) {
var marker = openTicketMarkerArray[i];
if (marker.SlaMet == "False") {
//ArrSlaNotMeet.push(marker);
marker.icon = OpenTicketMarker;
marker.lstType = 1;
marker.setAnimation(null);
}
}
}
if (closeTicketMarkerArray.length != 0) {
for (var i = 0; i < closeTicketMarkerArray.length; i++) {
var marker = closeTicketMarkerArray[i];
if (marker.SlaMet == "False" && marker.IsOppurLost == false) {
if ($("#btnOpportunityLost").is(':checked') == false) {
marker.setAnimation(null);
marker.icon = closeTicketMarkerArray;
marker.lstType = 2;
}
else {
if (marker.IsOppurLost == false) {
marker.setAnimation(null);
marker.icon = closeTicketMarkerArray;
marker.lstType = 2;
}
}
}
}
}
}
else {
var CheckSLANotMeet = true;
if (openTicketMarkerArray.length != 0) {
for (var i = 0; i < openTicketMarkerArray.length; i++) {
var marker = openTicketMarkerArray[i];
if (marker.SlaMet == "False") {
marker.lstType = 5;
marker.Id = marker.Id + "( Open Ticket )";
//ArrSlaNotMeet.push(marker);
marker.setAnimation(google.maps.Animation.BOUNCE);
marker.icon = slaNotMeetMarkerImage;
CheckSLANotMeet = false;
}
}
}
if (closeTicketMarkerArray.length != 0) {
for (var i = 0; i < closeTicketMarkerArray.length; i++) {
var marker = closeTicketMarkerArray[i];
if (marker.SlaMet == "False" && marker.IsOppurLost == false) {
marker.lstType = 5;
marker.Id = marker.Id + "( Close Ticket )";
//ArrSlaNotMeet.push(marker);
marker.setAnimation(google.maps.Animation.BOUNCE);
CheckSLANotMeet = false;
marker.icon = slaNotMeetMarkerImage;
}
}
}
if (CheckSLANotMeet) {
jAlert(MANAGE_GEOANALYSIS_MESSAGES.SLANotMetValidation, 'message', function (result) {
if (result) {
$("#btnSlaNotMeet").prop('checked', false);
}
});
}
//HideAllMap();
//PutMarker(ArrSlaNotMeet, ImagePath, true);
}
//vSerSLANOTMeet = !vSerSLANOTMeet;
}
}
/**
* Function to Hide the Marker of Open Ticket,Close Ticket, Dealer Marker, Van EOS Marker
* @method HideAllMap
* @for GeoAnalysis
*/
function HideAllMap() {
hideAnimation(openTicketMarkerArray);
hideAnimation(closeTicketMarkerArray);
hideAnimation(dealerDetailMarkerArray);
hideAnimation(vanEOSMarkerArray);
}
/**
* Function to Show the Marker of Open Ticket,Close Ticket, Dealer Marker, Van EOS Marker and hide the Marker of SLA Meet, SLA Not Meet,
* Opportunity Lost
* @method ShowAllMap
* @for GeoAnalysis
*/
function ShowAllMap() {
UncheckCheckBox();
//ShowMap(openTicketMarkerArray);
//ShowMap(closeTicketMarkerArray);
GetSLAMeet();
GetSLANotMeet();
GetOpportunityLost();
ShowMap(dealerDetailMarkerArray);
ShowMap(vanEOSMarkerArray);
hideAnimation(slaMeetMarkerArray);
hideAnimation(slaNotMeetMarkerArray);
hideAnimation(opportunityLostMarkerArray);
SetBitTrue();
}
/**
* Function to Hide the Marker From Map
* @method hideAnimation
* @param {Array} markers Contain Markers Array that will hide from Google map.
* @for GeoAnalysis
*/
function hideAnimation(markers) {
for (var i = 0; i < markers.length; i++) {
markers[i].setAnimation(null);
}
markers = [];
}
/**
* Function to Show the Marker From Map
* @method ShowMap
* @param {Array} markers Contain Markers Array that will show from Google map.
* @for GeoAnalysis
*/
function ShowMap(markers) {
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(ccplMapGeo);
}
markers = [];
}
/**
* Function to set the bit True so that marker will show or hide
* @method SetBitTrue
* @for GeoAnalysis
*/
function SetBitTrue() {
vOppUrtunitytoogle = true;
vSetSLAMEET = true;
vSerSLANOTMeet = true;
}
/**
* Function to un Check All Checkboxes
* @method UncheckCheckBox
* @for GeoAnalysis
*/
function UncheckCheckBox() {
$("#btnSlaMeet,#btnSlaNotMeet,#btnOpportunityLost").prop('checked', false);
}
/**
* Function to Show the Detail Of Close Ticket On Kendo Window.
* @method Close_ticket_Detail.
* @param {string} TicketId Contain Close Ticket Id.
* @for GeoAnalysis
*/
function Close_ticket_Detail(TicketId) {
$.ajax({
type: "POST",
url: "/Report/Ticket_GetOpencloseTicketFullDetails/",
data: { ticketId: TicketId, ticketStatus: "close" },
success: function (data) {
$("#divTicketDetails").html("");
$("#divTicketDetails").html(data);
//open window in new dialog box
$("#divTicketDetails").data("kendoWindow").open();
},
error: function (data) {
//console.log(data);
}
});
}
/**
* Function to Show the Detail Of Open Ticket On Kendo Window.
* @method Open_ticket_Detail.
* @param {string} TicketId Contain Open Ticket Id.
* @for GeoAnalysis
*/
function Open_ticket_Detail(TicketId) {
$.ajax({
type: "POST",
url: "/Report/Ticket_GetOpencloseTicketFullDetails/",
data: { ticketId: TicketId, ticketStatus: "open" },
success: function (data) {
$("#divTicketDetails").html("");
$("#divTicketDetails").html(data);
//open window in new dialog box
$("#divTicketDetails").data("kendoWindow").open();
},
error: function (data) {
//console.log(data);
}
});
}
/**
* Function to show Dealer details.
* @method Dealer_Detail
* @param {String} dealerID Dealer Id that is used to Get the Detail.
* @for GeoAnalysis
*/
function Dealer_Detail(dealerId) {
$.ajax({
type: "POST",
url: "/Inventory/AddOrEditFleet/",
data: { sDealerId: dealerId },
success: function (data) {
$("#divFleetDetail").html('');
$("#divFleetDetail").html(data);
$("#divFleetDetail").data("kendoWindow").open();
SetKendoWindowTitle("#divFleetDetail", "Dealer Detail");
$("#ddOrganization").hide();
$("#ddState").hide();
$("#ddCity").hide();
$("#DealerOrganizationName,#DealerStateName,#DealerCity").show();
vDealerContactNoOnFocus = $("#DealerContactNo").val();
$("#btnSaveFleet").hide();
HideDealerDetailMessage();
HideVanDetailMessage();
$('.k-grid-Edit').text("").removeClass("k-button k-button-icontext").hide();
$('.k-grid-Delete').text("").removeClass("k-button k-button-icontext").hide();
$("#btnAddVanDetail").hide();
var grid = $("#gridDealer").data("kendoGrid");
grid.hideColumn(8);
grid.hideColumn(9);
$("#tdlblSetDealerLoc,#tdbtnSetDealerLoc,#trSetLocation").hide();
$("#tdDealerContactNo").attr('colspan', 3);
$("#NewDealerId,#DealerDealerName,#DealerContactNo").attr("readonly", "readonly");
},
error: function (data) {
//console.log(data);
}
});
}
/**
* To get filter parameters and export report.
* @method exportReportCSV
* @for ConsolidatedReport
*/
function exportReportCSV() {
var vFromDate = $("#fromDatePicker").val(),
vToDate = $("#fromMonthPicker").val(),
vRouteId = $("#RouteId").val();
oAnalysis = {};
oAnalysis.FromDate = vFromDate;
oAnalysis.ToDate = vToDate;
oAnalysis.RouteId = vRouteId;
// sending ajax request to export ICR Unique Users and Data Usage to Excel, and hadling its completion
if (xhr_exportExportCsv && xhr_exportExportCsv.readystate != 4) {
xhr_exportExportCsv.abort();
}
xhr_exportExportCsv = $.ajax({
type: "POST",
url: "/Analysis/Analysis_RouteWiseBreakdownReport_ExportToExcel/",
data: oAnalysis,
success: function (data) {
// making the generated Excel available for downloading.
window.location.href = data;
},
complete: function () {
},
error: function (data) {
console.log("Error in Export to Excel");
}
});
}
/**
* This fn calculates and draws the Route for selected national highway using Google Direction API
* @method drawHighway
* @param {String} startLatLng Position of origin
* @param {String} endLatLng Position of destination
* @param {String} vanDealerType Type is Van or Dealer
* @param {String} mapID map id
* @for TicketAdministration
*/
function drawHighway(startLatLng, endLatLng, vanDealerType, mapID, wayPointArr, routeColor) {
if (displayHighway) {
//Remove direction display
displayHighway.setMap(null);
}
var rendererOptionsForHighway = {
map: mapID,
suppressMarkers: true,
polylineOptions: { strokeColor: routeColor }
}
var request = "";
displayHighway = new google.maps.DirectionsRenderer(rendererOptionsForHighway);
if (wayPointArr.length > 0) {
//Make request obj to Direction Service API with starting and end LatLng
request = {
origin: startLatLng,
destination: endLatLng,
waypoints: wayPointArr,
avoidHighways: false,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};
//call Direction Service API with the reuqest obj
routeDirectionsService.route(request, function (response, status) {
//if status was a success
if (status == google.maps.DirectionsStatus.OK) {
displayHighway.setOptions({ preserveViewport: true });
//set Direction to the response
displayHighway.setDirections(response);
var leg = response.routes[0].legs[0];
} else {
}
});
}
latlngbounds.extend(startLatLng);
latlngbounds.extend(endLatLng);
}
/**
* This function call on change of route name
* @method onChangeRoute
* @for TicketAdministration
*/
function onChangeRoute() {
var NH_ID = $("#RouteId").val();
var NH_PATH = HIGHWAY_PATH[NH_ID];
console.log(NH_PATH);
if (typeof NH_PATH != "undefined") {
drawHighway(NH_PATH.source, NH_PATH.destination, "", ccplMapGeo, NH_PATH.wayPoints, NH_PATH.color);
}
}