From e9d1324ef34f338833c1e7c9cb6a573c83026a86 Mon Sep 17 00:00:00 2001 From: Igor Nurullaev Date: Tue, 10 Sep 2019 20:42:37 +0300 Subject: [PATCH] Added launch file transfer I hope this works --- Server/app_routes/file_sender.py | 33 ++++++++++++++++++++++++++------ Server/static/js/file.js | 25 +++++++++++++++++++++--- Server/templates/main.html | 6 +++++- 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/Server/app_routes/file_sender.py b/Server/app_routes/file_sender.py index a64d98f..6919f0c 100644 --- a/Server/app_routes/file_sender.py +++ b/Server/app_routes/file_sender.py @@ -38,12 +38,10 @@ def set_aruco(): if request.method == 'POST': for key_name in request.files.keys(): request.files[key_name].save(os.path.join('files', key_name)) - for ip in loads(request.args.get('ips')): - for copter in copters: - if copter.ip == ip: - copter.client.send_file('files/' + key_name, - "/home/pi/catkin_ws/src/clever/aruco_pose/map/animation_map.txt") - copter.client.send_message("service_restart", {"name": "clever"}) + for copter in copters: + copter.client.send_file('files/' + key_name, + "/home/pi/catkin_ws/src/clever/aruco_pose/map/animation_map.txt") + copter.client.send_message("service_restart", {"name": "clever"}) os.remove('files/' + key_name) return jsonify({'m': 'ok'}) @@ -64,3 +62,26 @@ def set_animation(): for filename in files: os.remove(filename) return jsonify({'m': 'ok'}) + + +@file_sender_api.route('/set/launch', methods=['GET', 'POST']) +def set_launch(): + if request.method == 'POST': + ips = request.values.get('ips').split(',') + files = [] + names = [] + for key_name in request.files.keys(): + names.append(key_name) + request.files[key_name].save(os.path.join('files', key_name)) + files.append('files/' + key_name) + if len(files) > 0: + for copter in copters: + if copter.ip in ips: + for file, name in zip(files, names): + copter.client.send_file('files/' + name, + "/home/pi/catkin_ws/src/clever/launch/" + name) + copter.client.send_message("service_restart", {"name": "clever"}) + for filename in files: + os.remove(filename) + + return jsonify({'m': 'ok'}) diff --git a/Server/static/js/file.js b/Server/static/js/file.js index 0a15a8f..29a78c5 100644 --- a/Server/static/js/file.js +++ b/Server/static/js/file.js @@ -1,6 +1,7 @@ let animationInput = document.getElementById('animationFile'); let configInput = document.getElementById('configFile'); let arucoInput = document.getElementById('arucoFile'); +let launchInput = document.getElementById('launchFile'); animationInput.onchange = function (e) { spinner.style.display = 'inline-block'; @@ -13,7 +14,6 @@ animationInput.onchange = function (e) { } fileReq.open("POST", '/set/animation', false); fileReq.send(fileFormData); - deselectAll(); spinner.style.display = 'none'; } }, 20); @@ -35,7 +35,6 @@ configInput.onchange = function (e) { fileFormData.append('ips', ips); fileReq.open("POST", '/set/config', false); fileReq.send(fileFormData); - deselectAll(); spinner.style.display = 'none'; } }, 20); @@ -50,7 +49,27 @@ arucoInput.onchange = function (e) { fileFormData.append(arucoInput.files[0].name, arucoInput.files[0]); fileReq.open("POST", '/set/aruco', false); fileReq.send(fileFormData); - deselectAll(); + spinner.style.display = 'none'; + } + }, 20); +}; + +launchInput.onchange = function (e) { + spinner.style.display = 'inline-block'; + setTimeout(function () { + if (launchInput.files.length > 0) { + let fileReq = new XMLHttpRequest(); + let fileFormData = new FormData(); + for (let i = 0; i < launchInput.files.length; i++) { + fileFormData.append(launchInput.files[i].name, launchInput.files[i]); + } + let ips = []; + table.getSelectedRows().forEach(function (element) { + ips.push(element._row.data.ip); + }); + fileFormData.append('ips', ips); + fileReq.open("POST", '/set/launch', false); + fileReq.send(fileFormData); spinner.style.display = 'none'; } }, 20); diff --git a/Server/templates/main.html b/Server/templates/main.html index c919983..b354baf 100644 --- a/Server/templates/main.html +++ b/Server/templates/main.html @@ -28,7 +28,7 @@