diff --git a/client/galaxy/scripts/mvc/tours.js b/client/galaxy/scripts/mvc/tours.js
index d57cc3f8e31..93266792c25 100644
--- a/client/galaxy/scripts/mvc/tours.js
+++ b/client/galaxy/scripts/mvc/tours.js
@@ -33,7 +33,7 @@ Select any tour to get started (and remember, you can click 'End Tour' at any ti
- <%- tour.attributes.description || \"No description given.\" %>
<% _.each(tour.attributes.tags, function(tag) { %>
- <%- tag %>
+ <%- tag.charAt(0).toUpperCase() + tag.slice(1) %>
<% }); %>
@@ -143,6 +143,7 @@ Select any tour to get started (and remember, you can click 'End Tour' at any ti
tourtags.Untagged.tours.push(tour);
} else {
_.each(tour.attributes.tags, function(tag) {
+ tag = tag.charAt(0).toUpperCase() + tag.slice(1);
if (tourtags[tag] === undefined) {
tourtags[tag] = { name: tag, tours: [] };
}
diff --git a/static/maps/mvc/tours.js.map b/static/maps/mvc/tours.js.map
index 2e2e8f6bc5c..5f6faf76c37 100644
--- a/static/maps/mvc/tours.js.map
+++ b/static/maps/mvc/tours.js.map
@@ -1 +1 @@
-{"version":3,"sources":["mvc/tours.js"],"names":["define","BootstrapTour","gxy_root","Galaxy","root","$","storage","window","sessionStorage","onEnd","removeItem","delay","orphan","hooked_tour_from_data","data","_","each","steps","step","Backbone","TourItem","preclick","click","postclick","tourdata","setItem","extend","tour","textinsert","onShown","val","trigger","self","render","urlRoot","console","url","model","tour_id","tpl","template","tourpage_template","getJSON","attributes","JSON","stringify","tourtags","tour_opts","init","goTo","restart","ToursView","tours","tourtagorder","on","this","e","preventDefault","giveTour","Tours","fetch","success","elem","display","error","toggleClass","models","tags","undefined","Untagged","tag","name","push","Object","keys","sort","$el","html","target","attr","hasClass","css"],"mappings":"aAKAA,QAAQ,uBAAwB,SAASC,GACrC,IAAIC,EAA6B,oBAAXC,OAAyB,IAAMA,OAAOC,KAsE5CC,GAGHC,QAJDC,OAAAC,eAKHC,MAAA,WA1BLD,eAAAE,WAAA,qBADJC,MAAA,IAHIC,QAAQ,GAmCZC,EAAA,SAAAC,GAoCQ,OAnEJC,EAAEC,KAAKF,EAAKG,MAAO,SAASC,GAmCpBC,EAAAA,WACHjB,EAAAA,OAAW,WACTkB,EAAAA,KAAAA,EAAAA,SAAAA,SAAAA,GAhCSf,EAAEgB,GAAUC,YAsCxBJ,EAAAK,YACIC,EAAAA,OAAWX,WACfL,EAAAA,KAAeiB,EAAAA,UAAQ,SAAAF,GAEZlB,EAAAkB,GACLG,YAQNC,EAAAC,aAhBRV,EAAAW,QAAA,WAqBgBV,EAAAA,EAAAA,SAAqBW,IAAAZ,EAAAU,YAEjCG,QAAA,cAIIjB,GAGQkB,EAAAA,SAAKC,MAALP,QACHQ,QAHYhC,EAAA,cAMTiC,EAAAA,SAAAA,WAAcT,QACjBU,IAAAlC,EAAA,YAPYmC,MAAjBjB,IAWJa,EAAQ,SAAAK,GACJ,IAAAF,EAAIG,EAAQC,aAASC,EAtCzBpC,EAAEqC,QAAQN,EAAK,SAAStB,GAyCpBC,IAAEC,EAAUqB,EAAuBV,GAC/BnB,eAASmC,QAAL,mBAA+BC,KAAAC,UAAA/B,IAE3BgC,IAAAA,EAAAA,IAAAA,KACH/B,EAAAW,QAEET,MAAAO,EAAAP,OAEC8B,IAIHpB,EAAAqB,OACJrB,EAAAsB,KAAA,GACJtB,EAdDuB,aA6CR,OACIC,UA7BIhC,SAEQoB,KAAIb,QACA0B,MAAAA,QAEAC,WAAAA,WAHA,IAMPC,EAAGC,KACAC,KAAAA,WAAEC,UACFC,KAAAA,MAASrD,IAAEsD,EACdJ,KAXLlB,MAYQuB,OACAC,QAAIC,WACAC,EAAAA,UA1CRC,MAAO,WA8CHF,QAAKG,MAAY,8BAKjB5D,OAAAA,WACH,IAxBLkC,EAAAxB,EAAAyB,SApJJtC,mwCA6GJ4C,KAsBQ/B,EAAEC,KAAKuC,KAAKlB,MAAM6B,OAAQ,SAASvC,GA6CpC,OAAAA,EAAAgB,WAAAwB,WAAAC,IACQjB,EADRkB,WAEHxD,EAAuBA,UAAAA,KAFpB,WAAAuC,WAIOM,EAAAA,SAAAA,MAAAA,KAAAA,IArLlB3C,EAAAC,KAAAW,EAAAgB,WAAAwB,KAAA,SAAAG,QA4I8CF,IAAlBtB,EAASwB,KACTxB,EAASwB,IAASC,KAAMD,EAAKlB,WAEjCN,EAASwB,GAAKlB,MAAMoB,KAAK7C,OAIrC,IAAI0B,EAAeoB,OAAOC,KAAK5B,GAAU6B,OAEzCpB,KAAKqB,IACAC,KACGtC,GACIa,MAAOG,KAAKlB,MAAM6B,OAClBpB,SAAUA,EACVO,aAAcA,KAGrBC,GAAG,QAAS,YAAa,SAASE,GAC/BA,EAAEC,iBACFC,EAASrD,EAAEkD,MAAMzC,KAAK,cAEzBwC,GAAG,QAAS,uBAAwB,SAASE,GAC1C,IAAIM,EAAOzD,EAAEmD,EAAEsB,QACXf,EAAU,QACVO,EAAMR,EAAKiB,KAAK,uBAEpBjB,EAAKG,YAAY,eACjBH,EAAKG,YAAY,iBAEbH,EAAKkB,SAAS,mBACdjB,EAAU,QAEd1D,EAAE,YAAciE,EAAM,MAAMW,KAAMlB,QAASA,SAOvDlD,sBAAuBA,EACvBkC,UAAWA,EACXW,SAAUA","file":"../../scripts/mvc/tours.js","sourcesContent":["/**\n * This is the primary galaxy tours definition, currently only used for\n * rendering a tour menu.\n */\n\ndefine([\"libs/bootstrap-tour\"], function(BootstrapTour) {\n var gxy_root = typeof Galaxy === \"undefined\" ? \"/\" : Galaxy.root;\n\n var tourpage_template = `
Galaxy Tours
\n
This page presents a list of interactive tours available on this Galaxy server.\nSelect any tour to get started (and remember, you can click 'End Tour' at any time).
\n<% }); %>`;\n\n var tour_opts = {\n storage: window.sessionStorage,\n onEnd: function() {\n sessionStorage.removeItem(\"activeGalaxyTour\");\n },\n delay: 150, // Attempts to make it look natural\n orphan: true\n };\n\n var hooked_tour_from_data = function(data) {\n _.each(data.steps, function(step) {\n if (step.preclick) {\n step.onShow = function() {\n _.each(step.preclick, function(preclick) {\n // TODO: click delay between clicks\n $(preclick).click();\n });\n };\n }\n if (step.postclick) {\n step.onHide = function() {\n _.each(step.postclick, function(postclick) {\n // TODO: click delay between clicks\n $(postclick).click();\n });\n };\n }\n if (step.textinsert) {\n // Have to manually trigger a change here, for some\n // elements which have additional logic, like the\n // upload input box\n step.onShown = function() {\n $(step.element)\n .val(step.textinsert)\n .trigger(\"change\");\n };\n }\n });\n return data;\n };\n\n var TourItem = Backbone.Model.extend({\n urlRoot: gxy_root + \"api/tours\"\n });\n\n var Tours = Backbone.Collection.extend({\n url: gxy_root + \"api/tours\",\n model: TourItem\n });\n\n var giveTour = function(tour_id) {\n var url = gxy_root + \"api/tours/\" + tour_id;\n $.getJSON(url, function(data) {\n // Set hooks for additional click and data entry actions.\n var tourdata = hooked_tour_from_data(data);\n sessionStorage.setItem(\"activeGalaxyTour\", JSON.stringify(data));\n // Store tour steps in sessionStorage to easily persist w/o hackery.\n var tour = new Tour(\n _.extend(\n {\n steps: tourdata.steps\n },\n tour_opts\n )\n );\n // Always clean restart, since this is a new, explicit giveTour execution.\n tour.init();\n tour.goTo(0);\n tour.restart();\n });\n };\n var ToursView = Backbone.View.extend({\n title: \"Tours\",\n // initialize\n initialize: function() {\n var self = this;\n this.setElement(\"\");\n this.model = new Tours();\n this.model.fetch({\n success: function() {\n self.render();\n },\n error: function() {\n // Do something.\n console.error(\"Failed to fetch tours.\");\n }\n });\n },\n\n render: function() {\n var tpl = _.template(tourpage_template);\n\n var tourtags = {};\n _.each(this.model.models, function(tour) {\n if (tour.attributes.tags === null) {\n if (tourtags.Untagged === undefined) {\n tourtags.Untagged = { name: \"Untagged\", tours: [] };\n }\n tourtags.Untagged.tours.push(tour);\n } else {\n _.each(tour.attributes.tags, function(tag) {\n if (tourtags[tag] === undefined) {\n tourtags[tag] = { name: tag, tours: [] };\n }\n tourtags[tag].tours.push(tour);\n });\n }\n });\n var tourtagorder = Object.keys(tourtags).sort();\n\n this.$el\n .html(\n tpl({\n tours: this.model.models,\n tourtags: tourtags,\n tourtagorder: tourtagorder\n })\n )\n .on(\"click\", \".tourItem\", function(e) {\n e.preventDefault();\n giveTour($(this).data(\"tour.id\"));\n })\n .on(\"click\", \".tag-selector-button\", function(e) {\n var elem = $(e.target);\n var display = \"block\";\n var tag = elem.attr(\"tag-selector-button\");\n\n elem.toggleClass(\"btn-primary\");\n elem.toggleClass(\"btn-secondary\");\n\n if (elem.hasClass(\"btn-secondary\")) {\n display = \"none\";\n }\n $(\"div[tag='\" + tag + \"']\").css({ display: display });\n });\n }\n });\n\n return {\n ToursView: ToursView,\n hooked_tour_from_data: hooked_tour_from_data,\n tour_opts: tour_opts,\n giveTour: giveTour\n };\n});\n"]}
\ No newline at end of file
+{"version":3,"sources":["mvc/tours.js"],"names":["define","BootstrapTour","gxy_root","Galaxy","root","$","storage","window","sessionStorage","onEnd","removeItem","delay","orphan","hooked_tour_from_data","data","_","each","steps","step","Backbone","TourItem","preclick","click","postclick","tourdata","setItem","extend","tour","textinsert","onShown","val","trigger","self","render","urlRoot","console","url","model","tour_id","tpl","template","tourpage_template","getJSON","attributes","JSON","stringify","tourtags","tag","goTo","restart","ToursView","View","title","tourtagorder","this","on","e","preventDefault","giveTour","elem","error","toggleClass","models","tags","undefined","Untagged","name","tours","tour_opts","push","charAt","toUpperCase","slice","Object","keys","sort","$el","html","target","display","attr","hasClass","css"],"mappings":"aAKAA,QAAQ,uBAAwB,SAASC,GACrC,IAAIC,EAA6B,oBAAXC,OAAyB,IAAMA,OAAOC,KAsE5CC,GAGHC,QAJDC,OAAAC,eAKHC,MAAA,WA1BLD,eAAAE,WAAA,qBADJC,MAAA,IAHIC,QAAQ,GAmCZC,EAAA,SAAAC,GAoCQ,OAnEJC,EAAEC,KAAKF,EAAKG,MAAO,SAASC,GAmCpBC,EAAAA,WACHjB,EAAAA,OAAW,WACTkB,EAAAA,KAAAA,EAAAA,SAAAA,SAAAA,GAhCSf,EAAEgB,GAAUC,YAsCxBJ,EAAAK,YACIC,EAAAA,OAAWX,WACfL,EAAAA,KAAeiB,EAAAA,UAAQ,SAAAF,GAEZlB,EAAAkB,GACLG,YAQNC,EAAAC,aAhBRV,EAAAW,QAAA,WAqBgBV,EAAAA,EAAAA,SAAqBW,IAAAZ,EAAAU,YAEjCG,QAAA,cAIIjB,GAGQkB,EAAAA,SAAKC,MAALP,QACHQ,QAHYhC,EAAA,cAMTiC,EAAAA,SAAAA,WAAcT,QACjBU,IAAAlC,EAAA,YAPYmC,MAAjBjB,IAWJa,EAAQ,SAAAK,GACJ,IAAAF,EAAIG,EAAQC,aAASC,EAtCzBpC,EAAEqC,QAAQN,EAAK,SAAStB,GAyCpBC,IAAEC,EAAUqB,EAAuBV,GAC/BnB,eAASmC,QAAL,mBAA+BC,KAAAC,UAAA/B,IAE3BgC,IAAAA,EAAAA,IAAAA,KACH/B,EAAAW,QAEET,MAAAO,EAAAP,OAEC8B,IAIAD,EAAAA,OACHnB,EAAAqB,KAND,GAOHrB,EAAAsB,aAgCb,OACIC,UArEY/B,SAASgC,KAAKzB,QAwCtB0B,MAAA,QAIYN,WAAAA,WACAO,IAAAA,EAAAA,KAHAC,KAMPC,WAAY,UACTC,KAAAA,MAAEC,IAAAA,EACFC,KAAAA,MAAAA,OAEHH,QAZL,WAaYI,EAAAA,UAEJC,MAAIb,WAEJY,QAAKE,MAAY,8BAKhB5B,OAAA,WACD5B,IAAAA,EAAEU,EAAAyB,SA5KdtC,0yCA8KC4C,KAjEL/B,EAAAC,KAAAsC,KAAAjB,MAAAyB,OAAA,SAAAnC,GAuByC,OAAzBA,EAAKgB,WAAWoB,WA6CzBC,IAAAlB,EAAAmB,WACQf,EADRe,UAAAC,KAAA,WAAAC,WAGQC,EAHRH,SAAAE,MAAAE,KAAA1C,IAAPZ,EAAAC,KAAAW,EAAAgB,WAAAoB,KAAA,SAAAhB,GAlLJA,EAAAA,EAAAuB,OAAA,GAAAC,cAAAxB,EAAAyB,MAAA,QA6I8CR,IAAlBlB,EAASC,KACTD,EAASC,IAASmB,KAAMnB,EAAKoB,WAEjCrB,EAASC,GAAKoB,MAAME,KAAK1C,OAIrC,IAAI0B,EAAeoB,OAAOC,KAAK5B,GAAU6B,OAEzCrB,KAAKsB,IACAC,KACGtC,GACI4B,MAAOb,KAAKjB,MAAMyB,OAClBhB,SAAUA,EACVO,aAAcA,KAGrBE,GAAG,QAAS,YAAa,SAASC,GAC/BA,EAAEC,iBACFC,EAASrD,EAAEiD,MAAMxC,KAAK,cAEzByC,GAAG,QAAS,uBAAwB,SAASC,GAC1C,IAAIG,EAAOtD,EAAEmD,EAAEsB,QACXC,EAAU,QACVhC,EAAMY,EAAKqB,KAAK,uBAEpBrB,EAAKE,YAAY,eACjBF,EAAKE,YAAY,iBAEbF,EAAKsB,SAAS,mBACdF,EAAU,QAEd1E,EAAE,YAAc0C,EAAM,MAAMmC,KAAMH,QAASA,SAOvDlE,sBAAuBA,EACvBuD,UAAWA,EACXV,SAAUA","file":"../../scripts/mvc/tours.js","sourcesContent":["/**\n * This is the primary galaxy tours definition, currently only used for\n * rendering a tour menu.\n */\n\ndefine([\"libs/bootstrap-tour\"], function(BootstrapTour) {\n var gxy_root = typeof Galaxy === \"undefined\" ? \"/\" : Galaxy.root;\n\n var tourpage_template = `
Galaxy Tours
\n
This page presents a list of interactive tours available on this Galaxy server.\nSelect any tour to get started (and remember, you can click 'End Tour' at any time).