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 += ""; 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; }