diff --git a/config/plugins/webhooks/demo/tour_generator/helper/__init__.py b/config/plugins/webhooks/demo/tour_generator/helper/__init__.py index 5d37a949db2..6eb0427281a 100644 --- a/config/plugins/webhooks/demo/tour_generator/helper/__init__.py +++ b/config/plugins/webhooks/demo/tour_generator/helper/__init__.py @@ -12,6 +12,7 @@ class TourGenerator(object): self._trans = trans self._tool = self._trans.app.toolbox.get_tool(tool_id) + self._use_datasets = True self._tour = {} self._hids = {} self._errors = [] @@ -36,7 +37,9 @@ class TourGenerator(object): ] if not input_datasets: - raise ValueError('Test data is missing.') + self._use_datasets = False + return + # raise ValueError('Test data is missing.') # Upload all test datasets for i, input in enumerate(input_datasets): @@ -115,9 +118,9 @@ class TourGenerator(object): text_param = self._test.inputs[name] step['content'] = 'Enter parameter(s): %s' % text_param - elif input.type == 'integer': - integer_param = self._test.inputs[name][0] - step['content'] = 'Enter parameter: %s' % integer_param + elif input.type == 'integer' or input.type == 'float': + num_param = self._test.inputs[name][0] + step['content'] = 'Enter parameter: %s' % num_param elif input.type == 'boolean': choice = 'Yes' if self._test.inputs[name][0] is True else 'No' @@ -133,9 +136,8 @@ class TourGenerator(object): params.append(option[0]) if params: select_param = ', '.join(params) - step[ - 'content'] = 'Select parameter(s): %s' % \ - select_param + step['content'] = 'Select parameter(s): %s' % \ + select_param elif input.type == 'data': hid = self._hids[name] @@ -149,8 +151,23 @@ class TourGenerator(object): # step['content'] = 'Select parameter %s' % input.title elif input.type == 'conditional': - # TODO@me: deal with this input type - pass + param_id = '%s|%s' % (input.name, input.test_param.name) + step['element'] = '[tour_id="%s"]' % param_id + cond_param = input.label + params = [] + for option in input.test_param.static_options: + if param_id in self._test.inputs.keys(): + for test_option in self._test.inputs[param_id]: + if test_option == option[1]: + params.append(option[0]) + if params: + cond_param = ', '.join(params) + step['content'] = 'Select parameter(s): %s' % \ + cond_param + + elif input.type == 'data_column': + column_param = self._test.inputs[name][0] + step['content'] = 'Select Column: %s' % column_param else: step['content'] = 'Select parameter %s' % input.label @@ -178,7 +195,11 @@ class TourGenerator(object): Return a dictionary with the uploaded datasets' history ids and the generated tour. """ - return {'hids': list(self._hids.values()), 'tour': self._tour} + return { + 'useDatasets': self._use_datasets, + 'hids': list(self._hids.values()), + 'tour': self._tour + } def main(trans, webhook, params): diff --git a/config/plugins/webhooks/demo/tour_generator/static/script.js b/config/plugins/webhooks/demo/tour_generator/static/script.js index 854a51675e3..ef28426fcda 100644 --- a/config/plugins/webhooks/demo/tour_generator/static/script.js +++ b/config/plugins/webhooks/demo/tour_generator/static/script.js @@ -14,32 +14,37 @@ $(document).ready(function() { tool_id: this.toolId }, function(obj) { if (obj.success) { - $('#history-refresh-button').click(); // Refresh history panel + if (obj.data.useDatasets) { + $('#history-refresh-button').click(); // Refresh history panel - // Add a delay because of the history panel refreshing - setTimeout(function() { - var datasets = [], - numUploadedDatasets = 0; + // TODO@me: sometimes doesn't work, find a better solution (e.g. catch a redraw event) + // Add a delay because of the history panel refreshing + setTimeout(function () { + var datasets = [], + numUploadedDatasets = 0; - _.each(obj.data.hids, function(hid) { - var dataset = Galaxy.currHistoryPanel.collection.where({ - hid: hid - })[0]; - if (dataset) datasets.push(dataset); - }); - - if (datasets.length === obj.data.hids.length) { - _.each(datasets, function(dataset) { - dataset.on('change:state', function(model) { - if (model.get('state') === 'ok') numUploadedDatasets++; - // Make sure that all test datasets have been successfully uploaded - if (numUploadedDatasets === datasets.length) me._main(obj.data); - }); + _.each(obj.data.hids, function (hid) { + var dataset = Galaxy.currHistoryPanel.collection.where({ + hid: hid + })[0]; + if (dataset) datasets.push(dataset); }); - } else { - Toastr.error('Some of the test datasets cannot be found in the history.'); - } - }, 500); + + if (datasets.length === obj.data.hids.length) { + _.each(datasets, function (dataset) { + dataset.on('change:state', function (model) { + if (model.get('state') === 'ok') numUploadedDatasets++; + // Make sure that all test datasets have been successfully uploaded + if (numUploadedDatasets === datasets.length) me._main(obj.data); + }); + }); + } else { + Toastr.error('Some of the test datasets cannot be found in the history.'); + } + }, 500); + } else { + me._main(obj.data); + } } else { Toastr.error(obj.error); console.error('Tour Generator: ' + obj.error);