From eb05859c93fa9494366a983114f7cad3b19b21e0 Mon Sep 17 00:00:00 2001 From: Rohith Karthikeyan Date: Thu, 27 Jun 2019 20:32:01 -0400 Subject: [PATCH] fixesw --- .../components/coordinator/coordinator.html | 4 +- .../components/coordinator/js/ros_scripts.js | 34 ++--- .../components/coordinator/js/update_guis.js | 131 +++++++++++++++--- 3 files changed, 124 insertions(+), 45 deletions(-) diff --git a/client/app/components/coordinator/coordinator.html b/client/app/components/coordinator/coordinator.html index 9eaae07..0b56802 100644 --- a/client/app/components/coordinator/coordinator.html +++ b/client/app/components/coordinator/coordinator.html @@ -407,8 +407,8 @@
- - + +
diff --git a/client/app/components/coordinator/js/ros_scripts.js b/client/app/components/coordinator/js/ros_scripts.js index 5daeafa..ea738b8 100644 --- a/client/app/components/coordinator/js/ros_scripts.js +++ b/client/app/components/coordinator/js/ros_scripts.js @@ -307,7 +307,7 @@ var bagPlayingTopic = new ROSLIB.Topic({ }); bagPlayingTopic.subscribe(function(message) { - document.getElementById("lastbagText").innerHTML = message.data + //document.getElementById("lastbagText").innerHTML = message.data }); //////////////////////////////////////////////////////////////// @@ -315,8 +315,9 @@ bagPlayingTopic.subscribe(function(message) { //////////////////////////////////////////////////////////////// -function triggerService(serviceName, toSend) -{ +function triggerService(serviceName, toSend, callback) { + + callback = callback || $.noop; if(!toSend) { serviceType = 'std_srvs/demobot.Trigger' @@ -359,10 +360,6 @@ function triggerService(serviceName, toSend) var serviceCallTimeStamp = Date.now(); var serviceCallReturned = false; service.callService(request, function(result) { - console.log('Result for service call on ' - + serviceName - + ': ' - + result); //check for result.success == false if(result.success == true) { $(document).ready(function(){ @@ -377,6 +374,7 @@ function triggerService(serviceName, toSend) delay: 1000 }); }); + callback({success : true}); } else { $(document).ready(function(){ $.notify({ @@ -390,10 +388,10 @@ function triggerService(serviceName, toSend) delay: 1000 }); }); + callback({success : false}); } serviceCallReturned = true; }, function(error){ - console.log("errored"); $(document).ready(function(){ $.notify({ message: "Something went wrong :( " + serviceName @@ -407,6 +405,7 @@ function triggerService(serviceName, toSend) }); }); serviceCallReturned = true; + callback({success : false}) }); var responseCheckInterval = setInterval(function() { var timeElapsedSinceServiceCall = Date.now() - serviceCallTimeStamp; // milliseconds elapsed since start @@ -427,29 +426,12 @@ function triggerService(serviceName, toSend) }); }); clearInterval(responseCheckInterval); + callback({success : true}) return; } }, 1000); } -function loadSelectedBagFile() { - var selectedBagName = $('#loadBagList').val(); - var singleArmMode = $('#armMode').val(); - if (singleArmMode) { - singleArmMode = true - } else { - singleArmMode = false - } - - var toSend = { - bag_name : selectedBagName, - single_arm : singleArmMode - } - - triggerService('/aescape/bags/startPlayingRecording', toSend) -} - - document.addEventListener("keydown", invokeSafetyController); function invokeSafetyController(event) diff --git a/client/app/components/coordinator/js/update_guis.js b/client/app/components/coordinator/js/update_guis.js index 6d8909b..c7d6d7f 100644 --- a/client/app/components/coordinator/js/update_guis.js +++ b/client/app/components/coordinator/js/update_guis.js @@ -12,8 +12,6 @@ function getBagList(callback) var request = new ROSLIB.ServiceRequest({}); service.callService(request, function(result) { - console.log("getBagListResults"); - console.log(result); callback(JSON.parse(result.message)); }); } @@ -60,6 +58,8 @@ setTimeout(function(){ function displayTaggingOptions(mode) { + hideAllSlidingControllers(); + var modeTag = '#' + mode + 'Tags'; var fileNameSelector = '#' + mode + 'BagFileName'; var categorySelector = '#' + mode + 'BagCategory'; @@ -85,8 +85,8 @@ function displayTaggingOptions(mode) { fileNameSelectize.clearOptions() // /aescape/bags/getBagList getBagList(function(results){ - fileNameSelectize.addOption(results.map(function(bagName){ - return {name : bagName} + fileNameSelectize.addOption(results.map(function(element){ + return {name : element.filename} })); }) @@ -102,8 +102,8 @@ function displayTaggingOptions(mode) { var categoryNameSelectize = $categoryNameSelect[0].selectize; categoryNameSelectize.clearOptions() getBagCategoryList(function(results){ - categoryNameSelectize.addOption(results.map(function(bagName){ - return {name : bagName} + categoryNameSelectize.addOption(results.map(function(element){ + return {name : element} })); }) @@ -120,42 +120,57 @@ function displayTaggingOptions(mode) { var tagSelectize = $tagSelect[0].selectize; tagSelectize.clearOptions() getBagTagList(function(results){ - tagSelectize.addOption(results.map(function(bagName){ - return {name : bagName} + tagSelectize.addOption(results.map(function(element){ + return {name : element} })); }) } function hideTaggingOptions(mode, updateValues=false) { + if(!mode) { + return; + } + var modeTag = '#' + mode + 'Tags'; if(updateValues) { var fileNameSelector = '#' + mode + 'BagFileName'; var categorySelector = '#' + mode + 'BagCategory'; var tagSelector = '#' + mode + 'BagTags'; + var errorSelector = '#' + mode + 'TagError'; var filename = $(fileNameSelector).val(); var category = $(categorySelector).val(); var tags = $(tagSelector).val(); getBagList(function(results){ - bag_name = results[0].filename + if(!(results && results[0] && results[0].filename)) { + console.log(results); + displayMessage(false, "Could not retrieve the last recorded bag :("); + return; + } + bag_name = results[0].filename; + updateBagMetadata(mode, bag_name, filename, category, tags, function(updateError) { + if(updateError) { + displayMessage(flase, updateError); + } else { + displayMessage("Bag data saved successfully!"); + } + }); }) - - updateBagMetadata(mode, bag_name, filename, category, tags) } //TO DO: Wait for the response from the backend before setting the display to none document.querySelector(modeTag).style.overflow = "hidden"; document.querySelector(modeTag).classList.remove('open'); } -function updateBagMetadata(mode, bag_name, modified_bag_name, category, tags) { +function updateBagMetadata(mode, bag_name, modified_bag_name, category, tags, callback) { if(!mode) { - //return //error + return callback(); } if(!bag_name) { - //return // error + return callback(); } var toSend = { @@ -166,11 +181,20 @@ function updateBagMetadata(mode, bag_name, modified_bag_name, category, tags) { tags : tags } - triggerService('/aescape/bags/updateBagMeta', toSend) + triggerService('/aescape/bags/updateBagMeta', toSend, function(result) { + if(!result) { + return callback("Something went wrong in the backend while updating."); + } + else { + return callback(); + } + }) } function displayLoadingOptions() { + hideAllSlidingControllers(); + selector = "#loadBags"; document.querySelector(selector).classList.add('open'); @@ -219,6 +243,9 @@ function displayLoadingOptions() { }); getBagList(function(results){ + if(!results) { + displayMessage(false, "Could not fetch a list of recordings :(") + } var selectize = $select[0].selectize; selectize.clearOptions(); //results = [{filename : 'testfile', category: 'testcategory', tags : ['testtag1', 'testtag2', 'testtag3']}, {filename : 'testfile2', category: 'testcategory2', tags : ['testtag21', 'testtag22', 'testtag23']}] @@ -243,10 +270,80 @@ function displayLoadingOptions() { armSelectize.setValue(false); } -function hideLoadingOptions() { - var selector = '#loadBags'; +function hideLoadingOptions(loadBag) { + var singleArmMode = $('#armMode').val(); + if (singleArmMode == "1") { + singleArmMode = true + } else { + singleArmMode = false + } + console.log("singleArmMode"); + console.log(singleArmMode) + if(loadBag) { + var selectedBagName = $('#loadBagList').val(); + var singleArmMode = $('#armMode').val(); + if (singleArmMode) { + singleArmMode = true + } else { + singleArmMode = false + } + loadSelectedBagFile(selectedBagName, singleArmMode, function(updateError){ + if(updateError) { + displayMessage(false, "Something went wrong in the backend while fetching the bag files :(") + } else { + displayMessage(true, "Loaded the selected bag file!") + } + }) + } + var selector = '#loadBags'; document.querySelector(selector).style.overflow = "hidden"; document.querySelector(selector).classList.remove('open'); } +function loadSelectedBagFile(selectedBagName, singleArmMode, callback) { + var toSend = { + bag_name : selectedBagName, + single_arm : singleArmMode + } + + triggerService('/aescape/bags/startPlayingRecording', toSend, function(result) { + if(!result) { + return callback("Something went wrong in the backend while updating."); + } + else { + return callback(); + } + }) +} + + +function hideAllSlidingControllers () { + document.querySelectorAll('.slider-options').forEach(function(element){ + element.style.overflow = "hidden"; + element.classList.remove('open'); + }) +} + + + +function displayMessage (success, message) { + if(success) { + type = 'success'; + } else { + type = 'danger'; + } + + $(document).ready(function(){ + $.notify({ + message: message + }, { + "placement" : { + from: "bottom", + align: "right" + }, + type: type, + delay: 1000 + }); + }); +} \ No newline at end of file