86 lines
2.7 KiB
Ruby
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
|