Giới thiệt FullCalendar
Bài đăng này đã không được cập nhật trong 5 năm
FullCalendar là một thư viện javascript quản lý hiển thị chuỗi sự kiện bằng dưới định dạng calendar.
Install
Có thể cài đặt thông qua npm và bower
// via NPM
$ npm install fullcalendar
// via Bower
$ bower install fullcalendar
Hoặc dùng luôn CDNJS
https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.js
https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.min.css
https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.9.0/fullcalendar.print.css
Gọi đến thư viện
<link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
<script src='lib/jquery.min.js'></script>
<script src='lib/moment.min.js'></script>
<script src='fullcalendar/fullcalendar.js'></script>
Import
import $ from 'jquery';
import 'fullcalendar';
Initializing
Một khi bạn có FullCalendar và nó đã được load trên page, bạn có thể viết js code để khởi tạo một calendar. Code này phải được thực thi sau khi page đã được khởi tạo. Cách tốt nhất để làm điều đó là sử dụng $(document).ready
$(function() {
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
// put your options and callbacks here
})
});
Ở bên html bạn cần có một vị trí để hiển thị list calendar
<div id='calendar'></div>
Overall Display
-
header
Định nghĩa button và title hiển ở top của calendar
Kiểu giá trị: object/false, giá trị default là:
{ left: 'title', center: '', right: 'today prev,next' }
Nếu bạn thấy định nghĩa
header:false
trong js tức là calendar này sẽ không hiển thị phần header.header
có các property sau:title
: text chứa tháng/tuần/ngày hiện tại được viewprev
: button để back về 1 tháng/tuần/ngày trước đónext
: button để next đến 1 tháng/tuần/ngày kế đóprevYear
: button để back về 1 năm trước đónextYear
: button để next đến 1 năm kế đótoday
: button để move calendar đến tháng/tuần/ngày hiện tại`<view name>`: button để chuyển đổi đến một số kiểu view avaiable
-
header
Xác định format text thời gian sẽ hiển thị ở header title
Kiểu giá trị format: string, dưới đây là những giá trị default
'MMMM YYYY'' // like 'September 2009', for month view 'MMM D YYYY' // like 'Sep 13 2009', for week views 'MMMM D YYYY' // like 'September 8 2009', for day views
Views
-
defaultView
Khởi tạo kiểu hiển thị calendar load
Kiểu giá trị: string.
List giá trị view được chấp nhận:month, agendaWeek, listWeek, basicWeek, timelineDay, agendaDay
Giá trị default là 'month'
$('#calendar').fullCalendar({
defaultView: 'month'
})
Date & Time
-
defaultDate
Giá trị khởi tạo được hiển thị khi calendar đầu tiên load.
Kiểu giá trị: Moment.
Khi giá trị của trường này không được khởi tạo thì giá trị mặc định của nó là ngày hiện tại Giá trị của nó phải được Moment chấp nhận. Có thể bao gồm định dạng ISO8601 date string ví dụ "2018-12-19".
$('#calendar').fullCalendar({ defaultDate: '2018-12-19' })
-
validRange
Giới hạn ngày hiển thị trong calendar .
Kiểu giá trị: object
validRange có 2 thuộc tính là start và end
$('#calendar1').fullCalendar({ defaultView: 'month', validRange: { start: '2018-12-01', end: '2018-12-19' } });
-
navLinks Định nghĩa nếu link day hoặc link week được click.
Kiểu giá trị: boolean. Giá trị defalut: false
Khi giá trị là true thì việc click sẽ dẫn tới event của ngày đó hoặc tuần đó.
Khi giá trị là true thì click link sẽ không thực hiện gì
Methods
-
prev
Chuyển calendar về step trước đó (tùy thuộc vào view)
.fullCalendar( ‘prev’ )
Nếu view calendar là month, calendar sẽ chuyển về calendar của tháng trước đó.
Nếu view calendar là basicWeek hay agendaWeek, calendar sẽ chuyển về tuần trước đó.
Nếu view calendar là basicDay hay agendaDay, calendar sẽ chuyển trở về trước đó một ngày.
-
next
Chuyển calendar về step next (tùy thuộc vào view)
.fullCalendar( ‘next’ )
Nếu view calendar là month, calendar sẽ chuyển đến calendar của tháng tiếp đó.
Nếu view calendar là basicWeek hay agendaWeek, calendar sẽ chuyển đến tuần tiếp đó.
Nếu view calendar là basicDay hay agendaDay, calendar sẽ chuyển đến một ngày tiếp đó.
-
today
Chuyển calendar đến calendar có ngày hiện tại
.fullCalendar( ‘today’ )
-
gotoDate
Chuyển calendar đến calendar có ngày được chỉ định
.fullCalendar( ‘gotoDate’, date)
date (kiểu dữ liệu giống phần defaultDate đã đề cập)
Events
-
events (as an array)
Một mảng các event sẽ được hiển thị trong calendar
$('#calendar').fullCalendar({ events: [ { title : 'event1', start : '2010-01-01' }, { title : 'event2', start : '2010-01-05', end : '2010-01-07' }, { title : 'event3', start : '2010-01-09T12:30:00', allDay : false // will make the time show } ] });
-
events (as a json feed)
Call url của nguồn cấp dữ liệu JSON là một cách fetch data cho event object.
$('#calendar').fullCalendar({ events: '/get_data.php' });
Action này sẽ được thực thi khi người dùng click vào prev/next hay change calendar view. Calendar sẽ xác định khoảng thời gian hiển thị và sẽ add các thông tin này vào các tham số trên url tương ứng với
start
,end
. Ví dụ:/get_data.php?start=2013-12-01&end=2014-01-12&_=1386054751381
_
paramter được tự động thêm vào để chặn việc trình duyệt lưu cache -
events (as a function) function để call dữ liệu cho event object.
Giá trị đầu vào:
function( start, end, timezone, callback ) { }
Ví dụ:
$('#calendar').fullCalendar({ events: function(start, end, timezone, callback) { $.ajax({ url: 'myxmlfeed.php', dataType: 'xml', data: { // our hypothetical feed requires UNIX timestamps start: start.unix(), end: end.unix() }, success: function(doc) { var events = []; $(doc).find('event').each(function() { events.push({ title: $(this).attr('title'), start: $(this).attr('start') // will be parsed }); }); callback(events); } }); } });
Lời chào
Đợt này bận rộn quá nên mình chỉ tìm hiểu được từng này đế chia sẻ với các bạn. Mong bà con đừng gạch đá.
Tài liệu tham khảo: https://fullcalendar.io/docs
All rights reserved