{#
Plugin Name: JoolenDisplayPoints4
Copyright(c) joolen inc. All Rights Reserved.
https://www.joolen.co.jp/
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
#}
{% block javascript %}
<script>
$(function () {
eccube.displayPoints = {{ display_point_json | raw }};
// 設定>店舗設定>基本設定のポイント機能の有効/無効を取得する
let is_option_point = '{{ BaseInfo.isOptionPoint }}';
// -----------------------------------
// 画面描画時に獲得予定ポイントを表示する
// -----------------------------------
// ポイント機能が有効の場合のみ以下の処理を実行する
if ( is_option_point ) {
$('[id^=productForm]').each(function() {
let product_id = $(this).find('input[name=product_id]').val();
let point_display_container = $(this).find('.point-display-container');
let min_point = eccube.displayPoints[product_id]['min_point'];
let max_point = eccube.displayPoints[product_id]['max_point'];
let is_no_point_flag = eccube.displayPoints[product_id]['is_no_point_flag'];
if(is_no_point_flag) {
point_display_container.html(`<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_point_flag.message' | trans }}</span>`);
point_display_container.show();
return;
}
if( min_point !== 0 && max_point !== 0){
let point;
if (min_point === max_point) {
point = min_point;
} else {
point = min_point + ' 〜 ' + max_point;
}
point_display_container.data('dafault-point', point);
setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
}
});
}
// -----------------------------------
// 規格1選択時
// -----------------------------------
$('select[name=classcategory_id1]')
.change(function() {
if ( !is_option_point ) {
return;
}
let $form = $(this).parents('form');
let product_id = $form.find('input[name=product_id]').val();
let $sele1 = $(this);
let $sele2 = $form.find('select[name=classcategory_id2]');
let classcat_id1 = $sele1.val();
let classcat_id2 = $sele2.val() ? $sele2.val() : '';
let point_display_container = $form.find('.point-display-container');
let is_no_point_flag = eccube.displayPoints[product_id]['is_no_point_flag'];
// 規格1が未選択状態に戻った場合
if (classcat_id1 === '__unselected') {
let point = point_display_container.data('dafault-point');
setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
return;
}
// ポイント付与が無効の場合
if(is_no_point_flag) {
let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_point_flag.message' | trans }}</span>`;
setPointContainer(point_display_container, message);
return;
}
// 規格1のみの場合だけ獲得可能ポイントを表示する
if (!$sele2.length) {
let point = eccube.displayPoints[product_id][classcat_id1]['#' + classcat_id2]['point'];
setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
} else {
// 規格2が未選択の場合
let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_select_class_category2.message' | trans }}。</span>`;
setPointContainer(point_display_container, message, '.point-display');
}
});
// -----------------------------------
// 規格2選択時
// -----------------------------------
$('select[name=classcategory_id2]')
.change(function () {
if ( !is_option_point ) {
return;
}
let $form = $(this).parents('form');
let product_id = $form.find('input[name=product_id]').val();
let $sele1 = $form.find('select[name=classcategory_id1]');
let $sele2 = $(this);
let point_display_container = $form.find('.point-display-container');
let eccube = window.eccube;
let classcat_id1 = $sele1.val();
let classcat_id2 = $sele2.val() ? $sele2.val() : '';
let is_no_point_flag = eccube.displayPoints[product_id]['is_no_point_flag'];
// ポイント付与が無効の場合
if(is_no_point_flag) {
let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_point_flag.message' | trans }}</span>`;
setPointContainer(point_display_container, message);
return;
}
// 規格2が未選択の場合
if (!classcat_id2 ) {
let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_select_class_category2.message' | trans }}。</span>`;
setPointContainer(point_display_container, message, '.point-display');
return;
}
let classcat2 = eccube.displayPoints[product_id][classcat_id1]['#' + classcat_id2];
let point = classcat2['point'];
setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
});
function setPointContainer(point_display_container, container_data, children_class_name = null,)
{
if(!children_class_name) {
point_display_container.html(container_data);
} else {
point_display_container.children(children_class_name).html(container_data);
}
point_display_container.show();
}
});
</script>
{% endblock %}