3019 lines
77 KiB
JavaScript
3019 lines
77 KiB
JavaScript
var markerList = [];
|
|
var markerLayers = null;
|
|
|
|
var marker141List = [];
|
|
var marker141Layers = null;
|
|
|
|
var keepChartNum = null;
|
|
|
|
const API_ENDPOINT = 'https://141.ir/api';
|
|
const MAP_ENDPOINT = 'https://testmap.141.ir';
|
|
const MAP_MIN_ZOOM = 3;
|
|
const MAP_MAX_ZOOM = 15;
|
|
|
|
// IRAN bounds, by this order:
|
|
// [North, East]
|
|
// [South, West]
|
|
var bounds = [
|
|
[42.9130026312, 75.6166317076],
|
|
[20.5782370061, 30.5092252948]
|
|
];
|
|
|
|
// Create leaflet map client
|
|
var map = L.map('map', {
|
|
maxBounds: bounds,
|
|
minZoom: MAP_MIN_ZOOM,
|
|
//maxZoom: MAP_MAX_ZOOM,
|
|
zoomControl: false
|
|
}).setView([32.62, 53.25], 6);
|
|
|
|
// Create map tile layer
|
|
L.tileLayer(MAP_ENDPOINT + '/141map/{z}/{x}/{y}.png', {}).addTo(map);
|
|
|
|
fisheyeMenu({
|
|
growRatio: 1.7,
|
|
verticalLimit: 10,
|
|
horizontalLimit: 1.8
|
|
});
|
|
|
|
function fisheyeMenu(options) {
|
|
// get all items from fisheye-menu
|
|
var items = Array.prototype.slice.call(document.querySelectorAll('.fisheye-menu button.layerButton'));
|
|
var item = items[0];
|
|
//get horizontal center point of each item
|
|
var itemsMiddle = items.map(function (item) { return item.offsetLeft + (item.offsetWidth / 2); });
|
|
//get vertical center point of each item
|
|
var itemsVertMiddle = items.map(function (item) { return item.offsetTop + (item.offsetHeight / 2); });
|
|
|
|
var itemWidth = item.offsetWidth;
|
|
// vertical limits of function running
|
|
var topLimit = item.offsetParent.offsetTop - (options.verticalLimit || 10);
|
|
var bottomLimit = item.offsetParent.offsetTop + item.offsetHeight + (options.verticalLimit || 10);
|
|
// ratio of new size to default
|
|
var growRatio = options.growRatio || 1.8;
|
|
// horizontal limit of grow reaction for single item
|
|
var limit = item.offsetWidth * (options.horizontalLimit || 1.5);
|
|
|
|
var sizeDiff = Math.round(itemWidth * (growRatio - 1));
|
|
|
|
var removeGoDown = function (evt) {
|
|
evt.target.parentNode.classList.remove('go-down');
|
|
};
|
|
var setListeners = function () {
|
|
items.forEach(function (itm, index) {
|
|
itm.addEventListener("transitionend", removeGoDown);
|
|
});
|
|
}();
|
|
|
|
var makeItemBigger = function (x, y) {
|
|
var verticallyCorrect = (y > topLimit && y < bottomLimit) ? true : false;
|
|
|
|
// if mouse out from vertically cirrect area make items small with transition
|
|
if (!verticallyCorrect && !item.parentNode.classList.contains('go-down')) {
|
|
item.parentNode.classList.add('go-down');
|
|
}
|
|
|
|
// if (verticallyCorrect) {
|
|
// let menuWidth = $('.menu_vertical').css('width');
|
|
// $('.menu_vertical').css('width', 'calc(' + menuWidth + ' + 50px')
|
|
// }
|
|
|
|
items.forEach(function (item, index) {
|
|
var middlePoint = itemsMiddle[index];
|
|
// horizontal distance from center point to cursor
|
|
var dist = Math.abs(x - middlePoint);
|
|
|
|
// if distance is bigger than limit in any direction
|
|
// ratio is equal to 1 (item size not changed)
|
|
var ratio = (dist > limit) ? 1 : (dist / limit);
|
|
|
|
ratio = verticallyCorrect ? ratio : 1;
|
|
|
|
var newSize = itemWidth + ((1 - ratio) * sizeDiff);
|
|
// add negative top margin to item equal to half size difference
|
|
// to stay item vertical centered
|
|
var newMarginTop = -((1 - ratio) * (sizeDiff / 2));
|
|
item.style.width = newSize + 'px';
|
|
item.style.height = newSize + 'px';
|
|
item.style.marginTop = newMarginTop + 'px';
|
|
});
|
|
};
|
|
|
|
document.body.addEventListener('mousemove', function (e) {
|
|
// position of cursor
|
|
var pointerX = e.pageX;
|
|
var pointerY = e.pageY;
|
|
makeItemBigger(pointerX, pointerY);
|
|
});
|
|
};
|
|
|
|
$('.right-menu-toggle').on('click', function () {
|
|
if ($(this).css('right') == '0px') {
|
|
$('.right-menu-charts').css('right', '-60px');
|
|
$(this).css('right', '60px');
|
|
$(this).addClass('hide-menu-toggle');
|
|
$(this).find('i').addClass('fa-arrow-alt-circle-left').removeClass('fa-arrow-alt-circle-right');
|
|
} else {
|
|
$('.right-menu-charts').css('right', '30px');
|
|
$(this).css('right', '0px');
|
|
$(this).removeClass('hide-menu-toggle');
|
|
$(this).find('i').addClass('fa-arrow-alt-circle-right').removeClass('fa-arrow-alt-circle-left');
|
|
}
|
|
});
|
|
|
|
$('.item-menu-chart').on('click', function () {
|
|
let num = parseInt($(this).attr('chartId'));
|
|
|
|
keepChartNum = num;
|
|
|
|
if (!$(this).hasClass('item-menu-chart-disabled')) {
|
|
if ($(this).hasClass('item-menu-active')) {
|
|
handleChartButtonClick(0);
|
|
removeFeaturesFromMap();
|
|
} else {
|
|
remove141Layer();
|
|
if ($('.item-menu-chart.item-menu-active').length > 0) {
|
|
handleChartButtonClick(0, this);
|
|
removeFeaturesFromMap();
|
|
setTimeout(function () {
|
|
updateChartBox(num);
|
|
handleChartButtonClick(1);
|
|
addFeaturesToMap();
|
|
addTopFeatureToStat();
|
|
}, 500);
|
|
} else {
|
|
updateChartBox(num);
|
|
handleChartButtonClick(1, this);
|
|
addFeaturesToMap();
|
|
addTopFeatureToStat();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$('.menu-map-toggle').on('click', function () {
|
|
if ($(this).parent().css('width') == '500px') {
|
|
$(this).parent().animate({
|
|
width: "50",
|
|
height: "50"
|
|
}, 500, function () {
|
|
$(this).find('.map-svg-box').removeClass('map-svg-box-open');
|
|
$(this).css('z-index', '12');
|
|
$('.left-menu-141').css('left', '30px');
|
|
$(this).find('.menu-map-close').hide();
|
|
});
|
|
} else {
|
|
$(this).parent().css('z-index', '15');
|
|
$('.left-menu-141').css('left', '-80px');
|
|
$(this).parent().animate({
|
|
width: "500",
|
|
height: "480"
|
|
}, 500, function () {
|
|
$(this).find('.map-svg-box').addClass('map-svg-box-open');
|
|
$(this).find('.menu-map-close').show();
|
|
});
|
|
}
|
|
});
|
|
|
|
$('.left-menu-map > .menu-map-close').on('click', function () {
|
|
if ($(this).parent().css('width') == '500px') {
|
|
$(this).parent().animate({
|
|
width: "50",
|
|
height: "50"
|
|
}, 500, function () {
|
|
$(this).find('.map-svg-box').removeClass('map-svg-box-open');
|
|
$(this).css('z-index', '12');
|
|
$('.left-menu-141').css('left', '30px');
|
|
$(this).find('.menu-map-close').hide();
|
|
});
|
|
}
|
|
});
|
|
|
|
$('.left-menu-view-chart .chart-tools-item.chart-sync-icon').on('click', function () {
|
|
handleChartButtonClick(0, $('.item-menu-chart.item-menu-active'));
|
|
removeFeaturesFromMap();
|
|
setTimeout(function () {
|
|
updateChartBox(keepChartNum);
|
|
handleChartButtonClick(1);
|
|
addFeaturesToMap();
|
|
addTopFeatureToStat();
|
|
}, 500);
|
|
});
|
|
|
|
$('.left-menu-view-chart .chart-tools-item.chart-filter-icon').on('click', function () {
|
|
$('.left-menu-view-chart > .chart-filter-box input[name=chartFilterToDate]').prop('disabled', 'disabled');
|
|
$('.left-menu-view-chart > .chart-view-box').fadeOut(300, function () {
|
|
$('.left-menu-view-chart > .chart-filter-box').fadeIn(300);
|
|
});
|
|
|
|
let fromDate, toDate;
|
|
fromDate = $('.left-menu-view-chart > .chart-filter-box input[name=chartFilterFromDate]').persianDatepicker({
|
|
format: 'YYYY/MM/DD',
|
|
autoClose: true,
|
|
onSelect: function (unix) {
|
|
fromDate.touched = true;
|
|
$('.left-menu-view-chart > .chart-filter-box input[name=chartFilterToDate]').prop('disabled', '');
|
|
if (fromDate.getState().selected.unixDate >= toDate.getState().selected.unixDate) {
|
|
toDate.setDate(fromDate.getState().selected.unixDate);
|
|
}
|
|
if (toDate && toDate.options && toDate.options.minDate != unix) {
|
|
let cachedValue = toDate.getState().selected.unixDate;
|
|
toDate.options = { minDate: unix };
|
|
if (toDate.touched) {
|
|
toDate.setDate(cachedValue);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
toDate = $('.left-menu-view-chart > .chart-filter-box input[name=chartFilterToDate]').persianDatepicker({
|
|
format: 'YYYY/MM/DD',
|
|
autoClose: true,
|
|
onSelect: function (unix) {
|
|
toDate.touched = true;
|
|
/*if (fromDate && fromDate.options && fromDate.options.maxDate != unix) {
|
|
let cachedValue = fromDate.getState().selected.unixDate;
|
|
fromDate.options = { maxDate: unix };
|
|
if (fromDate.touched) {
|
|
fromDate.setDate(cachedValue);
|
|
}
|
|
}*/
|
|
}
|
|
});
|
|
});
|
|
|
|
$('.left-menu-view-chart .filter-box-submit > .submit-cancel').on('click', function () {
|
|
$('.left-menu-view-chart > .chart-filter-box').fadeOut(300, function () {
|
|
$('.left-menu-view-chart > .chart-view-box').fadeIn(300);
|
|
});
|
|
});
|
|
|
|
$('.left-menu-view-chart .filter-box-submit > .submit-send').on('click', function () {
|
|
handleChartButtonClick(0, $('.item-menu-chart.item-menu-active'));
|
|
removeFeaturesFromMap();
|
|
setTimeout(function () {
|
|
updateChartBox(keepChartNum);
|
|
handleChartButtonClick(1);
|
|
addFeaturesToMap();
|
|
addTopFeatureToStat();
|
|
}, 500);
|
|
});
|
|
|
|
$('.left-menu-view-chart .chart-tools-item.chart-close-icon').on('click', function () {
|
|
handleChartButtonClick(0);
|
|
removeFeaturesFromMap();
|
|
});
|
|
|
|
$('.right-menu-stat-chart > .menu-stat-close').on('click', function () {
|
|
handleChartButtonClick(0);
|
|
removeFeaturesFromMap();
|
|
$('.item-menu-141.item-141-active').removeClass('item-141-active');
|
|
setAbrarProcess = 0;
|
|
setBokhorProcess = 0;
|
|
});
|
|
|
|
function handleChartButtonClick(openChart = 1, element = null) {
|
|
if (setAbrarProcess || setBokhorProcess) {
|
|
$('.right-menu-stat-chart').css('top', '-858px');
|
|
$('.left-menu-stat-chart-info').css('top', '-308px');
|
|
$('.item-menu-141.item-141-active').removeClass('item-141-active');
|
|
removeFeaturesFromMap();
|
|
setTimeout(function () {
|
|
setAbrarProcess = 0;
|
|
setBokhorProcess = 0;
|
|
$('.menu-stat-list > .stat-list').empty();
|
|
handleChartButtonClickAfterAbrar(openChart, element);
|
|
}, 500);
|
|
} else {
|
|
handleChartButtonClickAfterAbrar(openChart, element);
|
|
}
|
|
}
|
|
|
|
function handleChartButtonClickAfterAbrar(openChart = 1, element = null) {
|
|
if (openChart) {
|
|
if ($('.left-menu-map').css('width') == '500px') {
|
|
$('.left-menu-map').animate({
|
|
width: "50",
|
|
height: "50"
|
|
}, 500, function () {
|
|
$(this).find('.map-svg-box').removeClass('map-svg-box-open');
|
|
$(this).css('z-index', '12');
|
|
$('.left-menu-141').css('left', '30px');
|
|
$(this).find('.menu-map-close').hide();
|
|
if (element) {
|
|
$('.left-menu-view-chart').css('left', '30px');
|
|
$('.right-menu-stat-chart').css('top', '88px');
|
|
$('.left-menu-view-chart').css('z-index', '16');
|
|
$('.left-menu-map').css('left', '-80px');
|
|
$('.left-menu-141').css('left', '-80px');
|
|
$(element).addClass('item-menu-active');
|
|
} else {
|
|
$('.left-menu-view-chart').css('left', '30px');
|
|
$('.right-menu-stat-chart').css('top', '88px');
|
|
}
|
|
});
|
|
} else {
|
|
if (element) {
|
|
$('.left-menu-view-chart').css('left', '30px');
|
|
$('.right-menu-stat-chart').css('top', '88px');
|
|
$('.left-menu-view-chart').css('z-index', '16');
|
|
$('.left-menu-map').css('left', '-80px');
|
|
$('.left-menu-141').css('left', '-80px');
|
|
$(element).addClass('item-menu-active');
|
|
} else {
|
|
$('.left-menu-view-chart').css('left', '30px');
|
|
$('.right-menu-stat-chart').css('top', '88px');
|
|
}
|
|
}
|
|
} else {
|
|
if (element) {
|
|
$('.left-menu-view-chart').css('left', '-530px');
|
|
$('.right-menu-stat-chart').css('top', '-858px');
|
|
$('.left-menu-stat-chart-info').css('top', '-308px');
|
|
emptyStatItems();
|
|
$('.item-menu-chart.item-menu-active').removeClass('item-menu-active');
|
|
$(element).addClass('item-menu-active');
|
|
} else {
|
|
remove141Layer();
|
|
removeCityFeaturesFromMap();
|
|
removeFeaturesFromMap();
|
|
keepMapFeatureColor = null;
|
|
map.flyTo([32.62, 53.25], 6);
|
|
|
|
$('.left-menu-view-chart').css('left', '-530px');
|
|
$('.left-menu-map').css('left', '30px');
|
|
$('.left-menu-141').css('left', '30px');
|
|
$('.left-menu-view-chart').css('z-index', '12');
|
|
$('.right-menu-stat-chart').css('top', '-858px');
|
|
$('.left-menu-stat-chart-info').css('top', '-308px');
|
|
emptyStatItems();
|
|
$('.item-menu-chart.item-menu-active').removeClass('item-menu-active');
|
|
}
|
|
setTimeout(function () {
|
|
$('.left-menu-view-chart > .chart-filter-box').hide();
|
|
$('.left-menu-view-chart > .chart-view-box').show();
|
|
}, 500);
|
|
}
|
|
}
|
|
|
|
function emptyStatItems() {
|
|
setTimeout(function () {
|
|
$('.menu-stat-list > .stat-list').empty();
|
|
}, 500);
|
|
}
|
|
|
|
$('.left-menu-141 > .item-menu-141').on('click', function () {
|
|
let get141Id = parseInt($(this).attr('id141'));
|
|
|
|
if (get141Id < 13) {
|
|
if (!$(this).hasClass('item-141-active')) {
|
|
$('.left-menu-141 > .item-menu-141.item-141-active').removeClass('item-141-active');
|
|
$(this).addClass('item-141-active');
|
|
|
|
if (setAbrarProcess) {
|
|
setAbrarProcess = 0;
|
|
hideAbrarChartStat();
|
|
setTimeout(function () {
|
|
show141Layer(get141Id);
|
|
}, 500);
|
|
} else if (setBokhorProcess) {
|
|
setBokhorProcess = 0;
|
|
hideBokhorChartStat();
|
|
setTimeout(function () {
|
|
show141Layer(get141Id);
|
|
}, 500);
|
|
} else {
|
|
show141Layer(get141Id);
|
|
}
|
|
} else {
|
|
$(this).removeClass('item-141-active');
|
|
remove141Layer();
|
|
}
|
|
} else if (get141Id === 13) {
|
|
if (!$(this).hasClass('item-141-active')) {
|
|
$('.left-menu-141 > .item-menu-141.item-141-active').removeClass('item-141-active');
|
|
$(this).addClass('item-141-active');
|
|
|
|
if (setAbrarProcess) {
|
|
setAbrarProcess = 0;
|
|
hideAbrarChartStat();
|
|
setTimeout(function () {
|
|
showRoadAccidentLayer();
|
|
}, 500);
|
|
} else if (setBokhorProcess) {
|
|
setBokhorProcess = 0;
|
|
hideBokhorChartStat();
|
|
setTimeout(function () {
|
|
showRoadAccidentLayer();
|
|
}, 500);
|
|
} else {
|
|
showRoadAccidentLayer();
|
|
}
|
|
} else {
|
|
$(this).removeClass('item-141-active');
|
|
remove141Layer();
|
|
}
|
|
} else if (get141Id === 14) {
|
|
if (!$(this).hasClass('item-141-active')) {
|
|
$('.left-menu-141 > .item-menu-141.item-141-active').removeClass('item-141-active');
|
|
$(this).addClass('item-141-active');
|
|
setAbrarProcess = 1;
|
|
removeFeaturesFromMap();
|
|
if (setBokhorProcess) {
|
|
setBokhorProcess = 0;
|
|
hideBokhorChartStat();
|
|
setTimeout(function () {
|
|
showAbrarChartStat();
|
|
}, 500);
|
|
} else {
|
|
showAbrarChartStat();
|
|
}
|
|
} else {
|
|
setAbrarProcess = 0;
|
|
$(this).removeClass('item-141-active');
|
|
hideAbrarChartStat();
|
|
}
|
|
} else if (get141Id === 15) {
|
|
if (!$(this).hasClass('item-141-active')) {
|
|
$('.left-menu-141 > .item-menu-141.item-141-active').removeClass('item-141-active');
|
|
$(this).addClass('item-141-active');
|
|
setBokhorProcess = 1;
|
|
removeFeaturesFromMap();
|
|
if (setAbrarProcess) {
|
|
setAbrarProcess = 0;
|
|
hideAbrarChartStat();
|
|
setTimeout(function () {
|
|
showBokhorChartStat();
|
|
}, 500);
|
|
} else {
|
|
showBokhorChartStat();
|
|
}
|
|
} else {
|
|
setBokhorProcess = 0;
|
|
$(this).removeClass('item-141-active');
|
|
hideBokhorChartStat();
|
|
}
|
|
} else if (get141Id === 16) {
|
|
if (!$(this).hasClass('item-141-active')) {
|
|
$('.left-menu-141 > .item-menu-141.item-141-active').removeClass('item-141-active');
|
|
$(this).addClass('item-141-active');
|
|
fullCityGeoJSONTemp.type = "FeatureCollection";
|
|
fullCityGeoJSONTemp.features = fullCityGeoJSON.features;
|
|
if (setAbrarProcess) {
|
|
setAbrarProcess = 0;
|
|
hideAbrarChartStat();
|
|
setTimeout(function () {
|
|
addCityFeaturesToMap();
|
|
}, 500);
|
|
} else if (setBokhorProcess) {
|
|
setBokhorProcess = 0;
|
|
hideBokhorChartStat();
|
|
setTimeout(function () {
|
|
addCityFeaturesToMap();
|
|
}, 500);
|
|
} else {
|
|
addCityFeaturesToMap();
|
|
}
|
|
} else {
|
|
$(this).removeClass('item-141-active');
|
|
removeCityFeaturesFromMap();
|
|
}
|
|
} else {
|
|
//
|
|
}
|
|
});
|
|
|
|
function showRoadAccidentLayer() {
|
|
if (marker141Layers != null) {
|
|
marker141List = [];
|
|
map.removeLayer(marker141Layers);
|
|
}
|
|
|
|
showLoaderScreen();
|
|
|
|
$.post(API_ENDPOINT + '/roadaccidentvillage', function (data) {
|
|
let roadAccidentPoints = JSON.parse(data);
|
|
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < roadAccidentPoints.length; i++) {
|
|
try {
|
|
let marker = L.marker(
|
|
[roadAccidentPoints[i].lat, roadAccidentPoints[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('نقطه پرحاثه: ' + roadAccidentPoints[i].axisName);
|
|
marker141List.push(marker);
|
|
}
|
|
catch (e) {
|
|
//
|
|
}
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
}
|
|
|
|
$('.chart-province-item').on('click', function () {
|
|
let provinceId = $(this).attr('provinceId');
|
|
|
|
showProvinceChartBox(this, provinceId);
|
|
});
|
|
|
|
function handleTopMenuClick(num) {
|
|
switch (num) {
|
|
case 1: {
|
|
window.open('rmto', '_self');
|
|
break;
|
|
}
|
|
case 2: {
|
|
$('#reportModal').modal('show');
|
|
break;
|
|
}
|
|
case 3: {
|
|
window.open('rmtobi', '_self');
|
|
break;
|
|
}
|
|
case 4: {
|
|
window.open('rmto', '_self');
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// --------------------------------------------------------------
|
|
|
|
Chart.defaults.global.defaultFontFamily = 'IRANSansFaNum';
|
|
|
|
var chartItemCanvas = $('#myChart');
|
|
var chartItem = null;
|
|
var chartProvinceItemsCanvas = [];
|
|
var chartProvinceItems = [];
|
|
var chartColors = [
|
|
'rgba(255, 99, 132, 0.6)',
|
|
'rgba(54, 162, 235, 0.6)',
|
|
'rgba(255, 206, 86, 0.6)',
|
|
'rgba(75, 192, 192, 0.6)',
|
|
'rgba(153, 102, 255, 0.6)',
|
|
'rgba(255, 159, 64, 0.6)',
|
|
'rgba(255, 64, 159, 0.6)',
|
|
'rgba(159, 255, 64, 0.6)',
|
|
'rgba(255, 64, 255, 0.6)',
|
|
'rgba(159, 159, 64, 0.6)',
|
|
];
|
|
|
|
function randomScalingFactor() {
|
|
return Math.round(Math.random() * 100);
|
|
};
|
|
|
|
function changeChartBoxTitle(str, area = 'کل کشور', changeTitle = 1) {
|
|
if (changeTitle) {
|
|
$('.chart-title').text(str + ' (' + area + ')');
|
|
} else {
|
|
let boxTitle = $('.chart-title').text();
|
|
boxTitle = boxTitle.substr(0, boxTitle.indexOf('('));
|
|
$('.chart-title').text(boxTitle + '(' + area + ')');
|
|
}
|
|
}
|
|
|
|
function makeConfigChart(num, showDetails) {
|
|
let config = null;
|
|
|
|
switch (num) {
|
|
case 1: {
|
|
config = {
|
|
type: 'pie',
|
|
data: {
|
|
datasets: [{
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
],
|
|
backgroundColor: [
|
|
chartColors[0],
|
|
chartColors[1],
|
|
],
|
|
label: 'Dataset 1'
|
|
}],
|
|
labels: [
|
|
'احداث',
|
|
'نگه داری'
|
|
]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: showDetails
|
|
},
|
|
title: {
|
|
display: showDetails,
|
|
text: 'تفکیک پروژه های راه روستایی',
|
|
position: 'bottom'
|
|
},
|
|
tooltips: {
|
|
enabled: showDetails
|
|
}
|
|
}
|
|
};
|
|
changeChartBoxTitle('تفکیک پروژه های راه روستایی');
|
|
break;
|
|
}
|
|
case 2: {
|
|
config = {
|
|
data: {
|
|
datasets: [{
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
],
|
|
backgroundColor: [
|
|
chartColors[0],
|
|
chartColors[1],
|
|
chartColors[2],
|
|
chartColors[3],
|
|
chartColors[4],
|
|
],
|
|
label: 'تفکیک پروژه های راه روستایی'
|
|
}],
|
|
labels: [
|
|
'شریانی',
|
|
'غیرشریانی',
|
|
'فرعی',
|
|
'اصلی',
|
|
'شریانی-اصلی'
|
|
]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: showDetails,
|
|
position: 'right',
|
|
},
|
|
title: {
|
|
display: showDetails,
|
|
text: 'تفکیک پروژه های راه روستایی',
|
|
position: 'bottom'
|
|
},
|
|
scale: {
|
|
ticks: {
|
|
display: showDetails,
|
|
beginAtZero: true
|
|
},
|
|
reverse: false
|
|
},
|
|
animation: {
|
|
animateRotate: false,
|
|
animateScale: true
|
|
},
|
|
tooltips: {
|
|
enabled: showDetails
|
|
}
|
|
}
|
|
};
|
|
changeChartBoxTitle('تفکیک پروژه های راه روستایی');
|
|
break;
|
|
}
|
|
case 3: {
|
|
config = {
|
|
type: 'doughnut',
|
|
data: {
|
|
datasets: [{
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
|
|
],
|
|
backgroundColor: [
|
|
chartColors[0],
|
|
chartColors[1],
|
|
chartColors[2],
|
|
chartColors[3],
|
|
chartColors[4],
|
|
chartColors[5],
|
|
chartColors[6],
|
|
chartColors[7]
|
|
|
|
],
|
|
label: 'تفکیک پروژه های راهداری'
|
|
}],
|
|
labels: [
|
|
'پاکسازی',
|
|
'علایم',
|
|
'رنگ آمیزی',
|
|
'حریم',
|
|
'ایمن سازی',
|
|
'راهدار خانه',
|
|
'اضطراری',
|
|
'شستشو'
|
|
]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: showDetails,
|
|
position: 'left',
|
|
},
|
|
title: {
|
|
display: showDetails,
|
|
text: 'تفکیک پروژه های راهداری',
|
|
position: 'bottom'
|
|
},
|
|
tooltips: {
|
|
enabled: showDetails
|
|
}
|
|
}
|
|
};
|
|
changeChartBoxTitle('تفکیک پروژه های راهداری');
|
|
break;
|
|
}
|
|
case 4: {
|
|
config = {
|
|
type: 'line',
|
|
data: {
|
|
labels: ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور'],
|
|
datasets: [{
|
|
label: 'پیشرفت فیزیکی',
|
|
backgroundColor: chartColors[0],
|
|
borderColor: chartColors[0],
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
],
|
|
fill: false,
|
|
}, {
|
|
label: 'پیشرفت ریالی',
|
|
fill: false,
|
|
backgroundColor: chartColors[1],
|
|
borderColor: chartColors[1],
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
],
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: showDetails,
|
|
},
|
|
title: {
|
|
display: showDetails,
|
|
text: 'نسبت پیشرفت فیزیکی به ریالی',
|
|
position: 'bottom'
|
|
},
|
|
tooltips: {
|
|
enabled: showDetails,
|
|
mode: 'index',
|
|
intersect: false,
|
|
},
|
|
hover: {
|
|
mode: 'nearest',
|
|
intersect: true
|
|
},
|
|
scales: {
|
|
xAxes: [{
|
|
display: showDetails,
|
|
scaleLabel: {
|
|
display: showDetails,
|
|
labelString: 'ماه'
|
|
}
|
|
}],
|
|
yAxes: [{
|
|
display: showDetails,
|
|
scaleLabel: {
|
|
display: showDetails,
|
|
labelString: 'مقدار'
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
};
|
|
changeChartBoxTitle('نسبت پیشرفت فیزیکی به ریالی');
|
|
break;
|
|
}
|
|
case 5: {
|
|
config = {
|
|
type: 'bar',
|
|
data:
|
|
{
|
|
labels: ['مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],
|
|
datasets: [{
|
|
label: 'راه روستایی',
|
|
backgroundColor: chartColors[0],
|
|
borderColor: chartColors[0],
|
|
borderWidth: 1,
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
]
|
|
}, {
|
|
label: 'راهداری',
|
|
backgroundColor: chartColors[1],
|
|
borderColor: chartColors[1],
|
|
borderWidth: 1,
|
|
data: [
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor(),
|
|
randomScalingFactor()
|
|
]
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
legend: {
|
|
display: showDetails,
|
|
position: 'top',
|
|
},
|
|
title: {
|
|
display: showDetails,
|
|
text: 'تفکیک پروژه های انجام شده تاکنون',
|
|
position: 'bottom'
|
|
},
|
|
scales: {
|
|
xAxes: [{
|
|
display: showDetails,
|
|
}],
|
|
yAxes: [{
|
|
display: showDetails,
|
|
}]
|
|
},
|
|
tooltips: {
|
|
enabled: showDetails
|
|
}
|
|
}
|
|
};
|
|
changeChartBoxTitle('تفکیک پروژه های انجام شده تاکنون');
|
|
break;
|
|
}
|
|
case 6: {
|
|
break;
|
|
}
|
|
case 7: {
|
|
break;
|
|
}
|
|
case 8: {
|
|
break;
|
|
}
|
|
case 9: {
|
|
break;
|
|
}
|
|
case 10: {
|
|
break;
|
|
}
|
|
}
|
|
|
|
return config;
|
|
}
|
|
|
|
function updateChartBox(num) {
|
|
if (chartItem) {
|
|
chartItem.destroy();
|
|
}
|
|
|
|
if (num == 2) {
|
|
chartItem = new Chart.PolarArea(chartItemCanvas, makeConfigChart(num, true));
|
|
} else {
|
|
chartItem = new Chart(chartItemCanvas, makeConfigChart(num, true));
|
|
}
|
|
|
|
for (let i = 1; i <= 36; i++) {
|
|
if (chartProvinceItems[i]) {
|
|
chartProvinceItems[i].destroy();
|
|
}
|
|
|
|
if (num == 2) {
|
|
chartProvinceItems[i] = new Chart.PolarArea(chartProvinceItemsCanvas[i], makeConfigChart(num, false));
|
|
} else {
|
|
chartProvinceItems[i] = new Chart(chartProvinceItemsCanvas[i], makeConfigChart(num, false));
|
|
}
|
|
}
|
|
}
|
|
|
|
function showProvinceChartBox(element, id) {
|
|
let mainChartDataLength = chartItem.data.datasets[0].data.length;
|
|
let provinceChartData = chartProvinceItems[id].data;
|
|
let countDataset = 0;
|
|
|
|
for (let i = 0; i < mainChartDataLength; i++) {
|
|
chartRemoveData(chartItem);
|
|
}
|
|
|
|
provinceChartData.datasets.forEach((dataset) => {
|
|
for (let i = 0; i < dataset.data.length; i++) {
|
|
chartAddData(chartItem, countDataset, dataset.data[i]);
|
|
}
|
|
countDataset++;
|
|
});
|
|
|
|
changeChartBoxTitle('', $(element).find('.chart-province-item-title').text(), 0);
|
|
}
|
|
|
|
function chartAddData(chart, count, data, label) {
|
|
//chart.data.labels.push(label);
|
|
chart.data.datasets[count].data.push(data);
|
|
chart.update();
|
|
}
|
|
|
|
function chartRemoveData(chart) {
|
|
//chart.data.labels.pop();
|
|
chart.data.datasets.forEach((dataset) => {
|
|
dataset.data.pop();
|
|
});
|
|
chart.update();
|
|
}
|
|
|
|
$(document).ready(function () {
|
|
for (let i = 1; i <= 36; i++) {
|
|
chartProvinceItemsCanvas[i] = $('#myChart' + i);
|
|
}
|
|
|
|
initIranGeoJson();
|
|
initCityGeoJson();
|
|
|
|
abrarProvinceNameArray.sort(function (itemA, itemB) {
|
|
return itemB.process - itemA.process;
|
|
});
|
|
|
|
bokhorProvinceNameArray.sort(function (itemA, itemB) {
|
|
return itemB.process - itemA.process;
|
|
});
|
|
});
|
|
|
|
// -----------------------------------------
|
|
|
|
var iranGeoJSON = null;
|
|
var fullCityGeoJSON = null;
|
|
var fullCityGeoJSONTemp = new Object;
|
|
var iranMapGeo = null;
|
|
var iranCityMapGeo = null;
|
|
var setAbrarProcess = 0;
|
|
var setBokhorProcess = 0;
|
|
var iranNameArray = [];
|
|
var abrarProvinceNameArray = [
|
|
{
|
|
row: 1,
|
|
feature: 0,
|
|
name: 'آذربايجان شرقی',
|
|
process: 25
|
|
},
|
|
{
|
|
row: 2,
|
|
feature: 1,
|
|
name: 'آذربايجان غربی',
|
|
process: 28
|
|
},
|
|
{
|
|
row: 3,
|
|
feature: 2,
|
|
name: 'اردبيل',
|
|
process: 29.9
|
|
},
|
|
{
|
|
row: 4,
|
|
feature: 3,
|
|
name: 'اصفهان',
|
|
process: 14.1
|
|
},
|
|
{
|
|
row: 5,
|
|
feature: 4,
|
|
name: 'البرز',
|
|
process: 45
|
|
},
|
|
{
|
|
row: 6,
|
|
feature: 5,
|
|
name: 'ايرانشهر',
|
|
process: 7.4
|
|
},
|
|
{
|
|
row: 7,
|
|
feature: 6,
|
|
name: 'ايلام',
|
|
process: 42.1
|
|
},
|
|
{
|
|
row: 8,
|
|
feature: 7,
|
|
name: 'بوشهر',
|
|
process: 12.4
|
|
},
|
|
{
|
|
row: 9,
|
|
feature: 8,
|
|
name: 'تهران',
|
|
process: 18.1
|
|
},
|
|
{
|
|
row: 10,
|
|
feature: 9,
|
|
name: 'چهار محال و بختياری',
|
|
process: 57.8
|
|
},
|
|
{
|
|
row: 11,
|
|
feature: 10,
|
|
name: 'خراسان جنوبی',
|
|
process: 20.8
|
|
},
|
|
{
|
|
row: 12,
|
|
feature: 11,
|
|
name: 'خراسان رضوی',
|
|
process: 9.4
|
|
},
|
|
{
|
|
row: 13,
|
|
feature: 12,
|
|
name: 'خراسان شمالی',
|
|
process: 19.5
|
|
},
|
|
{
|
|
row: 14,
|
|
feature: 13,
|
|
name: 'خوزستان',
|
|
process: 33.6
|
|
},
|
|
{
|
|
row: 15,
|
|
feature: 14,
|
|
name: 'زنجان',
|
|
process: 41
|
|
},
|
|
{
|
|
row: 16,
|
|
feature: 34,
|
|
name: 'سمنان شرق',
|
|
process: 32.7
|
|
},
|
|
{
|
|
row: 17,
|
|
feature: 33,
|
|
name: 'سمنان غرب',
|
|
process: 18.3
|
|
},
|
|
{
|
|
row: 18,
|
|
feature: 18,
|
|
name: 'سيستان و بلوچستان',
|
|
process: 25.5
|
|
},
|
|
{
|
|
row: 19,
|
|
feature: 16,
|
|
name: 'فارس',
|
|
process: 45
|
|
},
|
|
{
|
|
row: 20,
|
|
feature: 17,
|
|
name: 'قزوين',
|
|
process: 45.5
|
|
},
|
|
{
|
|
row: 21,
|
|
feature: 18,
|
|
name: 'قم',
|
|
process: 4.7
|
|
},
|
|
{
|
|
row: 22,
|
|
feature: 19,
|
|
name: 'كرمان جنوب',
|
|
process: 45
|
|
},
|
|
{
|
|
row: 23,
|
|
feature: 20,
|
|
name: 'كردستان',
|
|
process: 43.3
|
|
},
|
|
{
|
|
row: 24,
|
|
feature: 21,
|
|
name: 'كرمان',
|
|
process: 59.5
|
|
},
|
|
{
|
|
row: 25,
|
|
feature: 22,
|
|
name: 'كرمانشاه',
|
|
process: 41.1
|
|
},
|
|
{
|
|
row: 26,
|
|
feature: 23,
|
|
name: 'كهگيلويه و بويراحمد',
|
|
process: 61.4
|
|
},
|
|
{
|
|
row: 27,
|
|
feature: 24,
|
|
name: 'گلستان',
|
|
process: 16.5
|
|
},
|
|
{
|
|
row: 28,
|
|
feature: 25,
|
|
name: 'گيلان',
|
|
process: 18.4
|
|
},
|
|
{
|
|
row: 29,
|
|
feature: 26,
|
|
name: 'لارستان',
|
|
process: 70.2
|
|
},
|
|
{
|
|
row: 30,
|
|
feature: 27,
|
|
name: 'لرستان',
|
|
process: 40
|
|
},
|
|
{
|
|
row: 31,
|
|
feature: 28,
|
|
name: 'مازندران',
|
|
process: 13.4
|
|
},
|
|
{
|
|
row: 32,
|
|
feature: 29,
|
|
name: 'مركزی',
|
|
process: 45.8
|
|
},
|
|
{
|
|
row: 33,
|
|
feature: 30,
|
|
name: 'هرمزگان',
|
|
process: 23.9
|
|
},
|
|
{
|
|
row: 34,
|
|
feature: 31,
|
|
name: 'همدان',
|
|
process: 36.1
|
|
},
|
|
{
|
|
row: 35,
|
|
feature: 32,
|
|
name: 'يزد',
|
|
process: 33
|
|
}
|
|
];
|
|
var bokhorProvinceNameArray = [
|
|
{
|
|
row: 1,
|
|
feature: 0,
|
|
name: 'آذربايجان شرقی',
|
|
process: 56
|
|
},
|
|
{
|
|
row: 2,
|
|
feature: 1,
|
|
name: 'آذربايجان غربی',
|
|
process: 51
|
|
},
|
|
{
|
|
row: 3,
|
|
feature: 2,
|
|
name: 'اردبيل',
|
|
process: 56
|
|
},
|
|
{
|
|
row: 4,
|
|
feature: 3,
|
|
name: 'اصفهان',
|
|
process: 74
|
|
},
|
|
{
|
|
row: 5,
|
|
feature: 4,
|
|
name: 'البرز',
|
|
process: 74
|
|
},
|
|
{
|
|
row: 6,
|
|
feature: 5,
|
|
name: 'ايرانشهر',
|
|
process: 30
|
|
},
|
|
{
|
|
row: 7,
|
|
feature: 6,
|
|
name: 'ايلام',
|
|
process: 78
|
|
},
|
|
{
|
|
row: 8,
|
|
feature: 7,
|
|
name: 'بوشهر',
|
|
process: 87
|
|
},
|
|
{
|
|
row: 9,
|
|
feature: 8,
|
|
name: 'تهران',
|
|
process: 83
|
|
},
|
|
{
|
|
row: 10,
|
|
feature: 9,
|
|
name: 'چهار محال و بختياری',
|
|
process: 65
|
|
},
|
|
{
|
|
row: 11,
|
|
feature: 10,
|
|
name: 'خراسان جنوبی',
|
|
process: 49
|
|
},
|
|
{
|
|
row: 12,
|
|
feature: 11,
|
|
name: 'خراسان رضوی',
|
|
process: 55
|
|
},
|
|
{
|
|
row: 13,
|
|
feature: 12,
|
|
name: 'خراسان شمالی',
|
|
process: 42
|
|
},
|
|
{
|
|
row: 14,
|
|
feature: 13,
|
|
name: 'خوزستان',
|
|
process: 64
|
|
},
|
|
{
|
|
row: 15,
|
|
feature: 14,
|
|
name: 'زنجان',
|
|
process: 69
|
|
},
|
|
{
|
|
row: 16,
|
|
feature: 34,
|
|
name: 'سمنان شرق',
|
|
process: 54
|
|
},
|
|
{
|
|
row: 17,
|
|
feature: 33,
|
|
name: 'سمنان غرب',
|
|
process: 68
|
|
},
|
|
{
|
|
row: 18,
|
|
feature: 15,
|
|
name: 'سيستان و بلوچستان',
|
|
process: 32
|
|
},
|
|
{
|
|
row: 19,
|
|
feature: 16,
|
|
name: 'فارس',
|
|
process: 57
|
|
},
|
|
{
|
|
row: 20,
|
|
feature: 17,
|
|
name: 'قزوين',
|
|
process: 51
|
|
},
|
|
{
|
|
row: 21,
|
|
feature: 18,
|
|
name: 'قم',
|
|
process: 62
|
|
},
|
|
{
|
|
row: 22,
|
|
feature: 19,
|
|
name: 'كرمان جنوب',
|
|
process: 32
|
|
},
|
|
{
|
|
row: 23,
|
|
feature: 20,
|
|
name: 'كردستان',
|
|
process: 46
|
|
},
|
|
{
|
|
row: 24,
|
|
feature: 21,
|
|
name: 'کرمان',
|
|
process: 42
|
|
},
|
|
{
|
|
row: 25,
|
|
feature: 22,
|
|
name: 'كرمانشاه',
|
|
process: 67
|
|
},
|
|
{
|
|
row: 26,
|
|
feature: 23,
|
|
name: 'كهگيلويه و بويراحمد',
|
|
process: 49
|
|
},
|
|
{
|
|
row: 27,
|
|
feature: 24,
|
|
name: 'گلستان',
|
|
process: 68
|
|
},
|
|
{
|
|
row: 28,
|
|
feature: 25,
|
|
name: 'گيلان',
|
|
process: 55
|
|
},
|
|
{
|
|
row: 29,
|
|
feature: 26,
|
|
name: 'لارستان',
|
|
process: 65
|
|
},
|
|
{
|
|
row: 30,
|
|
feature: 27,
|
|
name: 'لرستان',
|
|
process: 52
|
|
},
|
|
{
|
|
row: 31,
|
|
feature: 28,
|
|
name: 'مازندران',
|
|
process: 55
|
|
},
|
|
{
|
|
row: 32,
|
|
feature: 29,
|
|
name: 'مركزی',
|
|
process: 72
|
|
},
|
|
{
|
|
row: 33,
|
|
feature: 30,
|
|
name: 'هرمزگان',
|
|
process: 45
|
|
},
|
|
{
|
|
row: 34,
|
|
feature: 31,
|
|
name: 'همدان',
|
|
process: 81
|
|
},
|
|
{
|
|
row: 35,
|
|
feature: 32,
|
|
name: 'يزد',
|
|
process: 38
|
|
}
|
|
];
|
|
var iranArrayCount = 0;
|
|
var keepMapFeatureColor = null;
|
|
|
|
function getRandomFeatureColor() {
|
|
if (keepMapFeatureColor) {
|
|
return { num: -1, color: keepMapFeatureColor };
|
|
} else {
|
|
let randomNum = Math.floor(Math.random() * 101);
|
|
|
|
return randomNum >= 83 ? { num: randomNum, color: '#a366ff' } :
|
|
randomNum >= 67 ? { num: randomNum, color: '#80b3ff' } :
|
|
randomNum >= 50 ? { num: randomNum, color: '#66cc66' } :
|
|
randomNum >= 31 ? { num: randomNum, color: '#ffeda0' } :
|
|
{ num: randomNum, color: '#ff704d' };
|
|
}
|
|
}
|
|
|
|
function getForArrayFeatureColor(arrayNum) {
|
|
if (keepMapFeatureColor) {
|
|
return { num: -1, color: keepMapFeatureColor };
|
|
} else {
|
|
return arrayNum >= 83 ? { num: arrayNum, color: '#a366ff' } :
|
|
arrayNum >= 67 ? { num: arrayNum, color: '#80b3ff' } :
|
|
arrayNum >= 50 ? { num: arrayNum, color: '#66cc66' } :
|
|
arrayNum >= 31 ? { num: arrayNum, color: '#ffeda0' } :
|
|
{ num: arrayNum, color: '#ff704d' };
|
|
}
|
|
}
|
|
|
|
function initStyleMapFeatures(feature) {
|
|
let getRandom = null;
|
|
|
|
if (setAbrarProcess) {
|
|
getRandom = getForArrayFeatureColor((findFeatureInAbrarItems(iranArrayCount)).process);
|
|
} else if (setBokhorProcess) {
|
|
getRandom = getForArrayFeatureColor((findFeatureInBokhorItems(iranArrayCount)).process);
|
|
} else {
|
|
getRandom = getRandomFeatureColor();
|
|
}
|
|
|
|
let makeStyle = {
|
|
fillColor: getRandom.color,
|
|
weight: 2,
|
|
opacity: 1,
|
|
color: 'white',
|
|
fillOpacity: 0.5
|
|
};
|
|
|
|
if (getRandom.num != -1) {
|
|
if (iranArrayCount == 35) {
|
|
iranArrayCount = 0;
|
|
}
|
|
|
|
iranNameArray[iranArrayCount] = {
|
|
name: feature.properties.province_name,
|
|
feature: feature.properties.feature_id,
|
|
random: getRandom.num
|
|
};
|
|
|
|
iranNameArray.sort(function (itemA, itemB) {
|
|
return itemB.random - itemA.random;
|
|
});
|
|
|
|
iranArrayCount++;
|
|
}
|
|
|
|
return makeStyle;
|
|
}
|
|
|
|
function initStyleCityMapFeatures(feature) {
|
|
let getRandom = getRandomFeatureColor();
|
|
|
|
let makeStyle = {
|
|
fillColor: getRandom.color,
|
|
weight: 2,
|
|
opacity: 1,
|
|
color: 'white',
|
|
fillOpacity: 0.5
|
|
};
|
|
|
|
return makeStyle;
|
|
}
|
|
|
|
function highlightMapFeature(e) {
|
|
let featureLayer = null;
|
|
|
|
if (e.target) {
|
|
featureLayer = e.target;
|
|
} else {
|
|
featureLayer = e;
|
|
}
|
|
|
|
keepMapFeatureColor = featureLayer.options.fillColor;
|
|
|
|
featureLayer.setStyle({
|
|
weight: 4,
|
|
color: '#666',
|
|
fillOpacity: 0.8
|
|
});
|
|
|
|
if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
|
|
featureLayer.bringToFront();
|
|
}
|
|
}
|
|
|
|
function resetMapFeatureHighlight(e) {
|
|
let featureLayer = null;
|
|
|
|
if (e.target) {
|
|
featureLayer = e.target;
|
|
} else {
|
|
featureLayer = e;
|
|
}
|
|
|
|
iranMapGeo.resetStyle(featureLayer);
|
|
keepMapFeatureColor = null;
|
|
}
|
|
|
|
function zoomMapToFeature(e) {
|
|
let featureLayer = null;
|
|
let featuresLayerCity = [];
|
|
|
|
if (e.target) {
|
|
featureLayer = e.target;
|
|
} else {
|
|
featureLayer = e;
|
|
}
|
|
|
|
map.flyToBounds(featureLayer.getBounds());
|
|
|
|
showLoaderScreen();
|
|
removeFeaturesFromMap();
|
|
removeCityFeaturesFromMap();
|
|
fullCityGeoJSONTemp.type = "FeatureCollection";
|
|
|
|
$.each(fullCityGeoJSON.features, function (key, value) {
|
|
if (value && (featureLayer.feature.properties.province_id === value.properties.province_id)) {
|
|
featuresLayerCity.push(value);
|
|
} else {
|
|
//console.log('Not Push');
|
|
}
|
|
});
|
|
|
|
setTimeout(function () {
|
|
//console.log(featuresLayerCity);
|
|
fullCityGeoJSONTemp.features = featuresLayerCity;
|
|
addCityFeaturesToMap();
|
|
}, 1000);
|
|
|
|
setTimeout(function () {
|
|
hideLoaderScreen();
|
|
}, 1500);
|
|
}
|
|
|
|
function onEachFeature(feature, featureLayer) {
|
|
featureLayer.on({
|
|
mouseover: highlightMapFeature,
|
|
mouseout: resetMapFeatureHighlight,
|
|
click: zoomMapToFeature
|
|
});
|
|
}
|
|
|
|
function onEachCityFeature(feature, featureLayer) {
|
|
featureLayer.on({
|
|
mouseover: highlightMapFeature,
|
|
mouseout: resetMapFeatureHighlight,
|
|
//click: zoomMapToFeature
|
|
});
|
|
}
|
|
|
|
function addTopFeatureToStat() {
|
|
let statItem = null;
|
|
let statMenu = $('.menu-stat-list > .stat-list');
|
|
|
|
$('.right-menu-stat-chart > .menu-stat-title').text('رتبهبندی استانی');
|
|
|
|
if (!setAbrarProcess && !setBokhorProcess && iranNameArray.length > 0) {
|
|
for (let i = 0; i < 35; i++) {
|
|
let statItemList = $('<li class="stat-list-li" indexid="' + i + '"></li>');
|
|
statItem = $('<div class="stat-list-item"></div>');
|
|
// statItem.append('<span class="item-rate">' + (i + 1) + '</span>');
|
|
statItem.append('<span class="item-title">' + iranNameArray[i].name + '</span>');
|
|
statItem.append('<span class="item-stat">' + iranNameArray[i].random + '٪' + '</span>');
|
|
if (iranNameArray[i].random >= 83) {
|
|
statItem.addClass('stat-item-top-1');
|
|
} else if (iranNameArray[i].random >= 67) {
|
|
statItem.addClass('stat-item-top-2');
|
|
} else if (iranNameArray[i].random >= 50) {
|
|
statItem.addClass('stat-item-top-3');
|
|
} else if (iranNameArray[i].random >= 31) {
|
|
statItem.addClass('stat-item-top-4');
|
|
} else {
|
|
statItem.addClass('stat-item-top-5');
|
|
}
|
|
statItem.css('width', iranNameArray[i].random + '%');
|
|
statMenu.append(statItemList.append(statItem));
|
|
}
|
|
|
|
$(".stat-list-li").on({
|
|
mouseenter: function () {
|
|
showItemProvinceInfo(parseInt($(this).attr('indexid')), 1);
|
|
},
|
|
mouseleave: function () {
|
|
showItemProvinceInfo(parseInt($(this).attr('indexid')), 0);
|
|
}
|
|
});
|
|
|
|
$(".stat-list-li").on('click', function () {
|
|
zoomItemProvinceInfo(parseInt($(this).attr('indexid')));
|
|
});
|
|
} else {
|
|
setTimeout(function () {
|
|
for (let i = 0; i < 35; i++) {
|
|
statItemList = $('<li class="stat-list-li" indexid="' + i + '"></li>');
|
|
statItem = $('<div class="stat-list-item"></div>');
|
|
// statItem.append('<span class="item-rate">' + (i + 1) + '</span>');
|
|
statItem.append('<span class="item-title">' + iranNameArray[i].name + '</span>');
|
|
statItem.append('<span class="item-stat">' + iranNameArray[i].random + '٪' + '</span>');
|
|
if (iranNameArray[i].random >= 83) {
|
|
statItem.addClass('stat-item-top-1');
|
|
} else if (iranNameArray[i].random >= 67) {
|
|
statItem.addClass('stat-item-top-2');
|
|
} else if (iranNameArray[i].random >= 50) {
|
|
statItem.addClass('stat-item-top-3');
|
|
} else if (iranNameArray[i].random >= 31) {
|
|
statItem.addClass('stat-item-top-4');
|
|
} else {
|
|
statItem.addClass('stat-item-top-5');
|
|
}
|
|
statItem.css('width', iranNameArray[i].random + '%');
|
|
statMenu.append(statItemList.append(statItem));
|
|
}
|
|
|
|
$(".stat-list-li").on({
|
|
mouseenter: function () {
|
|
showItemProvinceInfo(parseInt($(this).attr('indexid')), 1);
|
|
},
|
|
mouseleave: function () {
|
|
showItemProvinceInfo(parseInt($(this).attr('indexid')), 0);
|
|
}
|
|
});
|
|
|
|
$(".stat-list-li").on('click', function () {
|
|
zoomItemProvinceInfo(parseInt($(this).attr('indexid')));
|
|
});
|
|
}, 500);
|
|
}
|
|
}
|
|
|
|
function addFeaturesToMap() {
|
|
removeCityFeaturesFromMap();
|
|
removeFeaturesFromMap();
|
|
remove141Layer();
|
|
keepMapFeatureColor = null;
|
|
|
|
if (!setAbrarProcess && !setBokhorProcess && iranGeoJSON) {
|
|
iranMapGeo = L.geoJson(iranGeoJSON, {
|
|
style: initStyleMapFeatures,
|
|
onEachFeature: onEachFeature
|
|
});
|
|
iranMapGeo.addTo(map);
|
|
} else {
|
|
setTimeout(function () {
|
|
iranMapGeo = L.geoJson(iranGeoJSON, {
|
|
style: initStyleMapFeatures,
|
|
onEachFeature: onEachFeature
|
|
});
|
|
iranMapGeo.addTo(map);
|
|
}, 500);
|
|
}
|
|
|
|
map.flyTo([32.62, 53.25], 6);
|
|
}
|
|
|
|
function removeFeaturesFromMap() {
|
|
if (iranMapGeo) {
|
|
map.removeLayer(iranMapGeo);
|
|
//iranMapGeo = null;
|
|
}
|
|
}
|
|
|
|
function addCityFeaturesToMap() {
|
|
remove141Layer();
|
|
removeCityFeaturesFromMap();
|
|
removeFeaturesFromMap();
|
|
keepMapFeatureColor = null;
|
|
|
|
if (fullCityGeoJSONTemp) {
|
|
iranCityMapGeo = L.geoJson(fullCityGeoJSONTemp, {
|
|
style: initStyleCityMapFeatures,
|
|
onEachFeature: onEachCityFeature
|
|
});
|
|
iranCityMapGeo.addTo(map);
|
|
}
|
|
}
|
|
|
|
function removeCityFeaturesFromMap() {
|
|
if (iranCityMapGeo) {
|
|
map.removeLayer(iranCityMapGeo);
|
|
//iranCityMapGeo = null;
|
|
}
|
|
}
|
|
|
|
function loadIranGeoJson(callback) {
|
|
showLoaderScreen();
|
|
var xobj = new XMLHttpRequest();
|
|
xobj.overrideMimeType("application/json");
|
|
xobj.open('GET', 'https://141.ir/api/provinces35geojson', true);
|
|
xobj.onreadystatechange = function () {
|
|
if (xobj.readyState == 4 && xobj.status == "200") {
|
|
//hideLoaderScreen();
|
|
callback(xobj.responseText);
|
|
}
|
|
};
|
|
xobj.send(null);
|
|
}
|
|
|
|
function loadCityGeoJson(callback) {
|
|
//showLoaderScreen();
|
|
var xobj = new XMLHttpRequest();
|
|
xobj.overrideMimeType("application/json");
|
|
xobj.open('GET', 'https://141.ir/api/cities430geojson', true);
|
|
xobj.onreadystatechange = function () {
|
|
if (xobj.readyState == 4 && xobj.status == "200") {
|
|
hideLoaderScreen();
|
|
callback(xobj.responseText);
|
|
}
|
|
};
|
|
xobj.send(null);
|
|
}
|
|
|
|
function initIranGeoJson() {
|
|
loadIranGeoJson(function (response) {
|
|
iranGeoJSON = JSON.parse(response);
|
|
});
|
|
}
|
|
|
|
function initCityGeoJson() {
|
|
loadCityGeoJson(function (response) {
|
|
fullCityGeoJSON = JSON.parse(response);
|
|
});
|
|
}
|
|
|
|
// ------------- Ali ------------------------
|
|
|
|
var provinces = [
|
|
{
|
|
id: 1,
|
|
name: 'آذربایجان شرقی',
|
|
lat: 37.9211202,
|
|
lng: 46.6821517
|
|
},
|
|
{
|
|
id: 2,
|
|
name: 'آذربایجان غربی',
|
|
lat: 37.7416484,
|
|
lng: 45.0207638
|
|
},
|
|
{
|
|
id: 3,
|
|
name: 'اردبیل',
|
|
lat: 38.4583983,
|
|
lng: 47.9313001
|
|
},
|
|
{
|
|
id: 4,
|
|
name: 'اصفهان',
|
|
lat: 33.196733,
|
|
lng: 50.7884216,
|
|
projectCoordinates: [
|
|
{
|
|
id: 1,
|
|
type: 1,
|
|
lat: 33.096733,
|
|
lng: 50.7884216,
|
|
},
|
|
{
|
|
id: 2,
|
|
type: 1,
|
|
lat: 33.396733,
|
|
lng: 50.7884216
|
|
},
|
|
{
|
|
id: 3,
|
|
type: 2,
|
|
lat: 33.196733,
|
|
lng: 50.4884216
|
|
},
|
|
{
|
|
id: 4,
|
|
type: 2,
|
|
lat: 33.196733,
|
|
lng: 50.8884216
|
|
},
|
|
{
|
|
id: 5,
|
|
type: 3,
|
|
lat: 33.196733,
|
|
lng: 51.1884216
|
|
},
|
|
{
|
|
id: 6,
|
|
type: 4,
|
|
lat: 33.496733,
|
|
lng: 50.9884216
|
|
},
|
|
{
|
|
id: 7,
|
|
type: 2,
|
|
lat: 33.696733,
|
|
lng: 50.1884216
|
|
},
|
|
{
|
|
id: 8,
|
|
type: 3,
|
|
lat: 33.296733,
|
|
lng: 51.4884216
|
|
},
|
|
]
|
|
},
|
|
{
|
|
id: 32,
|
|
name: 'البرز',
|
|
lat: 35.9960,
|
|
lng: 50.9289
|
|
},
|
|
{
|
|
id: 5,
|
|
name: 'ایلام',
|
|
lat: 33.1545696,
|
|
lng: 46.7576343
|
|
},
|
|
{
|
|
id: 6,
|
|
name: 'بوشهر',
|
|
lat: 28.8936645,
|
|
lng: 51.3204877
|
|
},
|
|
{
|
|
id: 7,
|
|
name: 'تهران',
|
|
lat: 35.5021945,
|
|
lng: 51.3269098
|
|
},
|
|
{
|
|
id: 8,
|
|
name: 'چهارمحال و بختیاری',
|
|
lat: 32.0163307,
|
|
lng: 50.685709
|
|
},
|
|
{
|
|
id: 29,
|
|
name: 'خراسان جنوبی',
|
|
lat: 33.0006776,
|
|
lng: 58.3262335
|
|
},
|
|
{
|
|
id: 30,
|
|
name: 'خراسان رضوی',
|
|
lat: 35.756361,
|
|
lng: 59.1280992,
|
|
projectCoordinates: [
|
|
{
|
|
id: 1,
|
|
type: 1,
|
|
lat: 35.756361,
|
|
lng: 59.1280992
|
|
},
|
|
{
|
|
id: 2,
|
|
type: 1,
|
|
lat: 36.756361,
|
|
lng: 59.3280992
|
|
},
|
|
{
|
|
id: 3,
|
|
type: 1,
|
|
lat: 35.456361,
|
|
lng: 60.1280992
|
|
},
|
|
{
|
|
id: 4,
|
|
type: 2,
|
|
lat: 35.956361,
|
|
lng: 60.5280992
|
|
},
|
|
{
|
|
id: 5,
|
|
type: 3,
|
|
lat: 34.156361,
|
|
lng: 60.5280992
|
|
},
|
|
{
|
|
id: 6,
|
|
type: 4,
|
|
lat: 34.756361,
|
|
lng: 59.6280992
|
|
},
|
|
{
|
|
id: 7,
|
|
type: 1,
|
|
lat: 34.156361,
|
|
lng: 58.6280992
|
|
},
|
|
{
|
|
id: 8,
|
|
type: 2,
|
|
lat: 35.156361,
|
|
lng: 58.4280992
|
|
},
|
|
{
|
|
id: 9,
|
|
type: 2,
|
|
lat: 36.056361,
|
|
lng: 58.1280992
|
|
},
|
|
]
|
|
},
|
|
{
|
|
id: 31,
|
|
name: 'خراسان شمالی',
|
|
lat: 37.5378855,
|
|
lng: 56.9526137
|
|
},
|
|
{
|
|
id: 10,
|
|
name: 'خوزستان',
|
|
lat: 31.5535141,
|
|
lng: 49.0077168
|
|
},
|
|
{
|
|
id: 11,
|
|
name: 'زنجان',
|
|
lat: 36.515854,
|
|
lng: 48.4777616,
|
|
projectCoordinates: [
|
|
{
|
|
id: 1,
|
|
type: 1,
|
|
lat: 36.515854,
|
|
lng: 48.4777616
|
|
},
|
|
{
|
|
id: 2,
|
|
type: 1,
|
|
lat: 35.415854,
|
|
lng: 47.5777616
|
|
},
|
|
{
|
|
id: 3,
|
|
type: 2,
|
|
lat: 37.315854,
|
|
lng: 48.3777616
|
|
},
|
|
{
|
|
id: 4,
|
|
type: 4,
|
|
lat: 36.915854,
|
|
lng: 48.5777616
|
|
},
|
|
{
|
|
id: 5,
|
|
type: 2,
|
|
lat: 37.115854,
|
|
lng: 49.4777616
|
|
},
|
|
]
|
|
},
|
|
{
|
|
id: 12,
|
|
name: 'سمنان',
|
|
lat: 35.4380386,
|
|
lng: 54.8626294
|
|
},
|
|
{
|
|
id: 13,
|
|
name: 'سیستان و بلوچستان',
|
|
lat: 28.1292481,
|
|
lng: 60.8236848,
|
|
projectCoordinates: [
|
|
{
|
|
id: 1,
|
|
type: 1,
|
|
lat: 29.1292481,
|
|
lng: 60.8236848
|
|
},
|
|
{
|
|
id: 2,
|
|
type: 1,
|
|
lat: 28.1292481,
|
|
lng: 61.8236848
|
|
},
|
|
{
|
|
id: 3,
|
|
type: 1,
|
|
lat: 27.1292481,
|
|
lng: 61.8236848
|
|
},
|
|
{
|
|
id: 4,
|
|
type: 2,
|
|
lat: 28.1292481,
|
|
lng: 59.8236848
|
|
},
|
|
{
|
|
id: 5,
|
|
type: 3,
|
|
lat: 30.1292481,
|
|
lng: 60.4236848
|
|
},
|
|
{
|
|
id: 6,
|
|
type: 4,
|
|
lat: 31.1292481,
|
|
lng: 61.4236848
|
|
},
|
|
{
|
|
id: 7,
|
|
type: 4,
|
|
lat: 27.7292481,
|
|
lng: 60.8236848
|
|
},
|
|
{
|
|
id: 8,
|
|
type: 2,
|
|
lat: 27.1292481,
|
|
lng: 59.2236848
|
|
},
|
|
]
|
|
},
|
|
{
|
|
id: 14,
|
|
name: 'فارس',
|
|
lat: 29.299051,
|
|
lng: 53.218456
|
|
},
|
|
{
|
|
id: 28,
|
|
name: 'قزوین',
|
|
lat: 36.0156291,
|
|
lng: 49.8398161
|
|
},
|
|
{
|
|
id: 26,
|
|
name: 'قم',
|
|
lat: 34.7191915,
|
|
lng: 51.0122844
|
|
},
|
|
{
|
|
id: 16,
|
|
name: 'کردستان',
|
|
lat: 35.672803,
|
|
lng: 47.0124376
|
|
},
|
|
{
|
|
id: 15,
|
|
name: 'کرمان',
|
|
lat: 29.571858,
|
|
lng: 57.301047
|
|
},
|
|
{
|
|
id: 17,
|
|
name: 'کرمانشاه',
|
|
lat: 34.3789744,
|
|
lng: 46.7010122
|
|
},
|
|
{
|
|
id: 18,
|
|
name: 'کهگیلویه و بویراحمد',
|
|
lat: 30.8143476,
|
|
lng: 50.8661454
|
|
},
|
|
{
|
|
id: 27,
|
|
name: 'گلستان',
|
|
lat: 37.1984436,
|
|
lng: 55.070672
|
|
},
|
|
{
|
|
id: 19,
|
|
name: 'گیلان',
|
|
lat: 37.5115476,
|
|
lng: 49.3554429
|
|
},
|
|
{
|
|
id: 20,
|
|
name: 'لرستان',
|
|
lat: 33.5372643,
|
|
lng: 48.2435197
|
|
},
|
|
{
|
|
id: 21,
|
|
name: 'مازندران',
|
|
lat: 36.3159159,
|
|
lng: 51.8968597
|
|
},
|
|
{
|
|
id: 22,
|
|
name: 'مرکزی',
|
|
lat: 34.5302705,
|
|
lng: 49.7864561
|
|
},
|
|
{
|
|
id: 23,
|
|
name: 'هرمزگان',
|
|
lat: 27.7198095,
|
|
lng: 56.335807
|
|
},
|
|
{
|
|
id: 24,
|
|
name: 'همدان',
|
|
lat: 34.973321,
|
|
lng: 48.6555779
|
|
},
|
|
{
|
|
id: 25,
|
|
name: 'یزد',
|
|
lat: 32.2452686,
|
|
lng: 55.105172,
|
|
projectCoordinates: [
|
|
{
|
|
id: 1,
|
|
type: 1,
|
|
lat: 32.1452686,
|
|
lng: 55.205172,
|
|
},
|
|
{
|
|
id: 2,
|
|
type: 1,
|
|
lat: 31.8452686,
|
|
lng: 55.205172,
|
|
},
|
|
{
|
|
id: 3,
|
|
type: 1,
|
|
lat: 31.8452686,
|
|
lng: 55.405172,
|
|
},
|
|
{
|
|
id: 4,
|
|
type: 2,
|
|
lat: 31.6452686,
|
|
lng: 55.605172,
|
|
},
|
|
{
|
|
id: 5,
|
|
type: 2,
|
|
lat: 32.3452686,
|
|
lng: 55.205172,
|
|
},
|
|
{
|
|
id: 6,
|
|
type: 3,
|
|
lat: 32.9452686,
|
|
lng: 55.105172,
|
|
},
|
|
{
|
|
id: 7,
|
|
type: 3,
|
|
lat: 33.2452686,
|
|
lng: 55.905172,
|
|
},
|
|
]
|
|
},
|
|
];
|
|
|
|
$('svg #iran polygon').on('click', function () {
|
|
if ($('.left-menu-map').css('width') == '500px') {
|
|
let selectedProvince = provinces.find(entry => entry.id == parseInt(this.id.substring(3)));
|
|
|
|
// areaChart = new Chart(areaChartCanvas, {
|
|
// type: 'line',
|
|
// data: areaChartData2,
|
|
// options: areaChartOptions
|
|
// });
|
|
|
|
// let numberOfProjects = $('.numberOfProjects');
|
|
// let numberOfActiveProjects = $('#numberOfActiveProjects');
|
|
// let numberOfOpenedProjects = $('#numberOfOpenedProjects');
|
|
// let numberOfFinishedProjects = $('#numberOfFinishedProjects');
|
|
// let numberOfStoppedProjects = $('#numberOfStoppedProjects');
|
|
|
|
// jQuery({ Counter: 0 }).animate({ Counter: Math.floor(Math.random() * 100) + 700 }, {
|
|
// duration: 1000,
|
|
// easing: 'swing',
|
|
// step: function () {
|
|
// numberOfProjects.text(Math.ceil(this.Counter));
|
|
// }
|
|
// });
|
|
// jQuery({ Counter: 0 }).animate({ Counter: Math.floor(Math.random() * 100) + 400 }, {
|
|
// duration: 1000,
|
|
// easing: 'swing',
|
|
// step: function () {
|
|
// numberOfActiveProjects.text(Math.ceil(this.Counter));
|
|
// }
|
|
// });
|
|
// jQuery({ Counter: 0 }).animate({ Counter: Math.floor(Math.random() * 100) + 250 }, {
|
|
// duration: 1000,
|
|
// easing: 'swing',
|
|
// step: function () {
|
|
// numberOfOpenedProjects.text(Math.ceil(this.Counter));
|
|
// }
|
|
// });
|
|
// jQuery({ Counter: 0 }).animate({ Counter: Math.floor(Math.random() * 100) + 100 }, {
|
|
// duration: 1000,
|
|
// easing: 'swing',
|
|
// step: function () {
|
|
// numberOfFinishedProjects.text(Math.ceil(this.Counter));
|
|
// }
|
|
// });
|
|
// jQuery({ Counter: 0 }).animate({ Counter: Math.floor(Math.random() * 50) }, {
|
|
// duration: 1000,
|
|
// easing: 'swing',
|
|
// step: function () {
|
|
// numberOfStoppedProjects.text(Math.ceil(this.Counter));
|
|
// }
|
|
// });
|
|
|
|
map.removeLayer(markerLayers);
|
|
|
|
map.flyTo([selectedProvince.lat, selectedProvince.lng], 9);
|
|
|
|
for (let index = 0; index < selectedProvince.projectCoordinates.length; index++) {
|
|
switch (selectedProvince.projectCoordinates[index].type) {
|
|
case 1: {
|
|
L.marker(
|
|
[selectedProvince.projectCoordinates[index].lat, selectedProvince.projectCoordinates[index].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup(getCustomPopupContent(selectedProvince.name, 2), { 'className': 'customPopupStyle' })
|
|
.addTo(map);
|
|
break;
|
|
}
|
|
case 2: {
|
|
L.marker(
|
|
[selectedProvince.projectCoordinates[index].lat, selectedProvince.projectCoordinates[index].lng],
|
|
{ icon: greenIcon }
|
|
).bindPopup(getCustomPopupContent(selectedProvince.name, 2), { 'className': 'customPopupStyle' })
|
|
.addTo(map);
|
|
break;
|
|
}
|
|
case 3: {
|
|
L.marker(
|
|
[selectedProvince.projectCoordinates[index].lat, selectedProvince.projectCoordinates[index].lng],
|
|
{ icon: yellowIcon }
|
|
).bindPopup(getCustomPopupContent(selectedProvince.name, 2), { 'className': 'customPopupStyle' })
|
|
.addTo(map);
|
|
break;
|
|
}
|
|
case 4: {
|
|
L.marker(
|
|
[selectedProvince.projectCoordinates[index].lat, selectedProvince.projectCoordinates[index].lng],
|
|
{ icon: redIcon }
|
|
).bindPopup(getCustomPopupContent(selectedProvince.name, 2), { 'className': 'customPopupStyle' })
|
|
.addTo(map);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// Project icons
|
|
var blueIcon = L.divIcon({
|
|
className: 'custom-div-icon',
|
|
html: "<span class='beacon beacon-blue'></span>",
|
|
iconSize: [30, 42],
|
|
// iconAnchor: [15, 42]
|
|
});
|
|
var greenIcon = L.divIcon({
|
|
className: 'custom-div-icon',
|
|
html: "<span class='beacon beacon-green'></span>",
|
|
iconSize: [30, 42],
|
|
// iconAnchor: [15, 42]
|
|
});
|
|
var yellowIcon = L.divIcon({
|
|
className: 'custom-div-icon',
|
|
html: "<span class='beacon beacon-yellow'></span>",
|
|
iconSize: [30, 42],
|
|
// iconAnchor: [15, 42]
|
|
});
|
|
var redIcon = L.divIcon({
|
|
className: 'custom-div-icon',
|
|
html: "<span class='beacon beacon-red'></span>",
|
|
iconSize: [30, 42],
|
|
// iconAnchor: [15, 42]
|
|
});
|
|
|
|
function getPopupContent(type) {
|
|
// switch (type) {
|
|
// case 1: {
|
|
// // Active
|
|
// break;
|
|
// }
|
|
// case 2: {
|
|
// // Opened
|
|
// break;
|
|
// }
|
|
// case 3: {
|
|
// // Finished
|
|
// break;
|
|
// }
|
|
// case 4: {
|
|
// // Stopped
|
|
// break;
|
|
// }
|
|
// }
|
|
|
|
return "\
|
|
<div class=\"popup\">\
|
|
<div class=\"popupTitle\">\
|
|
<img src=\"dist/images/road.svg\" alt=\"\">\
|
|
<span class=\"popupHeader\">پهنه بندی جاده های روستایی</span>\
|
|
</div>\
|
|
<div class=\"popupContent\">\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>نوع عملیات</span><div class=\"popUpBoxContent\">"+ operationType + "</div></div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>وضعیت فعلی پروژه</span><div class=\"popUpBoxContent\">"+ getProjectStatus(type) + "</div></div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>اداره کل</span><div class=\"popUpBoxContent\">" + selectedProvince + "</div> </div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>درصد پیشرفت فیزیکی</span><div class=\"popUpBoxContent\">" + getProjectProgress() + "%</div></div>\
|
|
</div>";
|
|
}
|
|
|
|
function getProjectStatus(type) {
|
|
switch (type) {
|
|
case 1:
|
|
return 'فعال';
|
|
case 2:
|
|
return 'افتتاح شده';
|
|
case 3:
|
|
return 'خاتمه یافته';
|
|
case 4:
|
|
return 'متوقف شده';
|
|
}
|
|
}
|
|
|
|
function getProjectProgress() {
|
|
let percentage = Math.floor(Math.random() * 100) + 1; // returns a random integer from 0 to 99 + 1
|
|
return percentage;
|
|
}
|
|
|
|
function getParameterByName(name) {
|
|
let url = window.location.href;
|
|
name = name.replace(/[\[\]]/g, '\\$&');
|
|
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
|
|
results = regex.exec(url);
|
|
if (!results) return null;
|
|
if (!results[2]) return '';
|
|
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
|
}
|
|
|
|
if (getParameterByName('operationType')) {
|
|
var operationType = getParameterByName('operationType');
|
|
var projectStatus = getParameterByName('projectStatus');
|
|
var selectedProvince = getParameterByName('selectedProvince');
|
|
var selectedTown = getParameterByName('selectedTown');
|
|
var sourceLat = getParameterByName('sourceLat');
|
|
var sourceLng = getParameterByName('sourceLng');
|
|
|
|
L.marker(
|
|
[sourceLat, sourceLng],
|
|
{ icon: greenIcon }
|
|
).bindPopup(getPopupContent(returnOperationType(projectStatus)), { 'className': 'customPopupStyle' })
|
|
.addTo(map);
|
|
}
|
|
|
|
function returnOperationType(status) {
|
|
switch (status) {
|
|
case 'فعال': {
|
|
return 1;
|
|
}
|
|
case 'متوقف': {
|
|
return 4;
|
|
}
|
|
case 'خاتمهیافته': {
|
|
return 3;
|
|
}
|
|
}
|
|
}
|
|
|
|
function getCustomPopupContent(data, type) {
|
|
if (type == 1) {
|
|
return "\
|
|
<div class=\"popup\">\
|
|
<div class=\"popupTitle\">\
|
|
<img src=\"dist/images/road.svg\" alt=\"\">\
|
|
<span class=\"popupHeader\">پهنه بندی جاده های روستایی</span>\
|
|
</div>\
|
|
<div class=\"popupContent\">\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>نوع عملیات</span><div class=\"popUpBoxContent\">"+ generateRandom(1) + "</div></div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>وضعیت فعلی پروژه</span><div class=\"popUpBoxContent\">"+ generateRandom(2) + "</div></div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>اداره کل</span><div class=\"popUpBoxContent\">" + returnProvinceString(data.ProvinceID) + "</div> </div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>درصد پیشرفت فیزیکی</span><div class=\"popUpBoxContent\">" + getProjectProgress() + "%</div></div>\
|
|
</div>";
|
|
} else {
|
|
return "\
|
|
<div class=\"popup\">\
|
|
<div class=\"popupTitle\">\
|
|
<img src=\"dist/images/road.svg\" alt=\"\">\
|
|
<span class=\"popupHeader\">پهنه بندی جاده های روستایی</span>\
|
|
</div>\
|
|
<div class=\"popupContent\">\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>نوع عملیات</span><div class=\"popUpBoxContent\">"+ generateRandom(1) + "</div></div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>وضعیت فعلی پروژه</span><div class=\"popUpBoxContent\">"+ generateRandom(2) + "</div></div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>اداره کل</span><div class=\"popUpBoxContent\">" + data + "</div> </div>\
|
|
<div class=\"popUpBox\" style=\"width:75px\"><span>درصد پیشرفت فیزیکی</span><div class=\"popUpBoxContent\">" + getProjectProgress() + "%</div></div>\
|
|
</div>";
|
|
}
|
|
}
|
|
|
|
function generateRandom(index) {
|
|
switch (index) {
|
|
case 1: {
|
|
// Operation Type
|
|
let randomNumber = Math.floor(Math.random() * 2) + 1; // 1 or 2
|
|
if (randomNumber == 1) return 'احداث'
|
|
else return 'نگهداری';
|
|
}
|
|
case 2: {
|
|
// Project Status
|
|
let randomNumber = Math.floor(Math.random() * 3) + 1; // 1, 2, or 3
|
|
switch (randomNumber) {
|
|
case 1: return 'فعال';
|
|
case 2: return 'متوقف';
|
|
case 3: return 'خاتمه یافته';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function returnProvinceString(provinceId) {
|
|
switch (provinceId) {
|
|
case '1': return 'مازندران';
|
|
case '2': return 'تهران';
|
|
case '3': return 'فارس';
|
|
case '4': return 'خراسان رضوی';
|
|
case '5': return 'آذربایجان غربی';
|
|
case '6': return 'آذربایجان شرقی';
|
|
case '7': return 'اردبیل';
|
|
case '8': return 'گیلان';
|
|
case '9': return 'زنجان';
|
|
case '10': return 'کردستان';
|
|
case '11': return 'کرمانشاه';
|
|
case '12': return 'همدان';
|
|
case '13': return 'قزوین';
|
|
case '14': return 'البرز';
|
|
case '15': return 'گلستان';
|
|
case '16': return 'خراسان شمالی';
|
|
case '17': return 'سمنان';
|
|
case '18': return 'قم';
|
|
case '19': return 'مرکزی';
|
|
case '20': return 'لرستان';
|
|
case '21': return 'ایلام';
|
|
case '22': return 'اصفهان';
|
|
case '23': return 'یزد';
|
|
case '24': return 'خراسان جنوبی';
|
|
case '25': return 'چهارمحال و بختیاری';
|
|
case '26': return 'خوزستان';
|
|
case '27': return 'کهگیلویه و بویر احمد';
|
|
case '28': return 'بوشهر';
|
|
case '29': return 'کرمان';
|
|
case '30': return 'سیستان و بلوچستان';
|
|
case '31': return 'هرمزگان';
|
|
}
|
|
}
|
|
|
|
function showLayer(index) {
|
|
if (markerLayers != null) {
|
|
map.removeLayer(markerLayers);
|
|
}
|
|
|
|
switch (index) {
|
|
case 0: {
|
|
$.post('https://141.ir/api/camera', function (data) {
|
|
markerLayers = L.markerClusterGroup();
|
|
|
|
for (let index = 0; index < data.length; index++) {
|
|
let marker = L.marker(
|
|
[data[index].lat, data[index].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup(getCustomPopupContent(data[index], 1), { 'className': 'customPopupStyle' });
|
|
markerList.push(marker);
|
|
}
|
|
markerLayers.addLayers(markerList);
|
|
map.addLayer(markerLayers);
|
|
});
|
|
break;
|
|
}
|
|
case 1: {
|
|
$.post('https://141.ir/api/roadoperation', function (data) {
|
|
markerLayers = L.markerClusterGroup({ disableClusteringAtZoom: 5 });
|
|
|
|
for (let index = 0; index < data.length; index++) {
|
|
let marker = L.marker(
|
|
[data[index].lat, data[index].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup(getCustomPopupContent(data[index], 1), { 'className': 'customPopupStyle' });
|
|
markerList.push(marker);
|
|
}
|
|
markerLayers.addLayers(markerList);
|
|
map.addLayer(markerLayers);
|
|
});
|
|
break;
|
|
}
|
|
case 2: {
|
|
$.post('https://141.ir/api/roadaccident', function (data) {
|
|
markerLayers = L.markerClusterGroup({ disableClusteringAtZoom: 5 });
|
|
|
|
for (let index = 0; index < data.length; index++) {
|
|
let marker = L.marker(
|
|
[data[index].lat, data[index].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup(getCustomPopupContent(data[index], 1), { 'className': 'customPopupStyle' });
|
|
markerList.push(marker);
|
|
}
|
|
markerLayers.addLayers(markerList);
|
|
map.addLayer(markerLayers);
|
|
});
|
|
break;
|
|
}
|
|
case 3: {
|
|
$.post('https://141.ir/api/weather', function (data) {
|
|
markerLayers = L.markerClusterGroup();
|
|
|
|
for (let index = 0; index < data.length; index++) {
|
|
let marker = L.marker(
|
|
[data[index].lat, data[index].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup(getCustomPopupContent(data[index], 1), { 'className': 'customPopupStyle' });
|
|
markerList.push(marker);
|
|
}
|
|
markerLayers.addLayers(markerList);
|
|
map.addLayer(markerLayers);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
// ------------- Ali End ------------------------
|
|
|
|
function showLoaderScreen() {
|
|
$('.starter-loader-container').css('display', 'flex').hide().fadeIn();
|
|
}
|
|
|
|
function hideLoaderScreen() {
|
|
$('.starter-loader-container').fadeOut();
|
|
}
|
|
|
|
function show141Layer(index) {
|
|
if (marker141Layers != null) {
|
|
marker141List = [];
|
|
map.removeLayer(marker141Layers);
|
|
}
|
|
|
|
showLoaderScreen();
|
|
|
|
switch (index) {
|
|
case 0: {
|
|
$.post(API_ENDPOINT + '/camera', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('دوربین: ' + data[i].Title);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 1: {
|
|
$.post(API_ENDPOINT + '/otfapi', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('ترددشمار: ' + data[i].m_n);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 2: {
|
|
$.post(API_ENDPOINT + '/roadoperation', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('کارگاه: ' + data[i].OperationName);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 3: {
|
|
$.post(API_ENDPOINT + '/roadblock', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('انسداد: ' + data[i].Title);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 4: {
|
|
$.post(API_ENDPOINT + '/emdad', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.ikco.length; i++) {
|
|
let marker = L.marker(
|
|
[data.ikco[i].lat, data.ikco[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('امداد فنی: ' + data.ikco[i].onvan);
|
|
marker141List.push(marker);
|
|
}
|
|
for (let i = 0; i < data.saipa.length; i++) {
|
|
let marker = L.marker(
|
|
[data.saipa[i].lat, data.saipa[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('امداد فنی');
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 5: {
|
|
$.post(API_ENDPOINT + '/weather', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('آب و هوا: ' + data[i].Station_Name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 6: {
|
|
$.post(API_ENDPOINT + '/gasstation', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('جایگاه سوخت: ' + data[i].station_name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 7: {
|
|
$.post(API_ENDPOINT + '/complex', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('خدمات رفاهی: ' + data[i].complex_name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 8: {
|
|
$.post(API_ENDPOINT + '/mosque', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('نمازخانه: ' + data[i].mosque_name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 9: {
|
|
$.post(API_ENDPOINT + '/roadaccident', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('تصادفات: ' + data[i].CollisionTypeTitle);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 10: {
|
|
$.post(API_ENDPOINT + '/tollhouse', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('راهدارخانه: ' + data[i].toll_name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 11: {
|
|
$.post(API_ENDPOINT + '/hospital', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('خدمات درمانی: ' + data[i].hos_name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
case 12: {
|
|
$.post(API_ENDPOINT + '/repair', function (data) {
|
|
marker141Layers = L.markerClusterGroup();
|
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
let marker = L.marker(
|
|
[data[i].lat, data[i].lng],
|
|
{ icon: blueIcon }
|
|
).bindPopup('تعمیرگاه: ' + data[i].repair_name);
|
|
marker141List.push(marker);
|
|
}
|
|
marker141Layers.addLayers(marker141List);
|
|
map.addLayer(marker141Layers);
|
|
hideLoaderScreen();
|
|
});
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function remove141Layer() {
|
|
if (marker141Layers != null) {
|
|
marker141List = [];
|
|
map.removeLayer(marker141Layers);
|
|
|
|
$('.left-menu-141 > .item-menu-141.item-141-active').removeClass('item-141-active');
|
|
}
|
|
}
|
|
|
|
function showAbrarChartStat() {
|
|
let statItem = null;
|
|
let statMenu = $('.menu-stat-list > .stat-list');
|
|
|
|
$('.right-menu-stat-chart > .menu-stat-title').text('پیشرفت فیزیکی پروژههای طرح ابرار');
|
|
|
|
for (let i = 0; i < 35; i++) {
|
|
let statItemList = $('<li class="stat-list-li" indexid="' + i + '"></li>');
|
|
statItem = $('<div class="stat-list-item"></div>');
|
|
statItem.append('<span class="item-title">' + abrarProvinceNameArray[i].name + '</span>');
|
|
statItem.append('<span class="item-stat">' + abrarProvinceNameArray[i].process + '٪' + '</span>');
|
|
if (abrarProvinceNameArray[i].process >= 83) {
|
|
statItem.addClass('stat-item-top-1');
|
|
} else if (abrarProvinceNameArray[i].process >= 67) {
|
|
statItem.addClass('stat-item-top-2');
|
|
} else if (abrarProvinceNameArray[i].process >= 50) {
|
|
statItem.addClass('stat-item-top-3');
|
|
} else if (abrarProvinceNameArray[i].process >= 31) {
|
|
statItem.addClass('stat-item-top-4');
|
|
} else {
|
|
statItem.addClass('stat-item-top-5');
|
|
}
|
|
statItem.css('width', abrarProvinceNameArray[i].process + '%');
|
|
statMenu.append(statItemList.append(statItem));
|
|
}
|
|
|
|
$(".stat-list-li").on({
|
|
mouseenter: function () {
|
|
showAbrarProvinceInfo(parseInt($(this).attr('indexid')), 1);
|
|
},
|
|
mouseleave: function () {
|
|
showAbrarProvinceInfo(parseInt($(this).attr('indexid')), 0);
|
|
}
|
|
});
|
|
|
|
$(".stat-list-li").on('click', function () {
|
|
zoomAbrarProvinceInfo(parseInt($(this).attr('indexid')));
|
|
});
|
|
|
|
handleAbrarButtonClick(1);
|
|
addFeaturesToMap();
|
|
}
|
|
|
|
function hideAbrarChartStat() {
|
|
handleAbrarButtonClick(0);
|
|
}
|
|
|
|
function handleAbrarButtonClick(openStat = 1) {
|
|
if (openStat) {
|
|
$('.right-menu-stat-chart').css('top', '88px');
|
|
$('.left-menu-stat-chart-info').css('top', '88px');
|
|
} else {
|
|
$('.right-menu-stat-chart').css('top', '-858px');
|
|
$('.left-menu-stat-chart-info').css('top', '-308px');
|
|
emptyStatItems();
|
|
removeFeaturesFromMap();
|
|
}
|
|
}
|
|
|
|
function findFeatureInAbrarItems(featureRow) {
|
|
for (let i = 0; i < 35; i++) {
|
|
if (abrarProvinceNameArray[i].feature == featureRow) {
|
|
return abrarProvinceNameArray[i];
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
function showBokhorChartStat() {
|
|
let statItem = null;
|
|
let statMenu = $('.menu-stat-list > .stat-list');
|
|
|
|
$('.right-menu-stat-chart > .menu-stat-title').text('برخورداری راههای روستایی آسفالته کشور');
|
|
|
|
for (let i = 0; i < 35; i++) {
|
|
let statItemList = $('<li class="stat-list-li" indexid="' + i + '"></li>');
|
|
statItem = $('<div class="stat-list-item"></div>');
|
|
statItem.append('<span class="item-title">' + bokhorProvinceNameArray[i].name + '</span>');
|
|
statItem.append('<span class="item-stat">' + bokhorProvinceNameArray[i].process + '٪' + '</span>');
|
|
if (bokhorProvinceNameArray[i].process >= 83) {
|
|
statItem.addClass('stat-item-top-1');
|
|
} else if (bokhorProvinceNameArray[i].process >= 67) {
|
|
statItem.addClass('stat-item-top-2');
|
|
} else if (bokhorProvinceNameArray[i].process >= 50) {
|
|
statItem.addClass('stat-item-top-3');
|
|
} else if (bokhorProvinceNameArray[i].process >= 31) {
|
|
statItem.addClass('stat-item-top-4');
|
|
} else {
|
|
statItem.addClass('stat-item-top-5');
|
|
}
|
|
statItem.css('width', bokhorProvinceNameArray[i].process + '%');
|
|
statMenu.append(statItemList.append(statItem));
|
|
}
|
|
|
|
$(".stat-list-li").on({
|
|
mouseenter: function () {
|
|
showBokhorProvinceInfo(parseInt($(this).attr('indexid')), 1);
|
|
},
|
|
mouseleave: function () {
|
|
showBokhorProvinceInfo(parseInt($(this).attr('indexid')), 0);
|
|
}
|
|
});
|
|
|
|
$(".stat-list-li").on('click', function () {
|
|
zoomBokhorProvinceInfo(parseInt($(this).attr('indexid')));
|
|
});
|
|
|
|
handleBokhorButtonClick(1);
|
|
addFeaturesToMap();
|
|
}
|
|
|
|
function hideBokhorChartStat() {
|
|
handleBokhorButtonClick(0);
|
|
}
|
|
|
|
function handleBokhorButtonClick(openStat = 1) {
|
|
if (openStat) {
|
|
$('.right-menu-stat-chart').css('top', '88px');
|
|
$('.left-menu-stat-chart-info').css('top', '88px');
|
|
} else {
|
|
$('.right-menu-stat-chart').css('top', '-858px');
|
|
$('.left-menu-stat-chart-info').css('top', '-308px');
|
|
emptyStatItems();
|
|
removeFeaturesFromMap();
|
|
}
|
|
}
|
|
|
|
function findFeatureInBokhorItems(featureRow) {
|
|
for (let i = 0; i < 35; i++) {
|
|
if (bokhorProvinceNameArray[i].feature == featureRow) {
|
|
return bokhorProvinceNameArray[i];
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
function showItemProvinceInfo(index, show) {
|
|
let featureItem = null;
|
|
if (iranNameArray[index].feature !== -1 && iranMapGeo) {
|
|
featureItem = iranMapGeo._layers[Object.keys(iranMapGeo._layers)[iranNameArray[index].feature]];
|
|
}
|
|
|
|
if (show) {
|
|
if (featureItem) {
|
|
highlightMapFeature(featureItem);
|
|
}
|
|
} else {
|
|
if (featureItem) {
|
|
resetMapFeatureHighlight(featureItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
function showAbrarProvinceInfo(index, show) {
|
|
let featureItem = null;
|
|
if (abrarProvinceNameArray[index].feature !== -1 && iranMapGeo) {
|
|
featureItem = iranMapGeo._layers[Object.keys(iranMapGeo._layers)[abrarProvinceNameArray[index].feature]];
|
|
}
|
|
|
|
if (show) {
|
|
$('.menu-stat-info-title').text(abrarProvinceNameArray[index].name);
|
|
$('.menu-stat-info-content').empty();
|
|
$('.menu-stat-info-content').text(abrarProvinceNameArray[index].process);
|
|
if (featureItem) {
|
|
highlightMapFeature(featureItem);
|
|
}
|
|
} else {
|
|
$('.menu-stat-info-title').text('اطلاعات بیشتر');
|
|
$('.menu-stat-info-content').empty().append('<span>برای نمایش اطلاعات هر بخش بر روی نقشه یا نمودار آماری آن حرکت کنید.</span>');
|
|
if (featureItem) {
|
|
resetMapFeatureHighlight(featureItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
function showBokhorProvinceInfo(index, show) {
|
|
let featureItem = null;
|
|
if (bokhorProvinceNameArray[index].feature !== -1 && iranMapGeo) {
|
|
featureItem = iranMapGeo._layers[Object.keys(iranMapGeo._layers)[bokhorProvinceNameArray[index].feature]];
|
|
}
|
|
|
|
if (show) {
|
|
$('.menu-stat-info-title').text(bokhorProvinceNameArray[index].name);
|
|
$('.menu-stat-info-content').empty();
|
|
$('.menu-stat-info-content').text(bokhorProvinceNameArray[index].process);
|
|
if (featureItem) {
|
|
highlightMapFeature(featureItem);
|
|
}
|
|
} else {
|
|
$('.menu-stat-info-title').text('اطلاعات بیشتر');
|
|
$('.menu-stat-info-content').empty().append('<span>برای نمایش اطلاعات هر بخش بر روی نقشه یا نمودار آماری آن حرکت کنید.</span>');
|
|
if (featureItem) {
|
|
resetMapFeatureHighlight(featureItem);
|
|
}
|
|
}
|
|
}
|
|
|
|
function zoomItemProvinceInfo(index) {
|
|
let featureItem = null;
|
|
if (iranNameArray[index].feature !== -1 && iranMapGeo) {
|
|
featureItem = iranMapGeo._layers[Object.keys(iranMapGeo._layers)[iranNameArray[index].feature]];
|
|
}
|
|
|
|
zoomMapToFeature(featureItem);
|
|
}
|
|
|
|
function zoomAbrarProvinceInfo(index) {
|
|
let featureItem = null;
|
|
if (abrarProvinceNameArray[index].feature !== -1 && iranMapGeo) {
|
|
featureItem = iranMapGeo._layers[Object.keys(iranMapGeo._layers)[abrarProvinceNameArray[index].feature]];
|
|
}
|
|
|
|
zoomMapToFeature(featureItem);
|
|
}
|
|
|
|
function zoomBokhorProvinceInfo(index) {
|
|
let featureItem = null;
|
|
if (bokhorProvinceNameArray[index].feature !== -1 && iranMapGeo) {
|
|
featureItem = iranMapGeo._layers[Object.keys(iranMapGeo._layers)[bokhorProvinceNameArray[index].feature]];
|
|
}
|
|
|
|
zoomMapToFeature(featureItem);
|
|
}
|