Compare commits

...

5 Commits

Author SHA1 Message Date
bilal
ec3e5271fc use custom baseUrl for Clappr Player in tests 2020-06-29 12:42:03 +02:00
Bilal
d695668c84 add spec 2020-06-26 14:29:17 +02:00
Bilal
220942515c switch to live stream when user selects from Switch View dropdown 2020-06-26 14:29:17 +02:00
Bilal
721fcc05dd close tag 2020-06-26 14:29:17 +02:00
Senad Uka
fe131491cd Upstream sync 2020-06-26 04:55:50 +02:00
12 changed files with 210 additions and 52 deletions

View File

@@ -1,24 +0,0 @@
$(document).on("click", "[data-behavior=play_recording]", function() {
if ($(this).hasClass('active')){
return false;
}
var playback_url = $(this).attr("data-playback-url")
$("#broadcast_video").empty();
new Clappr.Player({
parentId: '#broadcast_video',
source: playback_url,
width: '100%',
height: '100%',
autoPlay: true
});
$(".dropdown-menu").children().removeClass('active');
$(".dropdown-menu").children().children('i').remove();
$(this).siblings().removeClass('active');
$(this).siblings().children("i").remove();
$(this).addClass('active');
$(this).prepend('<i class="fa fa-check">&nbsp;</i>');
});

View File

@@ -0,0 +1,26 @@
$(document).on("click", "[data-behavior=play_recording]", function() {
if ($(this).hasClass('active')){
return false;
}
console.warn('Play prev : ', playback_url);
var playback_url = $(this).attr("data-playback-url")
$("#broadcast_video").empty();
new Clappr.Player({
<%= "baseUrl: 'http://cdn.clappr.io/latest'," if Rails.env.test? %>
parentId: '#broadcast_video',
source: playback_url,
width: '100%',
height: '100%',
autoPlay: true
});
$(".dropdown-menu").children().removeClass('active');
$(".dropdown-menu").children().children('i').remove();
$(this).siblings().removeClass('active');
$(this).siblings().children("i").remove();
$(this).addClass('active');
$(this).prepend('<i class="fa fa-check">&nbsp;</i>');
});

View File

@@ -77,9 +77,43 @@ class AppearanceReleasesController < ApplicationController
results
end
def person_params
%i[
person_first_name
person_last_name
person_phone
person_email
person_photo
person_address_street1
]
end
def guardian_params
%i[
guardian_first_name
guardian_last_name
guardian_phone
guardian_email
guardian_photo
guardian_address_street1
]
end
def second_guardian_params
%i[
guardian_2_first_name
guardian_2_last_name
guardian_2_phone
guardian_2_email
guardian_2_photo
guardian_2_address_street1
]
end
def appearance_release_params
params.require(:appearance_release).permit(:contract, :guardian_address_street1, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_photo, :guardian_email, :minor,
:person_address_street1, :person_first_name, :person_last_name, :person_phone, :person_email, :person_photo,
params.require(:appearance_release).permit(person_params,
guardian_params, second_guardian_params,
:contract, :minor,
:applicable_medium_id, :applicable_medium_text,
:territory_id, :territory_text,
:term_id, :term_text, :person_date_of_birth,

View File

@@ -17,17 +17,25 @@
</div>
<div class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields">
<div class="form-row">
<%= form.text_field :guardian_first_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
</div>
<div class="form-row">
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
</div>
<div class="form-row">
<%= form.text_field :guardian_address_street1, wrapper_class: "col-sm-6" %>
</div>
<%= card_field_set_tag t(".guardian_info.heading") do %>
<div class="form-row">
<%= form.text_field :guardian_first_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_last_name, required: appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_address_street1, wrapper_class: "col-sm-6" %>
</div>
<% end %>
<%= card_field_set_tag t(".guardian_2_info.heading") do %>
<div class="form-row">
<%= form.text_field :guardian_2_first_name, wrapper_class: "col-sm-3" %>
<%= form.text_field :guardian_2_last_name, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_2_phone, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_2_email, wrapper_class: "col-sm-6" %>
<%= form.text_field :guardian_2_address_street1, wrapper_class: "col-sm-6" %>
</div>
<% end %>
</div>
<% end %>
@@ -62,20 +70,36 @@
<div class="<%= class_string("collapse" => !appearance_release.minor?) %>" data-ujs-target="guardian-fields">
<div class="text-left">
<p><%= t(".photos.guardian_photo.heading") %></p>
<div class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
<div id='guardian-photo-preview' class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-photo-input]">
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
<span>No photo yet</span>
</div>
</div>
<% if appearance_release.guardian_photo.attached? %>
<%= javascript_tag nonce: true do %>
App.PhotoPreview.set("[data-behavior=guardian-photo-preview]", "<%= url_for(appearance_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
App.PhotoPreview.set("#guardian-photo-preview", "<%= url_for(appearance_release.guardian_photo.variant(auto_orient: true, resize: '200x200')) %>");
<% end %>
<% end %>
<div class="d-inline-block">
<%= form.hidden_field :guardian_photo, value: form.object.guardian_photo.signed_id if appearance_release.guardian_photo.attached?%>
<%= form.file_field :guardian_photo, hide_label: true, data: { ujs_target: "guardian-photo-input" }, help: "PNG or JPG only", accept: appearance_release.class.face_photo_acceptable_content_types.join(",") %>
</div>
<p><%= t(".photos.guardian_2_photo.heading") %></p>
<div id='guardian-2-photo-preview' class="d-inline-block mb-2" data-behavior="guardian-photo-preview" data-file-input="[data-ujs-target=guardian-2-photo-input]">
<div class="align-items-center d-flex photo-preview img-thumbnail justify-content-center">
<span>No photo yet</span>
</div>
</div>
<% if appearance_release.guardian_2_photo.attached? %>
<%= javascript_tag nonce: true do %>
App.PhotoPreview.set("#guardian-2-photo-preview", "<%= url_for(appearance_release.guardian_2_photo.variant(auto_orient: true, resize: '200x200')) %>");
<% end %>
<% end %>
<div class="d-inline-block">
<%= form.hidden_field :guardian_2_photo, value: form.object.guardian_2_photo.signed_id if appearance_release.guardian_2_photo.attached?%>
<%= form.file_field :guardian_2_photo, hide_label: true, data: { ujs_target: "guardian-2-photo-input" }, help: "PNG or JPG only", accept: appearance_release.class.face_photo_acceptable_content_types.join(",") %>
</div>
</div>
</div>
<% end %>

View File

@@ -33,7 +33,7 @@
<%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<h5 class="dropdown-header">Live Streams</h5>
<span class="dropdown-item active"><%= fa_icon("check", text: @broadcast.name.titleize) %></span>
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", class: "dropdown-item active" %>
<% @multi_view_broadcasts.each do |broadcast| %>
<% if broadcast.id != @broadcast.id %>
<%= link_to broadcast.name.titleize, broadcast.url, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
@@ -159,4 +159,4 @@
</div>
</div>
</div>
<div>
</div>

View File

@@ -0,0 +1,8 @@
<p class="heading"><strong><u><%= t ".heading" %></u></strong></p>
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% if contract_template.public_send("question_#{n}_text").present? %>
<p><strong><%= contract_template.public_send("question_#{n}_text") %></strong></p>
<p><%= releasable.public_send("question_#{n}_answer") %></p>
<% end %>
<% end %>

View File

@@ -39,15 +39,6 @@
<% end %>
</dl>
<% if releasable.model_name == "MedicalRelease" %>
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
<% if contract_template.public_send("question_#{n}_text").present? %>
<p><strong><%= contract_template.public_send("question_#{n}_text") %></strong></p>
<p><%= releasable.public_send("question_#{n}_answer") %></p>
<% end %>
<% end %>
<% end %>
<% if releasable.minor? %>
<br/>
<p class="text-left"><strong>Guardian Information</strong></p>

View File

@@ -15,6 +15,13 @@
<p class="text-left"><strong>Guardian Clause</strong></p>
<%= contract_template.guardian_clause %>
<% end %>
<% if releasable.model_name == "MedicalRelease" %>
<div class="page">
<%= render "contracts/medical_questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
</div>
<% end %>
<div class="page">
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
</div>

View File

@@ -123,9 +123,15 @@ en:
form:
contract_and_rights:
heading: 2 of 3 Contract & Exploitable Rights
guardian_2_info:
heading: Second Guardian Information (if company requires)
guardian_info:
heading: Guardian Information
person_details:
heading: 1 of 3 Person Details
photos:
guardian_2_photo:
heading: Second Guardian Photo
guardian_photo:
heading: Guardian Photo
heading: 3 of 3 Photo
@@ -240,6 +246,8 @@ en:
new:
heading: New Release Template
contracts:
medical_questionnaire:
heading: Medical Questionnaire
photos:
guardian_2_photo_heading: Second guardian photo
guardian_photo_heading: Guardian photo

View File

@@ -28,7 +28,13 @@ es:
matching_started: Matching started (ES)
no_attachments: Failed to import - no attachments (ES)
form:
guardian_2_info:
heading: Second Guardian Information (if company requires) (ES)
guardian_info:
heading: Guardian Information (ES)
photos:
guardian_2_photo:
heading: Second Guardian Photo (ES)
guardian_photo:
heading: Guardian Photo (ES)
person_photo:

View File

@@ -194,6 +194,28 @@ feature 'User managing appearance releases' do
expect(page).to have_content 'New Jane'
end
scenario 'user can enter information for second guardian when editing non native release for minor', js: true do
appearance_release = create(:appearance_release, :non_native, :minor, project: project)
visit edit_appearance_release_path(appearance_release)
expect(page).to have_content guardian_2_first_name_field.titleize
expect(page).to have_content guardian_2_photo_heading
fill_in guardian_first_name_field, with: 'Guardian'
fill_in guardian_last_name_field, with: 'Name'
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
fill_in guardian_2_first_name_field, with: 'Second'
fill_in guardian_2_last_name_field, with: 'guardian'
attach_file guardian_2_photo_field, file_fixture('person_photo.png'), visible: :all
click_button submit_update_button
expect(page).to have_content successful_update_message
expect(AppearanceRelease.last.guardian_2_photo.attached?).to eq true
end
scenario 'progress bar shows when user imports a release', js: true do
visit project_appearance_releases_path(project)
@@ -557,6 +579,10 @@ feature 'User managing appearance releases' do
'appearance_release[guardian_photo]'
end
def guardian_2_photo_field
'appearance_release[guardian_2_photo]'
end
def person_name_field
t('helpers.label.appearance_release.person_name')
end
@@ -662,4 +688,12 @@ feature 'User managing appearance releases' do
def successful_destroy_message
'The release has been deleted'
end
def guardian_photo_heading
t 'appearance_releases.form.photos.guardian_photo.heading'
end
def guardian_2_photo_heading
t 'appearance_releases.form.photos.guardian_2_photo.heading'
end
end

View File

@@ -54,6 +54,46 @@ feature "User managing broadcasts" do
expect(page).to have_content(recording.download_file_name)
end
scenario "user can go back and forth between live session and previous sessions", js: true do
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
recording = create(:broadcast_recording, broadcast: broadcast)
visit project_broadcast_path(project, broadcast)
expect(page).to have_content broadcast.name.titleize, count: 1
expect(page).to have_content recording.download_file_name, count: 0
click_on switch_view_dropdown
expect(page).to have_content broadcast.name.titleize, count: 2
expect(page).to have_content recording.download_file_name, count: 1
live_stream_nav_item = page.find(".dropdown-item", text: broadcast.name.titleize)
recording_nav_item = page.find(".dropdown-item", text: recording.download_file_name)
expect(live_stream_nav_item[:class].include?("active")).to eq true
expect(recording_nav_item[:class].include?("active")).to eq false
click_on recording.download_file_name
expect(page).to have_content broadcast.name.titleize, count: 1
expect(page).to have_content recording.download_file_name, count: 0
expect(live_stream_nav_item[:class].include?("active")).to eq false
expect(recording_nav_item[:class].include?("active")).to eq true
click_on switch_view_dropdown
click_on broadcast.name.titleize
expect(page).to have_content broadcast.name.titleize, count: 1
expect(page).to have_content recording.download_file_name, count: 0
# Page is reloaded, we need to get dropdown items again
live_stream_nav_item = page.find(".dropdown-item", text: broadcast.name.titleize, visible: :all)
recording_nav_item = page.find(".dropdown-item", text: recording.download_file_name, visible: :all)
expect(live_stream_nav_item[:class].include?("active")).to eq true
expect(recording_nav_item[:class].include?("active")).to eq false
end
scenario "form will not submit if user clicks Add files without selected files", js: true do
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
@@ -74,9 +114,9 @@ feature "User managing broadcasts" do
new_window = window_opened_by { click_link "Multi-View" }
within_window new_window do
expect(page).to have_content("Switch View")
expect(page).to have_content switch_view_dropdown
click_on "Switch View"
click_on switch_view_dropdown
expect(page).to have_link("Broadcast 1")
expect(page).to have_link("Broadcast 2")
@@ -106,4 +146,8 @@ feature "User managing broadcasts" do
all('input[type="checkbox"]')[0].click
all('input[type="checkbox"]')[1].click
end
def switch_view_dropdown
"Switch View"
end
end