725 lines
30 KiB
JavaScript
725 lines
30 KiB
JavaScript
/*================================================================================================================\
|
|
+
|
|
+ Project : GoData-Eicher
|
|
+ Filename : TicketAdministrationReassign.js
|
|
+ Module Name : Ticket
|
|
+ Purpose : For ticket reassign
|
|
+ Coded By : Parul Gupta
|
|
+
|
|
+================================================================================================================*/
|
|
|
|
/**
|
|
* For ticketing
|
|
* @module Ticket
|
|
*/
|
|
|
|
/**
|
|
* This class contains functionality of Ticket Reassign for CCE.
|
|
* @class TicketReassign
|
|
* @constructor
|
|
*/
|
|
|
|
//Global variables
|
|
var xhr_addNewTicket;
|
|
var breakdownLocLatLng;
|
|
var breakdownMarker;
|
|
var _ccplMap = null;
|
|
var _geoCoder;
|
|
var _defaultLat = 26.912285124827,
|
|
_defaultLng = 75.7873203125
|
|
|
|
//initialize markers
|
|
var _availableVansMarkers = '../../Content/css/images/avil-van.png'; //marker for available vans
|
|
var _unavailableVansMarkers = '../../Content/css/images/unavl-van.png'; //marker for unavailable vans
|
|
var _dealerMarker = '../../Content/css/images/dealer-icon.png'; //marker for dealers
|
|
|
|
var breakdownLat, breakdownLng, breakdownState, ticketId, defaultSlatime, vRegistrationNo;
|
|
|
|
//Google Distance MAtrix Service API
|
|
var _service = new google.maps.DistanceMatrixService();
|
|
|
|
var _detailsListOfVanDealer = []; //array of objects of details of nearest vans and dealers
|
|
var _vanDealerLatLngArr = []; //array of nearest vans and dealers lat lng
|
|
var _copyResulEls = [];
|
|
|
|
|
|
/**
|
|
* Load google map on page.
|
|
* @method initMap
|
|
* @param {String} id HTML element id where map is loaded.
|
|
* @for TicketReassign
|
|
*/
|
|
function _initMap(id) {
|
|
var _mapOptions = {
|
|
center: new google.maps.LatLng(_defaultLat, _defaultLng),
|
|
zoom: 12,
|
|
mapTypeId: google.maps.MapTypeId.ROADMAP
|
|
};
|
|
//initialize map
|
|
_ccplMap = new google.maps.Map(document.getElementById(id), _mapOptions);
|
|
}
|
|
|
|
/**
|
|
* Function to reassign ticket
|
|
* @method reassignTicket
|
|
* @for TicketReassign
|
|
*/
|
|
function reassignTicket() {
|
|
|
|
breakdownLat = $("#breakdownLattitude").val();
|
|
breakdownLng = $("#breakdownLongitude").val();
|
|
breakdownState = $("#breakdownState").val();
|
|
ticketId = $("#ticketid").val();
|
|
defaultSlatime = $("#defaultSlaTime").val();
|
|
vRegistrationNo = $("#vRegistrationNo").val();
|
|
DealerId = $("#DealerID").val();
|
|
|
|
|
|
breakdownLocLatLng = new google.maps.LatLng(breakdownLat, breakdownLng);
|
|
|
|
$.ajax({
|
|
type: "GET",
|
|
//url: "/Ticket/TicketAdministration_ReassignTicket/",
|
|
url: "/TicketAdministration_Dealer/TicketAdministration_DealerReassignTicket/",
|
|
success: function (data) {
|
|
|
|
$("#divReassignTicket").html('');
|
|
$("#divReassignTicket").html(data);
|
|
//open form in new dialog box
|
|
$("#divReassignTicket").data("kendoWindow").open();
|
|
openKendoWindowInCenter("#divReassignTicket");
|
|
},
|
|
complete: function () {
|
|
setTimeout(function () { /* get all nearest vans and dealers */ getAllNearestVansDealers(breakdownState); }, 1500);
|
|
},
|
|
error: function (data) {
|
|
console.log(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
/**
|
|
* Function to close kendo window
|
|
* @method closeWindow
|
|
* @param {String} divId HTML element id where window is loaded
|
|
* @for TicketReassign
|
|
*/
|
|
function closeWindow(divId) {
|
|
$(divId).data("kendoWindow").close();
|
|
}
|
|
|
|
|
|
/**
|
|
* Function to empty van dealer array
|
|
* @method emptyVanDealerArray
|
|
* @for TicketReassign
|
|
*/
|
|
function emptyVanDealerArray() {
|
|
|
|
if (nearestVansDealersMarks.length > 0) {
|
|
//console.log(nearestVansDealersMarks.length);
|
|
for (var counter = 0; counter < nearestVansDealersMarks.length; counter++) {
|
|
nearestVansDealersMarks[counter].setMap(null);
|
|
//set address text field empty here
|
|
nearestVansDealersMarks[counter] = "";
|
|
}
|
|
nearestVansDealersMarks = [];
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Function to remove markers if any
|
|
* @method removeMarker
|
|
* @for TicketReassign
|
|
*/
|
|
function removeMarker() {
|
|
//Remove previous marker if present
|
|
if (breakdownMarker) {
|
|
breakdownMarker.setMap(null);
|
|
//set address text field empty here
|
|
breakdownMarker = "";
|
|
}
|
|
}
|
|
|
|
//Global variables to get more than 25 vans/dealers
|
|
var _arrOf25VanDealerLatLng = [];
|
|
var _arrOf25VanDealerDetails = [];
|
|
var _LIMIT = 100;
|
|
|
|
/**
|
|
* Function to get all nearest vans and dealers for reassign ticket
|
|
* @method getAllNearestVansDealers
|
|
* @param {String} state The name of selected state
|
|
* @for TicketReassign
|
|
*/
|
|
function getAllNearestVansDealers(state) {
|
|
var stateName, stateId, vanDealerLatlng, type, VDId, vanDealerLat, vanDealerLng, vanDealerCity,
|
|
vanDealerName, vanDealerState, deviceAlias, vanRemainingTime, deviceStatus, noOfAssignedTickets, description, DealerSCode, DealerOrVanContactNo;
|
|
stateName = state;
|
|
|
|
//empty van dealer lat lng array
|
|
if (_vanDealerLatLngArr.length > 0) {
|
|
_vanDealerLatLngArr = [];
|
|
}
|
|
//empty details list of van dealer array
|
|
if (_detailsListOfVanDealer.length > 0) {
|
|
_detailsListOfVanDealer = [];
|
|
}
|
|
//empty array to get next 25 vans/dealers details.
|
|
_copyResulEls = [];
|
|
|
|
removeMarker();
|
|
emptyVanDealerArray();
|
|
|
|
//Create a new Marker on the position click on the map
|
|
breakdownMarker = new google.maps.Marker({
|
|
position: breakdownLocLatLng,
|
|
map: _ccplMap
|
|
});
|
|
$.ajax({
|
|
type: "GET",
|
|
url: "/TicketAdministration_Dealer/GetDealersOwnVan/",
|
|
//url: "/Ticket/GetAllNearestVansDealers/",
|
|
data: { StateName: stateName, limit: _LIMIT },
|
|
success: function (data) {
|
|
console.log(data.NearestVansDealers);
|
|
if (data.NearestVansDealers.length > 0) {
|
|
_vanDealerLatLngArr.length = 0;
|
|
for (var counter = 0; counter < data.NearestVansDealers.length; counter++) {
|
|
var title, markerIcon, backgroundColor;
|
|
var updatedDeviceStatus = "";
|
|
var _vanDealerObj = {};
|
|
|
|
vanDealerLatlng = new google.maps.LatLng(data.NearestVansDealers[counter].DealerVanLattitude, data.NearestVansDealers[counter].DealerVanLongitude);
|
|
type = data.NearestVansDealers[counter].Type;
|
|
VDId = data.NearestVansDealers[counter].DealerVanId;
|
|
vanDealerLat = data.NearestVansDealers[counter].DealerVanLattitude;
|
|
vanDealerLng = data.NearestVansDealers[counter].DealerVanLongitude;
|
|
vanDealerCity = data.NearestVansDealers[counter].DealerVanCity;
|
|
noOfAssignedTickets = data.NearestVansDealers[counter].NoOfAssignedTicket;
|
|
vanDealerName = data.NearestVansDealers[counter].DealerVanName;
|
|
vanDealerState = data.NearestVansDealers[counter].DealerVanState;
|
|
deviceAlias = data.NearestVansDealers[counter].DeviceAlias;
|
|
vanRemainingTime = data.NearestVansDealers[counter].RemainingTime;
|
|
deviceStatus = data.NearestVansDealers[counter].DeviceStatus;
|
|
deviceStatus = data.NearestVansDealers[counter].DeviceStatus;
|
|
DealerSCode = data.NearestVansDealers[counter].DealerSCode;
|
|
DealerOrVanContactNo = data.NearestVansDealers[counter].DealerOrVanContactNo;
|
|
|
|
//check if remaining time is negative
|
|
if (vanRemainingTime == null || vanRemainingTime == "") {
|
|
vanRemainingTime = "0";
|
|
}
|
|
else {
|
|
if (vanRemainingTime.indexOf('-') === -1) {
|
|
vanRemainingTime = vanRemainingTime;
|
|
} else {
|
|
vanRemainingTime = "0";
|
|
}
|
|
}
|
|
if ((deviceStatus == "True") && (type == "van")) {
|
|
updatedDeviceStatus = "green-circle";
|
|
}
|
|
else if ((deviceStatus == "False") && (type == "van")) {
|
|
updatedDeviceStatus = "red-circle";
|
|
} else {
|
|
updatedDeviceStatus = "";
|
|
}
|
|
|
|
if (vanRemainingTime == "0") {
|
|
backgroundColor = "green";
|
|
}
|
|
else {
|
|
backgroundColor = "red";
|
|
}
|
|
//push van dealer lat lng in array
|
|
_vanDealerLatLngArr.push(vanDealerLatlng);
|
|
|
|
_vanDealerObj.type = type;
|
|
_vanDealerObj.id = VDId;
|
|
_vanDealerObj.lat = vanDealerLat;
|
|
_vanDealerObj.lng = vanDealerLng;
|
|
_vanDealerObj.city = vanDealerCity;
|
|
_vanDealerObj.assignedTickets = noOfAssignedTickets;
|
|
_vanDealerObj.name = vanDealerName;
|
|
_vanDealerObj.state = vanDealerState;
|
|
_vanDealerObj.alias = deviceAlias;
|
|
_vanDealerObj.remainingTime = vanRemainingTime;
|
|
_vanDealerObj.deviceStatus = updatedDeviceStatus;
|
|
_vanDealerObj.backGroundColor = backgroundColor;
|
|
_vanDealerObj.DealerSCode = DealerSCode;
|
|
_vanDealerObj.DealerOrVanContactNo = DealerOrVanContactNo;
|
|
//push van dealer details in array
|
|
_detailsListOfVanDealer.push(_vanDealerObj);
|
|
}
|
|
|
|
var forLoopLength, multiplier = 1, waitIndex = 0, setTimeOutSeconds;
|
|
var vanDealerLatLngArrLength = _vanDealerLatLngArr.length;
|
|
|
|
if (breakdownLocLatLng != "") {
|
|
|
|
if (_vanDealerLatLngArr.length < 25 && _vanDealerLatLngArr.length > 0) {
|
|
forLoopLength = 1;
|
|
} else {
|
|
if ((_vanDealerLatLngArr.length % 25) > 0) {
|
|
forLoopLength = parseInt((_vanDealerLatLngArr.length / 25), 10) + 1;
|
|
} else if ((_vanDealerLatLngArr.length % 25) == 0) {
|
|
forLoopLength = parseInt((_vanDealerLatLngArr.length / 25), 10);
|
|
}
|
|
}
|
|
var z;
|
|
if (forLoopLength == 1) {
|
|
_arrOf25VanDealerLatLng = [];
|
|
_arrOf25VanDealerDetails = [];
|
|
for (var i = 0; i < _vanDealerLatLngArr.length; i++) {
|
|
_arrOf25VanDealerLatLng.push(_vanDealerLatLngArr[i]);
|
|
_arrOf25VanDealerDetails.push(_detailsListOfVanDealer[i]);
|
|
}
|
|
// _calcRouteDistance(breakdownLocLatLng, _arrOf25VanDealerLatLng, _arrOf25VanDealerDetails);
|
|
// _callingHereAPI(breakdownLocLatLng, _arrOf25VanDealerLatLng, _arrOf25VanDealerDetails);
|
|
setTimeout(function () {
|
|
_createVanDealerSortedList();
|
|
}, 1000);
|
|
} else {
|
|
for (var i = 0; i < forLoopLength; i++) {
|
|
setTimeOutSeconds = waitIndex * multiplier;
|
|
if (vanDealerLatLngArrLength < 25) { z = 0; } else { z = vanDealerLatLngArrLength - 25; }
|
|
|
|
_arrOf25VanDealerLatLng = [];
|
|
_arrOf25VanDealerDetails = [];
|
|
for (var j = vanDealerLatLngArrLength; j > z; j--) {
|
|
_arrOf25VanDealerLatLng.push(_vanDealerLatLngArr[j - 1]);
|
|
_arrOf25VanDealerDetails.push(_detailsListOfVanDealer[j - 1]);
|
|
}
|
|
vanDealerLatLngArrLength = vanDealerLatLngArrLength - 25;
|
|
_calculateDistanceInSetTimeOut(breakdownLocLatLng, _arrOf25VanDealerLatLng, _arrOf25VanDealerDetails, setTimeOutSeconds);
|
|
waitIndex++;
|
|
}
|
|
_createVanDealerList();
|
|
}
|
|
}
|
|
}
|
|
},
|
|
error: function (data) {
|
|
console.log(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* SetTimeOut function to calculate distance between van and dealer using google distance matrix api
|
|
* @method _calculateDistanceInSetTimeOut
|
|
* @param {String} breakDownLatLng LatLng of breakdown vehicle
|
|
* @param {array} arrVanDealerLatLng LatLng of vans / dealers
|
|
* @param {array} arrVanDealerDetails details of vans/dealers
|
|
* @param {String} timeOutSeconds time in seconds for setTimeout function
|
|
* @for TicketReassign
|
|
*/
|
|
function _calculateDistanceInSetTimeOut(breakDownLatLng, arrVanDealerLatLng, arrVanDealerDetails, timeOutSeconds) {
|
|
setTimeout(function () {
|
|
debugger
|
|
//_calcRouteDistance(breakDownLatLng, arrVanDealerLatLng, arrVanDealerDetails);
|
|
// _callingHereAPI(breakdownLocLatLng, _arrOf25VanDealerLatLng, _arrOf25VanDealerDetails);
|
|
}, timeOutSeconds);
|
|
}
|
|
|
|
/**
|
|
* setTimeOut function to create sorted van dealer list
|
|
* @method _createVanDealerList
|
|
* @for TicketReassign
|
|
*/
|
|
function _createVanDealerList() {
|
|
setTimeout(function () {
|
|
_createVanDealerSortedList();
|
|
}, 1000);
|
|
}
|
|
|
|
/**
|
|
* Function to reassign ticket to a van / dealer
|
|
* @method reAssignVan
|
|
* @param {String} index The index no. of selected van / dealer
|
|
* @for TicketReassign
|
|
*/
|
|
function reAssignVan(index) {
|
|
$("#displayVansDealersTable_reassign").find('tr').removeClass('showMarked');
|
|
$("#displayVansDealersTable_reassign").find('tr:nth-child(' + (index + 2) + ')').addClass('showMarked');
|
|
//create object of ticket model
|
|
var TicketModel = {};
|
|
TicketModel.TicketId = ticketId;
|
|
TicketModel.Description = "";
|
|
TicketModel.listDescription = {};
|
|
TicketModel.AssignedTo = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(1)').text();
|
|
TicketModel.ReportedVia = "";
|
|
|
|
if (TicketModel.AssignedTo == "van") {
|
|
TicketModel.TicketStatus = 1;
|
|
TicketModel.OtherRemarks = null;
|
|
}
|
|
else {
|
|
TicketModel.TicketStatus = 2;
|
|
TicketModel.OtherRemarks = delaerTicketReason;
|
|
}
|
|
|
|
TicketModel.Priority = 0;
|
|
TicketModel.CustomerScore = "";
|
|
TicketModel.CreatedBy = "";
|
|
TicketModel.CreationTime = "";
|
|
TicketModel.LastModifiedBy = "";
|
|
TicketModel.LastModifiedTime = "";
|
|
TicketModel.BreakdownLocation = "";
|
|
TicketModel.BreakdownLongitude = "";
|
|
TicketModel.BreakdownLattitude = "";
|
|
TicketModel.AssignedToUserId = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(2)').text();
|
|
TicketModel.AssignedToUserLattitude = _copyResulEls[index].lat;
|
|
TicketModel.AssignedToUserLongitude = _copyResulEls[index].lng;
|
|
TicketModel.Isdeclined = false;
|
|
TicketModel.EstimatedTimeForJobCompletion = "";
|
|
TicketModel.TotalTicketLifecycleTimeSla = "";
|
|
TicketModel.EstimatedTimeForJobCompletionSubmitTime = "";
|
|
TicketModel.VehicleRegisterNumber = vRegistrationNo;
|
|
TicketModel.BreakdownLocationLandmark = "";
|
|
TicketModel.RouteId = "";
|
|
TicketModel.CustomerContactNo = "";
|
|
TicketModel.TicketStatusAlias = "";
|
|
TicketModel.Token = "";
|
|
TicketModel.Status = "";
|
|
TicketModel.Message = "";
|
|
TicketModel.UtcMinute = 0;
|
|
TicketModel.RepairCost = "";
|
|
TicketModel.DefaultSlaTime = defaultSlatime;
|
|
TicketModel.SlaMissedReason = "";
|
|
TicketModel.SuggestionComment = "";
|
|
TicketModel.JobCompleteResponseTime = "";
|
|
TicketModel.DefaultCol2 = "";
|
|
TicketModel.DefaultCol3 = "";
|
|
|
|
//distance
|
|
var distanceInKm = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(5)').text();
|
|
|
|
var distance;
|
|
|
|
if (distanceInKm != "" && distanceInKm != null) {
|
|
var splitDistance = distanceInKm.split(" ");
|
|
if (splitDistance[1] == "km") {
|
|
distance = splitDistance[0];
|
|
distance = distance.replace(',', '');
|
|
} else if (splitDistance[1] == "m") {
|
|
distance = parseFloat(splitDistance[0]) / 1000;
|
|
//distance = distance.replace(',', '');
|
|
} else {
|
|
distance = "0";
|
|
}
|
|
} else { distance = "0"; }
|
|
|
|
TicketModel.EstimateDistance = distance;
|
|
|
|
//var distanceInKm = $('#displayVansDealersTable_reassign tr:eq(' + (index + 1) + ') > td:eq(5)').text();
|
|
//var lastIndex = distanceInKm.lastIndexOf(" km");
|
|
//var distance = distanceInKm.substring(0, lastIndex);
|
|
//TicketModel.EstimateDistance = (distance == null || distance == "") ? "0" : distance;
|
|
|
|
//Send POST request with the ticket data
|
|
if (xhr_addNewTicket && xhr_addNewTicket.readystate != 4) {
|
|
xhr_addNewTicket.abort();
|
|
}
|
|
|
|
xhr_addNewTicket = $.ajax({
|
|
type: "POST",
|
|
//url: "/Ticket/TicketAdministration_UpdateTicketOpenClose/",
|
|
url: "/TicketAdministration_Dealer/TicketAdministration_UpdateTicketOpenClose/",
|
|
data: TicketModel,
|
|
success: function (data) {
|
|
if (data.success == true) {
|
|
$.ajax({
|
|
type: "POST",
|
|
//url: "/Ticket/TicketAdministration_GetTicketHistory/",
|
|
url: "/TicketAdministration_Dealer/TicketAdministrationDealer_GetTicketHistory/",
|
|
|
|
data: { registrationNo: vRegistrationNo, mobileNo: "", complaintNo: "" },
|
|
success: function (data) {
|
|
if (data.fillFieldMesseage) {
|
|
jAlert(data.fillFieldMesseage, 'Message');
|
|
}
|
|
else {
|
|
$("#divCheckHistory").html(data);
|
|
if (document.getElementById('tableTicketHistory')) {
|
|
$("#tableTicketHistory > tbody > tr[id='" + (ticketId).toUpperCase() + "']").trigger("click");
|
|
}
|
|
}
|
|
},
|
|
error: function (data) {
|
|
console.log(data);
|
|
}
|
|
});
|
|
}
|
|
},
|
|
complete: function () {
|
|
closeWindow("#divReassignTicket");
|
|
},
|
|
error: function (data) {
|
|
console.log(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Function to calculate route distance
|
|
* @method _calcRouteDistance
|
|
* @param {String} origin The location of origin(van / dealer)
|
|
* @param {String} destinationArr The location of destination(vehicle's breakdown)
|
|
* @for TicketReassign
|
|
*/
|
|
//function _calcRouteDistance(origin, destinationArr, vanDealerDetailsArr) {
|
|
// _service.getDistanceMatrix({
|
|
// origins: [origin],
|
|
// destinations: destinationArr,
|
|
// travelMode: google.maps.TravelMode.DRIVING,
|
|
// unitSystem: google.maps.UnitSystem.METRIC,
|
|
// avoidHighways: false,
|
|
// avoidTolls: false
|
|
// }, _distanceMatrixCallback);
|
|
// //Callback for Distance Matrix API
|
|
// function _distanceMatrixCallback(response, status) {
|
|
// //If Status was an error, throw alert
|
|
// if (status != google.maps.DistanceMatrixStatus.OK) {
|
|
// alert('Error was: ' + status);
|
|
// } else {
|
|
// //Result ELements response from Distance Matrinx
|
|
// var _resultEls = response.rows[0].elements;
|
|
// //Add vanId and to the response
|
|
// for (var i = 0; i < _resultEls.length; i++) {
|
|
// if (_resultEls[i].status == "OK") {
|
|
// _resultEls[i].vanDealerAddress = response.destinationAddresses[i];
|
|
// _resultEls[i].vanDealerID = vanDealerDetailsArr[i].id;
|
|
// _resultEls[i].type = vanDealerDetailsArr[i].type;
|
|
// _resultEls[i].lat = vanDealerDetailsArr[i].lat;
|
|
// _resultEls[i].lng = vanDealerDetailsArr[i].lng;
|
|
// _resultEls[i].city = vanDealerDetailsArr[i].city;
|
|
// _resultEls[i].assignedTicketsToVanDealer = vanDealerDetailsArr[i].assignedTickets;
|
|
// _resultEls[i].name = vanDealerDetailsArr[i].name;
|
|
// _resultEls[i].state = vanDealerDetailsArr[i].state;
|
|
// _resultEls[i].alias = vanDealerDetailsArr[i].alias;
|
|
// _resultEls[i].remainingTime = vanDealerDetailsArr[i].remainingTime;
|
|
// _resultEls[i].deviceStatus = vanDealerDetailsArr[i].deviceStatus;
|
|
// _resultEls[i].backgroundColor = vanDealerDetailsArr[i].backGroundColor;
|
|
// _resultEls[i].backgroundColor = vanDealerDetailsArr[i].backGroundColor;
|
|
// _resultEls[i].DealerSCode = vanDealerDetailsArr[i].DealerSCode;
|
|
// _resultEls[i].DealerOrVanContactNo = vanDealerDetailsArr[i].DealerOrVanContactNo;
|
|
// }
|
|
// }
|
|
// for (var counter = 0; counter < _resultEls.length; counter++) {
|
|
// if (_resultEls[counter].status == "OK") {
|
|
// _copyResulEls.push(_resultEls[counter]);
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
/**
|
|
* This fn create sorted van dealer list
|
|
* @method _createVanDealerSortedList
|
|
* @for TicketReassign
|
|
*/
|
|
function _createVanDealerSortedList() {
|
|
//Sort our Array according to the duration values in ascending order. [See: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort for more reference]
|
|
_copyResulEls.sort(function (a, b) {
|
|
var reg = new RegExp('^[0-9]+$');
|
|
if (a.status == "OK" && b.status == "OK") {
|
|
//console.log(a, b);
|
|
var k1 = a.duration.value;
|
|
var k2 = b.duration.value;
|
|
if (reg.test(k1) == true && reg.test(k2) == true) {
|
|
if (k1 > k2) {
|
|
return 1;
|
|
} else {
|
|
return -1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return -1;
|
|
}
|
|
return 0;
|
|
});
|
|
|
|
$("#tableVansDealers_reassign").html('');
|
|
//var to hold table String to show in dialog-form
|
|
var _trString = '';
|
|
//Loop through length of result vans array values of resultEl
|
|
for (var i = 0; i < _copyResulEls.length; i++) {
|
|
console.log(_copyResulEls);
|
|
//if i===0, add html for table.
|
|
if (_copyResulEls[i].status == "OK") {
|
|
var _markerIcon;
|
|
if (i === 0) {
|
|
_trString += '<table id="displayVansDealersTable_reassign" class="modalTable"><thead><tr><th>S. No.</th><th>Van/Dealer</th><th style="display:none;">Van/Dealer Id</th><th>Van/Dealer Name</th><th style="width:25%;">Van/Dealer Location</th><th>Distance</th><th>Duration</th><th>No. of Open Tickets</th><th>Remaining Time(in mins)</th><th>Is Connected</th><th>Dealer Scode</th><th>Contact No.</th><th ></th></tr></thead><tbody>';
|
|
}
|
|
|
|
var dis = _copyResulEls[i].distance + ' KM';
|
|
//add each row
|
|
_trString += '<tr id="' + _copyResulEls[i].vanDealerID + '"><td style="box-shadow: 4px 0px 0px ' + _copyResulEls[i].backgroundColor + ' inset;" >' + (i + 1) + '</td><td >' + _copyResulEls[i].type + '</td><td style="display:none;">' + _copyResulEls[i].vanDealerID + '</td><td>' + _copyResulEls[i].name + '</td><td>' + _copyResulEls[i].vanDealerAddress + '</td><td>' + dis + '</td><td>' + _copyResulEls[i].duration + '</td><td>' + _copyResulEls[i].assignedTicketsToVanDealer + '</td><td>' + _copyResulEls[i].remainingTime + '</td><td><span class="' + _copyResulEls[i].deviceStatus + '"</span></td><td>' + _copyResulEls[i].DealerSCode + '</td><td><span>' + _copyResulEls[i].DealerOrVanContactNo + '</span></td><td><button value="Re-Assign" class="button_blue" style="width:77px;" onclick="checkIfAssignToDealer(' + i + ', this);">Re-Assign</button></td></tr>';
|
|
//if i===2, end table tag.
|
|
if (i === _copyResulEls.length) {
|
|
$("#tableVansDealers_reassign").append('</tbody></table>');
|
|
}
|
|
console.log(_copyResulEls[i].DealerOrVanContactNo)
|
|
//add content to info window
|
|
var description = '<div id="divInfoWindow">' +
|
|
'<div class="">' +
|
|
' <div class="">' +
|
|
'<h2 class="EngName_heading"><span id="spanVanDealerName">' + _copyResulEls[i].name + '</span></h2>' +
|
|
'<table width="100%" cellpadding="0" cellspacing="0" class="InfoWindowTbl">' +
|
|
'<tbody>' +
|
|
'<tr>' +
|
|
'<td class=""><span>Van/Dealer Location</span></td><td colspan="5"><span id="spanVanDealerLocation">' + _copyResulEls[i].vanDealerAddress + '</span>' +
|
|
'</td></tr><tr><td><span>Distance</span></td> <td> <span id="spanVanDealerDistance">' + _copyResulEls[i].distance + '</span></td><td><span>Duration</span> </td><td><span id="spanVanDealerDuration">' + _copyResulEls[i].duration + '</span>' +
|
|
'</td><td class=""> <span>No. of Open Tickets</span> </td> <td> <span id="spanNoOfAssignedTickets">' + _copyResulEls[i].assignedTicketsToVanDealer + '</span></td><td><span>' + _copyResulEls[i].DealerSCode + '</span></td><td>' + _copyResulEls[i].DealerOrVanContactNo + '</td></tr></tbody></table></div></div></div>';
|
|
|
|
if (_copyResulEls[i].type == "dealer") {
|
|
_markerIcon = dealerMarker;
|
|
}
|
|
else {
|
|
if (_copyResulEls[i].backgroundColor == 'green') {
|
|
_markerIcon = _availableVansMarkers;
|
|
} else {
|
|
_markerIcon = _unavailableVansMarkers;
|
|
}
|
|
}
|
|
var _vanDealerLatlng = new google.maps.LatLng(_copyResulEls[i].lat, _copyResulEls[i].lng);
|
|
//create marker at position
|
|
createMarker(_vanDealerLatlng, _markerIcon, _copyResulEls[i].vanDealerID, description, _ccplMap);
|
|
}
|
|
}
|
|
var _bounds = new google.maps.LatLngBounds();
|
|
for (var count = 0; count < nearestVansDealersMarks.length; count++) {
|
|
_bounds.extend(nearestVansDealersMarks[count].position);
|
|
}
|
|
_ccplMap.fitBounds(_bounds);
|
|
//Append the _trString created in the dialog-form
|
|
$("#tableVansDealers_reassign").append(_trString);
|
|
//On click of row of Vans / dealers table
|
|
$("#displayVansDealersTable_reassign > tbody > tr").click(function (e) {
|
|
var rowId = e.currentTarget.id;
|
|
if (infowindow) {
|
|
infowindow.close();
|
|
}
|
|
$("#displayVansDealersTable_reassign").find('tr').removeClass('showMarked');
|
|
$("#displayVansDealersTable_reassign").find('tr[id=' + rowId + ']').addClass('showMarked');
|
|
|
|
var _selectedVanDealerLat, _selectedVanDealerLng, _vehicleLatLng, _selectedVanDealerLatLng, _selectedVanDealerType;
|
|
var _selectedVanDealerId = e.currentTarget.id;
|
|
for (var counter = 0; counter < nearestVansDealersMarks.length; counter++) {
|
|
if (nearestVansDealersMarks[counter].customInfo == _selectedVanDealerId) {
|
|
stopMarkerBounce();
|
|
getMarkerBounce(nearestVansDealersMarks[counter]);
|
|
}
|
|
}
|
|
for (var count = 0; count < _copyResulEls.length; count++) {
|
|
if (_copyResulEls[count].vanDealerID == _selectedVanDealerId) {
|
|
_selectedVanDealerLat = _copyResulEls[count].lat;
|
|
_selectedVanDealerLng = _copyResulEls[count].lng;
|
|
_selectedVanDealerType = _copyResulEls[count].type;
|
|
}
|
|
}
|
|
vehicleLatLng = breakdownLocLatLng;
|
|
_selectedVanDealerLatLng = new google.maps.LatLng(_selectedVanDealerLat, _selectedVanDealerLng);
|
|
calcRoute(vehicleLatLng, _selectedVanDealerLatLng, _selectedVanDealerType, _ccplMap);
|
|
});
|
|
|
|
//start marker bounce
|
|
function getMarkerBounce(vanDealerMarker) {
|
|
if (vanDealerMarker.getAnimation() != null) {
|
|
vanDealerMarker.setAnimation(null);
|
|
} else {
|
|
vanDealerMarker.setAnimation(google.maps.Animation.BOUNCE);
|
|
}
|
|
}
|
|
|
|
//stop marker bounce
|
|
function stopMarkerBounce() {
|
|
for (var count = 0; count < nearestVansDealersMarks.length; count++) {
|
|
if (nearestVansDealersMarks[count].getAnimation() != null) {
|
|
nearestVansDealersMarks[count].setAnimation(null);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//==================================================Implementing Here Api =========================================//
|
|
|
|
//====================================================Getting Distance and time from Here API ================================
|
|
|
|
//=========================================================Getting Address from Here API ====================================
|
|
function ShowCurrentTime(lat, lng) {
|
|
vanAddress = "";
|
|
|
|
|
|
var request = GetDataHerefromAPI("get", "https://revgeocode.search.hereapi.com/v1/revgeocode?at=" + lat + "," + lng + "&lang=en-US&apiKey=DW3-YCFFZtJzlAQpTfVPoXADcZpEeZe3t8h6ganVsqo");
|
|
|
|
if (request) {
|
|
request.onload = function (data) {
|
|
|
|
vanAddress = data.items[0].address.label;
|
|
|
|
}
|
|
request.send();
|
|
}
|
|
}
|
|
|
|
//===========================================================Calculate Distance ============================================
|
|
function calculatedistance(distance, str) {
|
|
//if (distance == 0) {
|
|
return distance = { text: str.slice(str.indexOf("length") + 8, str.indexOf("</span>")), value: distance };
|
|
//}
|
|
//else {
|
|
// var res = distance / 1000;
|
|
|
|
//var text;
|
|
// if (res > 1) {
|
|
// text = res.toFixed(1) + " km";
|
|
// }
|
|
// else {
|
|
|
|
// text = res.toFixed(1) + " m";
|
|
// }
|
|
// return distance = { text: text, value: distance }
|
|
//}
|
|
}
|
|
|
|
//======================================================Calculate Time =========================================================
|
|
function calculatetime(time, str) {
|
|
//if (time == 0) {
|
|
return duration = { text: str.slice(str.indexOf("time") + 6, str.indexOf("</span>.")), value: time }
|
|
//}
|
|
//else {
|
|
// d = Number(time);
|
|
// var h = Math.floor(d / 3600);
|
|
// var m = Math.floor(d % 3600 / 60);
|
|
// var hDisplay = h > 0 ? h + (h == 1 ? " hour, " : " hours, ") : "";
|
|
// var mDisplay = m > 0 ? m + (m == 1 ? " min " : " mins ") : "";
|
|
// return duration = { text: hDisplay + mDisplay, value: time }
|
|
//}
|
|
}
|
|
|
|
//=================================================Calling Method of Here API
|
|
function GetDataHerefromAPI(method, url) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.withCredentials = false;
|
|
if ("withCredentials" in xhr) {
|
|
xhr.open(method, url, false);
|
|
} else if (typeof XDomainRequest != "undefined") {
|
|
xhr = new XDomainRequest();
|
|
xhr.open(method, url);
|
|
} else {
|
|
xhr = null;
|
|
}
|
|
return xhr;
|
|
}
|
|
|