dhtmlx+lotusscript周视图.docx
- 文档编号:30376291
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:22
- 大小:20.63KB
dhtmlx+lotusscript周视图.docx
《dhtmlx+lotusscript周视图.docx》由会员分享,可在线阅读,更多相关《dhtmlx+lotusscript周视图.docx(22页珍藏版)》请在冰豆网上搜索。
dhtmlx+lotusscript周视图
本视图分了两部分,一部分是上面的日期显示和日历显示,另一部分是显示一周中每天的日程。
第一部分主要用js和dhtmlx的calendar控件做日历的,具体代码如下
上面部分是引用dhtmlx的文件,下面是js通过url参数(如果没则显示当前日期)显示具体是哪个日期以及绑定用户点击日历的触发事件代码
varoldyear,oldmonth,oldday;
varmDCal,mDCal1;
varthetime=newDate();//取得当前时间
varthisYear=thetime.getYear();
//取得下个月(getMonth是以0开始),所以+2
varthisMonth=thetime.getMonth()+2;
if(thisMonth==13)
{
thisYear=thisYear+1;
thisMonth=1;
}
//取得当月是几号
varthisDay=thetime.getDate();
//设置日历格式(
//varalltimes=thisMonth+"/"+thisDay+"/"+thisYear;
window.dhx_globalImgPath="/resources/controls/dhtmlx/dhtmlxCalendar/imgs";
//创建日历
window.onload=function(){
mDCal=newdhtmlxCalendarObject('dhtmlxDblCalendar',false,{
isYearEditable:
true,
isMonthEditable:
true
});
//设置时间范围
mDCal.setYearsRange(1990,2050);
//设置时间
mDCal.attachEvent("onClick",dayChange);
mDCal.options.weekstart=1;
mDCal.draw();
mDCal1=newdhtmlxCalendarObject('dhtmlxDblCalendar1',false,{
isYearEditable:
true,
isMonthEditable:
true
});
mDCal1.setYearsRange(1990,2050);
//添加事件
mDCal1.attachEvent("onClick",dayChange);
mDCal1.options.weekstart=1;
mDCal1.draw();
dayChanges(newDate());
}
//加载日期
functiondayChanges(date)
{
varthistime2;
varurls=window.location.href+"&";
varurlday=getParam(urls,"day");
varurlyear=getParam(urls,"year");
varurlmonth=getParam(urls,"month");
if(urlyear!
=""&&urlmonth!
=""&&urlday!
="")
{
thistime2=newDate();
thistime2.setYear(urlyear);
thistime2.setMonth(urlmonth-1);
thistime2.setDate(urlday);
//mDCal1.setDate((urlmonth+1)+"/"+urlday+"/"+urlyear);
}
else
{
thistime2=newDate(date);
}
vartheYear=thistime2.getYear();
vartheMonth=thistime2.getMonth()+1;
vartheDay=thistime2.getDate();
mDCal.setDate(theMonth+"/"+theDay+"/"+theYear);
mDCal1.setDate((theMonth+1)+"/"+theDay+"/"+theYear);
//取得当天是星期几
varthisweekDay=thistime2.getDay();
if(thisweekDay==0)
{
thisweekDay=7;
}
vartheclickday=thistime2.getDate();
//上个月,当月,下个月
varprevMonth,theMonth,nextMonth;
//上个月天数,当月天数,下个月天数
varprevMonthdays,theMonthdays,nextMonthdays;
if(thistime2.getMonth()<1)
{
prevMonth=12;
}
else
{
prevMonth=thistime2.getMonth();
}
theMonth=prevMonth+1;
if(theMonth>12)
{
theMonth=1;
}
nextMonth=theMonth+1;
if(nextMonth>12)
{
nextMonth=1;
}
prevMonthdays=thetime.getMonthDays(prevMonth-1);
theMonthdays=thetime.getMonthDays(theMonth-1);
nextMonthdays=thetime.getMonthDays(nextMonth-1);
varisYun=thistime2.getYear()%4==0&&thistime2.getYear()%100!
=0
if(isYun||thistime2.getYear()%400==0)
{
if(theMonth==2)
{
theMonthdays=theMonthdays+1;
}
}
//一个星期第一天和最后一天的分别日期
varweekStartMonth,weekEndMonth,weekStartDay,weekEndDay;
if(theclickday-thisweekDay<0)
{
weekStartMonth=prevMonth;
weekStartDay=prevMonthdays+theclickday-thisweekDay+1;
}
else
{
weekStartMonth=theMonth;
weekStartDay=theclickday-thisweekDay+1;
}
if(theclickday+(7-thisweekDay)>theMonthdays)
{
weekEndMonth=nextMonth;
weekEndDay=theclickday+(7-thisweekDay)-theMonthdays;
}
else
{
weekEndMonth=theMonth;
weekEndDay=theclickday+7-thisweekDay;
}
oldyear=thistime2.getYear();
oldmonth=weekStartMonth;
oldday=weekStartDay;
vartheday=document.getElementById("thedate");
theday.innerHTML=weekStartMonth+"月"+weekStartDay+"日-
";
theday.innerHTML=theday.innerHTML+weekEndMonth+"月"+weekEndDay+"日";
}
//传入url参数
functiondayChange(date)
{
varthistime2;
thistime2=newDate(date);
if(oldyear==thistime2.getYear())
{
vartempmonth=Math.abs(oldmonth-(thistime2.getMonth()+1));
if(tempmonth<=1)
{
if(thistime2.getDate()>=oldday&&thistime2.getDate()<=oldday+6&&tempmonth==0)
{
return;
}
if(oldday-thistime2.getDate()>=25&&tempmonth!
=0)
{
return;
}
}
}
//取得当前月和日
varweekStartDay=thistime2.getDate();
varweekStartMonth=thistime2.getMonth()+1;
vartotalurl=window.location.href;
totalurl=totalurl.substring(0,totalurl.indexOf("?
")+9);
if(document.all)
{
url="&year="+thistime2.getYear();
}
else
{
if(thistime2.getYear()<1000)
{
url="&year="+(thistime2.getYear()+1900);
}
else
{
url="&year="+thistime2.getYear();
}
}
url=url+"&month="+weekStartMonth;
url=url+"&day="+weekStartDay+"&SearchUser="+document.all.SearchUser.value;
//xmlhttp=GetXmlHttpObject();
//xmlhttp.onreadystatechange=stateChangs;
totalurl=totalurl+url;
window.location=totalurl;
}
functiongetParam(urls,urlname)
{
vari,startpos,endpos;
vartempVal,tempPname;
tempPname="&"+urlname;
i=urls.indexOf(tempPname);
if(i!
=-1)
{
startpos=tempPname.length+i+1;
endpos=urls.indexOf("&",startpos);
tempVal=urls.substring(startpos,endpos);
returntempVal;
}
return"";
}
前面的js主要把第一部分完成了。
至于第二部分,之前有考虑继续用dhtmlx的控件,但是原来OA的日程管理已经用文档型数据库保存了,只有用lotusscript取得用户建立的日程。
主要通过一个代理实现,把日程编译成html码加入到当前页面。
页面上通过一个“富文本”域,并设置属性为“计算”接收html码
代码如下:
SubInitialize
OnErrorGotoerrhandle
DimsessionAsNotesSession
Setsession=NewNotesSession
DimdocAsNotesDocument
Setdoc=session.DocumentContext
DimdbAsNotesDatabase
Setdb=session.CurrentDatabase
SetF=Newf_default
'从QUERYSTRING中得到传过的url参数
Dima_querystringAsVariant
a_querystring=F.Quertstringtoarrary(doc.Query_String_Decoded(0),"&")
Dimthis_yearAsString
Dimthis_monthAsString
Dimthis_dayAsString
this_year=F.QueryString("year",a_querystring)
this_month=F.QueryString("month",a_querystring)
this_day=F.QueryString("day",a_querystring)
'如果没有参数则设置当前日期
Ifthis_year=""Then
this_year=Cstr(Year(Now))
EndIf
Ifthis_month=""Then
this_month=Cstr(Month(Now))
EndIf
Ifthis_day=""Then
this_day=Cstr(Day(Now))
EndIf
Ifthis_month=0Then
this_year=this_year-1
this_month=12
EndIf
Ifthis_month=13Then
this_year=this_year+1
this_month=1
EndIf
'添加html文本以显示周视图
CallAppendTableHead(db,doc,"","TableMain",Cint(this_year),Cint(this_month),Cint(this_day))
errhandle:
CallF.printerrmsg(doc,"initialize")
ExitSub
EndSub
'****************************************************************
'添加html文本到rtfname域里面
'****************************************************************
PublicSubAppendTableHead(dbAsNotesDatabase,docAsNotesDocument,tableheadAsVariant,rtfnameAsString,this_yearAsInteger,this_monthAsInteger,this_daysAsInteger)
OnErrorGotoerrhandle
'设置每月名称
Dimmonth_names(12)AsString
month_names
(1)="1月"
month_names
(2)="2月"
month_names(3)="3月"
month_names(4)="4月"
month_names(5)="5月"
month_names(6)="6月"
month_names(7)="7月"
month_names(8)="8月"
month_names(9)="9月"
month_names(10)="10月"
month_names(11)="11月"
month_names(12)="12月" 'definemonth
'设置每月的天数
Dimdays_in_month(12)AsInteger 'definedays
days_in_month
(1)=31
days_in_month
(2)=28
days_in_month(3)=31
days_in_month(4)=30
days_in_month(5)=31
days_in_month(6)=30
days_in_month(7)=31
days_in_month(8)=31
days_in_month(9)=30
days_in_month(10)=31
days_in_month(11)=30
days_in_month(12)=31
If(((this_yearMod4=0)And(this_yearMod100<>0))Or(this_yearMod400=0))Then
days_in_month
(2)=29 'it'saleapyearsochange#daysinFebinarray
Else
days_in_month
(2)=28 '//notleapyear-futureuseifmultiyearcalendarbuilt
EndIf
'设置星期名称
Dimweeks_names(7)AsString
weeks_names
(1)="星期一"
weeks_names
(2)="星期二"
weeks_names(3)="星期三"
weeks_names(4)="星期四"
weeks_names(5)="星期五"
weeks_names(6)="星期六"
weeks_names(7)="星期日"
DimdatesAsString '用户选定的日期
dates=""
DimviewAsNotesView
'取得日程管理记录
Ifdoc.SearchUser(0)<>"All"Then
Setview=db.getview("v_personCaldate_Person")
Else
Setview=db.getview("v_personCaldate")
EndIf
'取得当天号数是星期几
DimthedateAsVariant
thedate=Datenumber(this_year,this_month,this_days)
theweekday=Cint(Weekday(thedate))-1
Iftheweekday=0Then
theweekday=7
EndIf
'设置当个星期起始天到结束天
Dimtheweekinfo()AsString
Redimtheweekinfo(6,3)
'星期一日期
Ifthis_days-theweekday<0Then
Ifthis_month-1<1Then
theweekinfo(0,0)=12
theweekinfo(0,3)=this_year-1
Else
theweekinfo(0,0)=this_month-1
EndIf
theweekinfo(0,1)=days_in_month(theweekinfo(0,0))+this_days-theweekday+1
theweekinfo(0,2)=1
theweekinfo(0,3)=this_year
Else
theweekinfo(0,0)=this_month
theweekinfo(0,1)=this_days-theweekday+1
theweekinfo(0,2)=1
theweekinfo(0,3)=this_year
EndIf
'星期二日期
theweekinfo(1,1)=theweekinfo(0,1)+1
theweekinfo(1,2)=2
theweekinfo(1,3)=this_year
Iftheweekinfo(1,1)>days_in_month(theweekinfo(0,0))Then
theweekinfo(1,1)=1
theweekinfo(1,0)=theweekinfo(0,0)+1
Iftheweekinfo(1,0)>12Then
theweekinfo(1,0)=1
theweekinfo(1,3)=this_year+1
EndIf
Else
theweekinfo(1,0)=theweekinfo(0,0)
EndIf
'星期三日期
theweekinfo(2,1)=theweekinfo(1,1)+1
theweekinfo(2,2)=3
theweekinfo(2,3)=this_year
Iftheweekinfo(2,1)>days_in_month(theweekinfo(1,0))Then
theweekinfo(2,1)=1
theweekinfo(2,0)=theweekinfo(1,0)+1
Iftheweekinfo(2,0)>12Then
theweekinfo(2,0)=1
theweekinfo(2,3)=this_year+1
EndIf
Else
theweek
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dhtmlx lotusscript 视图