388 lines
9.7 KiB
JavaScript
388 lines
9.7 KiB
JavaScript
var map;
|
|
var bounds = [
|
|
[42.9130026312, 75.6166317076],
|
|
[20.5782370061, 30.5092252948],
|
|
];
|
|
var showbounds = [32.4279, 53.688];
|
|
|
|
MAP_ENDPOINT = "https://testmap.141.ir";
|
|
|
|
var iranGeoJSON = JSON.parse(PROVICES_GEOJSON);
|
|
var fullCityGeoJSON = JSON.parse(CITIES_GEOJSON);
|
|
var iranMapGeo;
|
|
var keepMapFeatureColor = null;
|
|
var iranArrayCount = 0;
|
|
var diagramData = [];
|
|
var eachfeature = [];
|
|
var diagramLabel = [];
|
|
var provinceLatlng = [];
|
|
|
|
(() => {
|
|
$("#from_date").text(
|
|
moment(jsonServer.data.fromDate).format("jYYYY/jMM/jDD")
|
|
);
|
|
$("#to_date").text(moment(jsonServer.data.toDate).format("jYYYY/jMM/jDD"));
|
|
|
|
Chart.defaults.global.defaultFontFamily = "IRANSansFaNum";
|
|
|
|
diagramData = jsonServer.data.geojson_chart.data;
|
|
diagramLabel = jsonServer.data.geojson_chart.label;
|
|
provinceLatlng = jsonServer.data.provinces;
|
|
const activityLable = [];
|
|
|
|
const quantitativeActivityCount = [];
|
|
const quantitativeActivityData = jsonServer.data.quantitative_activity_chart;
|
|
|
|
const hourly_activity_chartCount = [];
|
|
const hourly_activity_chartData = jsonServer.data.hourly_activity_chart;
|
|
|
|
for (var i = 0; i < hourly_activity_chartData.length; i++) {
|
|
hourly_activity_chartCount.push(hourly_activity_chartData[i].majmoe);
|
|
activityLable.push(
|
|
moment(hourly_activity_chartData[i].created_at).format("jYYYY/jMM/jDD")
|
|
);
|
|
}
|
|
|
|
for (var i = 0; i < quantitativeActivityData.length; i++) {
|
|
quantitativeActivityCount.push(quantitativeActivityData[i].quantity);
|
|
}
|
|
|
|
const ActivityChartData = {
|
|
datasets: [
|
|
{
|
|
backgroundColor: "#003049",
|
|
borderColor: "#003049",
|
|
fill: false,
|
|
data: quantitativeActivityCount,
|
|
id: "amount",
|
|
label: "ساعت فعالیت در سامانه",
|
|
yAxisID: "right",
|
|
datalabels: {
|
|
align: "end",
|
|
anchor: "end",
|
|
},
|
|
},
|
|
{
|
|
backgroundColor: "#d62828",
|
|
borderColor: "#d62828",
|
|
fill: false,
|
|
data: hourly_activity_chartCount,
|
|
id: "amount",
|
|
label: "تعداد فعالیت در سامانه",
|
|
yAxisID: "left",
|
|
datalabels: {
|
|
align: "start",
|
|
anchor: "start",
|
|
},
|
|
},
|
|
],
|
|
labels: activityLable,
|
|
};
|
|
|
|
$("#activity_chart").attr(
|
|
"width",
|
|
$("#activity_chart").closest(".chart-bar-data").width()
|
|
);
|
|
$("#activity_chart").attr(
|
|
"height",
|
|
$("#activity_chart").closest(".chart-bar-data").height()
|
|
);
|
|
|
|
const activityChart = new Chart(
|
|
document.getElementById("activity_chart").getContext("2d"),
|
|
{
|
|
type: "line",
|
|
data: ActivityChartData,
|
|
options: {
|
|
elements: {
|
|
rectangle: {
|
|
borderWidth: 2,
|
|
},
|
|
},
|
|
layout: {
|
|
padding: 0,
|
|
},
|
|
legend: {
|
|
display: true,
|
|
labels: {
|
|
boxWidth: 16,
|
|
},
|
|
},
|
|
maintainAspectRatio: false,
|
|
responsive: true,
|
|
scales: {
|
|
xAxes: [
|
|
{
|
|
gridLines: {
|
|
display: false,
|
|
},
|
|
scaleLabel: {
|
|
display: true,
|
|
labelString: "روز فعالیت",
|
|
},
|
|
stacked: false,
|
|
ticks: {
|
|
autoSkip: true,
|
|
beginAtZero: true,
|
|
},
|
|
},
|
|
],
|
|
yAxes: [
|
|
{
|
|
scaleLabel: {
|
|
display: true,
|
|
labelString: "ساعت فعالیت در سامانه",
|
|
},
|
|
id: "left",
|
|
stacked: false,
|
|
ticks: {
|
|
beginAtZero: true,
|
|
},
|
|
},
|
|
{
|
|
scaleLabel: {
|
|
display: true,
|
|
labelString: "تعداد فعالیت در سامانه",
|
|
},
|
|
id: "right",
|
|
position: "right",
|
|
stacked: false,
|
|
ticks: {
|
|
beginAtZero: true,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
title: {
|
|
display: false,
|
|
},
|
|
tooltips: {
|
|
intersect: false,
|
|
mode: "index",
|
|
position: "nearest",
|
|
callbacks: {},
|
|
},
|
|
plugins: {
|
|
datalabels: {
|
|
display: true,
|
|
backgroundColor: function (context) {
|
|
return context.dataset.backgroundColor;
|
|
},
|
|
display: true,
|
|
formatter: function (value, ctx) {
|
|
return value;
|
|
},
|
|
borderRadius: 4,
|
|
color: "white",
|
|
font: {
|
|
weight: "bold",
|
|
},
|
|
padding: 6,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
);
|
|
|
|
const roadItemsCount = [];
|
|
const roadItemsLable = [];
|
|
const roadItemsData = jsonServer.data.road_items_chart;
|
|
|
|
for (var i = 0; i < roadItemsData.length; i++) {
|
|
roadItemsCount.push(roadItemsData[i].count_number);
|
|
roadItemsLable.push(roadItemsData[i].sub_item_fa);
|
|
}
|
|
|
|
const roadItemsChartData = {
|
|
datasets: [
|
|
{
|
|
backgroundColor: "#003049",
|
|
borderColor: "#003049",
|
|
fill: false,
|
|
data: roadItemsCount,
|
|
id: "amount",
|
|
datalabels: {
|
|
align: "start",
|
|
anchor: "start",
|
|
},
|
|
},
|
|
],
|
|
labels: roadItemsLable,
|
|
};
|
|
|
|
$("#road_items_chart").attr(
|
|
"width",
|
|
$("#road_items_chart").closest(".chart-bar-data").width()
|
|
);
|
|
$("#road_items_chart").attr(
|
|
"height",
|
|
$("#road_items_chart").closest(".chart-bar-data").height()
|
|
);
|
|
|
|
const roadItemsChart = new Chart(
|
|
document.getElementById("road_items_chart").getContext("2d"),
|
|
{
|
|
type: "bar",
|
|
data: roadItemsChartData,
|
|
options: {
|
|
legend: {
|
|
display: false,
|
|
},
|
|
},
|
|
}
|
|
);
|
|
|
|
const fastReactCount = [];
|
|
const fastReactLable = [];
|
|
const fastReactData = jsonServer.data.fast_react_chart;
|
|
|
|
for (var i = 0; i < fastReactData.length; i++) {
|
|
fastReactCount.push(fastReactData[i].count_number);
|
|
switch (fastReactData[i].rms_status) {
|
|
case 0:
|
|
fastReactLable.push("بررسی نشده");
|
|
break;
|
|
case 1:
|
|
fastReactLable.push("انجام شده");
|
|
break;
|
|
case 2:
|
|
fastReactLable.push("انجام نشده");
|
|
break;
|
|
}
|
|
}
|
|
|
|
const fastReactChartData = {
|
|
datasets: [
|
|
{
|
|
backgroundColor: ["#fb5607", "#8338ec", "#3a86ff"],
|
|
data: fastReactCount,
|
|
datalabels: {
|
|
align: "start",
|
|
anchor: "start",
|
|
},
|
|
},
|
|
],
|
|
labels: fastReactLable,
|
|
};
|
|
|
|
$("#fast_react_chart").attr(
|
|
"width",
|
|
$("#fast_react_chart").closest(".chart-bar-data").width()
|
|
);
|
|
$("#fast_react_chart").attr(
|
|
"height",
|
|
$("#fast_react_chart").closest(".chart-bar-data").height()
|
|
);
|
|
|
|
const fastReactChart = new Chart(
|
|
document.getElementById("fast_react_chart").getContext("2d"),
|
|
{
|
|
type: "pie",
|
|
data: fastReactChartData,
|
|
options: {
|
|
legend: {
|
|
display: true,
|
|
},
|
|
},
|
|
}
|
|
);
|
|
|
|
map = L.map("map", {
|
|
maxBounds: bounds,
|
|
zoomControl: false,
|
|
scrollWheelZoom: false,
|
|
attributionControl: false,
|
|
dragging: false,
|
|
}).setView(showbounds, 6);
|
|
for (var i = 0; i < provinceLatlng.length; i++) {
|
|
var textLatLng = [
|
|
provinceLatlng[i].poster_lat,
|
|
provinceLatlng[i].poster_long,
|
|
];
|
|
var myTextLabel = L.marker(textLatLng, {
|
|
icon: L.divIcon({
|
|
className: "text-labels-map", // Set class for CSS styling
|
|
html: `${diagramLabel[i]}`,
|
|
}),
|
|
zIndexOffset: 1000, // Make appear above other map features
|
|
}).addTo(map);
|
|
}
|
|
keepMapFeatureColor = null;
|
|
iranArrayCount = 0;
|
|
iranMapGeo = L.geoJSON(iranGeoJSON, {
|
|
style: initStyleMapFeatures,
|
|
});
|
|
iranMapGeo.addTo(map);
|
|
|
|
})();
|
|
function initStyleMapFeatures() {
|
|
let randomchoose = null;
|
|
randomchoose = getForArrayFeatureColor(
|
|
fillColorMap(iranArrayCount, diagramData)
|
|
);
|
|
let StyleMap = {
|
|
fillColor: randomchoose.color,
|
|
weight: 2,
|
|
opacity: 1,
|
|
color: "white",
|
|
fillOpacity: 0.5,
|
|
};
|
|
if (randomchoose.num != -2) {
|
|
if (iranArrayCount == 35) {
|
|
iranArrayCount = 0;
|
|
}
|
|
iranArrayCount++;
|
|
}
|
|
return StyleMap;
|
|
}
|
|
function fillColorMap(featureRow, diagramData) {
|
|
for (let i = 0; i < diagramData.length; i++) {
|
|
if (i == featureRow) {
|
|
return diagramData[i];
|
|
}
|
|
}
|
|
}
|
|
function getForArrayFeatureColor(arrayNum) {
|
|
if (keepMapFeatureColor) {
|
|
return {
|
|
num: -1,
|
|
color: keepMapFeatureColor,
|
|
};
|
|
} else {
|
|
var colors = {};
|
|
var minOfData = Math.min(...diagramData);
|
|
var maxOfData = Math.max(...diagramData);
|
|
var quarter = Math.round((maxOfData - minOfData) / 3);
|
|
if (arrayNum == null) {
|
|
colors = {
|
|
num: arrayNum,
|
|
color: "#B2B1B9",
|
|
};
|
|
} else if (arrayNum <= minOfData + quarter)
|
|
colors = {
|
|
num: arrayNum,
|
|
color: "#FF0000",
|
|
};
|
|
else if (arrayNum < maxOfData - quarter)
|
|
colors = {
|
|
num: arrayNum,
|
|
color: "#FFCC00",
|
|
};
|
|
else
|
|
colors = {
|
|
num: arrayNum,
|
|
color: "#13BB51",
|
|
};
|
|
|
|
return colors;
|
|
}
|
|
}
|
|
|
|
$('#canvas').on('click', function(){
|
|
html2canvas(document.getElementById('container_page')).then(function(canvas) {
|
|
var link = document.createElement('a');
|
|
link.download = 'filename.png';
|
|
link.href = canvas.toDataURL()
|
|
link.click();
|
|
});
|
|
}) |