Closed4
国内Elixirイベントのカレンダーを作るまでの制作ログ
これの開発を進めている時の気づき諸々メモっていく
カレンダーライブラリ
https://fullcalendar.io/docs/initialize-es6 にある通り、npmで導入
npm install @fullcalendar/core @fullcalendar/daygrid @fullcalendar/timegrid @fullcalendar/list
2022/02/03時点でapp.jsはこんな感じ
- 1日, 2日...のように "日" が作るのが微妙なのでdayCellContentで消す
- listの表示でdotが場所とって微妙なので消す
- eventsはpathを書いておくとrequestを投げて取得した結果のリストを設定してくれる(便利
- カレンダーに設定する用に別途apiのendpointを生やしておけば楽に値を設定できる
...略
import { Calendar } from "@fullcalendar/core";
import jaLocale from "@fullcalendar/core/locales/ja";
import dayGridPlugin from "@fullcalendar/daygrid";
import listPlugin from "@fullcalendar/list";
let calendarEl = document.getElementById("calendar");
let calendar = new Calendar(calendarEl, {
plugins: [dayGridPlugin, listPlugin],
initialView: "listMonth",
locale: jaLocale,
headerToolbar: {
left: "prev,next today",
center: "title",
right: "dayGridMonth,listMonth",
},
dayCellContent: function (e) {
e.dayNumberText = e.dayNumberText.replace("日", "");
},
eventDisplay: "block",
events: "/events",
eventDidMount: function (info) {
let dotEl = info.el.getElementsByClassName("fc-list-event-dot")[0];
if (dotEl) {
dotEl.style.display = "none";
}
},
});
calendar.render();
connpassのapi
- https://connpass.com/robots.txt を見るに、crawl-delayが5とあるので5秒は間隔は空ける必要あり
- グループに相当するのが
series_id
。DOMの中に埋まっているのを見るか、適当に1つイベントをpickupして検索すると取得できる
スクラップ終わり
このスクラップは2022/02/11にクローズされました