var map,
markersManager = [],
marker = [],
card = [],
hint = [];
function init(sensors) {
sensors = JSON.parse(atob(sensors));
generateMap("map", 8);
for (let id in sensors) {
var row = sensors[id];
var options = {
coordinations: [row.position_lat, row.position_lng],
tooltip: true,
tooltipContent: setTooltip(row),
icon: setIcon(getDefaultIconOptions()),
};
var iconNumber;
options.icon.options.tooltipAnchor = [-50, 130];
if (row.state == "ok") {
options.icon.options.iconUrl = iconUrl[0];
iconNumber = 0;
} else {
options.icon.options.iconUrl = iconUrl[5];
iconNumber = 5;
}
var args = {
sensor: id,
desc: row.desc,
hasFtpCameras: row.hasFtpCameras,
directions: row.directions,
number: iconNumber,
};
addCoordinations(row.position_lat, row.position_lng);
setMarker(id, options);
setMarkerClickEvent(id, options.icon.options, clickEvent, args);
}
setCoords();
setTimeUpdater();
}
function clickEvent(args) {
showDetail(
args.sensor,
args.desc,
args.hasFtpCameras,
args.directions,
args.number
);
}
function showDetail(sensor, desc, hasFtpCameras, directions, iconNumber) {
if (hasFtpCameras) {
hasFtpCameras = 1;
} else {
hasFtpCameras = 0;
}
var url =
"/BikeCounter/detail/modal/sensor/" +
sensor +
"/desc/" +
desc +
"/hasFtpCameras/" +
hasFtpCameras;
openModalWindow("modalDetail", 1, url, callback, [
hasFtpCameras,
directions,
iconNumber,
]);
}
function callback(hasFtpCameras, directions, iconNumber) {
setElementType("dateFrom", "datetime-local");
setElementType("dateTo", "datetime-local");
coordinations = [];
generateMap("detail-map", 8);
setMarkerOptions(directions, iconNumber);
setCoords();
if (hasFtpCameras) {
ftpCameraActualImageFunctionInit();
}
}
function setMarkerOptions(directions, iconNumber) {
if (typeof directions !== "object") {
directions = JSON.parse(atob(directions));
}
for (let i = 0; i < directions.length; i++) {
addCoordinations(
directions[i].coordinates[0],
directions[i].coordinates[1]
);
var options = {
coordinations: [
directions[i].coordinates[0],
directions[i].coordinates[1],
],
tooltip: true,
tooltipContent:
"" +
directions[i].sensor +
"
Směr " +
directions[i].desc +
"",
icon: setIcon(getDefaultIconOptions()),
};
options.icon.options.iconUrl = iconUrl[iconNumber];
setMarker(directions[i].sensor, options);
}
}
function showStatistics(bikecounter) {
showElement("resultDay");
showElement("resultHour");
$("sensor").value = bikecounter;
ajaxUpdater(
$("searchForm"),
"resultDay",
BASE_URL + "/BikeCounter/detail/get-statistics/",
true
);
cleanDiv("resultHour");
}
function showDetailDetectionBikeCounter(params) {
$("resultHour").update("");
ajaxUpdater(
new Object(),
"resultHour",
BASE_URL + "/StatsReports/bikecounter/stats-detection-content" + params
);
}
function showCamera(bc, detection_images, key) {
var url =
"/BikeCounter/index/modal/bc/" +
bc +
"/detection_images/" +
detection_images +
"/key/" +
key;
openModalWindow("modalFtpCamera", 1, url);
}
function setTimeUpdater() {
new Camea.Updater(REFRESH_PERIOD, function (updater) {
update(updater);
})
.setTimerLabel("counter")
.startOnce();
}
function update(updater) {
new Ajax.Request(BASE_URL + "/BikeCounter/map/get-actual-data/", {
method: "get",
onSuccess: function (r) {
var values = Object.values(r.responseJSON)[0];
var options = {
coordinations: [values.position_lat, values.position_lng],
icon: setIcon(getDefaultIconOptions()),
};
options.icon.options.tooltipAnchor = [-50, 130];
if (values.state == "ok") {
options.icon.options.iconUrl = iconUrl[0];
} else {
options.icon.options.iconUrl = iconUrl[5];
}
changeMarkerColor(values.sensor, options);
},
onCreate: function () {
updater.process("aktualizuji");
},
onComplete: function () {
updater.startOnce();
},
});
}
function setTooltip(row) {
var content = "" + row["desc"] + "";
content += "";
if (row["hasFtpCameras"]) {
content +=
" ";
}
content += "
Detekovaných cyklistů:";
content += "";
row["directions"].forEach(function (x) {
content += "- směr " + x["desc"] + ": ";
content += "" + x["count"] + "";
});
content += "
";
content +=
"
Všechny směry: " + row["settings"]["totalCount"] + "";
content +=
"
Směrová nerovnoměrnost: " +
row["settings"]["uniformity"] +
"";
content +=
"
Aktuální teplota: " +
row["settings"]["temperature_act"] +
" °C";
content +=
"
Průměrná dnešní teplota: " +
row["settings"]["temperature_avg"] +
" °C";
content += "";
return content;
}