因為FullCalendar的變數命名空間及呼叫方式,要在不動原始.js檔情況下建立自己的View很困難,因此先用「硬改」fullcalendar.js 的方式。
It's difficult to make a new view without modifying the source code of "fullcalendar.js", thus I chose the easy way.
環境說明:
Versions of components:
jQuery 1.6.4、jQuery UI 1.8.6、FullCalendar 1.5.2
在編輯器打開 fullcalendar.js ,找 「fcViews.agendaDay = AgendaDayView;」,加上以下這段文字:
Open fullcalendar in your text editor, find " AgendaDayView;", add following words before that.
";
$('.fc-view-agendaList').html(x); //direct output XDDD
}
function rerenderEvents(modifiedEventId) {
}
}
setDefaults({
titleFormat: {
list: 'yyyy/MMM/d dddd'
},
columnFormat: {
list: 'M/d dddd'
},
buttonText: {
list: 'List'
}
});
再加一個list.css或是加在fullcalendar.css裏:
原始碼放在github上,請自便。 The source codes are on github, get that if you need.
It's difficult to make a new view without modifying the source code of "fullcalendar.js", thus I chose the easy way.
環境說明:
Versions of components:
jQuery 1.6.4、jQuery UI 1.8.6、FullCalendar 1.5.2
在編輯器打開 fullcalendar.js ,找 「fcViews.agendaDay = AgendaDayView;」,加上以下這段文字:
Open fullcalendar in your text editor, find " AgendaDayView;", add following words before that.
fcViews.agendaList = agendaListView;
function agendaListView(element, calendar, viewName) {
var t = this;
function dayClick(ev) {
}
function trigger(name, thisObj) {
}
// exports
t.render = render;
t.setHeight = setHeight;
t.setWidth = setWidth;
t.renderEvents = renderEvents;
// pseudo method...
t.unselect = function() {
};
t.clearEvents = clearEvents;
//another way to write pseudo method
function clearEvents() {
}
function setHeight(height, dateChanged) {
}
function setWidth(width) {
}
// imports
View.call(t, element, calendar, 'agendaList');
var opt = t.opt;
//var renderAgenda = t.renderAgenda;
var formatDate = calendar.formatDate;
function sortEvent(a, b) {
return a.start - b.start;
}
function render(date, delta) {
if (delta) {
addDays(date, delta);
if (!opt('weekends')) {
skipWeekend(date, delta < 0 ? -1 : 1);
}
}
var start = cloneDate(date, true);
var end = addDays(cloneDate(start), 1);
t.title = formatDate(date, opt('titleFormat'));
t.start = t.visStart = start;
t.end = t.visEnd = end;
}
function eventsOfThisDay(events, theDate) {
var start = new Date(theDate.toString("yyyy/MM/dd 00:00")); // It's a good format for me...
var end = new Date(theDate.toString("yyyy/MM/dd 23:59:59"));
var retArr = new Array();
for (i in events) {
if (events[i].start <= end && events[i].end >= start) {
retArr.push(events[i]);
}
}
return retArr;
}
function getListDateString(event) {
var ret = "";
if (event.allDay) { //all day event
ret = opt('allDayText');
}
else {
ret = event.start.toString("HH:mm") + "~" + event.end.toString("HH:mm"); // You can change format here
}
return ret;
}
function renderEvents(events, modifiedEventId) {
// render grid here
var sortedEvents = events.sort(sortEvent);
var x = ""; // "";
var total = sortedEvents.length;
if (total > 0) {
var start = cloneDate(sortedEvents[0].start);
var dateVar = cloneDate(start);
var end = cloneDate(sortedEvents[total - 1].start);
while (dateVar <= end) {
var arr = eventsOfThisDay(sortedEvents, dateVar);
if (arr.length > 0) {
x += "";
for (i in arr) {
x += "";
x += "";
}
}
dateVar=dateVar.addDays(1);
}
}
x += "| "; x += dateVar.toString(opt('titleFormat')); x += " | |||
| "; x += getListDateString(arr[i]); x += " | "; x += ""; x += classtemp.replace(",", " "); //Avoid className is array x += arr[i].title; x += " | ||
再加一個list.css或是加在fullcalendar.css裏:
.fc-list-table
{
margin: 10px;
border-style: hidden;
border-width: 10px;
padding: 10px;
vertical-align: top;
width: 100%;
}
.fc-list-table tr:hover
{
color: #0000FF;
background-color: #CCFFCC;
}
.fc-list-date
{
margin: 16px;
white-space: nowrap;
text-align: left;
width: 100%;
background-color: #808080;
color: #FFFFFF;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif;
}
.fc-list-time
{
text-align: center;
white-space: nowrap;
width: 1%;
}
.fc-list-event
{
text-align: left;
cursor: pointer;
}
原始碼放在github上,請自便。 The source codes are on github, get that if you need.
留言
『環境說明:jQuery 1.6.4、jQuery UI 1.8.6、FullCalendar 1.5.2』
之前jQuery UI到 1.8.16的拖拉都不支援jQuery 1.7+,現在jQuery UI 1.8.17+之後就支援Drap and Drop,所以也讓FullCalendar 支援到jQuery 1.7+,不過正式支援jQuery 1.7+應該是FullCalendar 1.5.3。