Merge pull request #4779 from guerler/revise_dataset_attributes

Allow dataset attribute changes without refreshing the page
This commit is contained in:
John Chilton
2017-10-12 10:37:14 -04:00
committed by GitHub
27 changed files with 385 additions and 536 deletions
@@ -1,251 +1,185 @@
/** Dataset edit attributes view */
define( [ 'utils/utils', 'mvc/ui/ui-tabs', 'mvc/ui/ui-misc', 'mvc/form/form-view' ], function( Utils, Tabs, Ui, Form ) {
/** Dataset edit attributes view */
var View = Backbone.View.extend({
initialize: function() {
this.setElement( '<div/>' );
this.model = new Backbone.Model( { 'dataset_id': Galaxy.params.dataset_id } );
this.message = new Ui.Message( { 'persistent': true } );
this.tabs = this._createTabs();
this.$el.append( $( '<h4/>' ).append( 'Edit dataset attributes' ) )
.append( this.message.$el )
.append( '<p/>' )
.append( this.tabs.$el )
.hide();
this.render();
},
// Fetch data for the selected dataset and
// build tabs for editing its attributes
/** fetch data for the selected dataset and build forms */
render: function() {
var url = Galaxy.root + 'dataset/edit',
self = this;
Utils.get({
url : url,
data : { 'dataset_id' : self.model.get( 'dataset_id' ) },
success : function( response ) {
self.render_attribute_page( self, response );
},
error : function( response ) {
var error_response = {
'status': 'error',
'message': 'Error occured while loading the dataset.',
'persistent': true,
'cls': 'errormessage'
};
self.display_message( error_response, self.$( '.response-message' ) );
}
});
},
/** Render all the tabs view */
render_attribute_page: function( self, response ) {
var message = {
'message' : response.message,
'status' : response.status,
'persistent' : true,
'cls' : response.status + 'message'
};
self.$el.empty().append( self._templateHeader() );
self.display_message( message, self.$( '.response-message' ) );
// Create all tabs
self.create_tabs( response, self.$( '.edit-attr' ) );
},
/** Perform AJAX post call */
call_ajax: function( self, data, tab_name ) {
var post_url = Galaxy.root + 'dataset/edit';
$.ajax({
type: "PUT",
url: post_url,
data: data,
success: function( response ) {
self.render_attribute_page( self, response );
self.reload_history();
},
error : function( response ) {
var error_response = {
'status': 'error',
'message': 'Error occured while saving. Please fill all the required fields and try again.',
'persistent': true,
'cls': 'errormessage'
};
self.display_message( error_response, self.$( '.response-message' ) );
}
});
},
/** Display actions messages */
display_message: function( response, $el ) {
$el.empty().html( new Ui.Message( response ).$el );
},
/** Create tabs for different attributes of dataset*/
create_tabs: function( response, $el_edit_attr ) {
var self = this;
self.tabs = new Tabs.View();
self.tabs.add({
id : 'attributes',
$.ajax({
url : Galaxy.root + 'dataset/get_edit?dataset_id=' + self.model.get( 'dataset_id' ),
success : function( response ) {
!self.initial_message && self.message.update( response );
self.initial_message = true;
_.each( self.forms, function( form, key ) {
form.model.set( 'inputs', response[ key + '_inputs' ] );
form.model.set( 'hide_operations', response[ key + '_disable' ] );
form.render();
});
self.$el.show();
},
error : function( response ) {
var err_msg = response.responseJSON && response.responseJSON.err_msg;
self.message.update({
'status' : 'danger',
'message' : err_msg || 'Error occured while loading the dataset.'
});
}
});
},
/** submit data to backend to update attributes */
_submit: function( operation, form ) {
var self = this;
var data = form.data.create();
data.dataset_id = this.model.get( 'dataset_id' );
data.operation = operation;
$.ajax({
type : 'PUT',
url : Galaxy.root + 'dataset/set_edit',
data : data,
success : function( response ) {
self.message.update( response );
self.render();
self._reloadHistory();
},
error : function( response ) {
var err_msg = response.responseJSON && response.responseJSON.err_msg;
self.message.update({
'status' : 'danger',
'message' : err_msg || 'Error occured while editing the dataset attributes.'
});
}
});
},
/** create tabs for different dataset attribute categories*/
_createTabs: function() {
this.forms = {
attribute : this._getAttribute(),
conversion : this._getConversion(),
datatype : this._getDatatype(),
permission : this._getPermission()
}
var tabs = new Tabs.View();
tabs.add({
id : 'attribute',
title : 'Attributes',
icon : 'fa fa-bars',
tooltip : 'Edit dataset attributes',
$el : self._getAttributesFormTemplate( response )
$el : this.forms.attribute.$el
});
self.tabs.add({
tabs.add({
id : 'convert',
title : 'Convert',
icon : 'fa-gear',
tooltip : 'Convert to new format',
$el : self._getConvertFormTemplate( response )
$el : this.forms.conversion.$el
});
self.tabs.add({
tabs.add({
id : 'datatype',
title : 'Datatypes',
icon : 'fa-database',
tooltip : 'Change data type',
$el : self._getChangeDataTypeFormTemplate( response )
$el : this.forms.datatype.$el
});
self.tabs.add({
tabs.add({
id : 'permissions',
title : 'Permissions',
icon : 'fa-user',
tooltip : 'Permissions',
$el : self._getPermissionsFormTemplate( response )
$el : this.forms.permission.$el
});
$el_edit_attr.append( self.tabs.$el );
self.tabs.showTab( 'attributes' );
return tabs;
},
/** Main template */
_templateHeader: function() {
return '<div class="page-container edit-attr">' +
'<div class="response-message"></div>' +
'<h3>Edit Dataset Attributes</h3>' +
'</div>';
},
/** Attributes tab template */
_getAttributesFormTemplate: function( response ) {
/** edit main attributes form */
_getAttribute: function() {
var self = this;
var form = new Form({
title : 'Edit attributes',
inputs : response.edit_attributes_inputs,
operations: {
'submit_editattr' : new Ui.ButtonIcon({
tooltip : 'Save attributes of the dataset.',
icon : 'fa-floppy-o ',
title : 'Save attributes',
onclick : function() { self._submit( self, form, response, "edit_attributes" ) }
title : 'Edit attributes',
operations : {
'submit_attributes' : new Ui.ButtonIcon({
tooltip : 'Save attributes of the dataset.',
icon : 'fa-floppy-o',
title : 'Save',
onclick : function() { self._submit( 'attributes', form ) }
}),
'submit_autocorrect' : new Ui.ButtonIcon({
tooltip : 'This will inspect the dataset and attempt to correct the values of fields if they are not accurate.',
icon : 'fa-undo ',
title : 'Auto-detect',
onclick : function() { self._submit( self, form, response, "auto-detect" ) }
'submit_autodetect' : new Ui.ButtonIcon({
tooltip : 'This will inspect the dataset and attempt to correct the values of fields if they are not accurate.',
icon : 'fa-undo',
title : 'Auto-detect',
onclick : function() { self._submit( 'autodetect', form ) }
})
}
});
return form.$el;
return form;
},
/** Convert tab template */
_getConvertFormTemplate: function( response ) {
/** datatype conversion form */
_getConversion: function() {
var self = this;
var form = new Form({
title : 'Convert to new format',
inputs : response.convert_inputs,
operations: {
'submit' : new Ui.ButtonIcon({
title : 'Convert to new format',
operations : {
'submit_conversion' : new Ui.ButtonIcon({
tooltip : 'Convert the datatype to a new format.',
title : 'Convert datatype',
icon : 'fa-exchange ',
onclick : function() { self._submit( self, form, response, "convert" ) }
icon : 'fa-exchange',
onclick : function() { self._submit( 'conversion', form ) }
})
}
});
return form.$el;
return form;
},
/** Change datatype template */
_getChangeDataTypeFormTemplate: function( response ) {
/** change datatype form */
_getDatatype: function() {
var self = this;
var form = new Form({
title : 'Change datatype',
inputs : response.convert_datatype_inputs,
operations: {
'submit' : new Ui.ButtonIcon({
title : 'Change datatype',
operations : {
'submit_datatype' : new Ui.ButtonIcon({
tooltip : 'Change the datatype to a new type.',
title : 'Change datatype',
icon : 'fa-exchange ',
onclick : function() { self._submit( self, form, response, "change" ) }
icon : 'fa-exchange',
onclick : function() { self._submit( 'datatype', form ) }
})
}
});
return form.$el;
return form;
},
/** Permissions template */
_getPermissionsFormTemplate: function( response ) {
var template = "",
self = this;
if( response.can_manage_dataset ) {
var form = new Form({
title : 'Manage dataset permissions on ' + response.display_name,
inputs : response.permission_inputs,
operations: {
'submit': new Ui.ButtonIcon({
tooltip : 'Save permissions.',
title : 'Save permissions',
icon : 'fa-floppy-o ',
onclick : function() { self._submit( self, form, response, "permissions" ) }
})
}
});
return form.$el;
}
else {
var form = new Form({
title : 'View permissions',
inputs : response.permission_inputs
});
return form.$el;
}
/** dataset permissions form */
_getPermission: function() {
var self = this;
var form = new Form({
title : 'Manage dataset permissions',
operations : {
'submit_permission': new Ui.ButtonIcon({
tooltip : 'Save permissions.',
title : 'Save permissions',
icon : 'fa-floppy-o ',
onclick : function() { self._submit( 'permission', form ) }
})
}
});
return form;
},
/** Submit action */
_submit: function( self, form, response, type ) {
var form_data = form.data.create();
form_data.dataset_id = response.dataset_id;
switch( type ) {
case "edit_attributes":
form_data.save = 'Save';
break;
case "auto-detect":
form_data.detect = 'Auto-detect';
break;
case "convert":
if ( form_data.target_type !== null && form_data.target_type ) {
form_data.dataset_id = response.dataset_id;
form_data.convert_data = 'Convert';
}
break;
case "change":
form_data.change = 'Save';
break;
case "permissions":
var post_data = {};
post_data.permissions = JSON.stringify( form_data );
post_data.update_roles_button = "Save";
post_data.dataset_id = response.dataset_id;
form_data = post_data;
break;
}
self.call_ajax( self, form_data );
},
/** Reload Galaxy's history after updating dataset's attributes */
reload_history: function() {
/** reload Galaxy's history after updating dataset's attributes */
_reloadHistory: function() {
if ( window.Galaxy ) {
window.Galaxy.currHistoryPanel.loadCurrentHistory();
}
@@ -307,7 +307,7 @@ var DatasetListItemEdit = _super.extend(
&& !this.model.isDeletedOrPurged() ){
var editableDbkey = $( '<a class="value">?</a>' )
.attr( 'href', this.model.urls.edit )
.attr( 'target', this.linkTarget );
.attr( 'target', 'top' );
$details.find( '.dbkey .value' ).replaceWith( editableDbkey );
}
},
@@ -359,7 +359,7 @@ DatasetListItemEdit.prototype.templates = (function(){
'<% if( dataset.state === "failed_metadata" ){ %>',
'<div class="failed_metadata-warning warningmessagesmall">',
_l( 'An error occurred setting the metadata for this dataset' ),
'<br /><a href="<%- dataset.urls.edit %>" target="<%- view.linkTarget %>">',
'<br /><a href="<%- dataset.urls.edit %>" target="top">',
_l( 'Set it manually or retry auto-detection' ),
'</a>',
'</div>',
@@ -63,7 +63,7 @@ var DatasetAssociation = Backbone.Model
var urls = {
'purge' : 'datasets/' + id + '/purge_async',
'display' : 'datasets/' + id + '/display/?preview=True',
'edit' : 'datasets/' + id + '/edit',
'edit' : 'datasets/edit?dataset_id=' + id,
'download' : 'datasets/' + id + '/display' + this._downloadQueryParameters(),
'report_error' : 'dataset/errors?id=' + id,
'rerun' : 'tool_runner/rerun?id=' + id,
@@ -102,6 +102,7 @@ define(['utils/utils',
id : 'field-' + input_def.id,
data : data,
error_text : input_def.error_text || 'No options available',
readonly : input_def.readonly,
multiple : input_def.multiple,
optional : input_def.optional,
onchange : input_def.onchange,
+2 -1
View File
@@ -11,6 +11,7 @@ function( Utils, Portlet, Ui, FormSection, FormData ) {
icon : null,
always_refresh : true,
status : 'warning',
hide_operations : false,
onchange : function(){}
}).set( options );
this.setElement( '<div/>' );
@@ -132,7 +133,7 @@ function( Utils, Portlet, Ui, FormSection, FormData ) {
icon : options.icon,
title : options.title,
cls : options.cls,
operations : options.operations,
operations : !options.hide_operations && options.operations,
buttons : options.buttons,
collapsible : options.collapsible,
collapsed : options.collapsed,
@@ -18,6 +18,7 @@ var View = Backbone.View.extend({
searchable : true,
optional : false,
disabled : false,
readonly : false,
onchange : function(){},
value : null,
individual : false,
@@ -94,7 +95,7 @@ var View = Backbone.View.extend({
});
}
this.all_button = null;
if ( this.model.get( 'multiple' ) && !this.model.get( 'individual' ) ) {
if ( this.model.get( 'multiple' ) && !this.model.get( 'individual' ) && !this.model.get( 'readonly' ) ) {
this.all_button = new Buttons.ButtonCheck({
onclick: function() {
var new_value = [];
@@ -177,7 +178,7 @@ var View = Backbone.View.extend({
self.$select.append( $( '<option/>' ).attr( 'value', option.value ).html( _.escape( option.label ) ) );
});
}
this.model.set( 'disabled', this.length() == 0 );
this.model.set( 'disabled', this.model.get( 'readonly' ) || this.length() == 0 );
this._changeValue();
},
+3
View File
@@ -551,6 +551,9 @@
.portlet-buttons {
margin-top: @ui-margin-vertical;
margin-bottom: @ui-margin-vertical;
> .btn {
margin-right: 5px;
}
}
}
.portlet-content.nopadding, .portlet-body.nopadding {
+1 -1
View File
@@ -885,7 +885,7 @@ class GalaxyRBACAgent(RBACAgent):
has_dataset_manage_permissions = True
break
if not has_dataset_manage_permissions:
return "At least 1 role must be associated with the <b>manage permissions</b> permission on this dataset."
return "At least 1 role must be associated with manage permissions on this dataset."
flush_needed = False
# Delete all of the current permissions on the dataset
if not new:
+213 -304
View File
@@ -1,7 +1,6 @@
import logging
import os
import urllib
import json
from markupsafe import escape
import paste.httpexceptions
@@ -13,11 +12,11 @@ from galaxy import managers
from galaxy.datatypes.display_applications.util import decode_dataset_user, encode_dataset_user
from galaxy.exceptions import RequestParameterInvalidException
from galaxy.model.item_attrs import UsesAnnotations, UsesItemRatings
from galaxy.util import inflector, smart_str
from galaxy.util import inflector, smart_str, sanitize_text
from galaxy.util.sanitize_html import sanitize_html
from galaxy.web import form_builder
from galaxy.web.base.controller import BaseUIController, ERROR, SUCCESS, url_for, UsesExtendedMetadataMixin
from galaxy.web.framework.helpers import grids, iff, time_ago, to_unicode
from galaxy.web.framework.helpers import grids, iff, time_ago
log = logging.getLogger(__name__)
@@ -239,55 +238,23 @@ class DatasetInterface(BaseUIController, UsesAnnotations, UsesItemRatings, UsesE
ck_size = int(ck_size)
return data.datatype.display_data(trans, data, preview, filename, to_ext, offset=offset, ck_size=ck_size, **kwd)
@web.expose
@web.json
def edit(self, trans, dataset_id=None, filename=None, hid=None, **kwd):
"""Allows user to modify parameters of an HDA."""
@web.expose_api_anonymous
def get_edit(self, trans, dataset_id=None, **kwd):
"""Produces the input definitions available to modify dataset attributes"""
message = None
status = 'done'
error = False
def __ok_to_edit_metadata(dataset_id):
# prevent modifying metadata when dataset is queued or running as input/output
# This code could be more efficient, i.e. by using mappers, but to prevent slowing down loading a History panel, we'll leave the code here for now
for job_to_dataset_association in trans.sa_session.query(
self.app.model.JobToInputDatasetAssociation) \
.filter_by(dataset_id=dataset_id) \
.all() \
+ trans.sa_session.query(self.app.model.JobToOutputDatasetAssociation) \
.filter_by(dataset_id=dataset_id) \
.all():
if job_to_dataset_association.job.state not in [job_to_dataset_association.job.states.OK, job_to_dataset_association.job.states.ERROR, job_to_dataset_association.job.states.DELETED]:
return False
return True
if hid is not None:
history = trans.get_history()
# TODO: hid handling
data = history.datasets[int(hid) - 1]
id = None
elif dataset_id is not None:
status = None
if dataset_id is not None:
id = self.decode_id(dataset_id)
data = trans.sa_session.query(self.app.model.HistoryDatasetAssociation).get(id)
else:
trans.log_event("dataset_id and hid are both None, cannot load a dataset to edit")
return {
status: 'error',
message: 'You must provide a history dataset id to edit.'
}
trans.log_event("dataset_id is None, cannot load a dataset to edit.")
return self.message_exception(trans, 'You must provide a dataset id to edit attributes.')
if data is None:
trans.log_event("Problem retrieving dataset (encoded: %s, decoded: %s) with history id %s." % (str(dataset_id), str(id), str(hid)))
return {
status: 'error',
message: "History dataset id is invalid."
}
trans.log_event("Problem retrieving dataset id (%s)." % dataset_id)
return self.message_exception(trans, 'The dataset id is invalid.')
if dataset_id is not None and data.history.user is not None and data.history.user != trans.user:
trans.log_event("User attempted to edit an HDA they do not own (encoded: %s, decoded: %s)." % (dataset_id, id))
# Do not reveal the dataset's existence
return {
status: 'error',
message: "History dataset id is invalid."
}
current_user_roles = trans.get_current_user_roles()
trans.log_event("User attempted to edit a dataset they do not own (encoded: %s, decoded: %s)." % (dataset_id, id))
return self.message_exception(trans, 'The dataset id is invalid.')
if data.history.user and not data.dataset.has_manage_permissions_roles(trans):
# Permission setting related to DATASET_MANAGE_PERMISSIONS was broken for a period of time,
# so it is possible that some Datasets have no roles associated with the DATASET_MANAGE_PERMISSIONS
@@ -297,300 +264,242 @@ class DatasetInterface(BaseUIController, UsesAnnotations, UsesItemRatings, UsesE
trans.app.security_agent.set_dataset_permission(data.dataset, permissions)
if self._can_access_dataset(trans, data):
if data.state == trans.model.Dataset.states.UPLOAD:
return {
status: 'error',
message: "Please wait until this dataset finishes uploading before attempting to edit its metadata."
}
params = util.Params(kwd, sanitize=False)
if params.change:
# The user clicked the Save button on the 'Change data type' form
if data.datatype.allow_datatype_change and trans.app.datatypes_registry.get_datatype_by_extension(params.datatype).allow_datatype_change:
# prevent modifying datatype when dataset is queued or running as input/output
if not __ok_to_edit_metadata(data.id):
message = "This dataset is currently being used as input or output. You cannot change datatype until the jobs have completed or you have canceled them."
error = True
else:
trans.app.datatypes_registry.change_datatype(data, params.datatype)
trans.sa_session.flush()
trans.app.datatypes_registry.set_external_metadata_tool.tool_action.execute(trans.app.datatypes_registry.set_external_metadata_tool, trans, incoming={'input1': data}, overwrite=False) # overwrite is False as per existing behavior
message = "Changed the type of dataset %s to %s." % (to_unicode(data.name), params.datatype)
else:
message = "You are unable to change datatypes in this manner. Changing %s to %s is not allowed." % (data.extension, params.datatype)
error = True
elif params.save:
# The user clicked the Save button on the 'Edit Attributes' form
data.name = params.name if params.name else ''
data.info = params.info if params.info else ''
message = ''
if __ok_to_edit_metadata(data.id):
# The following for loop will save all metadata_spec items
for name, spec in data.datatype.metadata_spec.items():
if spec.get("readonly"):
continue
setattr(data.metadata, name, spec.unwrap(params.get(name, None)))
data.datatype.after_setting_metadata(data)
# Sanitize annotation before adding it.
if params.annotation:
annotation = sanitize_html(params.annotation, 'utf-8', 'text/html')
self.add_item_annotation(trans.sa_session, trans.get_user(), data, annotation)
# This block on controller code is inactive until the 'extended_metadata' edit box is added back into the UI
# Add or delete extended metadata
# if params.extended_metadata:
# em_string = params.extended_metadata
# if len(em_string):
# em_payload = None
# try:
# em_payload = loads(em_string)
# except Exception as e:
# message = 'Invalid JSON input'
# error = True
# if em_payload is not None:
# if data is not None:
# ex_obj = self.get_item_extended_metadata_obj(trans, data)
# if ex_obj is not None:
# self.unset_item_extended_metadata_obj(trans, data)
# self.delete_extended_metadata(trans, ex_obj)
# ex_obj = self.create_extended_metadata(trans, em_payload)
# self.set_item_extended_metadata_obj(trans, data, ex_obj)
# message = "Updated Extended metadata '%s'." % data.name
# status = 'done'
# else:
# message = "data not found"
# error = True
# else:
# if data is not None:
# ex_obj = self.get_item_extended_metadata_obj(trans, data)
# if ex_obj is not None:
# self.unset_item_extended_metadata_obj(trans, data)
# self.delete_extended_metadata(trans, ex_obj)
# message = "Deleted Extended metadata '%s'." % data.name
# status = 'done'
# If setting metadata previously failed and all required elements have now been set, clear the failed state.
if data._state == trans.model.Dataset.states.FAILED_METADATA and not data.missing_meta():
data._state = None
trans.sa_session.flush()
if message:
message = "Attributes updated. %s" % message
else:
message = "Attributes updated."
else:
trans.sa_session.flush()
message = "Attributes updated, but metadata could not be changed because this dataset is currently being used as input or output. You must cancel or wait for these jobs to complete before changing metadata."
status = "warning"
elif params.detect:
# The user clicked the Auto-detect button on the 'Edit Attributes' form
# prevent modifying metadata when dataset is queued or running as input/output
if not __ok_to_edit_metadata(data.id):
message = "This dataset is currently being used as input or output. You cannot change metadata until the jobs have completed or you have canceled them."
error = True
else:
for name, spec in data.metadata.spec.items():
# We need to be careful about the attributes we are resetting
if name not in ['name', 'info', 'dbkey', 'base_name']:
if spec.get('default'):
setattr(data.metadata, name, spec.unwrap(spec.get('default')))
message = 'Attributes have been queued to be updated.'
trans.app.datatypes_registry.set_external_metadata_tool.tool_action.execute(trans.app.datatypes_registry.set_external_metadata_tool, trans, incoming={'input1': data})
trans.sa_session.flush()
elif params.convert_data:
target_type = kwd.get("target_type", None)
if target_type:
message = data.datatype.convert_dataset(trans, data, target_type)
elif params.update_roles_button:
if not trans.user:
return {
status: 'error',
message: "You must be logged in if you want to change permissions."
}
if trans.app.security_agent.can_manage_dataset(current_user_roles, data.dataset):
permitted_actions = trans.app.model.Dataset.permitted_actions.items()
payload_permissions = json.loads(params.permissions)
# The user associated the DATASET_ACCESS permission on the dataset with 1 or more roles. We
# need to ensure that they did not associate roles that would cause accessibility problems.
permissions, in_roles, error, message = \
trans.app.security_agent.derive_roles_from_access(trans, data.dataset.id, 'root', **payload_permissions)
if error:
# Keep the original role associations for the DATASET_ACCESS permission on the dataset.
access_action = trans.app.security_agent.get_action(trans.app.security_agent.permitted_actions.DATASET_ACCESS.action)
permissions[access_action] = data.dataset.get_access_roles(trans)
status = 'error'
else:
error = trans.app.security_agent.set_all_dataset_permissions(data.dataset, permissions)
if error:
message += error
status = 'error'
else:
message = 'Your changes completed successfully.'
trans.sa_session.refresh(data.dataset)
else:
message = "You are not authorized to change this dataset's permissions."
error = True
else:
if "dbkey" in data.datatype.metadata_spec and not data.metadata.dbkey:
# Copy dbkey into metadata, for backwards compatability
# This looks like it does nothing, but getting the dbkey
# returns the metadata dbkey unless it is None, in which
# case it resorts to the old dbkey. Setting the dbkey
# sets it properly in the metadata
# This is likely no longer required, since the dbkey exists entirely within metadata (the old_dbkey field is gone): REMOVE ME?
data.metadata.dbkey = data.dbkey
return self.message_exception(trans, 'Please wait until this dataset finishes uploading before attempting to edit its metadata.')
# let's not overwrite the imported datatypes module with the variable datatypes?
# the built-in 'id' is overwritten in lots of places as well
ldatatypes = [(dtype_name, dtype_name) for dtype_name, dtype_value in trans.app.datatypes_registry.datatypes_by_extension.iteritems() if dtype_value.allow_datatype_change]
ldatatypes.sort()
all_roles = trans.app.security_agent.get_legitimate_roles(trans, data.dataset, 'root')
all_roles = [(r.name, trans.security.encode_id(r.id)) for r in trans.app.security_agent.get_legitimate_roles(trans, data.dataset, 'root')]
data_metadata = [(name, spec) for name, spec in data.metadata.spec.items()]
converters_collection = [(key, value.name) for key, value in data.get_converter_types().items()]
can_manage_dataset = trans.app.security_agent.can_manage_dataset(current_user_roles, data.dataset)
if error:
status = 'error'
edit_attributes_inputs = list()
convert_inputs = list()
convert_datatype_inputs = list()
permission_inputs = list()
edit_attributes_inputs.append({
can_manage_dataset = trans.app.security_agent.can_manage_dataset(trans.get_current_user_roles(), data.dataset)
# attribute editing
attribute_inputs = [{
'name' : 'name',
'type' : 'text',
'label': 'Name:',
'label': 'Name',
'value': data.get_display_name()
})
edit_attributes_inputs.append({
}, {
'name' : 'info',
'type' : 'text',
'label': 'Info:',
'area' : True,
'label': 'Info',
'value': data.info
})
edit_attributes_inputs.append({
}, {
'name' : 'annotation',
'type' : 'text',
'area' : True,
'label': 'Annotation',
'value': self.get_item_annotation_str(trans.sa_session, trans.user, data),
'help' : 'Add an annotation or notes to a dataset; annotations are available when a history is viewed.'
})
}]
for name, spec in data_metadata:
if spec.visible:
attributes = data.metadata.get_metadata_parameter(name, trans=trans)
if type(attributes) is form_builder.SelectField:
edit_attributes_inputs.append({
'type': 'select',
'multiple': attributes.multiple,
'optional': attributes.optional,
'name': name,
'label': spec.desc,
'options': attributes.options,
'value': attributes.value if attributes.multiple else [attributes.value]
attribute_inputs.append({
'type' : 'select',
'multiple' : attributes.multiple,
'optional' : attributes.optional,
'name' : name,
'label' : spec.desc,
'options' : attributes.options,
'value' : attributes.value if attributes.multiple else [attributes.value]
})
elif type(attributes) is form_builder.TextField:
edit_attributes_inputs.append({
'type': 'text',
'name': name,
'label': spec.desc,
'value': attributes.value,
'readonly': spec.get('readonly')
attribute_inputs.append({
'type' : 'text',
'name' : name,
'label' : spec.desc,
'value' : attributes.value,
'readonly' : spec.get('readonly')
})
if data.missing_meta():
edit_attributes_inputs.append({
'name' : 'errormsg',
'type' : 'text',
'label': 'Error Message',
'value': 'Required metadata values are missing. Some of these values may not be editable by the user. Selecting "Auto-detect" will attempt to fix these values.',
'class' : 'errormessagesmall',
'readonly' : True
})
convert_inputs.append({
'type': 'select',
'name': 'target_type',
'label': 'Name:',
'help': 'This will create a new dataset with the contents of this dataset converted to a new format.',
'options': [(convert_name, convert_id) for convert_id, convert_name in converters_collection]
})
convert_datatype_inputs.append({
'type': 'select',
'name': 'datatype',
'label': 'New Type:',
'help': 'This will change the datatype of the existing dataset but not modify its contents. Use this if Galaxy has incorrectly guessed the type of your dataset.',
'options': [(ext_name, ext_id) for ext_id, ext_name in ldatatypes],
'value': [ext_id for ext_id, ext_name in ldatatypes if ext_id == data.ext]
})
if can_manage_dataset:
permitted_actions = trans.app.model.Dataset.permitted_actions.items()
saved_role_ids = {}
for action, roles in trans.app.security_agent.get_permissions(data.dataset).items():
for role in roles:
saved_role_ids[action.action] = role.id
for index, action in permitted_actions:
if action == trans.app.security_agent.permitted_actions.DATASET_ACCESS:
help_text = action.description + '<br/>NOTE: Users must have every role associated with this dataset in order to access it.'
else:
help_text = action.description
permission_inputs.append({
'type': 'select',
'multiple': True,
'optional': True,
'name': index,
'label': action.action,
'help': help_text,
'options': [(r.name, r.id) for r in all_roles],
'value': saved_role_ids[action.action] if action.action in saved_role_ids else []
})
elif trans.user:
message = 'Required metadata values are missing. Some of these values may not be editable by the user. Selecting "Auto-detect" will attempt to fix these values.'
status = 'warning'
# datatype conversion
conversion_options = [(convert_name, convert_id) for convert_id, convert_name in converters_collection]
conversion_disable = len(conversion_options) == 0
conversion_inputs = [{
'type' : 'select',
'name' : 'target_type',
'label' : 'Name',
'help' : 'This will create a new dataset with the contents of this dataset converted to a new format.',
'options' : conversion_options
}]
# datatype changeing
datatype_options = [(ext_name, ext_id) for ext_id, ext_name in ldatatypes]
datatype_disable = len(datatype_options) == 0
datatype_inputs = [{
'type' : 'select',
'name' : 'datatype',
'label' : 'New Type',
'options' : datatype_options,
'value' : [ext_id for ext_id, ext_name in ldatatypes if ext_id == data.ext],
'help' : 'This will change the datatype of the existing dataset but not modify its contents. Use this if Galaxy has incorrectly guessed the type of your dataset.',
}]
# permissions
permission_disable = True
permission_inputs = list()
if trans.user:
if data.dataset.actions:
permitted_actions = trans.app.model.Dataset.permitted_actions.items()
in_roles = {}
for action, roles in trans.app.security_agent.get_permissions(data.dataset).items():
if roles:
role_inputs = list()
for role in roles:
role_inputs.append({
'name': role.name + action.action,
'type': 'text',
'label': action.description,
'value': role.name,
'readonly': True
})
view_permissions = {'name': action.action, 'label': action.action, 'type': 'section', 'inputs': role_inputs}
permission_inputs.append(view_permissions)
in_roles[action.action] = [trans.security.encode_id(role.id) for role in roles]
for index, action in permitted_actions:
if action == trans.app.security_agent.permitted_actions.DATASET_ACCESS:
help_text = action.description + '<br/>NOTE: Users must have every role associated with this dataset in order to access it.'
else:
help_text = action.description
permission_inputs.append({
'type' : 'select',
'multiple' : True,
'optional' : True,
'name' : index,
'label' : action.action,
'help' : help_text,
'options' : all_roles,
'value' : in_roles.get(action.action),
'readonly' : not can_manage_dataset
})
permission_disable = not can_manage_dataset
else:
permission_inputs.append({
'name': 'access_public',
'type': 'text',
'label': 'Public access',
'value': 'This dataset is accessible by everyone (it is public).',
'readonly': True
'name' : 'access_public',
'type' : 'hidden',
'label' : 'This dataset is accessible by everyone (it is public).',
'readonly' : True
})
else:
permission_inputs.append({
'name': 'no_access',
'type': 'text',
'label': 'No access',
'value': 'Permissions not available (not logged in).',
'readonly': True
'name' : 'no_access',
'type' : 'hidden',
'label' : 'Permissions not available (not logged in).',
'readonly' : True
})
return {
'display_name': data.get_display_name(),
'message': message,
'status': status,
'dataset_id': dataset_id,
'can_manage_dataset': can_manage_dataset,
'edit_attributes_inputs': edit_attributes_inputs,
'convert_inputs': convert_inputs,
'convert_datatype_inputs': convert_datatype_inputs,
'permission_inputs': permission_inputs
'display_name' : data.get_display_name(),
'message' : message,
'status' : status,
'dataset_id' : dataset_id,
'attribute_inputs' : attribute_inputs,
'conversion_inputs' : conversion_inputs,
'conversion_disable': conversion_disable,
'datatype_inputs' : datatype_inputs,
'datatype_disable' : datatype_disable,
'permission_inputs' : permission_inputs,
'permission_disable': permission_disable
}
else:
return {
status: 'error',
message: "You do not have permission to edit this dataset's ( id: %s ) information." % str(dataset_id)
}
return self.message_exception(trans, 'You do not have permission to edit this dataset\'s ( id: %s ) information.' % str(dataset_id))
@web.expose_api_anonymous
def set_edit(self, trans, payload=None, **kwd):
"""Allows user to modify parameters of an HDA."""
def __ok_to_edit_metadata(dataset_id):
# prevent modifying metadata when dataset is queued or running as input/output
# This code could be more efficient, i.e. by using mappers, but to prevent slowing down loading a History panel, we'll leave the code here for now
for job_to_dataset_association in trans.sa_session.query(
self.app.model.JobToInputDatasetAssociation).filter_by(dataset_id=dataset_id).all() \
+ trans.sa_session.query(self.app.model.JobToOutputDatasetAssociation).filter_by(dataset_id=dataset_id).all():
if job_to_dataset_association.job.state not in [job_to_dataset_association.job.states.OK, job_to_dataset_association.job.states.ERROR, job_to_dataset_association.job.states.DELETED]:
return False
return True
message = None
status = 'success'
dataset_id = payload.get('dataset_id')
operation = payload.get('operation')
if dataset_id is not None:
id = self.decode_id(dataset_id)
data = trans.sa_session.query(self.app.model.HistoryDatasetAssociation).get(id)
if operation == 'attributes':
# The user clicked the Save button on the 'Edit Attributes' form
data.name = payload.get('name')
data.info = payload.get('info')
if __ok_to_edit_metadata(data.id):
# The following for loop will save all metadata_spec items
for name, spec in data.datatype.metadata_spec.items():
if not spec.get('readonly'):
setattr(data.metadata, name, spec.unwrap(payload.get(name) or None))
data.datatype.after_setting_metadata(data)
# Sanitize annotation before adding it.
if payload.get('annotation'):
annotation = sanitize_html(payload.get('annotation'), 'utf-8', 'text/html')
self.add_item_annotation(trans.sa_session, trans.get_user(), data, annotation)
# if setting metadata previously failed and all required elements have now been set, clear the failed state.
if data._state == trans.model.Dataset.states.FAILED_METADATA and not data.missing_meta():
data._state = None
message = 'Attributes updated. %s' % message if message else 'Attributes updated.'
else:
message = 'Attributes updated, but metadata could not be changed because this dataset is currently being used as input or output. You must cancel or wait for these jobs to complete before changing metadata.'
status = 'warning'
trans.sa_session.flush()
elif operation == 'datatype':
# The user clicked the Save button on the 'Change data type' form
datatype = payload.get('datatype')
if data.datatype.allow_datatype_change and trans.app.datatypes_registry.get_datatype_by_extension(datatype).allow_datatype_change:
# prevent modifying datatype when dataset is queued or running as input/output
if not __ok_to_edit_metadata(data.id):
return self.message_exception(trans, 'This dataset is currently being used as input or output. You cannot change datatype until the jobs have completed or you have canceled them.')
else:
trans.app.datatypes_registry.change_datatype(data, datatype)
trans.sa_session.flush()
trans.app.datatypes_registry.set_external_metadata_tool.tool_action.execute(trans.app.datatypes_registry.set_external_metadata_tool, trans, incoming={'input1': data}, overwrite=False) # overwrite is False as per existing behavior
message = 'Changed the type to %s.' % datatype
else:
return self.message_exception(trans, 'You are unable to change datatypes in this manner. Changing %s to %s is not allowed.' % (data.extension, datatype))
elif operation == 'autodetect':
# The user clicked the Auto-detect button on the 'Edit Attributes' form
# prevent modifying metadata when dataset is queued or running as input/output
if not __ok_to_edit_metadata(data.id):
return self.message_exception(trans, 'This dataset is currently being used as input or output. You cannot change metadata until the jobs have completed or you have canceled them.')
else:
for name, spec in data.metadata.spec.items():
# We need to be careful about the attributes we are resetting
if name not in ['name', 'info', 'dbkey', 'base_name']:
if spec.get('default'):
setattr(data.metadata, name, spec.unwrap(spec.get('default')))
message = 'Attributes have been queued to be updated.'
trans.app.datatypes_registry.set_external_metadata_tool.tool_action.execute(trans.app.datatypes_registry.set_external_metadata_tool, trans, incoming={'input1': data})
trans.sa_session.flush()
elif operation == 'conversion':
target_type = payload.get('target_type')
if target_type:
try:
message = data.datatype.convert_dataset(trans, data, target_type)
except Exception as e:
return self.message_exception(trans, str(e))
elif operation == 'permission':
if not trans.user:
return self.message_exception(trans, 'You must be logged in if you want to change permissions.')
if trans.app.security_agent.can_manage_dataset(trans.get_current_user_roles(), data.dataset):
permitted_actions = trans.app.model.Dataset.permitted_actions.items()
payload_permissions = {}
for action, key in permitted_actions:
payload_permissions[action] = [trans.security.decode_id(role_id) for role_id in util.listify(payload.get(action))]
# The user associated the DATASET_ACCESS permission on the dataset with 1 or more roles. We
# need to ensure that they did not associate roles that would cause accessibility problems.
permissions, in_roles, error, message = \
trans.app.security_agent.derive_roles_from_access(trans, data.dataset.id, 'root', **payload_permissions)
if error:
# Keep the original role associations for the DATASET_ACCESS permission on the dataset.
access_action = trans.app.security_agent.get_action(trans.app.security_agent.permitted_actions.DATASET_ACCESS.action)
permissions[access_action] = data.dataset.get_access_roles(trans)
trans.sa_session.refresh(data.dataset)
return self.message_exception(trans, message)
else:
error = trans.app.security_agent.set_all_dataset_permissions(data.dataset, permissions)
trans.sa_session.refresh(data.dataset)
if error:
return self.message_exception(trans, error)
else:
message = 'Your changes completed successfully.'
else:
return self.message_exception(trans, 'You are not authorized to change this dataset\'s permissions.')
else:
return self.message_exception(trans, 'Invalid operation identifier (%s).' % operation)
return {'status': status, 'message': sanitize_text(message)}
@web.expose
@web.json
@@ -1 +1 @@
{"version":3,"file":"dataset-edit-attributes.js","sources":["../../../src/mvc/dataset/dataset-edit-attributes.js"],"names":["define","Utils","Tabs","Ui","Form","View","Backbone","extend","initialize","this","setElement","model","Model","dataset_id","Galaxy","params","render","url","root","self","get","data","success","response","render_attribute_page","error","error_response","status","message","persistent","cls","display_message","$","$el","empty","append","_templateHeader","create_tabs","call_ajax","post_url","ajax","type","reload_history","html","Message","$el_edit_attr","tabs","add","id","title","icon","tooltip","_getAttributesFormTemplate","_getConvertFormTemplate","_getChangeDataTypeFormTemplate","_getPermissionsFormTemplate","showTab","form","inputs","edit_attributes_inputs","operations","submit_editattr","ButtonIcon","onclick","_submit","submit_autocorrect","convert_inputs","submit","convert_datatype_inputs","can_manage_dataset","display_name","permission_inputs","form_data","create","save","detect","target_type","convert_data","change","post_data","permissions","JSON","stringify","update_roles_button","window","currHistoryPanel","loadCurrentHistory"],"mappings":"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"}
{"version":3,"file":"dataset-edit-attributes.js","sources":["../../../src/mvc/dataset/dataset-edit-attributes.js"],"names":["define","Utils","Tabs","Ui","Form","View","Backbone","extend","initialize","this","setElement","model","Model","dataset_id","Galaxy","params","message","Message","persistent","tabs","_createTabs","$el","append","$","hide","render","self","ajax","url","root","get","success","response","initial_message","update","_","each","forms","form","key","set","show","error","err_msg","responseJSON","status","_submit","operation","data","create","type","_reloadHistory","attribute","_getAttribute","conversion","_getConversion","datatype","_getDatatype","permission","_getPermission","add","id","title","icon","tooltip","operations","submit_attributes","ButtonIcon","onclick","submit_autodetect","submit_conversion","submit_datatype","submit_permission","window","currHistoryPanel","loadCurrentHistory"],"mappings":"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"}
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 @@
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","SelectFtp","SelectGenomeSpace","ColorPicker","Backbone","Model","extend","types","text","password","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","ftpfile","upload","genomespacefile","create","input_def","fieldClass","this","type","field","call","options","_fieldSelect","_fieldText","Galaxy","emit","debug","undefined","value","_fieldData","View","id","extensions","optional","multiple","flavor","onchange","is_workflow","error_text","_","each","option","push","label","SelectClass","Select","display","Checkbox","Radio","RadioButton","individual","searchable","_fieldDrilldown","Drilldown","area","isEmpty","$","isArray","str_value","i","String","Input","readonly","placeholder","datalist","_fieldSlider","Slider","precise","min","max","_fieldHidden","Hidden","info","_fieldBoolean","_fieldColor","_fieldLibrary","_fieldFtp","_fieldGenomeSpace","self","app","trigger","_fieldUpload","Upload"],"mappings":"AAGAA,QAAQ,cACA,iBACA,2BACA,2BACA,uBACA,+BACA,0BACJ,SAAUC,EAAOC,EAAIC,EAAeC,EAAeC,EAAWC,EAAmBC,GAGjF,MAAOC,UAASC,MAAMC,QAElBC,OACIC,KAAsB,aACtBC,SAAsB,aACtBC,OAAsB,eACtBC,YAAsB,eACtBC,YAAsB,eACtBC,KAAsB,aACtBC,gBAAsB,aACtBC,QAAsB,eACtBC,QAAsB,eACtBC,UAAsB,gBACtBC,WAAsB,kBACtBC,MAAsB,cACtBC,OAAsB,eACtBC,YAAsB,eACtBC,QAAsB,eACtBC,aAAsB,gBACtBC,QAAsB,YACtBC,OAAsB,eACtBC,gBAAsB,qBAI1BC,OAAQ,SAAUC,GACd,GAAIC,GAAaC,KAAKvB,MAAOqB,EAAUG,MACnCC,EAAyC,kBAAzBF,MAAMD,GAAgCC,KAAMD,GAAaI,KAAMH,KAAMF,GAAc,IAOvG,OANMI,KACFA,EAAQJ,EAAUM,QAAUJ,KAAKK,aAAcP,GAAcE,KAAKM,WAAYR,GAC9ES,OAAOC,KAAKC,MAAM,6BAA8B,4BAA8BX,EAAUG,KAAO,OAE/ES,SAApBZ,EAAUa,QAAyBb,EAAUa,MAAQ,MACrDT,EAAMS,MAAOb,EAAUa,OAChBT,GAIXU,WAAY,SAAUd,GAClB,MAAO,IAAI7B,GAAc4C,MACrBC,GAAc,SAAWhB,EAAUgB,GACnCC,WAAcjB,EAAUiB,WACxBC,SAAclB,EAAUkB,SACxBC,SAAcnB,EAAUmB,SACxBhB,KAAcH,EAAUG,KACxBiB,OAAcpB,EAAUoB,OACxBnC,KAAce,EAAUM,QACxBe,SAAcrB,EAAUqB,YAKhCd,aAAc,SAAWP,GAErB,GAAIA,EAAUsB,YACV,MAAOpB,MAAKM,WAAYR,EAIL,gBAAlBA,EAAUG,OACXH,EAAUuB,WAAa,yCAI3B,IAAItC,GAAOe,EAAUf,IAChBA,KACDA,KACAuC,EAAEC,KAAMzB,EAAUM,QAAS,SAAUoB,GACjCzC,EAAK0C,MAAQC,MAAOF,EAAQ,GAAKb,MAAOa,EAAQ,OAKxD,IAAIG,GAAc3D,EAAG4D,MACrB,QAAS9B,EAAU+B,SACf,IAAK,aACDF,EAAc3D,EAAG8D,QACjB,MACJ,KAAK,QACDH,EAAc3D,EAAG+D,KACjB,MACJ,KAAK,cACDJ,EAAc3D,EAAGgE,YAKzB,MAAO,IAAIL,GAAYd,MACnBC,GAAc,SAAWhB,EAAUgB,GACnC/B,KAAcA,EACdsC,WAAcvB,EAAUuB,YAAc,uBACtCJ,SAAcnB,EAAUmB,SACxBD,SAAclB,EAAUkB,SACxBG,SAAcrB,EAAUqB,SACxBc,WAAcnC,EAAUmC,WACxBC,WAAmC,aAArBpC,EAAUoB,UAKhCiB,gBAAiB,SAAWrC,GAExB,MAAIA,GAAUsB,YACHpB,KAAKM,WAAYR,GAIrB,GAAI9B,GAAGoE,UAAUvB,MACpBC,GAAc,SAAWhB,EAAUgB,GACnC/B,KAAce,EAAUM,QACxByB,QAAc/B,EAAU+B,QACxBb,SAAclB,EAAUkB,SACxBG,SAAcrB,EAAUqB,YAKhCb,WAAY,SAAUR,GAElB,GAAKA,EAAUM,SAAWN,EAAUf,KAEhC,GADAe,EAAUuC,KAAOvC,EAAUmB,SACtBlD,EAAMuE,QAASxC,EAAUa,OAC1Bb,EAAUa,MAAQ,SAElB,IAAK4B,EAAEC,QAAS1C,EAAUa,OAAU,CAChC,GAAI8B,GAAY,EAChB,KAAM,GAAIC,KAAK5C,GAAUa,MAAQ,CAE7B,GADA8B,GAAaE,OAAQ7C,EAAUa,MAAO+B,KAChC5C,EAAUmB,SACZ,KAEJwB,IAAa,KAEjB3C,EAAUa,MAAQ8B,EAK9B,MAAO,IAAIzE,GAAG4E,OACV9B,GAAc,SAAWhB,EAAUgB,GACnCb,KAAcH,EAAUG,KACxBoC,KAAcvC,EAAUuC,KACxBQ,SAAc/C,EAAU+C,SACxBC,YAAchD,EAAUgD,YACxBC,SAAcjD,EAAUiD,SACxB5B,SAAcrB,EAAUqB,YAKhC6B,aAAc,SAAUlD,GACpB,MAAO,IAAI9B,GAAGiF,OAAOpC,MACjBC,GAAc,SAAWhB,EAAUgB,GACnCoC,QAAgC,SAAlBpD,EAAUG,KACxBmB,YAActB,EAAUsB,YACxB+B,IAAcrD,EAAUqD,IACxBC,IAActD,EAAUsD,IACxBjC,SAAcrB,EAAUqB,YAKhCkC,aAAc,SAAUvD,GACpB,MAAO,IAAI9B,GAAGsF,QACVxC,GAAc,SAAWhB,EAAUgB,GACnCyC,KAAczD,EAAUyD,QAKhCC,cAAe,SAAU1D,GACrB,MAAO,IAAI9B,GAAGgE,YAAYnB,MACtBC,GAAc,SAAWhB,EAAUgB,GACnC/B,OAAkB2C,MAAQ,MAAOf,MAAQ,SACvBe,MAAQ,KAAOf,MAAQ,UACzCQ,SAAcrB,EAAUqB,YAKhCsC,YAAa,SAAU3D,GACnB,MAAO,IAAIzB,IACPyC,GAAc,SAAWhB,EAAUgB,GACnCK,SAAcrB,EAAUqB,YAKhCuC,cAAe,SAAU5D,GACrB,MAAO,IAAI5B,GAAc2C,MACrBC,GAAc,SAAWhB,EAAUgB,GACnCE,SAAclB,EAAUkB,SACxBC,SAAcnB,EAAUmB,SACxBE,SAAcrB,EAAUqB,YAKhCwC,UAAW,SAAU7D,GACjB,MAAO,IAAI3B,GAAU0C,MACjBC,GAAc,SAAWhB,EAAUgB,GACnCE,SAAclB,EAAUkB,SACxBC,SAAcnB,EAAUmB,SACxBE,SAAcrB,EAAUqB,YAMhCyC,kBAAmB,SAAU9D,GACxB,GAAI+D,GAAO7D,IACX,OAAO,IAAI5B,GAAkByC,MACzBC,GAAc,SAAWhB,EAAUgB,GACnCK,SAAc,WACV0C,EAAKC,IAAIC,QAAS,cAM/BC,aAAc,SAAUlE,GACpB,MAAO,IAAI9B,GAAGiG,QACVnD,GAAc,SAAWhB,EAAUgB,GACnCK,SAAcrB,EAAUqB"}
{"version":3,"file":"form-parameters.js","sources":["../../../src/mvc/form/form-parameters.js"],"names":["define","Utils","Ui","SelectContent","SelectLibrary","SelectFtp","SelectGenomeSpace","ColorPicker","Backbone","Model","extend","types","text","password","select","data_column","genomebuild","data","data_collection","integer","float","boolean","drill_down","color","hidden","hidden_data","baseurl","library_data","ftpfile","upload","genomespacefile","create","input_def","fieldClass","this","type","field","call","options","_fieldSelect","_fieldText","Galaxy","emit","debug","undefined","value","_fieldData","View","id","extensions","optional","multiple","flavor","onchange","is_workflow","error_text","_","each","option","push","label","SelectClass","Select","display","Checkbox","Radio","RadioButton","readonly","individual","searchable","_fieldDrilldown","Drilldown","area","isEmpty","$","isArray","str_value","i","String","Input","placeholder","datalist","_fieldSlider","Slider","precise","min","max","_fieldHidden","Hidden","info","_fieldBoolean","_fieldColor","_fieldLibrary","_fieldFtp","_fieldGenomeSpace","self","app","trigger","_fieldUpload","Upload"],"mappings":"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"}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"form-view.js","sources":["../../../src/mvc/form/form-view.js"],"names":["define","Utils","Portlet","Ui","FormSection","FormData","Backbone","View","extend","initialize","options","this","model","Model","initial_errors","cls","icon","always_refresh","status","onchange","set","setElement","render","update","new_model","self","data","matchModel","node","input_id","input","input_list","_","isEqual","field","field_list","new_options","indexOf","type","i","opt","length","push","label","value","trigger","Galaxy","emit","debug","wait","active","is_dynamic","unwait","highlight","message","silent","input_element","element_list","error","portlet","expand","$panel","$el","parents","filter","$","css","first","animate","scrollTop","offset","top","errors","error_messages","matchResponse","off","Manager","_renderForm","create","get","attributes","current_check","checksum","on","refresh_on_change","new_check","each","reset","remove","UnescapedMessage","section","inputs","title","operations","buttons","collapsible","collapsed","onchange_title","append","empty","persistent"],"mappings":"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"}
{"version":3,"file":"form-view.js","sources":["../../../src/mvc/form/form-view.js"],"names":["define","Utils","Portlet","Ui","FormSection","FormData","Backbone","View","extend","initialize","options","this","model","Model","initial_errors","cls","icon","always_refresh","status","hide_operations","onchange","set","setElement","render","update","new_model","self","data","matchModel","node","input_id","input","input_list","_","isEqual","field","field_list","new_options","indexOf","type","i","opt","length","push","label","value","trigger","Galaxy","emit","debug","wait","active","is_dynamic","unwait","highlight","message","silent","input_element","element_list","error","portlet","expand","$panel","$el","parents","filter","$","css","first","animate","scrollTop","offset","top","errors","error_messages","matchResponse","off","Manager","_renderForm","create","get","attributes","current_check","checksum","on","refresh_on_change","new_check","each","reset","remove","UnescapedMessage","section","inputs","title","operations","buttons","collapsible","collapsed","onchange_title","append","empty","persistent"],"mappings":"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"}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/ui/ui-tabs","mvc/ui/ui-misc","mvc/form/form-view"],function(a,b,c,d){var e=Backbone.View.extend({initialize:function(){this.setElement("<div/>"),this.model=new Backbone.Model({dataset_id:Galaxy.params.dataset_id}),this.render()},render:function(){var b=Galaxy.root+"dataset/edit",c=this;a.get({url:b,data:{dataset_id:c.model.get("dataset_id")},success:function(a){c.render_attribute_page(c,a)},error:function(){var a={status:"error",message:"Error occured while loading the dataset.",persistent:!0,cls:"errormessage"};c.display_message(a,c.$(".response-message"))}})},render_attribute_page:function(a,b){var c={message:b.message,status:b.status,persistent:!0,cls:b.status+"message"};a.$el.empty().append(a._templateHeader()),a.display_message(c,a.$(".response-message")),a.create_tabs(b,a.$(".edit-attr"))},call_ajax:function(a,b){var c=Galaxy.root+"dataset/edit";$.ajax({type:"PUT",url:c,data:b,success:function(b){a.render_attribute_page(a,b),a.reload_history()},error:function(){var b={status:"error",message:"Error occured while saving. Please fill all the required fields and try again.",persistent:!0,cls:"errormessage"};a.display_message(b,a.$(".response-message"))}})},display_message:function(a,b){b.empty().html(new c.Message(a).$el)},create_tabs:function(a,c){var d=this;d.tabs=new b.View,d.tabs.add({id:"attributes",title:"Attributes",icon:"fa fa-bars",tooltip:"Edit dataset attributes",$el:d._getAttributesFormTemplate(a)}),d.tabs.add({id:"convert",title:"Convert",icon:"fa-gear",tooltip:"Convert to new format",$el:d._getConvertFormTemplate(a)}),d.tabs.add({id:"datatype",title:"Datatypes",icon:"fa-database",tooltip:"Change data type",$el:d._getChangeDataTypeFormTemplate(a)}),d.tabs.add({id:"permissions",title:"Permissions",icon:"fa-user",tooltip:"Permissions",$el:d._getPermissionsFormTemplate(a)}),c.append(d.tabs.$el),d.tabs.showTab("attributes")},_templateHeader:function(){return'<div class="page-container edit-attr"><div class="response-message"></div><h3>Edit Dataset Attributes</h3></div>'},_getAttributesFormTemplate:function(a){var b=this,e=new d({title:"Edit attributes",inputs:a.edit_attributes_inputs,operations:{submit_editattr:new c.ButtonIcon({tooltip:"Save attributes of the dataset.",icon:"fa-floppy-o ",title:"Save attributes",onclick:function(){b._submit(b,e,a,"edit_attributes")}}),submit_autocorrect:new c.ButtonIcon({tooltip:"This will inspect the dataset and attempt to correct the values of fields if they are not accurate.",icon:"fa-undo ",title:"Auto-detect",onclick:function(){b._submit(b,e,a,"auto-detect")}})}});return e.$el},_getConvertFormTemplate:function(a){var b=this,e=new d({title:"Convert to new format",inputs:a.convert_inputs,operations:{submit:new c.ButtonIcon({tooltip:"Convert the datatype to a new format.",title:"Convert datatype",icon:"fa-exchange ",onclick:function(){b._submit(b,e,a,"convert")}})}});return e.$el},_getChangeDataTypeFormTemplate:function(a){var b=this,e=new d({title:"Change datatype",inputs:a.convert_datatype_inputs,operations:{submit:new c.ButtonIcon({tooltip:"Change the datatype to a new type.",title:"Change datatype",icon:"fa-exchange ",onclick:function(){b._submit(b,e,a,"change")}})}});return e.$el},_getPermissionsFormTemplate:function(a){var b=this;if(a.can_manage_dataset){var e=new d({title:"Manage dataset permissions on "+a.display_name,inputs:a.permission_inputs,operations:{submit:new c.ButtonIcon({tooltip:"Save permissions.",title:"Save permissions",icon:"fa-floppy-o ",onclick:function(){b._submit(b,e,a,"permissions")}})}});return e.$el}var e=new d({title:"View permissions",inputs:a.permission_inputs});return e.$el},_submit:function(a,b,c,d){var e=b.data.create();switch(e.dataset_id=c.dataset_id,d){case"edit_attributes":e.save="Save";break;case"auto-detect":e.detect="Auto-detect";break;case"convert":null!==e.target_type&&e.target_type&&(e.dataset_id=c.dataset_id,e.convert_data="Convert");break;case"change":e.change="Save";break;case"permissions":var f={};f.permissions=JSON.stringify(e),f.update_roles_button="Save",f.dataset_id=c.dataset_id,e=f}a.call_ajax(a,e)},reload_history:function(){window.Galaxy&&window.Galaxy.currHistoryPanel.loadCurrentHistory()}});return{View:e}});
define(["utils/utils","mvc/ui/ui-tabs","mvc/ui/ui-misc","mvc/form/form-view"],function(a,b,c,d){var e=Backbone.View.extend({initialize:function(){this.setElement("<div/>"),this.model=new Backbone.Model({dataset_id:Galaxy.params.dataset_id}),this.message=new c.Message({persistent:!0}),this.tabs=this._createTabs(),this.$el.append($("<h4/>").append("Edit dataset attributes")).append(this.message.$el).append("<p/>").append(this.tabs.$el).hide(),this.render()},render:function(){var a=this;$.ajax({url:Galaxy.root+"dataset/get_edit?dataset_id="+a.model.get("dataset_id"),success:function(b){!a.initial_message&&a.message.update(b),a.initial_message=!0,_.each(a.forms,function(a,c){a.model.set("inputs",b[c+"_inputs"]),a.model.set("hide_operations",b[c+"_disable"]),a.render()}),a.$el.show()},error:function(b){var c=b.responseJSON&&b.responseJSON.err_msg;a.message.update({status:"danger",message:c||"Error occured while loading the dataset."})}})},_submit:function(a,b){var c=this,d=b.data.create();d.dataset_id=this.model.get("dataset_id"),d.operation=a,$.ajax({type:"PUT",url:Galaxy.root+"dataset/set_edit",data:d,success:function(a){c.message.update(a),c.render(),c._reloadHistory()},error:function(a){var b=a.responseJSON&&a.responseJSON.err_msg;c.message.update({status:"danger",message:b||"Error occured while editing the dataset attributes."})}})},_createTabs:function(){this.forms={attribute:this._getAttribute(),conversion:this._getConversion(),datatype:this._getDatatype(),permission:this._getPermission()};var a=new b.View;return a.add({id:"attribute",title:"Attributes",icon:"fa fa-bars",tooltip:"Edit dataset attributes",$el:this.forms.attribute.$el}),a.add({id:"convert",title:"Convert",icon:"fa-gear",tooltip:"Convert to new format",$el:this.forms.conversion.$el}),a.add({id:"datatype",title:"Datatypes",icon:"fa-database",tooltip:"Change data type",$el:this.forms.datatype.$el}),a.add({id:"permissions",title:"Permissions",icon:"fa-user",tooltip:"Permissions",$el:this.forms.permission.$el}),a},_getAttribute:function(){var a=this,b=new d({title:"Edit attributes",operations:{submit_attributes:new c.ButtonIcon({tooltip:"Save attributes of the dataset.",icon:"fa-floppy-o",title:"Save",onclick:function(){a._submit("attributes",b)}}),submit_autodetect:new c.ButtonIcon({tooltip:"This will inspect the dataset and attempt to correct the values of fields if they are not accurate.",icon:"fa-undo",title:"Auto-detect",onclick:function(){a._submit("autodetect",b)}})}});return b},_getConversion:function(){var a=this,b=new d({title:"Convert to new format",operations:{submit_conversion:new c.ButtonIcon({tooltip:"Convert the datatype to a new format.",title:"Convert datatype",icon:"fa-exchange",onclick:function(){a._submit("conversion",b)}})}});return b},_getDatatype:function(){var a=this,b=new d({title:"Change datatype",operations:{submit_datatype:new c.ButtonIcon({tooltip:"Change the datatype to a new type.",title:"Change datatype",icon:"fa-exchange",onclick:function(){a._submit("datatype",b)}})}});return b},_getPermission:function(){var a=this,b=new d({title:"Manage dataset permissions",operations:{submit_permission:new c.ButtonIcon({tooltip:"Save permissions.",title:"Save permissions",icon:"fa-floppy-o ",onclick:function(){a._submit("permission",b)}})}});return b},_reloadHistory:function(){window.Galaxy&&window.Galaxy.currHistoryPanel.loadCurrentHistory()}});return{View:e}});
//# sourceMappingURL=../../../maps/mvc/dataset/dataset-edit-attributes.js.map
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1,2 +1,2 @@
define(["mvc/dataset/states","mvc/base-mvc","utils/localization"],function(a,b,c){"use strict";var d="dataset",e=b.SearchableModelMixin,f=Backbone.Model.extend(b.LoggableMixin).extend(b.mixin(e,{_logNamespace:d,defaults:{state:a.NEW,deleted:!1,purged:!1,name:"(unnamed dataset)",accessible:!0,data_type:"",file_ext:"",file_size:0,meta_files:[],misc_blurb:"",misc_info:"",tags:[]},initialize:function(b,c){this.debug(this+"(Dataset).initialize",b,c),this.get("accessible")||this.set("state",a.NOT_VIEWABLE),this.urls=this._generateUrls(),this._setUpListeners()},_generateUrls:function(){var a=this.get("id");if(!a)return{};var b={purge:"datasets/"+a+"/purge_async",display:"datasets/"+a+"/display/?preview=True",edit:"datasets/"+a+"/edit",download:"datasets/"+a+"/display"+this._downloadQueryParameters(),report_error:"dataset/errors?id="+a,rerun:"tool_runner/rerun?id="+a,show_params:"datasets/"+a+"/show_params",visualization:"visualization",meta_download:"dataset/get_metadata_file?hda_id="+a+"&metadata_name="};return _.each(b,function(a,c){b[c]=Galaxy.root+a}),this.urls=b,b},_downloadQueryParameters:function(){return"?to_ext="+this.get("file_ext")},_setUpListeners:function(){this.on("change:state",function(a,b){this.log(this+" has changed state:",a,b),this.inReadyState()&&this.trigger("state:ready",a,b,this.previous("state"))}),this.on("change:id change:file_ext",function(){this._generateUrls()})},toJSON:function(){var a=Backbone.Model.prototype.toJSON.call(this);return _.extend(a,{urls:this.urls})},isDeletedOrPurged:function(){return this.get("deleted")||this.get("purged")},inReadyState:function(){var b=_.contains(a.READY_STATES,this.get("state"));return this.isDeletedOrPurged()||b},hasDetails:function(){return this.get("accessible")?this.has("annotation"):!0},hasData:function(){return this.get("file_size")>0},fetch:function(a){var b=this;return Backbone.Model.prototype.fetch.call(this,a).always(function(){b._generateUrls()})},parse:function(a,b){var c=Backbone.Model.prototype.parse.call(this,a,b);return c.create_time&&(c.create_time=new Date(c.create_time)),c.update_time&&(c.update_time=new Date(c.update_time)),c},save:function(a,b){return b=b||{},b.wait=_.isUndefined(b.wait)?!0:b.wait,Backbone.Model.prototype.save.call(this,a,b)},"delete":function(a){return this.get("deleted")?jQuery.when():this.save({deleted:!0},a)},undelete:function(a){return!this.get("deleted")||this.get("purged")?jQuery.when():this.save({deleted:!1},a)},purge:function(a){if(this.get("purged"))return jQuery.when();a=a||{},a.url=this.urls.purge;var b=this,d=jQuery.ajax(a);return d.done(function(){b.set({deleted:!0,purged:!0})}),d.fail(function(d){var e=c("Unable to purge dataset"),f="Removal of datasets by users is not allowed in this Galaxy instance";d.responseJSON&&d.responseJSON.error?e=d.responseJSON.error:-1!==d.responseText.indexOf(f)&&(e=f),d.responseText=e,b.trigger("error",b,d,a,c(e),{error:e})}),d},searchAttributes:["name","file_ext","genome_build","misc_blurb","misc_info","annotation","tags"],searchAliases:{title:"name",format:"file_ext",database:"genome_build",blurb:"misc_blurb",description:"misc_blurb",info:"misc_info",tag:"tags"},toString:function(){var a=this.get("id")||"";return this.get("name")&&(a='"'+this.get("name")+'",'+a),"Dataset("+a+")"}})),g=Backbone.Collection.extend(b.LoggableMixin).extend({_logNamespace:d,model:f,urlRoot:Galaxy.root+"api/datasets",url:function(){return this.urlRoot},ids:function(){return this.map(function(a){return a.get("id")})},notReady:function(){return this.filter(function(a){return!a.inReadyState()})},haveDetails:function(){return this.all(function(a){return a.hasDetails()})},ajaxQueue:function(a,b){var c=jQuery.Deferred(),d=this.length,e=[];if(!d)return c.resolve([]),c;var f=this.chain().reverse().map(function(g,h){return function(){var i=a.call(g,b);i.done(function(a){c.notify({curr:h,total:d,response:a,model:g})}),i.always(function(a){e.push(a),f.length?f.shift()():c.resolve(e)})}}).value();return f.shift()(),c},matches:function(a){return this.filter(function(b){return b.matches(a)})},toString:function(){return["DatasetAssociationCollection(",this.length,")"].join("")}});return{DatasetAssociation:f,DatasetAssociationCollection:g}});
define(["mvc/dataset/states","mvc/base-mvc","utils/localization"],function(a,b,c){"use strict";var d="dataset",e=b.SearchableModelMixin,f=Backbone.Model.extend(b.LoggableMixin).extend(b.mixin(e,{_logNamespace:d,defaults:{state:a.NEW,deleted:!1,purged:!1,name:"(unnamed dataset)",accessible:!0,data_type:"",file_ext:"",file_size:0,meta_files:[],misc_blurb:"",misc_info:"",tags:[]},initialize:function(b,c){this.debug(this+"(Dataset).initialize",b,c),this.get("accessible")||this.set("state",a.NOT_VIEWABLE),this.urls=this._generateUrls(),this._setUpListeners()},_generateUrls:function(){var a=this.get("id");if(!a)return{};var b={purge:"datasets/"+a+"/purge_async",display:"datasets/"+a+"/display/?preview=True",edit:"datasets/edit?dataset_id="+a,download:"datasets/"+a+"/display"+this._downloadQueryParameters(),report_error:"dataset/errors?id="+a,rerun:"tool_runner/rerun?id="+a,show_params:"datasets/"+a+"/show_params",visualization:"visualization",meta_download:"dataset/get_metadata_file?hda_id="+a+"&metadata_name="};return _.each(b,function(a,c){b[c]=Galaxy.root+a}),this.urls=b,b},_downloadQueryParameters:function(){return"?to_ext="+this.get("file_ext")},_setUpListeners:function(){this.on("change:state",function(a,b){this.log(this+" has changed state:",a,b),this.inReadyState()&&this.trigger("state:ready",a,b,this.previous("state"))}),this.on("change:id change:file_ext",function(){this._generateUrls()})},toJSON:function(){var a=Backbone.Model.prototype.toJSON.call(this);return _.extend(a,{urls:this.urls})},isDeletedOrPurged:function(){return this.get("deleted")||this.get("purged")},inReadyState:function(){var b=_.contains(a.READY_STATES,this.get("state"));return this.isDeletedOrPurged()||b},hasDetails:function(){return this.get("accessible")?this.has("annotation"):!0},hasData:function(){return this.get("file_size")>0},fetch:function(a){var b=this;return Backbone.Model.prototype.fetch.call(this,a).always(function(){b._generateUrls()})},parse:function(a,b){var c=Backbone.Model.prototype.parse.call(this,a,b);return c.create_time&&(c.create_time=new Date(c.create_time)),c.update_time&&(c.update_time=new Date(c.update_time)),c},save:function(a,b){return b=b||{},b.wait=_.isUndefined(b.wait)?!0:b.wait,Backbone.Model.prototype.save.call(this,a,b)},"delete":function(a){return this.get("deleted")?jQuery.when():this.save({deleted:!0},a)},undelete:function(a){return!this.get("deleted")||this.get("purged")?jQuery.when():this.save({deleted:!1},a)},purge:function(a){if(this.get("purged"))return jQuery.when();a=a||{},a.url=this.urls.purge;var b=this,d=jQuery.ajax(a);return d.done(function(){b.set({deleted:!0,purged:!0})}),d.fail(function(d){var e=c("Unable to purge dataset"),f="Removal of datasets by users is not allowed in this Galaxy instance";d.responseJSON&&d.responseJSON.error?e=d.responseJSON.error:-1!==d.responseText.indexOf(f)&&(e=f),d.responseText=e,b.trigger("error",b,d,a,c(e),{error:e})}),d},searchAttributes:["name","file_ext","genome_build","misc_blurb","misc_info","annotation","tags"],searchAliases:{title:"name",format:"file_ext",database:"genome_build",blurb:"misc_blurb",description:"misc_blurb",info:"misc_info",tag:"tags"},toString:function(){var a=this.get("id")||"";return this.get("name")&&(a='"'+this.get("name")+'",'+a),"Dataset("+a+")"}})),g=Backbone.Collection.extend(b.LoggableMixin).extend({_logNamespace:d,model:f,urlRoot:Galaxy.root+"api/datasets",url:function(){return this.urlRoot},ids:function(){return this.map(function(a){return a.get("id")})},notReady:function(){return this.filter(function(a){return!a.inReadyState()})},haveDetails:function(){return this.all(function(a){return a.hasDetails()})},ajaxQueue:function(a,b){var c=jQuery.Deferred(),d=this.length,e=[];if(!d)return c.resolve([]),c;var f=this.chain().reverse().map(function(g,h){return function(){var i=a.call(g,b);i.done(function(a){c.notify({curr:h,total:d,response:a,model:g})}),i.always(function(a){e.push(a),f.length?f.shift()():c.resolve(e)})}}).value();return f.shift()(),c},matches:function(a){return this.filter(function(b){return b.matches(a)})},toString:function(){return["DatasetAssociationCollection(",this.length,")"].join("")}});return{DatasetAssociation:f,DatasetAssociationCollection:g}});
//# sourceMappingURL=../../../maps/mvc/dataset/dataset-model.js.map
+1 -1
View File
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-select-genomespace","mvc/ui/ui-color-picker"],function(a,b,c,d,e,f,g){return Backbone.Model.extend({types:{text:"_fieldText",password:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp",upload:"_fieldUpload",genomespacefile:"_fieldGenomeSpace"},create:function(a){var b=this.types[a.type],c="function"==typeof this[b]?this[b].call(this,a):null;return c||(c=a.options?this._fieldSelect(a):this._fieldText(a),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+a.type+").")),void 0===a.value&&(a.value=null),c.value(a.value),c},_fieldData:function(a){return new c.View({id:"field-"+a.id,extensions:a.extensions,optional:a.optional,multiple:a.multiple,type:a.type,flavor:a.flavor,data:a.options,onchange:a.onchange})},_fieldSelect:function(a){if(a.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=a.data;c||(c=[],_.each(a.options,function(a){c.push({label:a[0],value:a[1]})}));var d=b.Select;switch(a.display){case"checkboxes":d=b.Checkbox;break;case"radio":d=b.Radio;break;case"radiobutton":d=b.RadioButton}return new d.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",multiple:a.multiple,optional:a.optional,onchange:a.onchange,individual:a.individual,searchable:"workflow"!==a.flavor})},_fieldDrilldown:function(a){return a.is_workflow?this._fieldText(a):new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,optional:a.optional,onchange:a.onchange})},_fieldText:function(c){if(c.options&&c.data)if(c.area=c.multiple,a.isEmpty(c.value))c.value=null;else if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}return new b.Input({id:"field-"+c.id,type:c.type,area:c.area,readonly:c.readonly,placeholder:c.placeholder,datalist:c.datalist,onchange:c.onchange})},_fieldSlider:function(a){return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,is_workflow:a.is_workflow,min:a.min,max:a.max,onchange:a.onchange})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:a.onchange})},_fieldColor:function(a){return new g({id:"field-"+a.id,onchange:a.onchange})},_fieldLibrary:function(a){return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:a.onchange})},_fieldFtp:function(a){return new e.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:a.onchange})},_fieldGenomeSpace:function(a){var b=this;return new f.View({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldUpload:function(a){return new b.Upload({id:"field-"+a.id,onchange:a.onchange})}})});
define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-select-content","mvc/ui/ui-select-library","mvc/ui/ui-select-ftp","mvc/ui/ui-select-genomespace","mvc/ui/ui-color-picker"],function(a,b,c,d,e,f,g){return Backbone.Model.extend({types:{text:"_fieldText",password:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",library_data:"_fieldLibrary",ftpfile:"_fieldFtp",upload:"_fieldUpload",genomespacefile:"_fieldGenomeSpace"},create:function(a){var b=this.types[a.type],c="function"==typeof this[b]?this[b].call(this,a):null;return c||(c=a.options?this._fieldSelect(a):this._fieldText(a),Galaxy.emit.debug("form-parameters::_addRow()","Auto matched field type ("+a.type+").")),void 0===a.value&&(a.value=null),c.value(a.value),c},_fieldData:function(a){return new c.View({id:"field-"+a.id,extensions:a.extensions,optional:a.optional,multiple:a.multiple,type:a.type,flavor:a.flavor,data:a.options,onchange:a.onchange})},_fieldSelect:function(a){if(a.is_workflow)return this._fieldText(a);"data_column"==a.type&&(a.error_text="Missing columns in referenced dataset.");var c=a.data;c||(c=[],_.each(a.options,function(a){c.push({label:a[0],value:a[1]})}));var d=b.Select;switch(a.display){case"checkboxes":d=b.Checkbox;break;case"radio":d=b.Radio;break;case"radiobutton":d=b.RadioButton}return new d.View({id:"field-"+a.id,data:c,error_text:a.error_text||"No options available",readonly:a.readonly,multiple:a.multiple,optional:a.optional,onchange:a.onchange,individual:a.individual,searchable:"workflow"!==a.flavor})},_fieldDrilldown:function(a){return a.is_workflow?this._fieldText(a):new b.Drilldown.View({id:"field-"+a.id,data:a.options,display:a.display,optional:a.optional,onchange:a.onchange})},_fieldText:function(c){if(c.options&&c.data)if(c.area=c.multiple,a.isEmpty(c.value))c.value=null;else if($.isArray(c.value)){var d="";for(var e in c.value){if(d+=String(c.value[e]),!c.multiple)break;d+="\n"}c.value=d}return new b.Input({id:"field-"+c.id,type:c.type,area:c.area,readonly:c.readonly,placeholder:c.placeholder,datalist:c.datalist,onchange:c.onchange})},_fieldSlider:function(a){return new b.Slider.View({id:"field-"+a.id,precise:"float"==a.type,is_workflow:a.is_workflow,min:a.min,max:a.max,onchange:a.onchange})},_fieldHidden:function(a){return new b.Hidden({id:"field-"+a.id,info:a.info})},_fieldBoolean:function(a){return new b.RadioButton.View({id:"field-"+a.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:a.onchange})},_fieldColor:function(a){return new g({id:"field-"+a.id,onchange:a.onchange})},_fieldLibrary:function(a){return new d.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:a.onchange})},_fieldFtp:function(a){return new e.View({id:"field-"+a.id,optional:a.optional,multiple:a.multiple,onchange:a.onchange})},_fieldGenomeSpace:function(a){var b=this;return new f.View({id:"field-"+a.id,onchange:function(){b.app.trigger("change")}})},_fieldUpload:function(a){return new b.Upload({id:"field-"+a.id,onchange:a.onchange})}})});
//# sourceMappingURL=../../../maps/mvc/form/form-parameters.js.map
+1 -1
View File
@@ -1,2 +1,2 @@
define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(a){this.model=new Backbone.Model({initial_errors:!1,cls:"ui-portlet-limited",icon:null,always_refresh:!0,status:"warning",onchange:function(){}}).set(a),this.setElement("<div/>"),this.render()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[c];if(d&&d.options&&!_.isEqual(d.options,a.options)){d.options=a.options;var e=b.field_list[c];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in a.options){var h=a.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change"),Galaxy.emit.debug("form-view::update()","Updating options for "+c)}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&c[a?"wait":"unwait"]()}},highlight:function(a,b,c){var d=this.element_list[a];if(d&&(d.error(b||"Please verify this parameter."),this.portlet.expand(),this.trigger("expand",a),!c)){var e=this.$el.parents().filter(function(){return-1!=["auto","scroll"].indexOf($(this).css("overflow"))}).first();e.animate({scrollTop:e.scrollTop()+d.$el.offset().top-120},500)}},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},render:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e.Manager(this),this._renderForm(),this.data.create(),this.model.get("initial_errors")&&this.errors(this.model.attributes);var b=this.data.checksum();return this.on("change",function(c){var d=a.input_list[c];if(!d||d.refresh_on_change||a.model.get("always_refresh")){var e=a.data.checksum();e!=b&&(b=e,a.model.get("onchange")())}}),this.on("reset",function(){_.each(a.element_list,function(a){a.reset()})}),this},_renderForm:function(){$(".tooltip").remove();var a=this.model.attributes;this.message=new c.UnescapedMessage,this.section=new d.View(this,{inputs:a.inputs}),this.portlet=new b.View({icon:a.icon,title:a.title,cls:a.cls,operations:a.operations,buttons:a.buttons,collapsible:a.collapsible,collapsed:a.collapsed,onchange_title:a.onchange_title}),this.portlet.append(this.message.$el),this.portlet.append(this.section.$el),this.$el.empty(),a.inputs&&this.$el.append(this.portlet.$el),a.message&&this.message.update({persistent:!0,status:a.status,message:a.message}),Galaxy.emit.debug("form-view::initialize()","Completed")}})});
define(["utils/utils","mvc/ui/ui-portlet","mvc/ui/ui-misc","mvc/form/form-section","mvc/form/form-data"],function(a,b,c,d,e){return Backbone.View.extend({initialize:function(a){this.model=new Backbone.Model({initial_errors:!1,cls:"ui-portlet-limited",icon:null,always_refresh:!0,status:"warning",hide_operations:!1,onchange:function(){}}).set(a),this.setElement("<div/>"),this.render()},update:function(a){var b=this;this.data.matchModel(a,function(a,c){var d=b.input_list[c];if(d&&d.options&&!_.isEqual(d.options,a.options)){d.options=a.options;var e=b.field_list[c];if(e.update){var f=[];if(-1!=["data","data_collection","drill_down"].indexOf(d.type))f=d.options;else for(var g in a.options){var h=a.options[g];h.length>2&&f.push({label:h[0],value:h[1]})}e.update(f),e.trigger("change"),Galaxy.emit.debug("form-view::update()","Updating options for "+c)}}})},wait:function(a){for(var b in this.input_list){var c=this.field_list[b],d=this.input_list[b];d.is_dynamic&&c.wait&&c.unwait&&c[a?"wait":"unwait"]()}},highlight:function(a,b,c){var d=this.element_list[a];if(d&&(d.error(b||"Please verify this parameter."),this.portlet.expand(),this.trigger("expand",a),!c)){var e=this.$el.parents().filter(function(){return-1!=["auto","scroll"].indexOf($(this).css("overflow"))}).first();e.animate({scrollTop:e.scrollTop()+d.$el.offset().top-120},500)}},errors:function(a){if(this.trigger("reset"),a&&a.errors){var b=this.data.matchResponse(a.errors);for(var c in this.element_list){{this.element_list[c]}b[c]&&this.highlight(c,b[c],!0)}}},render:function(){var a=this;this.off("change"),this.off("reset"),this.field_list={},this.input_list={},this.element_list={},this.data=new e.Manager(this),this._renderForm(),this.data.create(),this.model.get("initial_errors")&&this.errors(this.model.attributes);var b=this.data.checksum();return this.on("change",function(c){var d=a.input_list[c];if(!d||d.refresh_on_change||a.model.get("always_refresh")){var e=a.data.checksum();e!=b&&(b=e,a.model.get("onchange")())}}),this.on("reset",function(){_.each(a.element_list,function(a){a.reset()})}),this},_renderForm:function(){$(".tooltip").remove();var a=this.model.attributes;this.message=new c.UnescapedMessage,this.section=new d.View(this,{inputs:a.inputs}),this.portlet=new b.View({icon:a.icon,title:a.title,cls:a.cls,operations:!a.hide_operations&&a.operations,buttons:a.buttons,collapsible:a.collapsible,collapsed:a.collapsed,onchange_title:a.onchange_title}),this.portlet.append(this.message.$el),this.portlet.append(this.section.$el),this.$el.empty(),a.inputs&&this.$el.append(this.portlet.$el),a.message&&this.message.update({persistent:!0,status:a.status,message:a.message}),Galaxy.emit.debug("form-view::initialize()","Completed")}})});
//# sourceMappingURL=../../../maps/mvc/form/form-view.js.map
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long