ビビディ・バビディ・ブティックの各コースの詳細空き検索時、スマホ向けサイトでは日付、PC向けサイトでは週の移動をせずに現在選択中の日/週を再度空き検索を行えるようにします
これにより面倒が減るだけで無く、不要なページ移動による余計な通信やサーバー負荷も軽減されます
※スマホ向けサイト・PC向けサイト両対応
※ブックマークレットの登録・利用方法が分からない場合は、基本的な使い方のページを参考にしてください
以下の文字列でブックマークレットを登録し、スマホ向け/PC向けサイトのビビディ・バビディ・ブティック検索から検索後、各コースの「空き時間を確認する」の表示結果のページで使用してください (「使い方」参照)
ダミー登録用の空ページのリンクコースを「すべて」で検索している場合、各コース名ごとの検索が可能です
PC向けサイトでは、元のページの仕様上、全コースの一斉検索はできませんブックマークレット化前のソースコードです
ご自身でカスタマイズされたい方はご自由にご利用ください
※ブックマークレット化の方法については記載していません
javascript: (function () {
// ビビディ・パビディ・ブティック
const markingElemId = '__bbq_current_day_reload';
if (document.getElementById(markingElemId)) {
alert('すでに実行されています');
return;
};
let sp = true;
if (!document.querySelector('#loadingReservationDate')) {
if (!document.querySelector('form#bbqReservationForm')) {
// 対象外ページ
alert('このページでは実行できません');
// return;
} else {
sp = false;
}
}
if (sp) {
// スマホ向けサイト(同日再検索)
const dateHeader = $('p.reservationOfDateDisp');
dateHeader.on('click', () => {
// ローディング中判定
if ($('li.next.nextDay.disabled:has(button)').length && $('li.prev.prevDay.disabled:has(button)').length) {
return;
};
const loadingReservationDate = $("#loadingReservationDate").val();
const loadingReservationDate_Date = $.datepicker.parseDate("yymmdd", loadingReservationDate, {});
if (loadingReservationDate_Date > calendarEndD) {
calendarEndD = loadingReservationDate_Date;
}
const prevReservationDate = loadingReservationDate_Date.add({ day: -1 });
const newReservationDate = $.datepicker.formatDate("yymmdd", prevReservationDate, {});
$("#loadingReservationDate").val(newReservationDate);
Bbq.changeReservationOfDate('next');
return false;
});
dateHeader.css('cursor', 'pointer');
} else {
// PC向けサイト 個別/同週再検索
$('div.boxBBQ04 div.header h2.heading').each((idx, el) => {
$(el).on('click', (event) => {
const courceSection = $(el).closest('div.boxBBQ04');
const prevButton = courceSection.find('div.utility ul.nav li:nth-child(1) a');
const nextButton = courceSection.find('div.utility ul.nav li:nth-child(2) a');
const timeTable = courceSection.find('.timeTable .slider .view');
// ローディング中判定
if (!prevButton.attr('href') && !nextButton.attr('href') || timeTable.find('div img[alt*="ローディング中"]').length) {
return;
};
// 週の先頭の日付を取得
const el_weekFirstDate = courceSection.find('div.timeList div.date ul li:nth-child(1) span.display');
let weekFirstDate = el_weekFirstDate.html();
// 1週間前の日付に変更
weekFirstDate = $.datepicker.formatDate("yymmdd", $.datepicker.parseDate("yymmdd", weekFirstDate, {}).addDays(-7), {});
el_weekFirstDate.html(weekFirstDate);
// 次の週ボタンイベントを呼び出し
const commodityCd = courceSection.find('.timeList input.cycle_commodityCD').val();
// 直接呼び出し
Bbq.nextGo(commodityCd, nextButton[0]);
});
$(el).css('cursor', 'pointer');
});
// 読み込み時のローディング表示のためのインターセプト(前週/次週切り替え時含む)
let loadingHtml = '';
for (let i = 0; i < 7; i++) {
loadingHtml += '<div style="position:relative;text-align:center;height:84px;"><img height="47" width="47" alt="ローディング中..." src="/cgp/images/jp/pc/ico/ico_loading_01.gif"></div>';
};
const orig_nextGo = Bbq.nextGo;
Bbq.nextGo = function (commodityCd, button) {
const timeTable = $(button).closest('div.boxBBQ04').find('.timeTable .slider .view');
timeTable.html(loadingHtml);
orig_nextGo.apply(this, arguments);
};
const orig_preBack = Bbq.preBack;
Bbq.preBack = function (commodityCd, button) {
const timeTable = $(button).closest('div.boxBBQ04').find('.timeTable .slider .view');
timeTable.html(loadingHtml);
orig_preBack.apply(this, arguments);
};
}
// マーキングタグ追加
const markingElem = $('<div>').attr('id', markingElemId).css('display', 'none');
$('body').append(markingElem);
})();