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