This commit is contained in:
Rohith Karthikeyan
2019-06-27 20:32:01 -04:00
parent 39e0a6c356
commit eb05859c93
3 changed files with 124 additions and 45 deletions

View File

@@ -407,8 +407,8 @@
</div>
</div>
<div class="col-md-2">
<i class="fas fa-check-circle" onclick="loadSelectedBagFile()"></i>
<i class="fas fa-times-circle" onclick="hideLoadingOptions()"></i>
<i class="fas fa-check-circle" onclick="hideLoadingOptions(true)"></i>
<i class="fas fa-times-circle" onclick="hideLoadingOptions(false)"></i>
</div>
</div>
<div id="playTagError" class="col-md-10 error"></div>

View File

@@ -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)

View File

@@ -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
});
});
}