mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Slight refactoring, also name->hash for recommended tags.
This commit is contained in:
@@ -44,6 +44,20 @@ var TagsEditor = Backbone.View
|
||||
return this;
|
||||
},
|
||||
|
||||
_hashToName: function(tag){
|
||||
if (tag.startsWith('#')){
|
||||
return 'name:' + tag.slice(1);
|
||||
}
|
||||
return tag;
|
||||
},
|
||||
|
||||
_nameToHash: function(tag){
|
||||
if (tag.startsWith('name:')){
|
||||
tag = '#' + tag.slice(5);
|
||||
}
|
||||
return tag;
|
||||
},
|
||||
|
||||
/** @returns {String} the html text used to build the view's DOM */
|
||||
_template : function(){
|
||||
return [
|
||||
@@ -55,15 +69,13 @@ var TagsEditor = Backbone.View
|
||||
|
||||
/** @returns {String} the sorted, comma-separated tags from the model */
|
||||
tagsToCSV : function(){
|
||||
var self = this;
|
||||
var tagsArray = this.model.get( 'tags' );
|
||||
if( !_.isArray( tagsArray ) || _.isEmpty( tagsArray ) ){
|
||||
return '';
|
||||
}
|
||||
return tagsArray.map( function( tag ){
|
||||
if (tag.startsWith('name:')){
|
||||
tag = '#' + tag.slice(5);
|
||||
}
|
||||
return _.escape( tag );
|
||||
return _.escape( self._nameToHash( tag ) );
|
||||
}).sort().join( ',' );
|
||||
},
|
||||
|
||||
@@ -75,29 +87,23 @@ var TagsEditor = Backbone.View
|
||||
/** @returns {String[]} all tags used by the current user */
|
||||
_getTagsUsed : function(){
|
||||
//TODO: global
|
||||
return Galaxy.user.get( 'tags_used' );
|
||||
var self = this;
|
||||
return _.map(Galaxy.user.get( 'tags_used' ), self._nameToHash);
|
||||
},
|
||||
|
||||
/** set up any event listeners on the view's DOM (mostly handled by select2) */
|
||||
_setUpBehaviors : function(){
|
||||
var view = this;
|
||||
var self = this;
|
||||
this.$input().on( 'change', function( event ){
|
||||
// Modify any 'hashtag' 'nametags'
|
||||
event.val = _.map(event.val, function(k){
|
||||
if (k.startsWith("#")){
|
||||
return "name:" + k.slice(1);
|
||||
}
|
||||
else {
|
||||
return k;
|
||||
}
|
||||
});
|
||||
event.val = _.map(event.val, self._hashToName);
|
||||
// save the model's tags in either remove or added event
|
||||
view.model.save({ tags: event.val });
|
||||
self.model.save({ tags: event.val });
|
||||
// if it's new, add the tag to the users tags
|
||||
if( event.added ){
|
||||
//??: solve weird behavior in FF on test.galaxyproject.org where
|
||||
// event.added.text is string object: 'String{ 0="o", 1="n", 2="e" }'
|
||||
view._addNewTagToTagsUsed( event.added.text + '' );
|
||||
self._addNewTagToTagsUsed( event.added.text + '' );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"tag.js","sources":["../../src/mvc/tag.js"],"names":["define","baseMVC","_l","TagsEditor","Backbone","View","extend","LoggableMixin","HiddenUntilActivatedViewMixin","tagName","className","initialize","options","this","label","usePrompt","hiddenUntilActivated","$activator","render","self","$el","html","_template","$input","select2","placeholder","width","tags","_getTagsUsed","_setUpBehaviors","tagsToCSV","join","tagsArray","model","get","_","isArray","isEmpty","map","tag","startsWith","slice","escape","sort","find","Galaxy","user","view","on","event","val","k","save","added","_addNewTagToTagsUsed","text","newTag","tagsUsed","contains","push","set","remove","off","stopListening","prototype","call","toString"],"mappings":"AAAAA,QACI,eACA,sBACD,SAAUC,EAASC,GAMtB,GAAIC,GAAaC,SAASC,KACjBC,OAAQL,EAAQM,eAChBD,OAAQL,EAAQO,+BAAgCF,QAErDG,QAAc,MACdC,UAAc,eAGdC,WAAa,SAAUC,GAIfC,KAAKC,MADLF,EAAQG,aAAc,EACT,GAEA,yBAA2Bb,EAAI,QAAW,WAE3DW,KAAKG,qBAAsBJ,EAAQK,WAAYL,IAInDM,OAAS,WACL,GAAIC,GAAON,IAaX,OAZAA,MAAKO,IAAIC,KAAMR,KAAKS,aAEpBT,KAAKU,SAASC,SACVC,YAAc,WACdC,MAAc,OACdC,KAAO,WAEH,MAAOR,GAAKS,kBAIpBf,KAAKgB,kBACEhB,MAIXS,UAAY,WACR,OACIT,KAAKC,MAEL,oCAAqCD,KAAKiB,YAAa,QACzDC,KAAM,KAIZD,UAAY,WACR,GAAIE,GAAYnB,KAAKoB,MAAMC,IAAK,OAChC,QAAKC,EAAEC,QAASJ,IAAeG,EAAEE,QAASL,GAC/B,GAEJA,EAAUM,IAAK,SAAUC,GAI5B,MAHIA,GAAIC,WAAW,WACfD,EAAM,IAAMA,EAAIE,MAAM,IAEnBN,EAAEO,OAAQH,KAClBI,OAAOZ,KAAM,MAIpBR,OAAS,WACL,MAAOV,MAAKO,IAAIwB,KAAM,qBAI1BhB,aAAe,WAEX,MAAOiB,QAAOC,KAAKZ,IAAK,cAI5BL,gBAAkB,WACd,GAAIkB,GAAOlC,IACXA,MAAKU,SAASyB,GAAI,SAAU,SAAUC,GAElCA,EAAMC,IAAMf,EAAEG,IAAIW,EAAMC,IAAK,SAASC,GAClC,MAAIA,GAAEX,WAAW,KACN,QAAUW,EAAEV,MAAM,GAGlBU,IAIfJ,EAAKd,MAAMmB,MAAOzB,KAAMsB,EAAMC,MAE1BD,EAAMI,OAGNN,EAAKO,qBAAsBL,EAAMI,MAAME,KAAO,OAQ1DD,qBAAuB,SAAUE,GAE7B,GAAIC,GAAWZ,OAAOC,KAAKZ,IAAK,YAC3BC,GAAEuB,SAAUD,EAAUD,KACvBC,EAASE,KAAMH,GACfC,EAASd,OACTE,OAAOC,KAAKc,IAAK,YAAaH,KAKtCI,OAAS,WACLhD,KAAKU,OAAOuC,MACZjD,KAAKkD,cAAelD,KAAKoB,OACzB7B,SAASC,KAAK2D,UAAUH,OAAOI,KAAMpD,OAIzCqD,SAAW,WAAY,OAAS,cAAerD,KAAKoB,MAAQ,GAAI,KAAMF,KAAK,MAI/E,QACI5B,WAAaA"}
|
||||
{"version":3,"file":"tag.js","sources":["../../src/mvc/tag.js"],"names":["define","baseMVC","_l","TagsEditor","Backbone","View","extend","LoggableMixin","HiddenUntilActivatedViewMixin","tagName","className","initialize","options","this","label","usePrompt","hiddenUntilActivated","$activator","render","self","$el","html","_template","$input","select2","placeholder","width","tags","_getTagsUsed","_setUpBehaviors","_hashToName","tag","startsWith","slice","_nameToHash","tagsToCSV","join","tagsArray","model","get","_","isArray","isEmpty","map","escape","sort","find","Galaxy","user","on","event","val","save","added","_addNewTagToTagsUsed","text","newTag","tagsUsed","contains","push","set","remove","off","stopListening","prototype","call","toString"],"mappings":"AAAAA,QACI,eACA,sBACD,SAAUC,EAASC,GAMtB,GAAIC,GAAaC,SAASC,KACjBC,OAAQL,EAAQM,eAChBD,OAAQL,EAAQO,+BAAgCF,QAErDG,QAAc,MACdC,UAAc,eAGdC,WAAa,SAAUC,GAIfC,KAAKC,MADLF,EAAQG,aAAc,EACT,GAEA,yBAA2Bb,EAAI,QAAW,WAE3DW,KAAKG,qBAAsBJ,EAAQK,WAAYL,IAInDM,OAAS,WACL,GAAIC,GAAON,IAaX,OAZAA,MAAKO,IAAIC,KAAMR,KAAKS,aAEpBT,KAAKU,SAASC,SACVC,YAAc,WACdC,MAAc,OACdC,KAAO,WAEH,MAAOR,GAAKS,kBAIpBf,KAAKgB,kBACEhB,MAGXiB,YAAa,SAASC,GAClB,MAAIA,GAAIC,WAAW,KACR,QAAUD,EAAIE,MAAM,GAExBF,GAGXG,YAAa,SAASH,GAIlB,MAHIA,GAAIC,WAAW,WACfD,EAAM,IAAMA,EAAIE,MAAM,IAEnBF,GAIXT,UAAY,WACR,OACIT,KAAKC,MAEL,oCAAqCD,KAAKsB,YAAa,QACzDC,KAAM,KAIZD,UAAY,WACR,GAAIhB,GAAON,KACPwB,EAAYxB,KAAKyB,MAAMC,IAAK,OAChC,QAAKC,EAAEC,QAASJ,IAAeG,EAAEE,QAASL,GAC/B,GAEJA,EAAUM,IAAK,SAAUZ,GAC5B,MAAOS,GAAEI,OAAQzB,EAAKe,YAAaH,MACpCc,OAAOT,KAAM,MAIpBb,OAAS,WACL,MAAOV,MAAKO,IAAI0B,KAAM,qBAI1BlB,aAAe,WAEX,GAAIT,GAAON,IACX,OAAO2B,GAAEG,IAAII,OAAOC,KAAKT,IAAK,aAAepB,EAAKe,cAItDL,gBAAkB,WACd,GAAIV,GAAON,IACXA,MAAKU,SAAS0B,GAAI,SAAU,SAAUC,GAElCA,EAAMC,IAAMX,EAAEG,IAAIO,EAAMC,IAAKhC,EAAKW,aAElCX,EAAKmB,MAAMc,MAAOzB,KAAMuB,EAAMC,MAE1BD,EAAMG,OAGNlC,EAAKmC,qBAAsBJ,EAAMG,MAAME,KAAO,OAQ1DD,qBAAuB,SAAUE,GAE7B,GAAIC,GAAWV,OAAOC,KAAKT,IAAK,YAC3BC,GAAEkB,SAAUD,EAAUD,KACvBC,EAASE,KAAMH,GACfC,EAASZ,OACTE,OAAOC,KAAKY,IAAK,YAAaH,KAKtCI,OAAS,WACLhD,KAAKU,OAAOuC,MACZjD,KAAKkD,cAAelD,KAAKyB,OACzBlC,SAASC,KAAK2D,UAAUH,OAAOI,KAAMpD,OAIzCqD,SAAW,WAAY,OAAS,cAAerD,KAAKyB,MAAQ,GAAI,KAAMF,KAAK,MAI/E,QACIjC,WAAaA"}
|
||||
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(["mvc/base-mvc","utils/localization"],function(a,b){var c=Backbone.View.extend(a.LoggableMixin).extend(a.HiddenUntilActivatedViewMixin).extend({tagName:"div",className:"tags-display",initialize:function(a){this.label=a.usePrompt===!1?"":'<label class="prompt">'+b("Tags")+"</label>",this.hiddenUntilActivated(a.$activator,a)},render:function(){var a=this;return this.$el.html(this._template()),this.$input().select2({placeholder:"Add tags",width:"100%",tags:function(){return a._getTagsUsed()}}),this._setUpBehaviors(),this},_template:function(){return[this.label,'<input class="tags-input" value="',this.tagsToCSV(),'" />'].join("")},tagsToCSV:function(){var a=this.model.get("tags");return!_.isArray(a)||_.isEmpty(a)?"":a.map(function(a){return a.startsWith("name:")&&(a="#"+a.slice(5)),_.escape(a)}).sort().join(",")},$input:function(){return this.$el.find("input.tags-input")},_getTagsUsed:function(){return Galaxy.user.get("tags_used")},_setUpBehaviors:function(){var a=this;this.$input().on("change",function(b){b.val=_.map(b.val,function(a){return a.startsWith("#")?"name:"+a.slice(1):a}),a.model.save({tags:b.val}),b.added&&a._addNewTagToTagsUsed(b.added.text+"")})},_addNewTagToTagsUsed:function(a){var b=Galaxy.user.get("tags_used");_.contains(b,a)||(b.push(a),b.sort(),Galaxy.user.set("tags_used",b))},remove:function(){this.$input.off(),this.stopListening(this.model),Backbone.View.prototype.remove.call(this)},toString:function(){return["TagsEditor(",this.model+"",")"].join("")}});return{TagsEditor:c}});
|
||||
define(["mvc/base-mvc","utils/localization"],function(a,b){var c=Backbone.View.extend(a.LoggableMixin).extend(a.HiddenUntilActivatedViewMixin).extend({tagName:"div",className:"tags-display",initialize:function(a){this.label=a.usePrompt===!1?"":'<label class="prompt">'+b("Tags")+"</label>",this.hiddenUntilActivated(a.$activator,a)},render:function(){var a=this;return this.$el.html(this._template()),this.$input().select2({placeholder:"Add tags",width:"100%",tags:function(){return a._getTagsUsed()}}),this._setUpBehaviors(),this},_hashToName:function(a){return a.startsWith("#")?"name:"+a.slice(1):a},_nameToHash:function(a){return a.startsWith("name:")&&(a="#"+a.slice(5)),a},_template:function(){return[this.label,'<input class="tags-input" value="',this.tagsToCSV(),'" />'].join("")},tagsToCSV:function(){var a=this,b=this.model.get("tags");return!_.isArray(b)||_.isEmpty(b)?"":b.map(function(b){return _.escape(a._nameToHash(b))}).sort().join(",")},$input:function(){return this.$el.find("input.tags-input")},_getTagsUsed:function(){var a=this;return _.map(Galaxy.user.get("tags_used"),a._nameToHash)},_setUpBehaviors:function(){var a=this;this.$input().on("change",function(b){b.val=_.map(b.val,a._hashToName),a.model.save({tags:b.val}),b.added&&a._addNewTagToTagsUsed(b.added.text+"")})},_addNewTagToTagsUsed:function(a){var b=Galaxy.user.get("tags_used");_.contains(b,a)||(b.push(a),b.sort(),Galaxy.user.set("tags_used",b))},remove:function(){this.$input.off(),this.stopListening(this.model),Backbone.View.prototype.remove.call(this)},toString:function(){return["TagsEditor(",this.model+"",")"].join("")}});return{TagsEditor:c}});
|
||||
//# sourceMappingURL=../../maps/mvc/tag.js.map
|
||||
Reference in New Issue
Block a user