906 lines
32 KiB
JavaScript
906 lines
32 KiB
JavaScript
/*================================================================================================================\
|
|
+
|
|
+ Project : GODATA-VECV
|
|
+ Filename : PositioningTool.js
|
|
+ Module Name : GeoModule
|
|
+ Purpose : To show the Geo Analysis Report.
|
|
+ Coded By : Gourav Jhangikhel
|
|
+
|
|
+================================================================================================================*/
|
|
|
|
|
|
/**
|
|
* To show and export reports.
|
|
* @module Geo
|
|
*/
|
|
|
|
/**
|
|
* To show geo analysis report.
|
|
* @class GeoAnalysis
|
|
* @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;
|
|
|
|
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;
|
|
//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"
|
|
];
|
|
|
|
/**
|
|
* 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() {
|
|
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 = "<h2 class='EngName_heading'> EOS Team Member : " + vObj.ServiceEngineerName + "</h2>" +
|
|
"<table class='InfoWindowTbl' width='100%' cellpadding='0' cellspacing='0'><tbody><tr>" +
|
|
"<td><span>Dealer Name</span></td><td>" + vObj.DealerName + "</td>" +
|
|
"<td><span>Mobile No.</span></td><td>" + vObj.DealerContact + "</td>" +
|
|
"<td><span>Van Reg. No.</span></td><td>" + vObj.VanRegNo + "</td>" +
|
|
"</tr></tbody></table>";
|
|
break;
|
|
case 1:
|
|
vReturn = "<h2 class='EngName_heading'> Open Ticket : " + vObj.title + "</h2>" +
|
|
"<table class='InfoWindowTbl' width='100%' cellpadding='0' cellspacing='0'><tbody><tr>" +
|
|
"<td><span>Ticket Creation Date</span></td><td>" + vObj.TicketCreationDate + "</td>" +
|
|
"<td><span>Ticket Status</span></td><td>" + vObj.TicketStatus + "</td>" +
|
|
"<td><span>Customer Name</span></td><td>" + vObj.CustomerName + "</td>" +
|
|
"<td rowspan='2'><a href='#' onclick=Open_ticket_Detail('" + vObj.TicketId + "')>View Detail</a></td>" +
|
|
"</tr><tr>" +
|
|
"<td><span>EOS Team Member</span></td><td>" + vObj.ServiceEngineerName + "</td>" +
|
|
"<td><span>Mobile No.</span></td><td>" + vObj.CustomerContactNumber + "</td>" +
|
|
"<td><span>Assigned To</span></td><td>" + vObj.AssignedTo + "</td>" +
|
|
"</tr></tbody></table>";
|
|
break;
|
|
case 2:
|
|
vReturn = "<h2 class='EngName_heading'> Close Ticket : " + vObj.title + "</h2>" +
|
|
"<table class='InfoWindowTbl' width='100%' cellpadding='0' cellspacing='0'><tbody><tr>" +
|
|
"<td><span>Ticket Creation Date</span></td><td>" + vObj.TicketCreationDate + "</td>" +
|
|
"<td><span>Customer Name</span></td><td>" + vObj.CustomerName + "</td>" +
|
|
"<td><span>Assigned To</span></td><td>" + vObj.AssignedTo + "</td>" +
|
|
"</tr><tr>" +
|
|
"<td><span>EOS Team Member</span></td><td>" + vObj.ServiceEngineerName + "</td>" +
|
|
"<td><span>Mobile No.</span></td><td>" + vObj.CustomerContactNumber + "</td>" +
|
|
"<td colspan ='2'><a href='#' onclick=Close_ticket_Detail('" + vObj.TicketId + "')>View Detail</a></td>" +
|
|
"</tr><tr></tbody></table>";
|
|
break;
|
|
case 3:
|
|
vReturn = "<h2 class='EngName_heading'> Dealer : " + vObj.DealerName + "</h2>" +
|
|
"<table class='InfoWindowTbl' width='100%' cellpadding='0' cellspacing='0'><tbody><tr>" +
|
|
"<td><span>State</span></td><td>" + vObj.DealerStateName + "</td>" +
|
|
"<td><span>City</span></td><td>" + vObj.DealerCityName + "</td>" +
|
|
"<td><span>Mobile No.</span></td><td>" + vObj.DealerContact + "</td>" +
|
|
"<td colspan ='3'><a href='#' onclick=Dealer_Detail('" + vObj.TicketId + "')>View Detail</a></td>" +
|
|
"</tr></tbody></table>";
|
|
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 = "<h2 class='EngName_heading'>" + vTitle + " : " + vObj.title + "</h2>" +
|
|
"<table class='InfoWindowTbl' width='100%' cellpadding='0' cellspacing='0'><tbody><tr>" +
|
|
"<td><span>Ticket Creation Date</span></td><td>" + vObj.TicketCreationDate + "</td>" +
|
|
"<td><span>Customer Name</span></td><td>" + vObj.CustomerName + "</td>" +
|
|
"<td><span>Assigned To</span></td><td>" + vObj.AssignedTo + "</td>" +
|
|
"</tr><tr>" +
|
|
"<td><span>EOS Team Member</span></td><td>" + vObj.ServiceEngineerName + "</td>" +
|
|
"<td><span>Mobile No.</span></td><td>" + vObj.CustomerContactNumber + "</td>" +
|
|
"</tr></tbody></table>";
|
|
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 vYear = $("#fromDatePicker").val(),
|
|
vMonth = $("#fromMonthPicker").val(),
|
|
vIsVan = $("#IsVan").is(':checked'),
|
|
vIsDealer = $("#IsDealer").is(':checked'),
|
|
vIsOpenTicket = $("#IsOpenTicket").is(':checked'),
|
|
vIsClosedTickets = $("#IsClosedTickets").is(':checked');
|
|
|
|
oAnalysis = {};
|
|
oAnalysis.Year = vYear;
|
|
oAnalysis.Month = vMonth;
|
|
oAnalysis.IsVan = vIsVan;
|
|
oAnalysis.IsDealer = vIsDealer;
|
|
oAnalysis.IsOpenTicket = vIsOpenTicket;
|
|
oAnalysis.IsClosedTickets = vIsClosedTickets;
|
|
|
|
if (oAnalysis.IsVan == true || oAnalysis.IsDealer == true || oAnalysis.IsOpenTicket == true || oAnalysis.IsClosedTickets == true) {
|
|
$("#div_load").show();
|
|
$.ajax({
|
|
type: "GET",
|
|
url: "/Analysis/Analysis_GetAnalysisRprtDetl/",
|
|
data: oAnalysis,
|
|
dataType: "json",
|
|
success: function (data) {
|
|
ArrEOSVAN = data.GeoAnalysisModelReport.lsEOSVAN;
|
|
ArrOpenTicket = data.GeoAnalysisModelReport.lsOpenTicket;
|
|
ArrCloseTicket = data.GeoAnalysisModelReport.lsCloseTicket;
|
|
ArrDealerDetl = data.GeoAnalysisModelReport.lsDealerDetl;
|
|
initMapGeo("divMapContainerGeo");
|
|
UncheckCheckBox();
|
|
},
|
|
complete: function () {
|
|
$("#div_load").hide();
|
|
console.log(latlngbounds);
|
|
ccplMapGeo.fitBounds(latlngbounds);
|
|
//$("#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);
|
|
}
|
|
});
|
|
|
|
} |