diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb
index d0eea16a8..7db7b3905 100644
--- a/ruby/lib/jam_ruby/models/jam_track.rb
+++ b/ruby/lib/jam_ruby/models/jam_track.rb
@@ -446,6 +446,29 @@ module JamRuby
JamTrackTrack.where(jam_track_id: self.id).where(track_type: 'Click').first
end
+ def has_count_in?
+ has_count_in = false
+ if jmep_json
+ jmep = JSON.parse(jmep_json)
+
+ if jmep["Events"]
+ events = jmep["Events"]
+ metronome = nil
+ events.each do |event|
+ if event.has_key?("metronome")
+ metronome = event["metronome"]
+ break
+ end
+ end
+ if metronome
+ has_count_in = true
+ end
+ end
+ end
+
+ has_count_in
+ end
+
def master_track
JamTrackTrack.where(jam_track_id: self.id).where(track_type: 'Master').first
end
diff --git a/web/Gemfile b/web/Gemfile
index e2a35590e..4cfc8e21f 100644
--- a/web/Gemfile
+++ b/web/Gemfile
@@ -63,6 +63,7 @@ gem 'haml-rails'
gem 'unf' #optional fog dependency
gem 'devise', '3.3.0' #3.4.0 causes uninitialized constant ActionController::Metal (NameError)
gem 'postgres-copy'
+gem 'prawn-table'
#group :libv8 do
# gem 'libv8', "~> 3.11.8"
#end
diff --git a/web/app/views/clients/_jamtrack_landing.html.slim b/web/app/views/clients/_jamtrack_landing.html.slim
index 46119665f..a761706be 100644
--- a/web/app/views/clients/_jamtrack_landing.html.slim
+++ b/web/app/views/clients/_jamtrack_landing.html.slim
@@ -6,3 +6,5 @@
= render "screen_navigation"
.content-body
= react_component 'JamTrackLandingScreen', {}
+
+
diff --git a/web/lib/tasks/jam_tracks.rake b/web/lib/tasks/jam_tracks.rake
index c0add4f92..18becab38 100644
--- a/web/lib/tasks/jam_tracks.rake
+++ b/web/lib/tasks/jam_tracks.rake
@@ -66,7 +66,7 @@ namespace :jam_tracks do
JamTrackImporter.storage_format = 'Tency'
end
- JamTrackImporter.synchronize_from_meta("#{path}/meta.yml", skip_audio_upload:false)
+ JamTrackImporter.synchronize_from_meta("#{path}/meta.yml", skip_audio_upload: false)
end
task resync_audio: :environment do |task, args|
@@ -77,7 +77,7 @@ namespace :jam_tracks do
exit(1)
end
- JamTrackImporter.synchronize_from_meta("audio/#{path}/meta.yml", resync_audio:true, skip_audio_upload:false)
+ JamTrackImporter.synchronize_from_meta("audio/#{path}/meta.yml", resync_audio: true, skip_audio_upload: false)
end
task tency_genre_dump: :environment do |task, args|
@@ -87,12 +87,12 @@ namespace :jam_tracks do
task sync_tency: :environment do |task, args|
JamTrackImporter.storage_format = 'Tency'
- JamTrackImporter.synchronize_all(skip_audio_upload:false)
+ JamTrackImporter.synchronize_all(skip_audio_upload: false)
end
task sync_tim_tracks: :environment do |task, args|
JamTrackImporter.storage_format = 'TimTracks'
- JamTrackImporter.synchronize_all(skip_audio_upload:false)
+ JamTrackImporter.synchronize_all(skip_audio_upload: false)
end
task tency_dups: :environment do |task, args|
@@ -115,12 +115,12 @@ namespace :jam_tracks do
end
task sync_all: :environment do |task, args|
- JamTrackImporter.synchronize_all(skip_audio_upload:false)
+ JamTrackImporter.synchronize_all(skip_audio_upload: false)
end
task sync_all_dev: :environment do |task, args|
JamTrackImporter.storage_format = 'default'
- JamTrackImporter.synchronize_all(skip_audio_upload:true)
+ JamTrackImporter.synchronize_all(skip_audio_upload: true)
end
task sync_previews_all: :environment do |task, arg|
@@ -196,9 +196,10 @@ namespace :jam_tracks do
mapper.correlate
end
- task touch: :environment do |task, arg|
- JamTrack.all.each do |jt|
- jt.touch # causes jmep re-spin
+ task touch: :environment do |task, arg|
+ JamTrack.all.each do |jam_track|
+ jam_track.jmep_json_generate
+ jam_track.save!
end
end
@@ -226,4 +227,92 @@ namespace :jam_tracks do
end
end
end
+
+ task generate_master_listing: :environment do |task, arg|
+
+ instruments = Instrument.all
+ jam_tracks = JamTrack.where(status: 'Production').order('original_artist, name')
+
+ Dir.mktmpdir do |tmp_dir|
+ csv_file = File.join(tmp_dir, "production.csv")
+ pdf_file = File.join(tmp_dir, "production.pdf")
+
+
+ CSV.open(csv_file, "wb") do |csv|
+ header = ['Artist', 'Name', 'Link', 'Click Track', 'Count-In', 'Added to Catalog']
+
+ instruments.each do |instrument|
+ header << instrument.description
+ end
+
+ csv << header
+ jam_tracks.each do |jam_track|
+ row = []
+ row << jam_track.original_artist
+ row << jam_track.name
+ row << Rails.application.config.external_root_url + Rails.application.routes.url_helpers.individual_jamtrack_path(jam_track.slug)
+ row << (jam_track.click_track.nil? ? 'no' : 'yes')
+ row << (jam_track.has_count_in? ? 'yes' : 'no')
+ row << jam_track.created_at.to_date.to_s
+
+ tracks = jam_track.jam_track_tracks
+
+ instruments.each do |instrument|
+
+ match = false
+ tracks.each do |track|
+ if track.track_type == 'Track' && track.instrument_id == instrument.id
+ match = true
+ break
+ end
+ end
+
+ row << (match ? 'yes' : 'no')
+ end
+ csv << row
+ end
+ end
+
+ Prawn::Document.generate(pdf_file) do
+
+ text "All JamKazam JamTracks", align: :center, size:18, inline_format: true
+ move_down 20
+ 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
+ move_down 20
+ pdf_data= []
+
+ header = ['Artist', 'Song Name', 'Site Link', 'Click Track', 'Count In', 'Added to Catalog']
+
+ columns = header.length
+
+ pdf_data << header
+
+ jam_tracks.each do |jam_track|
+ table_row = []
+ table_row << jam_track.original_artist
+ table_row << jam_track.name
+ table_row << "link "
+ table_row << (jam_track.click_track.nil? ? 'no' : 'yes')
+ table_row << (jam_track.has_count_in? ? 'yes' : 'no')
+ table_row << jam_track.created_at.to_date.to_s
+
+ pdf_data << table_row
+ end
+
+
+ table(pdf_data, :cell_style => {inline_format: true}, header: true, row_colors: ["D0D0D0", "F0F0F0"])
+ end
+
+
+ s3_manager = S3Manager.new(Rails.application.config.aws_bucket_public, Rails.application.config.aws_access_key_id, Rails.application.config.aws_secret_access_key)
+
+ s3_manager.upload('public/lists/all-jamkazam-jamtracks.csv', csv_file, content_type: 'text/csv')
+ s3_manager.upload('public/lists/all-jamkazam-jamtracks.pdf', pdf_file, content_type: 'application/pdf')
+
+ FileUtils.mv(csv_file, 'tmp/test.csv')
+ FileUtils.mv(pdf_file, 'tmp/test.pdf')
+ end
+ end
end