Files
old-holivud2/app/controllers/video_analyses/graphics_elements_controller.rb
2020-05-31 22:38:19 +02:00

86 lines
2.7 KiB
Ruby

class VideoAnalyses::GraphicsElementsController < ApplicationController
before_action :set_video, only: [:new, :create]
def new
@matched_file_name = params.delete(:matched_file_name)
@graphics_element = filtered_graphics_elements.build(graphics_element_params)
@edl_events_data = build_presenter(@graphics_element.edl_type).present
@graphics_element.attributes = @edl_events_data[:edl_attributes]
end
def create
graphics_element = filtered_graphics_elements.build(graphics_element_params)
graphics_element.save
@graphics_element_data = ::GraphicsElements::GraphicsElementPresenter.new.present(graphics_element)
@graphics_elements_data = ::GraphicsElements::GraphicsElementsPresenter.new.present(filtered_graphics_elements)
end
def edit
@graphics_element = find_graphics_element
@video = @graphics_element.video
@edl_events_data = build_presenter(@graphics_element.edl_type).present
end
def update
graphics_element = find_graphics_element
graphics_element.update(graphics_element_params)
@video = graphics_element.video
@graphics_element_data = ::GraphicsElements::GraphicsElementPresenter.new.present(graphics_element)
@graphics_elements_data = ::GraphicsElements::GraphicsElementsPresenter.new.present(filtered_graphics_elements)
end
def destroy
graphics_element = find_graphics_element
@graphics_element_data = ::GraphicsElements::GraphicsElementPresenter.new.present(graphics_element)
graphics_element.destroy
@graphics_elements_data = ::GraphicsElements::GraphicsElementsPresenter.new.present(graphics_element.video.graphics_elements)
end
private
def find_graphics_element
authorize policy_scope(GraphicsElement).find(params[:id])
end
def build_presenter(edl_type)
files_for_request = if edl_type == "all_tracks"
FilesForRequest.new(@video)
else
GraphicsFilesForRequest.new(@video, @video.edl_timecode_start)
end
EdlEventsPresenter.new(
EdlEventGateway.new(
files_for_request,
@graphics_element.appears_at,
@graphics_element.appears_at,
channel_filter: ENV["DISABLE_EDL_CHANNEL_FILTER"] ? "" : "V",
)
)
end
def set_video
@video = authorize policy_scope(Video).find(params[:video_id])
end
def filtered_graphics_elements
policy_scope(@video.graphics_elements)
end
def graphics_element_params
params.require(:graphics_element).permit(
:graphic_type,
:text,
:time_elapsed,
:channel,
:timecode_in,
:timecode_out,
:duration,
:source_file_name,
:clip_name,
:description,
:edl_type,
)
end
end