{% extends 'default_frame.twig' %}
{% block main %}
<link rel="stylesheet" href="/common/css/jquery-ui.css">
<script src="/common/js/jquery-ui-1.13.0.js"></script>
<script src="/common/js/jquery.ui.datepicker-ja.min.js"></script>
<script>
var dateFormat = 'yy/mm/dd';
// 選択不可日付を登録(※最終行に「,」を入れない)
// 0を頭に付けて2桁にしてください。例.2020/01/03
var disableDates = [
{{ holiday|raw }}
];
// 六曜データをJavaScriptに渡す
var htRoku = {{ htRoku|json_encode|raw }};
$(function() {
// 日付フィールドの直接入力を禁止
$("#pia_reservation_hope_date01").keypress(function(e) {
$(this).val("");
alert("直接入力ではなくカレンダーから選択してください。");
return false;
});
$("#pia_reservation_hope_date02").keypress(function(e) {
$(this).val("");
alert("直接入力ではなくカレンダーから選択してください。");
return false;
});
$("#pia_reservation_hope_date03").keypress(function(e) {
$(this).val("");
alert("直接入力ではなくカレンダーから選択してください。");
return false;
});
$.datepicker.setDefaults($.datepicker.regional["ja"]);
$("#open_date").datepicker({
minDate: "+1d",
maxDate: "+4m",
numberOfMonths: 4,
showButtonPanel: false,
beforeShowDay: function(date) {
if (date.getDay() === 0) {
return [false, 'ui-state-disabled', "非営業日"];
} else {
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var disableDate = year + "/" + ('00' + (month + 1)).slice(-2) + "/" + ('00' + day).slice(-2);
var isAvailable = (disableDates.indexOf(disableDate) === -1);
// 六曜の取得
var dateStr = year + "-" + ('00' + (month + 1)).slice(-2) + "-" + ('00' + day).slice(-2);
var rokuyou = htRoku[dateStr] || "";
return [isAvailable, "", rokuyou];
}
},
onSelect: function(dateText, inst) {
// 日付をHTML5のdate形式に変換
var dateParts = dateText.split('/');
var formattedDate = dateParts[0] + '-' + dateParts[1].padStart(2, '0') + '-' + dateParts[2].padStart(2, '0');
// 4ヶ月カレンダーから選択した場合は第1希望日に設定
$("#pia_reservation_hope_date01").val(formattedDate);
$("#pia_reservation_hope_date01").focus();
}
});
$.datepicker.setDefaults({
minDate: "+1d",
maxDate: "+3m",
numberOfMonths: 1,
beforeShowDay: function(date) {
if (date.getDay() === 0) {
return [false, 'ui-state-disabled', "非営業日"];
} else {
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var disableDate = year + "/" + ('00' + (month + 1)).slice(-2) + "/" + ('00' + day).slice(-2);
return [(disableDates.indexOf(disableDate) === -1), "", "営業日"];
}
}
});
// 個別のdatepickerは、フォーカスされたフィールドにのみ適用
$("#pia_reservation_hope_date01").datepicker({
onSelect: function(dateText, inst) {
// 日付をHTML5のdate形式に変換
var dateParts = dateText.split('/');
var formattedDate = dateParts[0] + '-' + dateParts[1].padStart(2, '0') + '-' + dateParts[2].padStart(2, '0');
$(this).val(formattedDate);
$("#pia_reservation_hope_time01").focus();
}
});
$("#pia_reservation_hope_date02").datepicker({
onSelect: function(dateText, inst) {
// 日付をHTML5のdate形式に変換
var dateParts = dateText.split('/');
var formattedDate = dateParts[0] + '-' + dateParts[1].padStart(2, '0') + '-' + dateParts[2].padStart(2, '0');
$(this).val(formattedDate);
$("#pia_reservation_hope_time02").focus();
}
});
$("#pia_reservation_hope_date03").datepicker({
onSelect: function(dateText, inst) {
// 日付をHTML5のdate形式に変換
var dateParts = dateText.split('/');
var formattedDate = dateParts[0] + '-' + dateParts[1].padStart(2, '0') + '-' + dateParts[2].padStart(2, '0');
$(this).val(formattedDate);
$("#pia_reservation_hope_time03").focus();
}
});
});
function changeDateFormat(date) {
let year = date.getFullYear();
let month = ('00' + date.getMonth()).slice(-2);
let day = ('00' + date.getDate()).slice(-2);
let f_date = year + "/" + month + "/" + day;
return f_date;
}
function doConfirm() {
var hope_date01 = $("#pia_reservation_hope_date01").val();
if (!hope_date01) {
alert("第1希望日を選択してください。");
$("#pia_reservation_hope_date01").focus();
return;
}
$("#open_date").hide();
$("#fm").submit();
}
$(function() {
dispCalendar();
});
$(window).resize(function() {
dispCalendar();
});
function dispCalendar() {
var w = $(window).width();
var x = 640;
if (w <= x) {
$("#open_date").hide();
$("#calenderform button").show();
} else {
$("#open_date").show();
$("#calenderform button").hide();
}
}
function doSelect(id) {
$(id).focus();
}
$(function() {
doNext("#pia_reservation_reservation_name", "#pia_reservation_reservation_tel");
doNext("#pia_reservation_reservation_tel", "#pia_reservation_reservation_email");
doNext("#pia_reservation_reservation_email", "#pia_reservation_visitor");
doNext("#pia_reservation_visitor", "#pia_reservation_visitor_detail");
});
function doNext(s_id, n_id) {
$(s_id).keypress(function(e) {
if (e.which == 13) {
$(n_id).focus();
$(s_id).blur();
return false;
}
});
}
</script>
<style type="text/css">
#calenderform button {
display: none;
}
.ui-datepicker-today {
opacity: 1 !important;
}
.ui-datepicker-today span {
color: red !important;
border: 1px solid red !important;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
width: 25% !important;
}
#open_date {
width: fit-content;
margin: auto !important;
}
#error_msg {
width: 80%;
margin: 20px auto;
background-color: #fffce5;
padding: 10px;
}
#error_msg p {
margin: 0;
}
</style>
<div class="ec-registerRole">
<div class="kaso_h1title">
<p>Appointment</p>
<h1>来店予約</h1>
</div>
<div class="ec-off1Grid">
<div class="ec-off1Grid__cell">
<form id="fm" name="fm" method="post" action="{{ url('plugin_pia_reservation_confirm') }}">
{{ form_widget(form._token) }}
<div id="open_date"></div>
<div id="calenderform">
<div class="ec-borderedDefs">
<p id="attention_area" style="text-align: left;">
第1希望日を最優先とさせて頂きますが、先約を頂いている場合、お時間の調整または第2、第3希望日で承る場合がございますのでご了承下さい。<br>
ご予約お申込は、確定ではございません。のちほど担当者よりメールまたは、お電話にて改めてご連絡申し上げます。<br>
<span style="color:red;">※</span> は必要項目になります。ご入力お願い致します。
</p>
{% if error_msg %}
<div id="error_msg">
{% for msg in error_msg %}
<p><span style="color:red;">※</span>{{ msg }}</p>
{% endfor %}
</div>
{% endif %}
<div id="calen_table" class="open_date_val">
<dl>
<dt>第1希望日 <span style="color:red;">※</span></dt>
<dd>
<span>日程:</span>
{{ form_widget(form.hope_date01, {'attr': {'id': 'hope_date01', 'autocomplete': 'off'}}) }}
{{ form_errors(form.hope_date01) }}
<span> <br></span>
時間:
{{ form_widget(form.hope_time01, {'attr': {'id': 'hope_time01', 'onchange': 'doSelect("#pia_reservation_hope_date02");'}}) }}
{{ form_errors(form.hope_time01) }}
</dd>
</dl>
<dl>
<dt>第2希望日</dt>
<dd>
<span>日程:</span>
{{ form_widget(form.hope_date02, {'attr': {'id': 'hope_date02', 'autocomplete': 'off'}}) }}
{{ form_errors(form.hope_date02) }}
<span> <br></span>
時間:
{{ form_widget(form.hope_time02, {'attr': {'id': 'hope_time02', 'onchange': 'doSelect("#pia_reservation_hope_date03");'}}) }}
{{ form_errors(form.hope_time02) }}
</dd>
</dl>
<dl>
<dt>第3希望日</dt>
<dd>
<span>日程:</span>
{{ form_widget(form.hope_date03, {'attr': {'id': 'hope_date03', 'autocomplete': 'off'}}) }}
{{ form_errors(form.hope_date03) }}
<span> <br></span>
時間:
{{ form_widget(form.hope_time03, {'attr': {'id': 'hope_time03', 'onchange': 'doSelect("#pia_reservation_reservation_name");'}}) }}
{{ form_errors(form.hope_time03) }}
</dd>
</dl>
<dl>
<dt>お名前 <span style="color:red;">※</span></dt>
<dd class="w90">
{{ form_widget(form.reservation_name, {'attr': {'id': 'reservation_name'}}) }}
{{ form_errors(form.reservation_name) }}
</dd>
</dl>
<dl>
<dt>電話番号 <span style="color:red;">※</span></dt>
<dd class="w90">
{{ form_widget(form.reservation_tel, {'attr': {'id': 'reservation_tel'}}) }}
{{ form_errors(form.reservation_tel) }}
</dd>
</dl>
<dl>
<dt>メールアドレス <span style="color:red;">※</span></dt>
<dd class="w90">
{{ form_widget(form.reservation_email, {'attr': {'id': 'reservation_email'}}) }}
{{ form_errors(form.reservation_email) }}
</dd>
</dl>
<dl>
<dt>来店人数</dt>
<dd>
{{ form_widget(form.visitor, {'attr': {'id': 'visitor'}}) }}
{{ form_errors(form.visitor) }}
</dd>
</dl>
<dl>
<dt>詳細</dt>
<dd class="w90">
{{ form_widget(form.visitor_detail, {'attr': {'id': 'visitor_detail', 'rows': 5, 'maxlength': 2000, 'placeholder': '年齢、友人と一緒に来店予定、など'}}) }}
{{ form_errors(form.visitor_detail) }}
</dd>
</dl>
<dl>
<dt>ご質問など</dt>
<dd>
{{ form_widget(form.message, {'attr': {'id': 'message', 'rows': 5, 'maxlength': 2000}}) }}
{{ form_errors(form.message) }}
</dd>
</dl>
</div>
<div id="yoyaku">
<input type="button" value="予約内容を確認する" id="yoyakubtn" onclick="doConfirm();">
</div>
</div>
</div>
</form>
</div>
</div>
</div>
{% endblock %}