Slight refactoring, also name->hash for recommended tags.

This commit is contained in:
Dannon Baker
2017-04-26 14:53:07 -04:00
parent f3dbf55aad
commit 9f36bea7f1
6 changed files with 29 additions and 23 deletions
+22 -16
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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