{% set firstProductClassId = -1 %}
{% if Product.hasProductClass -%}
{% else %}
{% set firstProductClassId = Product.ProductClasses[0].id %}
{% endif %}
<div class="rental-info no-{{ count }}" data-count="{{ count }}" style="display:none;">
<div class="rental-content">
<p class="rental-header">レンタル情報</p>
{% if count == 1 %}
<div id="app_sheeb_rental42"></div>
{% endif %}
<dl>
<div id="basic-charge-term-{{ count }}">
<dt>基本レンタル日数<br />
<span>ご利用日は後ほどご注文手続き画面で選択いただけます</span>
</dt>
<dd></dd>
</div>
<div id="extension-fee-{{ count }}">
<dt>延長料金<br />
<span>基本レンタル日数 を超えるレンタルの場合に延長料金が手数料として加算されます</span>
</dt>
<dd><span class="price"></span><span> 税込(1日毎)</span></dd>
</div>
</dl>
</div>
</div>
{# 一度だけ実行したい処理 #}
{% if count == 1 %}
<style>
.rental-info {
position: relative;
width: 100%;
font-size: 1.5rem;
}
.rental-header {
padding: 1rem;
background: grey;
color: white;
font-weight: bold;
letter-spacing: 0.2rem;
}
.rental-content {
padding: 1.5rem 0.5rem 0.5rem 0.5rem;
}
.rental-content dt {
padding: 0.5rem;
line-height: 1.2;
}
.rental-content dt span {
font-size: 1.2rem;
color: #a7acb0;
font-weight: 500;
}
.rental-content dd {
margin-top: -0.5rem;
padding-left: 0.5rem;
}
.rental-content dd span {
font-size: 1.2rem;
}
.rental-content dd span.price {
font-size: 1.5rem;
color: #DE5D50;
}
</style>
{% endif %}
{# 毎回実行したい処理 #}
<script>
$(function() {
var selfCount = {{ count }};
var choices = {{ class_categories_as_json(Product)|raw }};
var rentals = {{ rentals|raw }};
var first_product_class_id = '{{ firstProductClassId }}';
var current_rental_settings = null;
// 読み込み時
setCurrentRentalSetting(first_product_class_id);
// 規格1選択時
$('select[name=classcategory_id1]')
.change(function() {
if (!isSelfEvent(selfCount, this)) return;
var $form = $(this).parents('form');
onChangeClass($(this), $form.find('select[name=classcategory_id2]'));
});
// 規格2選択時
$('select[name=classcategory_id2]')
.change(function() {
if (!isSelfEvent(selfCount, this)) return;
var $form = $(this).parents('form');
onChangeClass($form.find('select[name=classcategory_id1]'), $(this));
});
// 規格変更共通処理
function onChangeClass($select1, $select2) {
clearRentalSetting();
if (!$select1.length) return;
// 規格1のみの場合
if (!$select2.length) {
var class1_id = $select1.val();
var class2_id = '';
setCurrentRentalSetting(
getProductClassId(class1_id, class2_id)
);
}
// 規格2ありの場合
else {
var class1_id = $select1.val();
var class2_id = $select2.val();
// まだ規格2が選択されていなければ無視
if (!class2_id) return;
setCurrentRentalSetting(
getProductClassId(class1_id, class2_id)
);
}
}
// 選択した規格からproductClassIdを取得
function getProductClassId(class1_id, class2_id) {
if (!class1_id) return;
if (!choices[class1_id]) return;
if (!choices[class1_id]['#' + class2_id]) return;
if (!choices[class1_id]['#' + class2_id]['product_class_id']) return;
return choices[class1_id]['#' + class2_id]['product_class_id'];
}
// 選択中の規格のレンタル設定をクリア
function clearRentalSetting() {
current_rental_settings = null;
drawRentalSettings(current_rental_settings);
}
// 選択中の規格のレンタル設定をセット
function setCurrentRentalSetting(product_class_id) {
if (!product_class_id) return;
if (!rentals[product_class_id]) return;
current_rental_settings = rentals[product_class_id];
drawRentalSettings(current_rental_settings);
}
// ==============================
// 描画処理
// ==============================
// block count が自分のEventかどうかの判定
function isSelfEvent(selfCount, selectBoxThis) {
// 詳細画面なら常にtrue
if (!isListPage()) {
return true;
}
$elements = $(selectBoxThis).parents('.ec-shelfGrid__item');
if ($elements.length === 0) {
return false;
}
$elements = $($elements[0]).children('.rental-info');
if ($elements.length === 0) {
return false;
}
$rental_info = $($($elements[0]));
return parseInt($rental_info.data('count')) === selfCount;
}
// 商品一覧画面かどうか ( falseなら詳細画面 )
function isListPage() {
return eccube.hasOwnProperty('productsClassCategories');
}
// レンタル設定を元に、設定を描画する
function drawRentalSettings(current_rental_settings) {
var $rental_info = $('.rental-info.no-{{ count }}');
if (!current_rental_settings) {
$rental_info.hide();
return;
}
updateBasicChargeTerm(current_rental_settings);
updateExtensionFee(current_rental_settings);
if (!isListPage()) {
updateProductStockCalendar(current_rental_settings);
}
$rental_info.show();
}
function updateBasicChargeTerm(setting) {
var data = parseInt(setting.basic_charge_term);
var text = (data - 1) + '泊' + data + '日';
$('#basic-charge-term-{{ count }} dd').text(text);
}
function updateExtensionFee(setting) {
var target = $('#extension-fee-{{ count }}');
var data = setting.one_day_charge;
var text = '¥' + data;
if (data === 0.0) {
target.hide();
} else {
target.show();
}
$('#extension-fee-{{ count }} dd .price').text(text);
}
function updateProductStockCalendar(setting) {
currentCalendarSettings = setting.calendar;
$('#update-calendar').trigger('click');
}
});
//# sourceURL=rental_information_{{ count }}.js
</script>