From 628c89b1d1dd0b5c57a5810046df900752850d6e Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 9 Jan 2023 00:13:52 +0100 Subject: [PATCH] Moved external JS scripts to lib folder, moved map JS to a seperate file --- build.gradle | 2 +- .../{ => lib}/bootstrap-colorpicker.LICENSE | 0 .../web/js/{ => lib}/bootstrap-colorpicker.js | 0 .../js/{ => lib}/bootstrap-colorpicker.min.js | 0 .../web/js/{ => lib}/bootstrap-switch.LICENSE | 0 .../web/js/{ => lib}/bootstrap-switch.js | 0 .../web/js/{ => lib}/bootstrap-switch.min.js | 0 .../resource/web/js/{ => lib}/bootstrap.js | 0 .../web/js/{ => lib}/bootstrap.min.js | 0 .../resource/web/js/{ => lib}/c3.LICENSE | 0 .../resource/resource/web/js/{ => lib}/c3.js | 0 .../resource/web/js/{ => lib}/c3.min.js | 0 .../resource/web/js/{ => lib}/d3.LICENSE | 0 .../resource/resource/web/js/{ => lib}/d3.js | 0 .../web/js/{ => lib}/jquery-1.11.3.min.js | 0 .../resource/web/js/{ => lib}/jquery.filer.js | 0 .../web/js/{ => lib}/jquery.filer.min.js | 0 .../web/js/{ => lib}/moment.LICENSE.txt | 0 .../resource/web/js/{ => lib}/moment.js | 0 .../resource/web/js/{ => lib}/svg.LICENSE | 0 .../js/{ => lib}/svg.draggable.LICENSE.txt | 0 .../web/js/{ => lib}/svg.draggable.js | 0 .../web/js/{ => lib}/svg.draggable.min.js | 0 .../resource/resource/web/js/{ => lib}/svg.js | 0 .../resource/web/js/{ => lib}/svg.min.js | 0 .../resource/web/js/{ => lib}/svg.title.js | 0 hal-core/resource/resource/web/js/map.js | 188 ++++++++++++++++++ .../resource/resource/web/main_index.tmpl | 12 +- hal-core/resource/resource/web/map.tmpl | 156 +-------------- .../resource/resource/web/camera_detail.tmpl | 4 +- .../resource/resource/web/camera_monitor.tmpl | 6 +- .../resource/web/js/{ => lib}/video.min.js | 0 .../{ => lib}/videojs-http-streaming.min.js | 0 33 files changed, 205 insertions(+), 163 deletions(-) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap-colorpicker.LICENSE (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap-colorpicker.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap-colorpicker.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap-switch.LICENSE (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap-switch.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap-switch.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/bootstrap.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/c3.LICENSE (100%) rename hal-core/resource/resource/web/js/{ => lib}/c3.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/c3.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/d3.LICENSE (100%) rename hal-core/resource/resource/web/js/{ => lib}/d3.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/jquery-1.11.3.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/jquery.filer.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/jquery.filer.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/moment.LICENSE.txt (100%) rename hal-core/resource/resource/web/js/{ => lib}/moment.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.LICENSE (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.draggable.LICENSE.txt (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.draggable.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.draggable.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.min.js (100%) rename hal-core/resource/resource/web/js/{ => lib}/svg.title.js (100%) create mode 100644 hal-core/resource/resource/web/js/map.js rename plugins/hal-nvr/resource/resource/web/js/{ => lib}/video.min.js (100%) rename plugins/hal-nvr/resource/resource/web/js/{ => lib}/videojs-http-streaming.min.js (100%) diff --git a/build.gradle b/build.gradle index b0b32bde..59d0630c 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ allprojects { } } -subprojects { +subprojects { apply plugin: 'java-library' dependencies { diff --git a/hal-core/resource/resource/web/js/bootstrap-colorpicker.LICENSE b/hal-core/resource/resource/web/js/lib/bootstrap-colorpicker.LICENSE similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap-colorpicker.LICENSE rename to hal-core/resource/resource/web/js/lib/bootstrap-colorpicker.LICENSE diff --git a/hal-core/resource/resource/web/js/bootstrap-colorpicker.js b/hal-core/resource/resource/web/js/lib/bootstrap-colorpicker.js similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap-colorpicker.js rename to hal-core/resource/resource/web/js/lib/bootstrap-colorpicker.js diff --git a/hal-core/resource/resource/web/js/bootstrap-colorpicker.min.js b/hal-core/resource/resource/web/js/lib/bootstrap-colorpicker.min.js similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap-colorpicker.min.js rename to hal-core/resource/resource/web/js/lib/bootstrap-colorpicker.min.js diff --git a/hal-core/resource/resource/web/js/bootstrap-switch.LICENSE b/hal-core/resource/resource/web/js/lib/bootstrap-switch.LICENSE similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap-switch.LICENSE rename to hal-core/resource/resource/web/js/lib/bootstrap-switch.LICENSE diff --git a/hal-core/resource/resource/web/js/bootstrap-switch.js b/hal-core/resource/resource/web/js/lib/bootstrap-switch.js similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap-switch.js rename to hal-core/resource/resource/web/js/lib/bootstrap-switch.js diff --git a/hal-core/resource/resource/web/js/bootstrap-switch.min.js b/hal-core/resource/resource/web/js/lib/bootstrap-switch.min.js similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap-switch.min.js rename to hal-core/resource/resource/web/js/lib/bootstrap-switch.min.js diff --git a/hal-core/resource/resource/web/js/bootstrap.js b/hal-core/resource/resource/web/js/lib/bootstrap.js similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap.js rename to hal-core/resource/resource/web/js/lib/bootstrap.js diff --git a/hal-core/resource/resource/web/js/bootstrap.min.js b/hal-core/resource/resource/web/js/lib/bootstrap.min.js similarity index 100% rename from hal-core/resource/resource/web/js/bootstrap.min.js rename to hal-core/resource/resource/web/js/lib/bootstrap.min.js diff --git a/hal-core/resource/resource/web/js/c3.LICENSE b/hal-core/resource/resource/web/js/lib/c3.LICENSE similarity index 100% rename from hal-core/resource/resource/web/js/c3.LICENSE rename to hal-core/resource/resource/web/js/lib/c3.LICENSE diff --git a/hal-core/resource/resource/web/js/c3.js b/hal-core/resource/resource/web/js/lib/c3.js similarity index 100% rename from hal-core/resource/resource/web/js/c3.js rename to hal-core/resource/resource/web/js/lib/c3.js diff --git a/hal-core/resource/resource/web/js/c3.min.js b/hal-core/resource/resource/web/js/lib/c3.min.js similarity index 100% rename from hal-core/resource/resource/web/js/c3.min.js rename to hal-core/resource/resource/web/js/lib/c3.min.js diff --git a/hal-core/resource/resource/web/js/d3.LICENSE b/hal-core/resource/resource/web/js/lib/d3.LICENSE similarity index 100% rename from hal-core/resource/resource/web/js/d3.LICENSE rename to hal-core/resource/resource/web/js/lib/d3.LICENSE diff --git a/hal-core/resource/resource/web/js/d3.js b/hal-core/resource/resource/web/js/lib/d3.js similarity index 100% rename from hal-core/resource/resource/web/js/d3.js rename to hal-core/resource/resource/web/js/lib/d3.js diff --git a/hal-core/resource/resource/web/js/jquery-1.11.3.min.js b/hal-core/resource/resource/web/js/lib/jquery-1.11.3.min.js similarity index 100% rename from hal-core/resource/resource/web/js/jquery-1.11.3.min.js rename to hal-core/resource/resource/web/js/lib/jquery-1.11.3.min.js diff --git a/hal-core/resource/resource/web/js/jquery.filer.js b/hal-core/resource/resource/web/js/lib/jquery.filer.js similarity index 100% rename from hal-core/resource/resource/web/js/jquery.filer.js rename to hal-core/resource/resource/web/js/lib/jquery.filer.js diff --git a/hal-core/resource/resource/web/js/jquery.filer.min.js b/hal-core/resource/resource/web/js/lib/jquery.filer.min.js similarity index 100% rename from hal-core/resource/resource/web/js/jquery.filer.min.js rename to hal-core/resource/resource/web/js/lib/jquery.filer.min.js diff --git a/hal-core/resource/resource/web/js/moment.LICENSE.txt b/hal-core/resource/resource/web/js/lib/moment.LICENSE.txt similarity index 100% rename from hal-core/resource/resource/web/js/moment.LICENSE.txt rename to hal-core/resource/resource/web/js/lib/moment.LICENSE.txt diff --git a/hal-core/resource/resource/web/js/moment.js b/hal-core/resource/resource/web/js/lib/moment.js similarity index 100% rename from hal-core/resource/resource/web/js/moment.js rename to hal-core/resource/resource/web/js/lib/moment.js diff --git a/hal-core/resource/resource/web/js/svg.LICENSE b/hal-core/resource/resource/web/js/lib/svg.LICENSE similarity index 100% rename from hal-core/resource/resource/web/js/svg.LICENSE rename to hal-core/resource/resource/web/js/lib/svg.LICENSE diff --git a/hal-core/resource/resource/web/js/svg.draggable.LICENSE.txt b/hal-core/resource/resource/web/js/lib/svg.draggable.LICENSE.txt similarity index 100% rename from hal-core/resource/resource/web/js/svg.draggable.LICENSE.txt rename to hal-core/resource/resource/web/js/lib/svg.draggable.LICENSE.txt diff --git a/hal-core/resource/resource/web/js/svg.draggable.js b/hal-core/resource/resource/web/js/lib/svg.draggable.js similarity index 100% rename from hal-core/resource/resource/web/js/svg.draggable.js rename to hal-core/resource/resource/web/js/lib/svg.draggable.js diff --git a/hal-core/resource/resource/web/js/svg.draggable.min.js b/hal-core/resource/resource/web/js/lib/svg.draggable.min.js similarity index 100% rename from hal-core/resource/resource/web/js/svg.draggable.min.js rename to hal-core/resource/resource/web/js/lib/svg.draggable.min.js diff --git a/hal-core/resource/resource/web/js/svg.js b/hal-core/resource/resource/web/js/lib/svg.js similarity index 100% rename from hal-core/resource/resource/web/js/svg.js rename to hal-core/resource/resource/web/js/lib/svg.js diff --git a/hal-core/resource/resource/web/js/svg.min.js b/hal-core/resource/resource/web/js/lib/svg.min.js similarity index 100% rename from hal-core/resource/resource/web/js/svg.min.js rename to hal-core/resource/resource/web/js/lib/svg.min.js diff --git a/hal-core/resource/resource/web/js/svg.title.js b/hal-core/resource/resource/web/js/lib/svg.title.js similarity index 100% rename from hal-core/resource/resource/web/js/svg.title.js rename to hal-core/resource/resource/web/js/lib/svg.title.js diff --git a/hal-core/resource/resource/web/js/map.js b/hal-core/resource/resource/web/js/map.js new file mode 100644 index 00000000..c970ad76 --- /dev/null +++ b/hal-core/resource/resource/web/js/map.js @@ -0,0 +1,188 @@ +var svg; +var editModeEnabled = false; + +$(function(){ + if (!SVG.supported) { + alert("Image format(SVG) not supported by your browser."); + return; + } + + // ------------------------------------------ + // Setup map + // ------------------------------------------ + + svg = SVG("map"); + + // Initialize events + + $("#button-edit").click(function() { + editMode(true); + }); + $("#button-save").click(function() { + saveMap(); + editMode(false); + drawMap(); + }); + $("#button-cancel").click(function() { + editMode(false); + drawMap(); + }); + + // Initialize background image uploader + + $("#button-bg-edit").click(function() { + // Reset modal + $('#bg-file-input').parent().show(); + if ($("#file_input").prop("jFiler") != null) + $("#file_input").prop("jFiler").reset(); + $('#bg-file-progress').parent().hide(); + $('#bgUploadModal').modal('show'); + }); + $('#bg-file-input').filer({ + limit: 1, + extensions: ['jpg','png','svg','gif'], + maxSize: 3, // in MB + uploadFile: { + url: "", + type: 'POST', + enctype: 'multipart/form-data', + beforeSend: function(){ + $('#bg-file-input').parent().hide(); + $('#bg-file-progress').parent().show(); + }, + success: function(data, el){ + $('#bgUploadModal').modal('hide'); + drawMap(); + }, + error: function(el){ + $("#bg-file-progress").addClass("progress-bar-danger"); + }, + onProgress: function(t){ + $("#bg-file-progress").css("width", t+"%"); + }, + } + }); + + // ------------------------------------------ + // Start draw loop + // ------------------------------------------ + + setInterval(function() { + if (editModeEnabled == false) + drawMap(); + }, 3000); // 3 sec + +}); + + +function editMode(enable){ + if (editModeEnabled == enable) + return; + editModeEnabled = enable; + if (editModeEnabled){ + $(".edit-mode").show(); + $(".view-mode").hide(); + $("#map").css("border-color", "#6eb16e"); + svg.select(".draggable").draggable(true); + } + else { + $(".edit-mode").hide(); + $(".view-mode").show(); + $("#map").css("border-color", ""); + svg.select(".draggable").draggable(false); + } +} + +function drawMap(){ + // Get map data + $.getJSON("/api/map?action=getdata", function(json){ + // Reset map + svg.clear(); + + // -------------------------------------- + // Draw + // -------------------------------------- + + // Background + + svg.image("?bgimage", "100%", "100%").x(0).y(0).addClass("bg-image"); + + // Rooms + + if (json.rooms != null) { + $.each(json.rooms, function(i, room) { + var group = svg.group(); + + group.rect(room.width, room.height); + group.text(room.name).move(10, 10).fill('#999'); + + group.addClass("draggable").addClass("room") + .x(room.x) + .y(room.y) + .attr("room-id", room.id); + }); + } + + // Sensors + + if (json.sensors != null) { + $.each(json.sensors, function(i, sensor) { + var group = svg.group(); + + group.image("/img/temperature.svg"); + group.text(sensor.data).move(45, 15).fill('#999'); + + group.addClass("draggable").addClass("sensor") + .x(sensor.x) + .y(sensor.y) + .attr("sensor-id", sensor.id); + group.title(sensor.name); + }); + } + + // Events + + if (json.event != null) { + $.each(json.events, function(i, event) { + var group = svg.group(); + + var img = "/img/lightbulb_off.svg"; + if (event.data == "ON") + img = "/img/lightbulb_on.svg"; + group.image(img); + + group.addClass("draggable").addClass("event") + .x(event.x) + .y(event.y) + .attr("event-id", event.id); + group.title(event.name); + }); + } + }); +} + +function saveMap(){ + svg.select(".room").each(function(){ + saveDevice(this, "room", "room-id"); + }); + svg.select(".sensor").each(function(){ + saveDevice(this, "sensor", "sensor-id"); + }); + svg.select(".event").each(function(){ + saveDevice(this, "event", "event-id"); + }); +} +function saveDevice(element, type, id){ + $.ajax({ + async: false, + dataType: "json", + url: "/api/map?", + data: { + action: "save", + id: element.attr(id), + type: type, + x: element.x(), + y: element.y() + }, + }); +} \ No newline at end of file diff --git a/hal-core/resource/resource/web/main_index.tmpl b/hal-core/resource/resource/web/main_index.tmpl index 7a52dc13..a2737b52 100644 --- a/hal-core/resource/resource/web/main_index.tmpl +++ b/hal-core/resource/resource/web/main_index.tmpl @@ -14,15 +14,15 @@ - - - - + + + + - - + + diff --git a/hal-core/resource/resource/web/map.tmpl b/hal-core/resource/resource/web/map.tmpl index d60ff8bd..401501a2 100644 --- a/hal-core/resource/resource/web/map.tmpl +++ b/hal-core/resource/resource/web/map.tmpl @@ -42,158 +42,12 @@ - - - - + + + + - + diff --git a/plugins/hal-nvr/resource/resource/web/camera_detail.tmpl b/plugins/hal-nvr/resource/resource/web/camera_detail.tmpl index 40405117..fa92c54e 100644 --- a/plugins/hal-nvr/resource/resource/web/camera_detail.tmpl +++ b/plugins/hal-nvr/resource/resource/web/camera_detail.tmpl @@ -52,5 +52,5 @@ - - \ No newline at end of file + + \ No newline at end of file diff --git a/plugins/hal-nvr/resource/resource/web/camera_monitor.tmpl b/plugins/hal-nvr/resource/resource/web/camera_monitor.tmpl index a1a6e2e4..6fd717d3 100644 --- a/plugins/hal-nvr/resource/resource/web/camera_monitor.tmpl +++ b/plugins/hal-nvr/resource/resource/web/camera_monitor.tmpl @@ -39,6 +39,6 @@ - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/plugins/hal-nvr/resource/resource/web/js/video.min.js b/plugins/hal-nvr/resource/resource/web/js/lib/video.min.js similarity index 100% rename from plugins/hal-nvr/resource/resource/web/js/video.min.js rename to plugins/hal-nvr/resource/resource/web/js/lib/video.min.js diff --git a/plugins/hal-nvr/resource/resource/web/js/videojs-http-streaming.min.js b/plugins/hal-nvr/resource/resource/web/js/lib/videojs-http-streaming.min.js similarity index 100% rename from plugins/hal-nvr/resource/resource/web/js/videojs-http-streaming.min.js rename to plugins/hal-nvr/resource/resource/web/js/lib/videojs-http-streaming.min.js