From 3adeef4dee766ff287f9df871341ad5a3724890a Mon Sep 17 00:00:00 2001 From: Seth Call Date: Fri, 4 Dec 2015 09:27:28 -0600 Subject: [PATCH] * csv/pdf links in place in the UI --- web/app/assets/javascripts/ga.js | 17 ++++++++++++-- .../JamTrackCsvLink.js.jsx.coffee | 15 ++++++++++++ .../JamTrackLandingScreen.js.jsx.coffee | 4 ++++ .../JamTrackPdfLink.js.jsx.coffee | 15 ++++++++++++ .../JamTrackSearchScreen.js.jsx.coffee | 1 + .../client/jamtrackSearch.css.scss | 23 +++++++++++++++++++ .../client/jamtrack_landing.css.scss | 6 ++++- web/app/views/clients/_web_filter.html.haml | 14 ++++++++--- web/lib/tasks/jam_tracks.rake | 4 +++- 9 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 web/app/assets/javascripts/react-components/JamTrackCsvLink.js.jsx.coffee create mode 100644 web/app/assets/javascripts/react-components/JamTrackPdfLink.js.jsx.coffee diff --git a/web/app/assets/javascripts/ga.js b/web/app/assets/javascripts/ga.js index b26cf777a..0c47505ff 100644 --- a/web/app/assets/javascripts/ga.js +++ b/web/app/assets/javascripts/ga.js @@ -128,7 +128,8 @@ jkLike : 'jkLike', jkFollow : 'jkFollow', jkFavorite : 'jkFavorite', - jkComment : 'jkComment' + jkComment : 'jkComment', + fileDownload: "DownloadFile" }; // JamTrack categories and actions: @@ -143,7 +144,12 @@ var jamTrackSessionLabels = { nonSession: 'NonSession', inSession: 'InSession' - } + } + + var fileDownloads = { + jamtrack_csv: 'JamTrackCSV', + jamtrack_pdf: 'JamTrackPDF' + } function translatePlatformForGA(platform) { assertOneOf(platform, context.JK.OS); @@ -184,6 +190,11 @@ } } + function trackFileDownload(type) { + assertOneOf(type, fileDownloads) + context.ga('send', 'event', categories.fileDownload, type) + } + function trackRegister(asMusician, registrationType) { assertBoolean(asMusician); assertOneOf(registrationType, registrationTypes); @@ -452,6 +463,7 @@ GA.AudioTestFailReasons = audioTestFailReasons; GA.AudioTestDataReasons = audioTestDataReasons; GA.NetworkTestFailReasons = networkTestFailReasons; + GA.FileDownloadTypes = fileDownloads; GA.trackRegister = trackRegister; GA.trackDownload = trackDownload; GA.trackFTUECompletion = trackFTUECompletion; @@ -477,6 +489,7 @@ GA.trackJKSocial = trackJKSocial; GA.virtualPageView = virtualPageView; GA.trackTiming = trackTiming; + GA.trackFileDownload = trackFileDownload; context.JK.GA = GA; diff --git a/web/app/assets/javascripts/react-components/JamTrackCsvLink.js.jsx.coffee b/web/app/assets/javascripts/react-components/JamTrackCsvLink.js.jsx.coffee new file mode 100644 index 000000000..172a21534 --- /dev/null +++ b/web/app/assets/javascripts/react-components/JamTrackCsvLink.js.jsx.coffee @@ -0,0 +1,15 @@ +context = window +rest = context.JK.Rest() + + +@JamTrackCSVLink = React.createClass({ + + render: () -> + `as a CSV file` + + csvClick: (e) -> + window.JK.GA.trackFileDownload(window.JK.GA.FileDownloadTypes.jamtrack_csv); + + window.JK.popExternalLink($(e.target).attr('href')) + e.preventDefault() +}) \ No newline at end of file diff --git a/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee b/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee index 46a5b272c..e9b5ad52a 100644 --- a/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/JamTrackLandingScreen.js.jsx.coffee @@ -86,6 +86,10 @@ rest = context.JK.Rest() + +
+ Or download the entire JamTracks catalog or to easily browse everything we have. +
diff --git a/web/app/assets/javascripts/react-components/JamTrackPdfLink.js.jsx.coffee b/web/app/assets/javascripts/react-components/JamTrackPdfLink.js.jsx.coffee new file mode 100644 index 000000000..c29e4311a --- /dev/null +++ b/web/app/assets/javascripts/react-components/JamTrackPdfLink.js.jsx.coffee @@ -0,0 +1,15 @@ +context = window +rest = context.JK.Rest() + + +@JamTrackPdfLink = React.createClass({ + + render: () -> + `as a PDF file` + + pdfClick: (e) -> + window.JK.GA.trackFileDownload(window.JK.GA.FileDownloadTypes.jamtrack_pdf); + + window.JK.popExternalLink($(e.target).attr('href')) + e.preventDefault() +}) \ No newline at end of file diff --git a/web/app/assets/javascripts/react-components/JamTrackSearchScreen.js.jsx.coffee b/web/app/assets/javascripts/react-components/JamTrackSearchScreen.js.jsx.coffee index 25eb00088..0e251bbea 100644 --- a/web/app/assets/javascripts/react-components/JamTrackSearchScreen.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/JamTrackSearchScreen.js.jsx.coffee @@ -212,6 +212,7 @@ MIX_MODES = context.JK.MIX_MODES
+
Download JamTracks catalog
or
{artistSection} diff --git a/web/app/assets/stylesheets/client/jamtrackSearch.css.scss b/web/app/assets/stylesheets/client/jamtrackSearch.css.scss index 1cd947e67..6386c7806 100644 --- a/web/app/assets/stylesheets/client/jamtrackSearch.css.scss +++ b/web/app/assets/stylesheets/client/jamtrackSearch.css.scss @@ -4,6 +4,7 @@ .jamtrack-filter.filter-head { padding-left:6px; + @include border_box_sizing; .easydropdown.dropdown { width:150px; @@ -18,6 +19,15 @@ .filter-element.wrapper:nth-child(3) { margin-left:10px; } + .filter-element.wrapper:nth-child(4) { + float:right; + + .download-all { + font-size:11px; + margin-top: 0px; + margin-right: 34px; + } + } } } #jamtrackSearch, #jamtrackFilter { @@ -26,6 +36,19 @@ height:100%; } + .download-all { + float:right; + font-size:12px; + color:#cccccc; + margin-top:6px; + margin-right:46px; + text-align:right; + line-height:120%; + + div { + display:inline; + } + } .filter-element.desc { margin-left:15px; diff --git a/web/app/assets/stylesheets/client/jamtrack_landing.css.scss b/web/app/assets/stylesheets/client/jamtrack_landing.css.scss index 821495362..2bbd19e18 100644 --- a/web/app/assets/stylesheets/client/jamtrack_landing.css.scss +++ b/web/app/assets/stylesheets/client/jamtrack_landing.css.scss @@ -167,13 +167,17 @@ .para { color: #cccccc; - } h2.browse-jamtracks { margin-top:30px; } } + + .download-all { + margin-top: 64px; + line-height: 150%; + } } .video-container-container { diff --git a/web/app/views/clients/_web_filter.html.haml b/web/app/views/clients/_web_filter.html.haml index 734d6b1c7..7422ee77e 100644 --- a/web/app/views/clients/_web_filter.html.haml +++ b/web/app/views/clients/_web_filter.html.haml @@ -15,7 +15,7 @@ =select_tag("#{filter_label}_order_by", options_for_select(Search::F_SORT_OPTS), {:class => "#{filter_label}-order-by easydropdown" } ) -elsif :jamtrack !=filter_label =content_tag(:div, 'Order By:', :class => 'filter-element desc') - =select_tag("#{filter_label}_order_by", options_for_select(Search::M_ORDERINGS), {:class => "#{filter_label}-order-by easydropdown"} ) + =select_tag("#{filter_label}_order_by", options_for_select(Search::M_ORDERINGS), {:class => "#{filter_label}-order-by easydropdown"} ) =content_tag(:div, :class => 'filter-element wrapper') do / -if (:band==filter_label || :jamtrack==filter_label) / =content_tag(:div, 'Genre:', :class => 'filter-element desc') @@ -28,10 +28,18 @@ =content_tag(:div, :class => 'filter-element wrapper') do -if :musician==filter_label || :jamtrack==filter_label / =content_tag(:div, 'Instrument:', :class => 'filter-element desc instrument-selector') - =select_tag("#{filter_label}_instrument", options_for_select([['Any Instrument', '']].concat(JamRuby::Instrument.order('description').collect { |ii| [ii.description, ii.id] })), {:class=> "easydropdown"}) | + =select_tag("#{filter_label}_instrument", options_for_select([['Any Instrument', '']].concat(JamRuby::Instrument.order('description').collect { |ii| [ii.description, ii.id] })), {:class=> "easydropdown"}) -if :feed==filter_label / =content_tag(:div, 'Include Dates:', :class => 'filter-element desc') - =select_tag("#{filter_label}_date", options_for_select(Search::DATE_OPTS), {:class => "easydropdown"}) + =select_tag("#{filter_label}_date", options_for_select(Search::DATE_OPTS), {:class => "easydropdown"}) + =content_tag(:div, :class=> 'filter-element wrapper') do + -if :jamtrack==filter_label + .download-all + Download JamTracks catalog + %br + =react_component "JamTrackCSVLink", {} + or + =react_component "JamTrackPdfLink", {} =content_tag(:div, :class => 'filter-element wrapper') do -if :feed==filter_label =content_tag(:div, 'Show:', :class => 'filter-element desc') diff --git a/web/lib/tasks/jam_tracks.rake b/web/lib/tasks/jam_tracks.rake index 18becab38..5b207e186 100644 --- a/web/lib/tasks/jam_tracks.rake +++ b/web/lib/tasks/jam_tracks.rake @@ -275,8 +275,10 @@ namespace :jam_tracks do Prawn::Document.generate(pdf_file) do - text "All JamKazam JamTracks", align: :center, size:18, inline_format: true + text "Current JamTracks Catalog by JamKazam", align: :center, size:18, inline_format: true move_down 20 + text "Last Updated: #{Time.now.strftime('%m/%d/%Y')}" + move_down 10 text "This PDF was downloaded from here.", inline_format: true, font_size:12 move_down 10 text "The CSV version can be downloaded from here. It also contains instrument info.", inline_format: true, font_size:12