INSIGHT

情報・インサイト

FullCalendarで特定の日付に飛ぶボタンを設置する

2024.06.24
みなさんは1ヶ月後の1週間の予定、前月の同日の予定を確認したいということはありませんか?
今回はFullCalendarを利用したカレンダー画面で、単に前週/次週に飛ぶだけでなく、特定の日付に飛ぶようなカスタムボタンを設置してみましたのでご紹介します。
使用したバージョンはFullCalendar v5.11.3です(`・ω・´)ゞ

やりたいこと

・ウィークリー表示のときに、月単位で同日の週に飛ぶボタンを追加したい

・デイリー表示のときに、月単位で同日に飛ぶボタンを追加したい

デフォルトで設置できるボタンは、ウィークリーカレンダーだと前週/次週、デイリーカレンダーだと前日/次日に遷移するため、少しカスタマイズする必要があります。

 

サンプルコード

const BUTTON_DISPLAY_SETTINGS = {
    'dayGridMonth': 'none',
    'timeGridWeek': 'inline-block',
    'timeGridDay': 'inline-block',
};
let date = new Date();
let calendar = new FullCalendar.Calendar(document.getElementById('calendar'), {
    initialView: 'dayGridMonth',
    timeZone: 'Asia/Tokyo',
    locale: 'ja',
    buttonText: {
        month: '月',
        week: '週',
        day: '日',
    },
    customButtons: {// ①カスタムボタンの追加
        prevMonth: {
            text: '前月',
            click: function () {
                date.setMonth(date.getMonth() - 1);
                calendar.gotoDate(date); // ②前月へ飛ばす
            }
        },
        nextMonth: {
            text: '次月',
            click: function () {
                date.setMonth(date.getMonth() + 1);
                calendar.gotoDate(date); // ②次月へ飛ばす
            }
        },
        today: {
            text: '今日',
            click: function () {
                date = new Date(); // ③「今日」ボタン押下時はdateをリセットする
                calendar.today();
            }
        }
    },
    headerToolbar: { // ④ヘッダー要素にカスタムボタンを追加する
        left: 'prev,next today prevMonth,nextMonth',
        center: 'title',
        right: 'dayGridMonth,timeGridWeek,timeGridDay'
    },
    datesSet: function (view) { // ⑤マンスリー表示の際はボタンを表示しないようにする
        let viewType = view.view.type;
        $('.fc-prevMonth-button').css('display', BUTTON_DISPLAY_SETTINGS[viewType]);
        $('.fc-nextMonth-button').css('display', BUTTON_DISPLAY_SETTINGS[viewType]);
    }
});
calendar.render();

手順を追って説明していきます(*‘ω‘ *)

customButtonsで追加したいボタン(prevMonthとnextMonth)を作成する。

②カスタムボタンのclickイベントに、gotoDateメソッドを利用して特定の日付へ飛ばす処理を記述。今回は前月/次月へ飛ばしたかったため、その日付を指定する。

③「今日」ボタン押下時に、カスタムボタン用に日付を保持していた変数dateを当日でリセットする。

headerToolbarに①で作成したカスタムボタンを追加する。

⑤マンスリー表示のときはこのボタンは表示したくなかったため、datesSetで表示の制御を行う。datesSetは、新しい日付範囲に移動したときにトリガーされるイベントなので、そのときにCSSで非表示にするような処理を追加。受け取るパラメータviewには新しい表示範囲に関する詳細情報が入っており、そこからカレンダータイプを取得。

 

完成形がコチラ▼▼▼

マンスリーカレンダー

初期表示にしているマンスリーカレンダーでは、前月/次月ボタンは表示されていません。

ウィークリーカレンダー

ウィークリーに切り替えると、「前月」「次月」ボタンが表示されます。「次月」ボタンを押下すると、

6/18の1か月後、7/18の週が表示されます。

デイリーカレンダー

デイリーカレンダーでも「前月」「次月」ボタンが表示されています。「次月」ボタンを押下すると、

1か月後の7/18が表示されます。

 

おわりに

gotoメソッドに特定の日付を設定しているだけなので、毎月末に飛ばす、締め日に飛ばすなど、自由にカスタマイズできます👍

最後までお読みいただきありがとうございました。

 

 

ウィズテクノロジーで一緒に働きませんか?
分野を限定せず幅広い事業を展開。新しい技術の導入にも積極的に取り組んでおり、チャレンジや成長する機会が沢山。
あなたの経験・知識を活かしながら一緒にIT業界を盛り上げて行きましょう!
採用情報詳細はコチラ

WORKS

導入事例

ウィズテクノロジーは大阪を拠点に、システム開発の分野で20年の実績を持つパートナー企業です。
業務効率化やDX支援など、さまざまな課題にワンストップで対応。
経験豊富なエンジニアが、企業の成長を技術面からしっかりサポートします。

導入事例一覧を見る
導入事例一覧を見る

RECRUIT

採用情報

未来に、価値ある選択を。

All WhizzTechnologyは、期待を超える価値をともにつくり、より良い未来へ導く仲間を募集しています。