Highlight filter inputs with missing modules

This commit is contained in:
guerler
2017-12-01 12:43:32 -05:00
parent f47fde8dc0
commit f3f40b5a6d
5 changed files with 16 additions and 11 deletions
@@ -23,6 +23,8 @@ var View = Backbone.View.extend({
message: options.message,
status: options.status || "warning",
icon: options.icon,
initial_errors: true,
errors: options.errors,
inputs: options.inputs,
buttons: {
submit: new Ui.Button({
+11 -8
View File
@@ -675,10 +675,11 @@ class UserAPIController(BaseAPIController, UsesTagsMixin, CreatesUsersMixin, Cre
if name in filter_types:
saved_values[name] = listify(value, do_strip=True)
inputs = []
errors = {}
factory = FilterFactory(trans.app.toolbox)
for filter_type in filter_types:
self._add_filter_inputs(factory, filter_types, inputs, filter_type, saved_values)
return {'inputs': inputs}
self._add_filter_inputs(factory, filter_types, inputs, errors, filter_type, saved_values)
return {'inputs': inputs, 'errors': errors}
@expose_api
def set_toolbox_filters(self, trans, id, payload={}, **kwd):
@@ -690,28 +691,30 @@ class UserAPIController(BaseAPIController, UsesTagsMixin, CreatesUsersMixin, Cre
for filter_type in filter_types:
new_filters = []
for prefixed_name in payload:
prefix = filter_type + '|'
if prefixed_name.startswith(filter_type):
new_filters.append(prefixed_name[len(prefix):])
if payload.get(prefixed_name) == 'true':
prefix = filter_type + '|'
if prefixed_name.startswith(filter_type):
new_filters.append(prefixed_name[len(prefix):])
user.preferences[filter_type] = ','.join(new_filters)
trans.sa_session.add(user)
trans.sa_session.flush()
return {'message': 'Toolbox filters have been saved.'}
def _add_filter_inputs(self, factory, filter_types, inputs, filter_type, saved_values):
def _add_filter_inputs(self, factory, filter_types, inputs, errors, filter_type, saved_values):
filter_inputs = list()
filter_values = saved_values.get(filter_type, [])
filter_config = filter_types[filter_type]['config']
filter_title = filter_types[filter_type]['title']
for filter_name in filter_config:
function = factory.build_filter_function(filter_name)
if function is None:
errors['%s|%s' % (filter_type, filter_name)] = 'Filter module not found.'
filter_inputs.append({
'type': 'boolean',
'name': filter_name,
'label': filter_name,
'help': docstring_trim(function.__doc__) or 'No description available.',
'value': 'true' if filter_name in filter_values else 'false',
'ignore': 'false'
'value': 'true' if filter_name in filter_values else 'false'
})
if filter_inputs:
inputs.append({'type': 'section', 'title': filter_title, 'name': filter_type, 'expanded': True, 'inputs': filter_inputs})
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
define("mvc/form/form-wrapper",["exports","mvc/form/form-view","mvc/ui/ui-misc"],function(e,t,s){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(e,"__esModule",{value:!0});var a=i(t),n=i(s),o=Backbone.View.extend({initialize:function(e){this.model=new Backbone.Model(e),this.url=this.model.get("url"),this.redirect=this.model.get("redirect"),this.setElement("<div/>"),this.render()},render:function(){var e=this;$.ajax({url:Galaxy.root+this.url,type:"GET"}).done(function(t){var s=$.extend({},e.model.attributes,t),i=new a.default({title:s.title,message:s.message,status:s.status||"warning",icon:s.icon,inputs:s.inputs,buttons:{submit:new n.default.Button({tooltip:s.submit_tooltip,title:s.submit_title||"Save",icon:s.submit_icon||"fa-save",cls:"btn btn-primary ui-clear-float",onclick:function(){e._submit(i)}})}});e.$el.empty().append(i.$el)}).fail(function(t){e.$el.empty().append(new n.default.Message({message:"Failed to load resource "+e.url+".",status:"danger",persistent:!0}).$el)})},_submit:function(e){var t=this;$.ajax({url:Galaxy.root+t.url,data:JSON.stringify(e.data.create()),type:"PUT",contentType:"application/json"}).done(function(s){var i={};s.id?i.id=s.id:i={message:s.message,status:"success",persistent:!1},t.redirect?window.location=Galaxy.root+t.redirect+"?"+$.param(i):(e.data.matchModel(s,function(t,s){e.field_list[s].value(t.value)}),t._showMessage(e,success_message))}).fail(function(s){t._showMessage(e,{message:s.responseJSON.err_msg,status:"danger",persistent:!1})})},_showMessage:function(e,t){e.$el.parents().filter(function(){return-1!=["auto","scroll"].indexOf($(this).css("overflow"))}).first().animate({scrollTop:0},500),e.message.update(t)}});e.default={View:o}});
define("mvc/form/form-wrapper",["exports","mvc/form/form-view","mvc/ui/ui-misc"],function(e,t,s){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(e,"__esModule",{value:!0});var a=i(t),n=i(s),r=Backbone.View.extend({initialize:function(e){this.model=new Backbone.Model(e),this.url=this.model.get("url"),this.redirect=this.model.get("redirect"),this.setElement("<div/>"),this.render()},render:function(){var e=this;$.ajax({url:Galaxy.root+this.url,type:"GET"}).done(function(t){var s=$.extend({},e.model.attributes,t),i=new a.default({title:s.title,message:s.message,status:s.status||"warning",icon:s.icon,initial_errors:!0,errors:s.errors,inputs:s.inputs,buttons:{submit:new n.default.Button({tooltip:s.submit_tooltip,title:s.submit_title||"Save",icon:s.submit_icon||"fa-save",cls:"btn btn-primary ui-clear-float",onclick:function(){e._submit(i)}})}});e.$el.empty().append(i.$el)}).fail(function(t){e.$el.empty().append(new n.default.Message({message:"Failed to load resource "+e.url+".",status:"danger",persistent:!0}).$el)})},_submit:function(e){var t=this;$.ajax({url:Galaxy.root+t.url,data:JSON.stringify(e.data.create()),type:"PUT",contentType:"application/json"}).done(function(s){var i={};s.id?i.id=s.id:i={message:s.message,status:"success",persistent:!1},t.redirect?window.location=Galaxy.root+t.redirect+"?"+$.param(i):(e.data.matchModel(s,function(t,s){e.field_list[s].value(t.value)}),t._showMessage(e,success_message))}).fail(function(s){t._showMessage(e,{message:s.responseJSON.err_msg,status:"danger",persistent:!1})})},_showMessage:function(e,t){e.$el.parents().filter(function(){return-1!=["auto","scroll"].indexOf($(this).css("overflow"))}).first().animate({scrollTop:0},500),e.message.update(t)}});e.default={View:r}});