FullCalendar(日程管理控件)
(以下是我学习FullCalendar控件时,网络上收集的一些资料)
jQuery.fullCalendar官方网址: http://arshaw.com/fullcalendar/
http://arshaw.com/fullcalendar/docs/
http://arshaw.com/fullcalendar/download/
第二部分(官方文档的翻译)
http://blog.csdn.net/lgg201/article/details/4818941
第三部分(视频教程)
http://www.verycd.com/topics/2782321/(一共两集)
第四部分(实战)
(自己做了一个日程管理)
主要的代码如下:
<script type='text/javascript'>
$(document).ready(function() {
artDialog.notice = function (options) {
var opt = options || {},
api, aConfig, hide, wrap, top,
duration = 800; var config = {
id: 'Notice',
left: '100%',
top: '100%',
fixed: true,
drag: false,
resize: false,
follow: null,
lock: false,
init: function(here){
api = this;
aConfig = api.config;
wrap = api.DOM.wrap;
top = parseInt(wrap[0].style.top);
hide = top + wrap[0].offsetHeight; wrap.css('top', hide + 'px')
.animate({top: top + 'px'}, duration, function () {
opt.init && opt.init.call(api, here);
});
},
close: function(here){
wrap.animate({top: hide + 'px'}, duration, function () {
opt.close && opt.close.call(this, here);
aConfig.close = $.noop;
api.close();
}); return false;
}
}; for (var i in opt) {
if (config[i] === undefined) config[i] = opt[i];
}; return artDialog(config);
};
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
//fullcalendar本地化
//timeFormat:{agenda: 'h:mm TT{ - h:mm TT}'}, //默认是{agenda: ‘h:mm{ - h:mm}}, 影响的是添加的具体的日程上显示的时间格式.
monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
monthNamesShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
dayNames: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
today: ["今天"],
firstDay: 1,
buttonText: {
today: '今天',
month: '月',
week: '周',
day: '日',
prev: '上一月',
next: '下一月'
},
allDaySlot:false,
selectable: true,
selectHelper: true,
aspectRatio:2.7,
editable: false,
allDayDefault:false,
viewDisplay: function(view) {
var viewStart = $.fullCalendar.formatDate(view.start,"yyyy-MM-dd HH:mm:ss");
var viewEnd = $.fullCalendar.formatDate(view.end,"yyyy-MM-dd HH:mm:ss");
$("#calendar").fullCalendar('removeEvents');
$.getJSON('http://localhost:8080/pnote/schedule/listevents.action',{start:viewStart,end:viewEnd},function(data) {
for(var i=0;i<data.length;i++) {
var obj = new Object();
obj.id = data[i].id;
obj.title = data[i].title;
obj.description = data[i].description;
obj.color = data[i].color;
obj.remindertime = $.fullCalendar.parseDate(data[i].remindertime);
obj.messagenotice = data[i].messagenotice;
obj.description = data[i].description;
obj.start = $.fullCalendar.parseDate(data[i].start);
obj.end = $.fullCalendar.parseDate(data[i].end);
$("#calendar").fullCalendar('renderEvent',obj,true);
}
}); //把从后台取出的数据进行封装以后在页面上以fullCalendar的方式进行显示
},
eventMouseover: function(event, jsEvent, view){
showDetail(event, jsEvent);
},
eventMouseout: function(event, jsEvent, view){
$('#tip').remove();
},
//日程点击:添加日程
dayClick: function(date, allDay, jsEvent, view) {
var obj =new Object();
art.dialog.open('newschedule.html',{
title: '添加日程',
lock: true,
width:300,
height:400,
fixed: true, //固定定位
//background: '#600', // 背景色
opacity: 0.6, // 透明度
// 在open()方法中,init会等待iframe加载完毕后执行
init: function () {
var iframe = this.iframe.contentWindow;
//var top = art.dialog.top;// 引用顶层页面window对象
var start = iframe.document.getElementById('form-start');
start.value = $.fullCalendar.formatDate(date,"yyyy-MM-dd HH:mm:ss");
},
okVal:'提交日程',
ok: function () {
var iframe = this.iframe.contentWindow;
if (!iframe.document.body) {
alert('iframe还没加载完毕呢');
return false;
}; var start = iframe.document.getElementById('form-start').value;
var end = iframe.document.getElementById('form-end').value;
var remindertime = iframe.document.getElementById('form-remindertime').value;
obj.title = iframe.document.getElementById('form-title').value;
obj.description = iframe.document.getElementById('form-description').value;
obj.start = $.fullCalendar.parseDate(start);
obj.end = $.fullCalendar.parseDate(end);
obj.color = iframe.document.getElementById('form-color').value;
if (obj.title== '') {
alert("标题不能为空");
return false;
}else if(start== '') {
alert("开始日期不能为空");
return false;
}else if(end == '') {
alert("结束日期不能为空");
return false;
}else if(iframe.document.getElementById('form-messagenotice').checked) {
if(remindertime == '') {
alert("短信提醒时间不能为空");
return false;
}
obj.messagenotice = 1;
obj.remindertime = $.fullCalendar.parseDate(remindertime);
}else {
obj.messagenotice = 0;
obj.remindertime = null;
} $.post("http://localhost:8080/pnote/schedule/addevents",{//把刚输入的日程计划信息传到后台,保存到数据库
title: obj.title,
start:start,
end:end,
description:obj.description,
remindertime:remindertime,
color:obj.color,
messagenotice:obj.messagenotice
},
function (data, textStatus){
obj.id = data[0].id;
}, "json"
);
$('#calendar').fullCalendar('renderEvent', obj); //核心的更新代码
$('#calendar').fullCalendar('unselect');
art.dialog.notice({
title: '笔记之家',
width: 150,// 必须指定一个像素宽度值或者百分比,否则浏览器窗口改变可能导致artDialog收缩
content: '日程已添加至后台!',
icon: 'face-smile',
time: 3
});
return true;
},
cancel: true
});
},
eventClick:function(calEvent, jsEvent, view){
art.dialog.open('newschedule.html', {
title: '更新日程',
lock: true,
width:300,
height:400,
//background: '#600', // 背景色
opacity: 0.6, // 透明度
// 在open()方法中,init会等待iframe加载完毕后执行
init: function () {
var iframe = this.iframe.contentWindow;
//var top = art.dialog.top;// 引用顶层页面window对象
iframe.document.getElementById('form-start').value = $.fullCalendar.formatDate(calEvent.start,"yyyy-MM-dd HH:mm:ss");
iframe.document.getElementById('form-end').value = $.fullCalendar.formatDate(calEvent.end,"yyyy-MM-dd HH:mm:ss");
iframe.document.getElementById('form-description').value = calEvent.description;
iframe.document.getElementById('form-title').value = calEvent.title;
if(calEvent.messagenotice == 1) {
iframe.document.getElementById('form-messagenotice').checked = true;
iframe.document.getElementById('form-remindertime').value = $.fullCalendar.formatDate(calEvent.remindertime,"yyyy-MM-dd HH:mm:ss");
iframe.document.getElementById('showtxt').style.display='block';
}else {
}
iframe.document.getElementById('form-color').value = calEvent.color;
},
okVal:'修改日程',
ok: function () {
var iframe = this.iframe.contentWindow;
if (!iframe.document.body) {
alert('iframe还没加载完毕呢')
return false;
}; var start = iframe.document.getElementById('form-start').value;
var end = iframe.document.getElementById('form-end').value;
var remindertime = iframe.document.getElementById('form-remindertime').value;
calEvent.title = iframe.document.getElementById('form-title').value;
calEvent.description = iframe.document.getElementById('form-description').value;
calEvent.start = $.fullCalendar.parseDate(start);
calEvent.end = $.fullCalendar.parseDate(end);
calEvent.color = iframe.document.getElementById('form-color').value;
if (calEvent.title== '') {
alert("标题不能为空");
return false;
}else if(start== '') {
alert("开始日期不能为空");
return false;
}else if(end == '') {
alert("结束日期不能为空");
return false;
}else if(iframe.document.getElementById('form-messagenotice').checked) {
if(remindertime == '') {
alert("短信提醒时间不能为空");
return false;
}
calEvent.messagenotice = 1;
calEvent.remindertime = $.fullCalendar.parseDate(remindertime);
}else {
calEvent.messagenotice = 0;
calEvent.remindertime = null;
}
$.post("http://localhost:8080/pnote/schedule/updateevents",{//把要更新的日程计划信息传到后台,保存到数据库
id:calEvent.id,
title: calEvent.title,
start:start,
end:end,
description:calEvent.description,
color:calEvent.color,
remindertime:remindertime,
messagenotice:calEvent.messagenotice
}
);
$('#calendar').fullCalendar('updateEvent', calEvent);
//弹出提示
art.dialog.notice({
title: '笔记之家',
width: 150,// 必须指定一个像素宽度值或者百分比,否则浏览器窗口改变可能导致artDialog收缩
content: '日程已更新!',
icon: 'face-smile',
time: 3
});
return true;
},
cancel: true,
//删除日程,保存到数据库
button: [{
name: '删除日程',
callback: function () {
//this.content('你同意了').time(2);
$.post("http://localhost:8080/pnote/schedule/deleteevents",{
id:calEvent.id
});
$('#calendar').fullCalendar('removeEvents',calEvent.id);
art.dialog.notice({
title: '笔记之家',
width: 150,// 必须指定一个像素宽度值或者百分比,否则浏览器窗口改变可能导致artDialog收缩
content: '日程已删除!',
icon: 'face-smile',
time: 3
});
return true;
}
}]
});
}
});
}); function showDetail(obj, e){
var str;
if(obj.messagenotice == 1) str = "短信提醒时间:"+$.fullCalendar.formatDate(obj.remindertime,"yyyy-MM-dd HH:mm:ss");
else {str = "短信提醒未启动";}
var eInfo = '<div id="tip"><ul>';
eInfo += '<li class="clock">' + '开始:'+$.fullCalendar.formatDate(obj.start,"yyyy-MM-dd HH:mm:ss") +'</br>结束:'+$.fullCalendar.formatDate(obj.end,"yyyy-MM-dd HH:mm:ss")+ '</li>';
eInfo += '<li class="message">' +'日志:'+ obj.description + '<br/> </li>';
//eInfo += '<li>分类:' + obj.title + '</li>';
eInfo += '<li class="postmessage">' + str + '<br/> </li>';
eInfo += '</ul></div>';
$(eInfo).appendTo($('body'));
$('#tip').css({"opacity":"0.4", "display":"none", "left":(e.pageX + 20) + "px", "top":(e.pageY + 10) + "px"}).fadeTo(600, 0.9);
//鼠标移动效果
$('.fc-event-inner').mousemove(function(e){
$('#tip').css({'top': (e.pageY + 10), 'left': (e.pageX + 20)});
});
} </script>
<style type='text/css'> body {
margin-top: 10px;
text-align: center;
font-size: 13px;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
} /********************************************** 鼠标悬停tip提示 ************************************************/
#tip{
position: absolute;
width: 250px;
max-width: 400px;
text-align: left;
padding: 4px;
border: #87CEEB solid 7px;
border-radius: 5px;
background: #00BFFF;
z-index: 1000;
behavior: url('/css/css3/pie.htc');
}
#tip ul{
margin: 0;
padding: 0;
}
#tip ul li{
font-family:'Microsoft YaHei', 微软雅黑, 'Microsoft JhengHei', 宋体;
font-size:15px;
list-style: none;
padding-left: 40px;
}
.clock{
/*line-height: 60px;*/
background: url('./fullcalendar/images/clock.png') no-repeat;
background-size:40px 40px;
}
.postmessage{
/*line-height: 60px;
font-size: 12px;*/
background: url('./fullcalendar/images/message.png') no-repeat;
background-size:40px 40px;
}
.message{
/*margin-top: 5px;*/
/*line-height: 60px;*/
background: url('./fullcalendar/images/text.png') no-repeat;
background-size:40px 40px;
}
</style>
</head>
<body>
<div id="container">
<div id='selectdate'></div>
<div id='calendar'></div>
</div>
</body>
</html>
FullCalendar(日程管理控件)的更多相关文章
- 日程管理控件 glDatePicker
之前接触过一款日程管理控件,叫 FullCalendar,功能很强大,会列出每天的事项,可选择编辑并且可以定制自己的日历,然而,有时候,我们的网页上只需要一个简单的日历,迷你但实用,有日程安排的日期高 ...
- DevExpress XtraScheduler日程管理控件应用实例(2)-- 深入理解数据存储
DevExpress年终击穿底价,单套授权低至67折!查看详情>>> 在上篇随笔<DevExpress XtraScheduler日程管理控件应用实例(1)-- 基本使用> ...
- DevExpress XtraScheduler日程管理控件应用实例(1)-- 基本使用
在一些应用场景中,我们可能需要记录某一天,某个时段的日程安排,那么这个时候就需要引入了 DevExpress 的日程控件XtraScheduler 了,这个控件功能非常强大,提供了很好的界面展现方式, ...
- dhtmlxScheduler日程安排控件
dhtmlxScheduler是一个JavaScript日程安排控件 官方网站:http://www.dhtmlx.com/在线帮助文档:http://docs.dhtmlx.com/doku.php ...
- WinForm开发中通用附件管理控件设计开发参考
1.引言 在WinForm开发中,文件附件的管理几乎在任何一个应用上都会存在,是一个非常通用集中的公共模块.我们日常记录会伴随着有图片.文档等附件形式来展现,如果为每个业务对象都做一个附件管理,或者每 ...
- fullCalendar日程管理
//日程安排 function timeTable(id){ var inner = "<div id='calendar'></div>"; $(&quo ...
- Web日程管理FullCalendar
fullcalendar是一款jQuery日程管理控件,提供了丰富的属性设置和方法调用,官网下载地址http://fullcalendar.io/download,眼下最新版本号是2.3.2. 仅仅要 ...
- 打造基于jQuery的日期选择控件
终于把jQuery拼写正确了哈,哈哈javascript也是区分大小写的,所以确实不能写错,今天我来和大家分享的是日期选择控件的实现,功能也许不够强大,但是能够满足需求. 我之前也写过(正确的说是改过 ...
- Delphi 控件大全
delphi 控件大全(确实很全) delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar ...
随机推荐
- python的阶段复习
1.ABCD乘于9 = DCBA,求ABCD的值,且ABCD均互不相等 #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time :2017/12/26 ...
- MySQL高级-慢查询日志
一.慢查询日志是什么 1. 2. 3. 2.开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢? 3.案例 1.查看当前多少秒算慢 2.设置慢的阙值时间 3.为什么设置后看不出变化? 4.记 ...
- PHP程序员如何理解依赖注入容器(dependency injection container)
背景知识 传统的思路是应用程序用到一个Foo类,就会创建Foo类并调用Foo类的方法,假如这个方法内需要一个Bar类,就会创建Bar类并调用Bar类的方法,而这个方法内需要一个Bim类,就会创建Bim ...
- 请求头(request)和响应头(response)
说一说常见的请求头和相应头都有什么呢? 1)请求(客户端->服务端[request]) GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采 ...
- word record 3
word record 3 tabloid : a half size page of a newspaper, or a newspaper or magazine with short, exci ...
- SpriteKit手机游戏摇杆JoyStick的使用 -- by iFIERO游戏开发教程
### 工欲善其事,必先利其器 有时候学习如何应用第三方库是非常重要的,因为我们不用再自己重复造轮子,在这里,我们就把原先利用重力感应来操控飞机改为用游戏摇杆joystick来操控,具体的操作如下:` ...
- Spring 配置String转Date
操作步骤: 1. 实现 org.springframework.core.convert.converter.Converter 接口 2. 配置 org.springframework.contex ...
- Spring Boot 示例项目
Spring Boot 基于注解式开发 maven REST 示例项目 项目地址:https://github.com/windwant/spring-boot-service 项目地址: ...
- 深入理解 Vuejs 组件
本文主要归纳在 Vuejs 学习过程中对于 Vuejs 组件的各个相关要点.由于本人水平有限,如文中出现错误请多多包涵并指正,感谢.如果需要看更清晰的代码高亮,请跳转至我的个人站点的 深入理解 Vue ...
- javascript打开新窗口
一.window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,name, ...