{{ include('Block/Sp/Item/error_modal.twig') }}
<style>
#item-detail #shopping-cart ul li {
padding: 0;
width: 100%;
}
#item-cart-matrix .item-cart-matrix-size-table {
font-family: 'メイリオ',Meiryo,'ヒラギノ角ゴ Pro W3','Hiragino Kaku Gothic Pro',Osaka,'MS Pゴシック','MS PGothic',sans-serif;
letter-spacing: normal;
margin: 0 !important;
}
#item-cart-matrix .item-cart-matrix-size-table .item-cart-matrix-sku-sokujitsu-stock-mark > span {
background-color: #1090DD;
font-size: 0.98rem;
letter-spacing: normal;
box-sizing: content-box;
padding: 0.245rem 0.8rem;
}
#item-cart-matrix .item-cart-matrix-size-table .item-cart-matrix-sales-price {
font-size: 1.4rem;
}
#item-cart-matrix .item-cart-matrix-size-table select {
font-size: 1.33rem;
}
.nyuka-yotei {
line-height: 120%;
}
</style>
<div id="item-detail">
<div id="shopping-cart">
{% if eccube_config.GoodsSetPurchase.NewUI.Enabled and goods.isGoodsSetPurchase %}
{% include 'Item/GoodsSetPurchase/main.twig' %}
{% else %}
<form id="cart" name="cart" action="/sp/cart-in?id={{ data.goods_id | display_text }}" method="POST">
<input type="hidden" id="OlToken" name="OlToken" value="{{ OlToken('matrix') }}">
<div id="cart-link"></div>
<div id="shopping-cart-title">ショッピングカート(カンタン注文!)</div>
<ul>
<li>
<div id="cartInputDiv" class="js-cartInputTableWrap">
<div id="tableAddDiv"></div>
<div style="margin: 0; text-align:center;">
{% set size_list = size %}
{% set color_list = color %}
{% if data.goods_set_purchase_flg == 1 %}
{% set is_set_purchase = true %}
{% else %}
{% set is_set_purchase = false %}
{% endif %}
{% for _color in color_list %}
{# {% if color_number_map['_color.gcl_id'] %} #}
{# {% color.color_num = color_number_map[_color.gcl_id] %} #}
{# {% endif %} #}
{% endfor %}
{% set _color = false %}
<div id="item-cart-matrix">
<div class="item-cart-matrix-color-select">
<span class="item-cart-matrix-color-select-label">{% if goods.isGoodsSetPurchase %}{{ goods.getAsGoodsSetPurchase(true).main_gsp_name }}の色{% else %}カラー選択{% endif %}</span>
<span class="item-cart-matrix-color-rbg"></span>
<select>
{% if isMobile() and eccube_config.CartMatrix.SP.NewUI.Enabled %}
{% for index, goodsColor in goods.goodsColorList %}
<option value="{{ goodsColor.gclId }}"
data-color-rbg="{{ goodsColor.color.colorRgb }}"
data-color-idx="{{ index }}">
{{ goodsColor.color.colorName }}{# {% if cellData.shiire_color is not null %} ({{ cellData.shiire_color }}){% endif %} #}
</option>
{% endfor %}
{% else %}
{% set matrixData = getInventoryMatrix(goods) %}
{% for tableData in matrixData %}
{% for ListData in tableData %}
{% for cellData in ListData %}
{% if loop.first %}
<option value="{{ cellData.color.gcl_id }}"
data-color-rbg="{{ cellData.color.color_rgb }}"
data-color-idx="{{ loop.parent.loop.index }}">
{{ cellData.color.color_name }}{% if cellData.shiire_color is not null %} ({{ cellData.shiire_color }}){% endif %}
</option>
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
</select>
</div>
{% if goods.isGoodsSetPurchase %}
{% for child in goods.getAsGoodsSetPurchase %}
{% if child.gsp_type != 0 %}
<div class="item-cart-matrix-color-select">
<span class="item-cart-matrix-color-rbg sub" style="background:#{{ child.color_rgb }};"></span>
<span id="item-cart-matrix-sub-color-select">{{ child.gsp_name }}({{ child.color_name }})</span>
</div>
{% endif %}
{% endfor %}
{% endif %}
<div class="item-cart-matrix-size-select">
<span class="item-cart-matrix-size-select-label">ご希望のサイズの数量を選択してください<br>複数のカラー、サイズもまとめてカートに入れられます。</span>
{% if isMobile() and eccube_config.CartMatrix.SP.NewUI.Enabled %}
{% include 'Item/NewCartArea/style.twig' with {} only %}
{% include 'Item/NewCartArea/script.twig' with {} only %}
{% include 'Item/NewCartArea/cart_matrix.twig' with { loop: { index0: 0 }, parent: null, item: item, NewUI: eccube_config.CartMatrix.SP.NewUI, skuMap: skuMap, visibleSizes: visibleSizes } only %}
<script>
$(function () {
//
var $form = $('#shopping-cart form');
var $matrixBox = $('#item-cart-matrix', $form);
var $colorSelect = $('.item-cart-matrix-color-select select', $matrixBox);
var $rgbColorBox = $('.item-cart-matrix-color-rbg:not(.sub)', $matrixBox);
/**
* 色選択処理
*/
$colorSelect.on('change', function () {
//
const $currentColor = $(this);
const $newCartArea = $('.item-cart-matrix-size-select');
const gclId = $currentColor.val();
//
$rgbColorBox.css('background', '#' + $('option:selected', this).attr('data-color-rbg'));
selectColorByGclId($newCartArea, gclId);
}).trigger('change');
});
</script>
<style>
.new-cart-area {
margin-top: 0 !important;
padding-top: 0 !important;
}
</style>
{% else %}
<table class="item-cart-matrix-size-table">
<thead>
<th>サイズ</th>
<th>販売価格(税込)</th>
<th>数量</th>
<th>在庫状況</th>
</thead>
<tbody>
{% for size_idx, _size in size_list %}
<tr data-gp-id="{{ _size.gp_id }}" data-size-idx="{{ size_idx + 1 }}">
<td class="item-cart-matrix-size">
{{ _size.size_name | escape }}
<div class="item-cart-matrix-sku-sokujitsu-stock-mark">
<span>即日発送</span></div>
</td>
<td class="item-cart-matrix-sales-price">{{ _size.gp_price | number_format }}円(税込)
</td>
<td>
<select>
<option value="0">数量</option>
{% for i in range (1, 100) %}
<option value="{{ i }}">{{ i }}</option>
{% endfor %}
</select>
</td>
<td>
<div class="item-cart-matrix-sku-stock-wrap">
<span class="item-cart-matrix-sku-stock"></span>
<span class="item-cart-matrix-sku-sokujitsu-stock"></span>
<span class="item-cart-matrix-sku-stock-msg"></span>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
</div>
{% if isMobile() and eccube_config.CartMatrix.SP.NewUI.Enabled %}
{% else %}
<script>
//
const stockData = {{ goods.getStockListForMatrix | json_encode() | raw }};
//
$(function () {
var goodsId = {{ data.goods_id }};
var $form = $('#shopping-cart form');
var $matrixBox = $('#item-cart-matrix', $form);
var $colorSelect = $('.item-cart-matrix-color-select select', $matrixBox);
console.log($colorSelect)
var $quantitySelect = $('.item-cart-matrix-size-select select', $matrixBox);
var $rgbColorBox = $('.item-cart-matrix-color-rbg:not(.sub)', $matrixBox);
var $sizeTable = $('.item-cart-matrix-size-table', $matrixBox);
// カートの選択状態をリセットしても、フォームデータが消えないように一枚多くラップしておく
// // var selectStatus = {}; // カートの選択状態をもっておく
var selectStatus = {
selectedStatus: {}, // カートの選択状態をもっておく
};
$form.data('selected-item-data', selectStatus);
// 当該商品の在庫情報取得
(function (stockData) {
/**
* 色選択処理
*/
$colorSelect.on('change', function () {
// 数量プルダウンをdisableに
disableQuantitySelect();
// 色プルダウン横のカラー変更
$rgbColorBox.css('background', '#' + $('option:selected', this).attr('data-color-rbg'));
var colorId = $colorSelect.val();
if (stockData.stockList[goodsId][colorId] === undefined) return;
// カラーを変更する度にリセットするように
// selectStatus.selectedStatus = {};
// 在庫表に値セット
setStockToTable(stockData.stockList[goodsId][colorId], stockData.janList[colorId]);
}).trigger('change'); // 色プルダウン横の色をセットするため一度キック
/**
* 数量選択処理
* 複数カラー、複数サイズの選択状況を保持する。
*/
$matrixBox.on('change', '.item-cart-matrix-size-table select', function () {
var $select = $(this);
var $tr = $select.closest('tr');
var colorIdx = $('option:selected', $colorSelect).attr('data-color-idx');
var sizeIdx = $tr.attr('data-size-idx');
if (selectStatus.selectedStatus[colorIdx] === undefined) selectStatus.selectedStatus[colorIdx] = {};
selectStatus.selectedStatus[colorIdx][sizeIdx] = $select.val();
});
})(stockData);
function disableQuantitySelect() {
$quantitySelect
.attr('disabled', 'disabled')
.removeClass('active ppre-order')
.find('option:selected')
.prop('selected', false)
;
}
function setStockToTable(stockMap, yoteiMap) {
$('tbody tr', $sizeTable).each(function () {
var $tr = $(this);
var colorId = $colorSelect.val();
var gpId = $tr.attr('data-gp-id');
var stockData = stockMap[gpId];
var yoteiData = yoteiMap[gpId];
if (stockData === undefined) return true;
// selectStatusから、選択状況復元
var colorIdx = $('option:selected', $colorSelect).attr('data-color-idx');
var sizeIdx = $tr.attr('data-size-idx');
if (
selectStatus.selectedStatus[colorIdx] &&
selectStatus.selectedStatus[colorIdx][sizeIdx] !== undefined &&
selectStatus.selectedStatus[colorIdx][sizeIdx] !== '0'
) {
$('select', $tr).val(selectStatus.selectedStatus[colorIdx][sizeIdx]);
}
;
setSizeRow($tr, stockData, yoteiData);
});
}
function setSizeRow($tr, stockData, yoteiData) {
var $stockNumArea = $('.item-cart-matrix-sku-stock', $tr).empty();
var $sokujitsuStockMarkArea = $('.item-cart-matrix-sku-sokujitsu-stock-mark', $tr);
var $sokujitsuStockNumArea = $('.item-cart-matrix-sku-sokujitsu-stock', $tr).empty();
var $stockMsgArea = $('.item-cart-matrix-sku-stock-msg', $tr).empty();
$tr.hide();
if (stockData.nodisp === '1') return;
$tr.show();
// 即日マークを非表示
$sokujitsuStockMarkArea.hide();
if (
stockData.stock !== '*' &&
stockData.stock === 0 &&
(typeof (stockData.comment) === 'undefined' || stockData.comment === '') &&
(typeof (stockData.zdate) === 'undefined' || stockData.zdate === '')
) {
$stockMsgArea.text('在庫切れ');
return;
}
// 在庫数表示
if (stockData.stock > 0) {
$stockNumArea.text(stockData.stock);
}
if (stockData.stock3 !== undefined) {
var sokujitsuStock = parseInt(stockData.stock3.replace(/^[^\d]*(\d+)[^\d]*$/, '$1'));
if (Number.isFinite(sokujitsuStock) && sokujitsuStock > 0) {
$sokujitsuStockMarkArea.show();
$sokujitsuStockNumArea.html('<span>(即日発送 ' + sokujitsuStock + ')</span>');
}
}
$('select option', $tr).removeAttr('disabled');
if (stockData.stock !== '*' && stockData.stock < 100) {
$('select option:gt(' + stockData.stock + ')', $tr).attr('disabled', 'disabled');
}
$stockNumArea.removeClass('item-cart-matrix-sku-stock-rest');
if (stockData.stock <= 10 && stockData.stock > 0) {
$stockNumArea
.prepend('残り')
.addClass('item-cart-matrix-sku-stock-rest')
;
}
$stockNumArea.show();
$stockMsgArea.removeClass('has-arrival-date')
if (
(isNaN(stockData.stock3) || parseInt(stockData.stock3) === 0) &&
(
stockData.stock === 0 ||
((stockData.stock === stockData.stock_other) && !!yoteiData)
)
) {
var comment = '';
var hasZdate = typeof (stockData.zdate) !== 'undefined' && stockData.zdate !== '';
var hasComment = typeof (stockData.comment) !== 'undefined' && stockData.comment !== '';
if (!!yoteiData) {
// 予約注文
$('select', $tr)
.removeAttr('disabled')
.addClass('active reservation')
;
$('select option', $tr).removeAttr('disabled');
var nyuukaDate = new Date(yoteiData);
var displayDate = new Date(nyuukaDate.getFullYear(), nyuukaDate.getMonth(), nyuukaDate.getDate() + 1);
var zdate = displayDate.getMonth() + 1 + '月' + displayDate.getDate() + '日';
comment = '入荷予定日<br>' + zdate;
} else {
// 赤字(残り0)を非表示にしてcommentを表示
$stockNumArea.hide();
// コメントはzdateが優先
if (hasZdate) {
comment = '入荷予定日<br>' + stockData.zdate;
} else if (hasComment) {
comment = stockData.comment;
}
}
$stockMsgArea
.append(comment)
.addClass('has-arrival-date')
;
return;
}
$('select', $tr)
.removeAttr('disabled')
.addClass('active')
.removeClass('reservation')
;
}
});
</script>
<style>
.reservation {
border: 2px solid red;
border-radius: 2px;
background: white;
}
</style>
{% endif %}
<span class="add-to-cart"><img class="muji" style="width: 95%;" id="cartBtnImg"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_cart_sp.gif" border="0" alt="カートに入れる"/><img
style="width: 95%;display:none;" id="cartBtnImgDisabled"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_cart_sp_disabled.png" border="0"/></span><br/>
{% if data.goods_naire_print != '2' %}
<span class="add-to-cart"><img class="print" style="margin-top: 5px; width: 95%;" id="mitsumoriCartBtnImg"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_mitsumori_sp.gif" border="0"
alt="プリント・刺繍して見積・カートに入れる"/><img
style="margin-top: 5px; width: 95%;display:none;" id="mitsumoriCartBtnImgDisabled"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_mitsumori_sp_disabled.png" border="0"/></span><br/>
{% endif %}
{% if data.goods_susoage == '1' %}
<span class="add-to-cart"><img class="susoage" style="margin-top: 5px; width: 95%;" id="susoageCartBtnImg"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_susoage_sp.gif" border="0" alt="裾上げして見積・カートに入れる"/></span>
<br/>
{% endif %}
{% if data.goods_sample_rental != '0' %}
<span class="add-to-cart"><img class="sample" style="margin-top: 5px; width: 95%;" id="sampleCartBtnImg"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_sample_sp.gif" border="0" alt="貸出サンプル"/><img
style="margin-top: 5px; width: 95%;display:none;" id="sampleCartBtnImgDisabled"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_sample_sp_disabled.png" border="0"/></span>
{% endif %}
{% if isOutOfService %}
<br/>
<span class="add-to-cart"><img class="add-to-cart" style="margin-top: 5px; width: 95%;" id="telOrderBtnImg"
src="https://img0.land-mark.biz/ut_img/public_images/image_dt/btn_tel_order_sp.jpg" border="0" alt="電話でご相談・ご注文"/></span>
{% endif %}
</div>
{% if stockNyukayoteiList | length %}
<span id="blink">★「入荷予定日」のあるものは、電話やFAXで「予約注文」を承ります</span>
{% endif %}
</div>
</li>
</ul>
<script>
var last_scroll_top_value = 0;
function showLoadingOverlay() {
if ($('.bg-load-overlay').length === 0) {
$('body').append('<div class="bg-load-overlay" style="display: none;"></div>');
}
$('.bg-load-overlay').fadeIn();
}
document.addEventListener("DOMContentLoaded", function() {
const buttons = [
'#cartBtnImg',
'#mitsumoriCartBtnImg',
'#susoageCartBtnImg',
'#sampleCartBtnImg'
];
buttons.forEach(buttonId => {
$(buttonId).on('click', showLoadingOverlay);
});
});
function showModalWindow() {
last_scroll_top_value = $(document).scrollTop();
$("body").css("height", $(window).height());
$("body").css("overflow", "hidden");
$("#overlay").css("visibility", "visible");
$("#modal-window").css("visibility", "visible");
}
function closeModalWindow() {
$("body").css("height", "auto");
$("body").css("overflow", "auto");
$("#overlay").css("visibility", "hidden");
$("#modal-window").css("visibility", "hidden");
window.scrollTo(0, last_scroll_top_value);
}
function showModalWindowSample() {
last_scroll_top_value = $(document).scrollTop();
$("body").css("height", $(window).height());
$("body").css("overflow", "hidden");
$("#overlay").css("visibility", "visible");
$("#modal-window-sample").css("visibility", "visible");
}
function closeModalWindowSample() {
$("body").css("height", "auto");
$("body").css("overflow", "auto");
$("#overlay").css("visibility", "hidden");
$("#modal-window-sample").css("visibility", "hidden");
window.scrollTo(0, last_scroll_top_value);
}
function showAlertWindow(msg) {
last_scroll_top_value = $(document).scrollTop();
$("#alert-window p.alert-explain").text(msg);
$("body").css("height", $(window).height());
$("body").css("overflow", "hidden");
$("#overlay").css("visibility", "visible");
$("#alert-window").css("visibility", "visible");
}
function closeAlertWindow() {
$("body").css("height", "auto");
$("body").css("overflow", "auto");
$("#overlay").css("visibility", "hidden");
$("#alert-window").css("visibility", "hidden");
window.scrollTo(0, last_scroll_top_value);
}
function showModalWindowTelOrder() {
$("#overlay").css("visibility", "visible");
var $modal = $("#modal-window-tel-order").css("visibility", "visible");
var modalHeight = $modal.height();
$modal.css('top', $(document).scrollTop() + ($(window).height() / 2) - (modalHeight / 4));
}
function closeModalWindowTelOrder() {
$("#overlay").css("visibility", "hidden");
$("#modal-window-tel-order").css("visibility", "hidden");
}
function showModalWindowSizeChart() {
var $overlay = $("#overlay-scrollable").css("visibility", "visible");
var $modal = $("#modal-window-size-chart").show().appendTo($overlay);
}
function closeModalWindowSizeChart() {
$("#overlay-scrollable").css("visibility", "hidden");
$("#modal-window-size-chart").hide();
}
function add_to_cart() {
send_to_cartin('order');
}
function add_to_cart_sample(f) {
send_to_cartin('sample');
}
function add_to_cart_print(f) {
send_to_cartin('print');
}
function updateCart(type) {
$.ajax({
type: "GET",
url: '/sp/cart-update',
dataTyep: 'json',
cache: false,
xhrFields: {
withCredentials: true
},
success: function (data) {
if (data.err == 0) {
if (type == 'order') {
// showModalWindow();
location.href = '/sp/cart-muji';
} else {
// showModalWindowSample();
location.href = '/sp/cart-sample';
}
} else {
showAlertWindow(data.msg);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
showAlertWindow('エラー ' + errorThrown);
}
});
return false;
}
function _send_to_cartin(options, $sendForm) {
var $form = $('form[name=cart]');
var selectedStatus = $form.data('selected-item-data').selectedStatus;
var $matrixBox = $('#item-cart-matrix');
// 格納されている選択状態から送信データを作成
for (var colorIdx in selectedStatus) {
for (var sizeIdx in selectedStatus[colorIdx]) {
if (selectedStatus[colorIdx][sizeIdx] === '0') continue;
// var $input = $('<input type="hidden">')
// .attr('name', 'cart_['+sizeIdx+'_'+colorIdx)
// .val( selectedStatus[colorIdx][sizeIdx] )
// ;
var $input = $('input[name^="product_matrix"]')
.filter('[data-color-idx="' + colorIdx + '"]')
.filter('[data-size-idx="' + sizeIdx + '"]').clone()
.val(selectedStatus[colorIdx][sizeIdx])
;
$sendForm.append($input);
}
}
options = $.extend({
type: "POST",
url: $sendForm.attr('action'),
data: $sendForm.serialize(),
dataTyep: 'text',
cache: false,
xhrFields: {
withCredentials: true
}
}, options);
return $.ajax(options);
}
function send_to_cartin(type) {
let url;
switch (type) {
case 'print':
case 'susoage':
url = '{{ url('valid_estimate') }}';
break;
case 'sample':
url = '{{ url('add_sample') }}';
break;
case 'order':
default:
url = '{{ url('add_Normal') }}';
break;
}
const $form = $('form[name=cart]').clone().appendTo(document.body);
return _send_to_cartin({
url
}, $form)
.done(function (data, textStatus, jqXHR) {
console.log(jqXHR.status); // 200
console.log(textStatus); // success
console.log(data);
if (data.status == 'OK') {
console.log(data.data);
if (type == 'print' || type == 'susoage') {
$form.attr('action', '{{ url('estimate') }}');
$form.submit();
} else {
window.location.href = '{{ url('cart') }}';
}
}
if (data.status == 'Error') {
console.log(data.Errors);
var errorMsg = "";
$.each(data.Errors, function (index, val) {
errorMsg += val.message + "\n";
});
if (data.show_error_modal) {
showErrorModal(errorMsg)
} else {
showAlertWindow(errorMsg);
}
$('#OlToken').val(data.OlToken);
}
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR.status); // 404...
console.log(textStatus); // error
console.log(errorThrown); // NOT FOUND
showAlertWindow('送信エラー:もう一度やり直してください');
location.reload();
})
.always(function () {
console.log("complete"); // complete
$form.remove();
});
;
}
</script>
</form>
{% if isMobile() and eccube_config.CartMatrix.SP.NewUI.Enabled %}
{% else %}
{% for tableData in matrixData %}
{% for ListData in tableData %}
{% for cellData in ListData %}
<input type="hidden" name="product_matrix[{{ cellData.product_id }}]" value=""
data-color-idx="{{ loop.parent.loop.index }}" data-size-idx="{{ loop.index }}"/>
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
</div>
<script type="text/javascript" async>
var GOODS_ID = '{{ data.goods_id }}';
var GOODS_NAME = '{{ data.goods_name }}';
var product_ids = GOODS_ID;
var product_name = GOODS_NAME;
$(function () {
init();
var option_color_id = new Array();
var option_color_name = new Array();
{% for _k, _c in color %}
option_color_id[{{ _k }}] = {{ _c.gcl_id }}
option_color_name[{{ _k }}] = "{{ _c.color_name }}"
{% endfor %}
var option_size_id = new Array();
var option_size_name = new Array();
{% for _k, _size in size %}
option_size_id[{{ _k }}] = {{ _size.gp_id }}
option_size_name[{{ _k }}] = "{{ _size.size_name }}"
{% endfor %}
var option_stock_list = new Array();
var option_stock_flg = new Array();
{% for _cid, _v in stockList %}
option_stock_list[{{ _cid }}] = new Array();
option_stock_flg[{{ _cid }}] = new Array();
{% for _gid, _stock in _v %}
{% set matches = [] %}
{% if stockKeppinList[_cid][_gid] %}
option_stock_list[{{ _cid }}][{{ _gid }}] = false;
option_stock_flg[{{ _cid }}][{{ _gid }}] = 0;
{% elseif preg_match('/^[0-9]+?$/', _stock, matches) %}
option_stock_list[{{ _cid }}][{{ _gid }}] = false;
option_stock_flg[{{ _cid }}][{{ _gid }}] = {{ _stock }};
{% elseif _stock == '*' %}
option_stock_list[{{ _cid }}][{{ _gid }}] = 1000;
option_stock_flg[{{ _cid }}][{{ _gid }}] = true;
{% endif %}
{% endfor %}
{% endfor %}
args = {};
args['goods'] = {{ data | json_encode() | raw }};
args['goods']['color'] = {{ color | json_encode() | raw }};
args['goods']['size'] = {{ size | json_encode() | raw }};
args['stockList'] = {{ stockList | json_encode() | raw }};
args['stockKeppinList'] = {{ stockKeppinList | json_encode() | raw }};
args['option_color_id'] = option_color_id;
args['option_color_name'] = option_color_name;
args['option_size_id'] = option_size_id;
args['option_size_name'] = option_size_name;
args['option_stock_list'] = option_stock_list;
args['option_stock_flg'] = option_stock_flg;
main(args);
});
</script>
<script type="text/javascript">
$('.kuru2').on('kuru2ed', function (e) {
$.ajax('/ajax/kuru2ed/', {
type: 'post',
dataType: 'json',
data: {id: GOODS_ID},
xhrFields: {withCredentials: true}
});
});
</script>
<script>
function moveToTarget(target_no) {
if (target_no == "prev") {
target_no = current_no - 1;
} else if (target_no == "next") {
target_no = current_no + 1;
}
img_total_count = {{ imgrow | length }};
{% if mainUrl is defined and mainUrl %}
img_total_count++;
{% endif %}
if (target_no >= img_total_count) {
target_no = 0;
} else if (target_no < 0) {
target_no = img_total_count - 1;
}
$("#main_banner").css({"-webkit-transition-duration": "500ms"});
$("#main_banner").css({"-webkit-transform": "translate3d(-" + (img_width * target_no) + "px, 0, 0)"});
current_no = target_no;
$(".control-selected").removeClass("control-selected");
$(".control").eq(current_no).addClass("control-selected");
$("#disp_current_no").text(current_no);
}
function loop() {
current_no++;
moveToTarget(current_no);
loop_timeout = setTimeout("loop()", 2000);
}
function init() {
img_total_count = {{ imgrow | length }};
{% if mainUrl is defined and mainUrl %}
img_total_count++;
{% endif %}
img_width = 498;
if ($(window).width() < img_width) {
img_width = $(window).width();
}
$("#main_banner_wrapper").css("width", img_width);
$(".slide-img").css("width", img_width).show();
$("#main_banner").css("width", img_width * img_total_count);
$("#main_banner").css({"-webkit-transition-duration": "0ms"});
$("#main_banner").css({"-webkit-transform": "translate3d(0, 0, 0)"});
moveToTarget(0);
}
function main(args) {
// 在庫一覧の生成
var data = args['data'];
var nyukaYoteibiList = args['nyukaYoteibiList'];
var stockKeppinList = args['stockKeppinList'];
var stockList = args['stockList'];
var goods = args['goods'];
var colorList = goods['color'];
var sizeList = goods['size'];
var sizeCount = sizeList.length;
var $tbody = $('#size-chart-body');
for (var i = 0; i < colorList.length; i++) {
var color = colorList[i];
for (var j = 0; j < sizeList.length; j++) {
var size = sizeList[j];
var $tr = $('<tr />').appendTo($tbody);
var stock;
if (j == 0) {
var $tdColorLabel = $('<td />')
.attr({rowspan: sizeCount})
.css({'background-color': color['color_rgb'].replace(/#?([^#]+)/, '#$1')})
.html(' ')
.appendTo($tr);
var $tdColor = $('<td />')
.attr({rowspan: sizeCount})
.css({'background-color': '#FFFFFF'})
.html(color['color_name'])
.appendTo($tr);
}
var $tdSize = $('<td />')
.css({'background-color': '#FFFFFF'})
.html(size['size_name'])
.appendTo($tr);
var $tdStock = $('<td />')
.css({'background-color': '#FFFFFF'})
.appendTo($tr);
if (nyukaYoteibiList && nyukaYoteibiList[color['gcl_id']] && nyukaYoteibiList[color['gcl_id']][size['gp_id']]) {
$tdStock.html('入荷予定日' + nyukaYoteibiList[color['gcl_id']][size['gp_id']].zdate);
} else if (stockKeppinList[color['gcl_id']][size['gp_id']]) {
$tdStock.html('在庫切れ');
} else if (stockList[color['gcl_id']][size['gp_id']] == '0') {
$tdStock.html('在庫切れ');
} else if (stockList[color['gcl_id']][size['gp_id']] == '*') {
$tdStock.html('問合せ');
} else if (stockList[color['gcl_id']][size['gp_id']] > 0 && stockList[color['gcl_id']][size['gp_id']] <= 10) {
$tdStock.html('<span style="color:red;">残り' + stockList[color['gcl_id']][size['gp_id']] + '</span>');
} else if ((stock = stockList[color['gcl_id']][size['gp_id']]) !== undefined) {
$tdStock.html(stock.toLocaleString());
} else {
$tdStock.html('在庫切れ');
}
}
}
var option_color_id = args['option_color_id'] || [];
var option_color_name = args['option_color_name'] || [];
var option_size_id = args['option_size_id'] || [];
var option_size_name = args['option_size_name'] || [];
var option_stock_list = args['option_stock_list'] || [];
var option_stock_flg = args['option_stock_flg'] || [];
var no_disp_color = [];
var no_disp_size = [];
var t = 1;
// setInterval(function(){
// if(t) {
// $("#blink").css('color', '#fff');
// t=0;
// }else {
// $("#blink").css('color', '#f00');
// t=1;
// }
// },500);
dragging = false;
current_no = 0;
// diff = 0;
// loop_timeout = setTimeout("loop()", 2000);
loop_timeout = null;
$(window).bind("orientationchange", function () {
switch (window.orientation) {
case 0:
init();
case 90:
init();
case -90:
init();
}
});
$("#main_banner").bind("touchmove", function (e) {
if (dragging == true && $("#main_banner").css("-webkit-transition-duration") != "500ms") {
diff_x = e.originalEvent.changedTouches[0].pageX - start_x;
diff_y = e.originalEvent.changedTouches[0].pageY - start_y;
isScroll = Math.abs(diff_y) >= Math.abs(diff_x); // 縦の移動量の方が多いときはスクロールとみなす
if (!isScroll) {
e.preventDefault(); // Android 対策
$("#main_banner").css({"-webkit-transition-duration": "0ms"});
move = (current_no * img_width) - diff_x;
if (move < 0) {
move = Math.abs(move);
$("#main_banner").css({"-webkit-transform": "translate3d(" + move + "px, 0, 0)"});
} else {
$("#main_banner").css({"-webkit-transform": "translate3d(-" + ((current_no * img_width) - diff_x) + "px, 0, 0)"});
}
}
}
});
$("#main_banner").bind("touchstart", function (e) {
//e.preventDefault();
start_x = e.originalEvent.changedTouches[0].pageX;
start_y = e.originalEvent.changedTouches[0].pageY;
dragging = true;
clearTimeout(loop_timeout);
});
$("body").bind("touchend", function () {
if (dragging == true) {
if (diff_x <= -20 && current_no < $('#control-ul li').length && !isScroll) {
current_no++;
} else if (diff_x >= 20 && current_no > 0 && !isScroll) {
current_no--;
}
moveToTarget(current_no);
}
dragging = false;
});
function check_nodisp(c, s) {
for (k = 0; k < no_disp_color.length; k++) {
if ((no_disp_color[k] == c) && (no_disp_size[k] == s)) {
return 1;
}
}
return 0;
}
function add_color(selectC, size) {
for (i = 0; i < option_color_id.length; i++) {
if (size != "") {
if (check_nodisp(option_color_id[i], size) == 1) {
continue;
}
}
selectC.append($('<option>').html(option_color_name[i]).val(option_color_id[i]).attr('data-idx', i + 1));
}
}
function add_size(selectS, color) {
for (i = 0; i < option_size_id.length; i++) {
if (color != "") {
if (check_nodisp(color, option_size_id[i]) == 1) {
continue;
}
}
selectS.append($('<option>').html(option_size_name[i]).val(option_size_id[i]).attr('data-idx', i + 1));
}
}
function add_quantity(color, size, $cartInputTableWrap) {
// オプションを全て消す
$('select.quantity > option', $cartInputTableWrap).remove();
// 「/在庫数:XX」部分を隠す
$('.stock-number-part', $cartInputTableWrap).hide();
// 数量はデフォルトで1をセット
$('select.quantity', $cartInputTableWrap).append($('<option value="1">1</option>'));
// サイズもカラーも選択されている場合
if (size && color) {
var sizeCount = option_stock_list[color][size];
if (sizeCount === '*') { // 在庫あり
$cartInputTableWrap.find('.select-quantity').hide();
$cartInputTableWrap.find('.select-quantity-no-stock').hide();
$cartInputTableWrap.find('.select-quantity-free').show();
$('.stock-number', $cartInputTableWrap).text(sizeCount);
$('.stock-number-part', $cartInputTableWrap).show();
$('.quantity', $cartInputTableWrap).prop('disabled', true);
$('.quantity-free', $cartInputTableWrap).prop('disabled', false);
} else if (sizeCount) { // 在庫あり
$cartInputTableWrap.find('.select-quantity').show();
$cartInputTableWrap.find('.select-quantity-no-stock').hide();
$cartInputTableWrap.find('.select-quantity-free').hide();
$('.stock-number', $cartInputTableWrap).text(sizeCount);
$('.stock-number-part', $cartInputTableWrap).show();
$('.quantity', $cartInputTableWrap).prop('disabled', false);
$('.quantity-free', $cartInputTableWrap).prop('disabled', true);
} else { // 在庫なし
$cartInputTableWrap.find('.select-quantity').hide();
$cartInputTableWrap.find('.select-quantity-no-stock').show();
$cartInputTableWrap.find('.select-quantity-free').hide();
$('.quantity', $cartInputTableWrap).prop('disabled', true);
$('.quantity-free', $cartInputTableWrap).prop('disabled', true);
}
for (i = 2; i <= sizeCount; i++) { // 在庫なしの場合、sizeCountが0なので、一度も実行されない
$('select.quantity', $cartInputTableWrap).append($('<option>').html(i).val(i));
}
}
}
add_color($('select.color:first'), "");
add_size($('select.size:first'), "");
add_quantity();
$('select.quantity').on('change', function () {
checkSelectState();
});
// 色、サイズ、数量の選択状況をチェックし、カートに追加できる状況であれば追加ボタンを有効にする
function checkSelectState() {
var isActive = false;
$('.cartInputTable').each(function () {
var $this = $(this);
if (
$('select.color', $this).val() !== '' &&
$('select.size', $this).val() !== '' &&
(!$('select.quantity', $this).prop('disabled')
|| !$('input.quantity-free', $this).prop('disabled') && $('input.quantity-free', $this).val() !== '')
) {
isActive = true;
return false;
}
});
// toggleSubmit(isActive);
}
toggleSubmit(true);
function toggleSubmit(isActive) {
if (isActive) {
$('#cartBtnImg').show();
$('#mitsumoriCartBtnImg').show();
$('#susoageCartBtnImg').show();
$('#sampleCartBtnImg').show();
$('#cartBtnImgDisabled').hide();
$('#mitsumoriCartBtnImgDisabled').hide();
$('#sampleCartBtnImgDisabled').hide();
} else {
$('#cartBtnImg').hide();
$('#mitsumoriCartBtnImg').hide();
$('#susoageCartBtnImg').hide();
$('#sampleCartBtnImg').hide();
$('#cartBtnImgDisabled').show();
$('#mitsumoriCartBtnImgDisabled').show();
$('#sampleCartBtnImgDisabled').show();
}
}
$('select.color,select.size,.quantity-free').on('change', function () {
var $cartInputTableWrap = $(this).parents('.cartInputTable');
add_quantity($('select.color', $cartInputTableWrap).val(), $('select.size', $cartInputTableWrap).val(), $cartInputTableWrap);
checkSelectState();
});
}
$(function () {
$("#toggle-2").click(function () {
$(".display-2").toggle();
});
$("#toggle-3").click(function () {
$(".display-3").toggle();
});
// 非セット品番 無地でカートに入れる
$("#cartBtnImg").click(function () {
$('input[name=print]').val('');
$('input[name=susoage]').val('');
$('input[name=sample]').val('');
send_to_cartin('order');
// $('#button-add-to-cart').click(add_to_cart);
// if ($('#tableAddDiv').find('table').size() == 0) $("#addCartInputRowBtn").click();
});
$("#sampleCartBtnImg").click(function () {
$('input[name=print]').val('');
$('input[name=susoage]').val('');
$('input[name=sample]').val('on');
send_to_cartin('sample');
// $('#button-add-to-cart').click(add_to_cart_sample);
// if ($('#tableAddDiv').find('table').size() == 0) $("#addCartInputRowBtn").click();
});
$("#mitsumoriCartBtnImg").click(function () {
$('input[name=print]').val('on');
$('input[name=susoage]').val('');
$('input[name=sample]').val('');
send_to_cartin('print');
// $('#button-add-to-cart').click(add_to_cart_print);
// if ($('#tableAddDiv').find('table').size() == 0) $("#addCartInputRowBtn").click();
});
// 裾上げ
/**
* PCで裾上げはプリントあり、裾上げあり、という情報でPOSTされるので、同じにする。
*/
$("#susoageCartBtnImg").click(function () {
$('input[name=print]').val('on');
$('input[name=susoage]').val('on');
$('input[name=sample]').val('');
send_to_cartin('susoage');
});
$('.closeLink').click(function () {
$(this).parent().parent().parent().parent().remove();
return false;
});
//電話で注文ボタン
$("#telOrderBtnImg").click(function () {
showModalWindowTelOrder();
});
$("#sizeChartLink").click(function () {
showModalWindowSizeChart();
return false;
});
$('#modal-window-size-chart').click(function () {
closeModalWindowSizeChart();
return false;
});
$('#modal-window-tel-order a.call-btn').click(function () {
// 即時リクエストだと正常に通信できなかったので少しずらす
setTimeout(function () {
$.ajax({
type: "GET",
url: '/sp/ajax-count-tel-order-btn-click-up',
cache: false,
success: function () {
// クリックカウントの取得のみなので何もしない
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// 電話発信が行えない可能性があるので何もしない
}
});
}, 1000);
});
});
</script>
{% endif %}
</div>