Initial commit

This commit is contained in:
Senad Uka
2020-05-31 22:38:19 +02:00
commit 858fafc3c5
1280 changed files with 65918 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
module ExcelReports
module GraphicReports
class DiscoveryGfxCueList
def initialize(video)
@video = video
end
def to_xls
DiscoveryGfxCueLists::TextedElementsSheet.build(workbook, graphics_elements_data, graphics_elements_header_data)
package.to_stream.read
end
def filename(format = "xlsx")
name = [@video.file.filename.to_s, "gfx-cue-list"].map(&:parameterize).join("_")
[name, format].join(".")
end
private
attr_reader :video
def graphics_elements_data
video.graphics_elements.order(timecode_in: :asc).map do |graphics_element|
GraphicsElementsData.new(
graphics_element.text,
graphics_element.timecode_in,
graphics_element.timecode_out,
graphics_element.duration,
)
end
end
def graphics_elements_header_data
GraphicsElementsHeaderData.new(
video.name,
video.number,
video.project.client_name,
video.project.account.name,
)
end
def workbook
@workbook ||= package.workbook
end
def package
@package ||= Axlsx::Package.new
end
class GraphicsElementsData < Struct.new(
:text,
:timecode_in,
:timecode_out,
:duration,
)
end
class GraphicsElementsHeaderData < Struct.new(
:program_title,
:episode,
:network,
:company,
)
end
end
end
end

View File

@@ -0,0 +1,56 @@
module ExcelReports
module GraphicReports
module DiscoveryGfxCueLists
class TextedElementsSheet < ::ExcelReports::Worksheet
def title
"Texted Elements List"
end
def fill_content(sheet)
sheet.add_row ["Texted Element / CG List"]
sheet.add_row
sheet.add_row ["Program Title", header_data.program_title]
sheet.add_row ["Episode", header_data.episode]
sheet.add_row ["Network", header_data.network]
sheet.add_row ["Executive Producer", ""]
sheet.add_row ["Production Company", header_data.company]
sheet.add_row
sheet.add_row ["Title/Subtitle/Graphics", "T/C IN", "T/C OUT", "TRT"]
data.each do |graphics_data|
sheet.add_row [graphics_data.text, graphics_data.timecode_in, graphics_data.timecode_out, graphics_data.duration]
end
end
def format(sheet)
sheet.column_widths *column_widths
end
def style(sheet)
sheet.add_style "A1", Styles::BOLD, { sz: 12 }
sheet.add_style "A9:D9", Styles::TABLE_HEADER
sheet.add_style "A3:A7", Styles::PROGRAM_HEADER
sheet.add_style "B3:B7", Styles::HEADER_DATA
if data.any?
sheet.add_style "A#{data_start_index}:D#{data_end_index}", Styles::TABLE_DATA
end
end
private
def column_widths
[60, 20, 20]
end
def data_start_index
10
end
def data_end_index
(data_start_index + data.size) - 1
end
end
end
end
end

View File

@@ -0,0 +1,42 @@
module ExcelReports
module GraphicReports
class NatGeoTextGraphicsLog
def initialize(video)
@video = video
end
def to_xls
NatGeoTextGraphicsLogs::InternalProgramGfxLogSheet.build(
workbook, graphics_elements_data, graphics_elements_header_data
)
package.to_stream.read
end
def filename(format = "xlsx")
name = [@video.file.filename.to_s, "text-graphics-log"].map(&:parameterize).join("_")
[name, format].join(".")
end
private
attr_reader :video
def graphics_elements_data
video.graphics_elements.order(timecode_in: :asc)
end
def graphics_elements_header_data
video
end
def workbook
@workbook ||= package.workbook
end
def package
@package ||= Axlsx::Package.new
end
end
end
end

View File

@@ -0,0 +1,78 @@
module ExcelReports
module GraphicReports
module NatGeoTextGraphicsLogs
class InternalProgramGfxLogSheet < Worksheet
def title
"Internal Program GFX Log"
end
def fill_content(sheet)
sheet.add_row ["NATIONAL GEOGRAPHIC", "", "", "", "", "", ""]
sheet.add_row ["Text-Graphics Log", "", "", "", "", "", ""]
sheet.add_row ["(Title Sequence, Maps, Lower Thirds, CGI, Subtitles, Captions, Text Identifiers, Chyrons, Credits etc. )", "", "", "", "", "", ""]
sheet.add_row
sheet.add_row ["", "Series Name:", "", "", "", "", ""]
sheet.add_row ["", "Episode Title:", header_data.name, "", "", "", ""]
sheet.add_row ["", "Episode Number:", header_data.number, "", "", "", ""]
sheet.add_row ["", "Traffic Code(s):", "", "", "", "", ""]
sheet.add_row ["", "Date:", BigMediaTime.time_zone_now.to_date.strftime("%D"), "", "", "", ""]
sheet.add_row
sheet.add_row table_headers
data.each do |graphics_data|
sheet.add_row [graphics_data.graphic_type, graphics_data.text, graphics_data.timecode_in, graphics_data.timecode_out, "", "", ""]
end
sheet.add_row(["*Clean Graphics should appear at the end of the program master. If all shots do not fit on the program master, a separate graphics master should be delivered."])
sheet.add_row(["*If delivering textless masters & no clean graphics at the end, denote N/A in the clean scene timecode section."])
end
def format(sheet)
sheet.column_widths *column_widths
cells_to_merge.each { |cell| sheet.merge_cells cell }
end
def style(sheet)
sheet.add_style "A1:A2", Styles::BOLD, Styles::FULLY_CENTERED, { sz: 12 }
sheet.add_style "A3", Styles::FULLY_CENTERED, { sz: 12 }
sheet.add_style "B5:B9", Styles::BOLD, Styles::HORIZONTAL_RIGHT
sheet.add_style "A11:G11", Styles::BOLD, Styles::FULLY_CENTERED, Styles::THIN_BLACK_BORDER, Styles::WRAP_TEXT
if data.any?
sheet.add_style "A#{data_start_index}:G#{data_end_index}", Styles::THIN_BLACK_BORDER
end
end
private
def table_headers
[
"Element\n(Ex: Title, Lower Third, Subtitle, Graphic, Credits, etc.)",
"Description",
"Program Timecode In",
"Program Timecode Out",
"Clean Scene Timecode In",
"Clean Scene Timecode Out",
"Font Information\n(Include Font Name, Style, Color, & Opacity)"
]
end
def column_widths
[25, 36, 18, 18, 18, 18, 23]
end
def cells_to_merge
%w(A1:G1 A2:G2 A3:G3 C5:E5 C6:E6 C7:E7 C8:E8 C9:E9)
end
def data_start_index
12
end
def data_end_index
(data_start_index + data.size) - 1
end
end
end
end
end