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 ...
随机推荐
- 4 进程间通信Queue [kjuː]
1.进程间通信-Queue Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 说明 初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数 ...
- c#中insert Geography的字段,包含事务
SqlConnection conn = new SqlConnection(); conn.ConnectionString ="你的sql server数据库连接字符串"; c ...
- 在线大数据cdh迁移,从公有云迁移到私有云
1.添加新节点 2.迁移hdfs和hbase数据: 3.迁移源节点各个服务到新节点: 4.利用HA,包括hdfs,hbase master,resourcemanager的ha实现在线迁移: 5.数据 ...
- 低于0.01%的极致Crash率是怎么做到的?
WeTest 导读 看似系统Bug的Crash 99%都不是系统问题!本文将与你一起探索Crash分析的科学方法. 在移动互联网闯荡多年的iOS手机管家,经过不断迭代创新,已经涵盖了隐私(加密相册). ...
- hdu1217Arbitrage(floyd+map)
Arbitrage Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- 那些年我们不爱学的mysql单词
MySQL 一种关系型数据库 database 数据库,简称DB databases 数据库的复数,代表多个数据库 net 网络/服务 start 启动 stop 停止 root MySQL数据库中的 ...
- 82. Single Number [easy]
Description Given 2*n + 1 numbers, every numbers occurs twice except one, find it. Example Given [1, ...
- 树和二叉树 -数据结构(C语言实现)
读数据结构与算法分析 树的概念 一棵树是一些节点的集合,可以为空 由称做根(root)的节点以及0个或多个非空子树组成,子树都被一条来自根的有向边相连 树的实现 思路 孩子兄弟表示法:树中的每个节点中 ...
- Java学习 · 初识 IO流
IO流 1. 原理与概念 a) 流 i. 流动,流向 ii. 从一端移动到另一端 源头到目的地 iii. 抽象.动态概念,是一连 ...
- DNA序列 (DNA Consensus String,ACM/ICPC Seoul 2006,UVa1368
题目描述:算法竞赛入门经典习题3-7 题目思路:每列出现最多的距离即最短 #include <stdio.h> #include <string.h> int main(int ...