mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-09-07 09:10:10 +02:00
* Fullcalendar unit & demo
This commit is contained in:
parent
9640756fc2
commit
949f0181b9
@ -5,7 +5,7 @@ TARGETS=democomponents demobrowseconsole demoajax demoxhr restbridgeclient \
|
||||
chartjs_demoline chartjs_demotime chartjs_demoscriptablebubble chartjs_demoradar \
|
||||
chartjs_democustompoints chartjs_demopolararea promiseall promisestory1 \
|
||||
promisestory2 promisestory demodb demoload demorest fpcunitbrowsertest \
|
||||
sampleda webgl1 pdfbasic hotreload dynload bootstraptable
|
||||
sampleda webgl1 pdfbasic hotreload dynload bootstraptable fullcalendar
|
||||
ifneq ($(SKIPWEBCOMPILER),1)
|
||||
TARGETS:=$(TARGETS) demowebcompiler
|
||||
BASEDIR=$(CURDIR)/../compiler/packages
|
||||
@ -105,4 +105,5 @@ dynload: ./dynload/testloader.lpr ./dynload/myform.pp
|
||||
$(P2JS) ./dynload/myform.pp
|
||||
bootstraptable: ./bootstrap/demobootstraptable.lpr
|
||||
$(BROWSERP2JS) $<
|
||||
|
||||
fullcalendar: ./fullcalendar/demofullcalendar.lpr
|
||||
$(BROWSERP2JS) $<
|
||||
|
61
demo/fullcalendar/demofullcalendar.html
Normal file
61
demo/fullcalendar/demofullcalendar.html
Normal file
@ -0,0 +1,61 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" >
|
||||
|
||||
<!-- fullCalendar -->
|
||||
<link href='https://unpkg.com/@fullcalendar/core@4.3.1/main.min.css' rel='stylesheet' />
|
||||
<link href='https://unpkg.com/@fullcalendar/daygrid@4.3.0/main.min.css' rel='stylesheet' />
|
||||
<link href='https://unpkg.com/@fullcalendar/timegrid@4.3.0/main.min.css' rel='stylesheet' />
|
||||
<link href='https://unpkg.com/@fullcalendar/bootstrap@4.3.0/main.min.css' rel='stylesheet' />
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.js" ></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" ></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.js"></script>
|
||||
<!-- fullCalendar -->
|
||||
<script src='https://unpkg.com/@fullcalendar/core@4.3.1/main.min.js'></script>
|
||||
<script src='https://unpkg.com/@fullcalendar/interaction@4.3.0/main.min.js'></script>
|
||||
<script src='https://unpkg.com/@fullcalendar/daygrid@4.3.0/main.min.js'></script>
|
||||
<script src='https://unpkg.com/@fullcalendar/timegrid@4.3.0/main.min.js'></script>
|
||||
<script src='https://unpkg.com/@fullcalendar/bootstrap@4.3.0/main.min.js'></script>
|
||||
<script src='https://unpkg.com/@fullcalendar/core@4.3.1/locales-all.js'></script>
|
||||
|
||||
<style>
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#thecalendar {
|
||||
max-width: 900px;
|
||||
margin: 40px auto;
|
||||
}
|
||||
|
||||
</style>
|
||||
<title>FullCalendar.JS demo in Pas2JS</title>
|
||||
<script src="demofullcalendar.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<form class="form form-inline ml-auto">
|
||||
<div class="form-group">
|
||||
<label for="locale-selector">Locales:</label>
|
||||
<select class="form-control" id="locale-selector"></select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div id="thecalendar">
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.addEventListener("load", rtl.run);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
96
demo/fullcalendar/demofullcalendar.lpi
Normal file
96
demo/fullcalendar/demofullcalendar.lpi
Normal file
@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="12"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<MainUnitHasCreateFormStatements Value="False"/>
|
||||
<MainUnitHasTitleStatement Value="False"/>
|
||||
<MainUnitHasScaledStatement Value="False"/>
|
||||
<Runnable Value="False"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<Title Value="demofullcalendar"/>
|
||||
<UseAppBundle Value="False"/>
|
||||
<ResourceType Value="res"/>
|
||||
</General>
|
||||
<CustomData Count="5">
|
||||
<Item0 Name="MaintainHTML" Value="1"/>
|
||||
<Item1 Name="PasJSHTMLFile" Value="project1.html"/>
|
||||
<Item2 Name="PasJSPort" Value="0"/>
|
||||
<Item3 Name="PasJSWebBrowserProject" Value="1"/>
|
||||
<Item4 Name="RunAtReady" Value="1"/>
|
||||
</CustomData>
|
||||
<BuildModes>
|
||||
<Item Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<UseFileFilters Value="True"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
<Modes Count="0"/>
|
||||
</RunParams>
|
||||
<Units>
|
||||
<Unit>
|
||||
<Filename Value="demofullcalendar.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit>
|
||||
<Unit>
|
||||
<Filename Value="demofullcalendar.html"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<CustomData Count="1">
|
||||
<Item0 Name="PasJSIsProjectHTMLFile" Value="1"/>
|
||||
</CustomData>
|
||||
</Unit>
|
||||
<Unit>
|
||||
<Filename Value="../../packages/libfullcalendar/libfullcalendar.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<Target FileExt=".js">
|
||||
<Filename Value="demofullcalendar"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<UnitOutputDirectory Value="js"/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<AllowLabel Value="False"/>
|
||||
<CPPInline Value="False"/>
|
||||
<UseAnsiStrings Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<CodeGeneration>
|
||||
<TargetOS Value="browser"/>
|
||||
</CodeGeneration>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<GenerateDebugInfo Value="False"/>
|
||||
<UseLineInfoUnit Value="False"/>
|
||||
</Debugging>
|
||||
</Linking>
|
||||
<Other>
|
||||
<CustomOptions Value="-Jeutf-8 -Jirtl.js -Jc -Jminclude"/>
|
||||
<CompilerPath Value="$(pas2js)"/>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="3">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item3>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
117
demo/fullcalendar/demofullcalendar.lpr
Normal file
117
demo/fullcalendar/demofullcalendar.lpr
Normal file
@ -0,0 +1,117 @@
|
||||
program demofullcalendar;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
uses
|
||||
dateutils, browserapp, JS, Classes, SysUtils, Web, libfullcalendar;
|
||||
|
||||
type
|
||||
|
||||
{ TMyApplication }
|
||||
|
||||
TMyApplication = class(TBrowserApplication)
|
||||
FCalendarEl : TJSHTMLElement;
|
||||
FCalendar : TFullCalendar;
|
||||
procedure doRun; override;
|
||||
private
|
||||
function CreateEvents: TBaseCalendarEventArray;
|
||||
procedure ShowLocales;
|
||||
end;
|
||||
|
||||
Function TMyApplication.CreateEvents : TBaseCalendarEventArray;
|
||||
|
||||
Const
|
||||
BuySell : Array[1..3] of string = ('Buy','Sell','Borrow');
|
||||
Articles : Array[1..10] of String = ('books','sugar','coffee','apples','bananas','smartphone','bread','meat','cabbage','tomatoes');
|
||||
Colors : Array[1..10] of string = ('silver','gray','salmon','plum','mediumpurple','slateblue','lime','seagreen','darkgreen','teal');
|
||||
|
||||
Var
|
||||
Ev,AllDay : Boolean;
|
||||
D1,D2 : TDateTime;
|
||||
E : TBaseCalendarEvent;
|
||||
I : Integer;
|
||||
|
||||
begin
|
||||
SetLength(Result,62);
|
||||
For I:=1 to 62 do
|
||||
begin
|
||||
D1:=Date-31+i;
|
||||
if DayOfTheWeek(D1)=7 then
|
||||
D1:=D1+1;
|
||||
Ev:=(DayOfTheWeek(D1) mod 2=0);
|
||||
allDay:=(I mod 5)=0;
|
||||
if allDay then
|
||||
D2:=D1
|
||||
else
|
||||
begin
|
||||
D1:=IncHour(D1,9+Random(12));
|
||||
D1:=IncMinute(D1,Random(12)*5);
|
||||
D2:=IncMinute(D1,10*Random(20));
|
||||
end;
|
||||
E:=TBaseCalendarEvent.event(BuySell[1+Random(3)]+' '+Articles[1+Random(10)],D1,D2);
|
||||
E.color:=Colors[1+Random(10)];
|
||||
E.allDay:=allDay;
|
||||
Result[I-1]:=E;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMyApplication.ShowLocales;
|
||||
|
||||
Var
|
||||
Locales : TStringDynArray;
|
||||
CB,O : TJSHTMLElement;
|
||||
S : String;
|
||||
|
||||
begin
|
||||
CB:=GetHTMLElement('locale-selector');
|
||||
Locales:=FCalendar.getAvailableLocaleCodes();
|
||||
for S in Locales do
|
||||
begin
|
||||
O:=createHTMLElement('option');
|
||||
O['value'] := S;
|
||||
O.innerText :=S;
|
||||
CB.appendChild(O);
|
||||
end;
|
||||
CB.addEventListener('change',TJSRawEventHandler (Procedure (Event: TJSEvent)
|
||||
var v : String;
|
||||
begin
|
||||
V:=String(event.Target['value']);
|
||||
if (V<>'') then
|
||||
Fcalendar.setOption('locale',V);
|
||||
end
|
||||
));
|
||||
end;
|
||||
|
||||
|
||||
procedure TMyApplication.doRun;
|
||||
|
||||
Var
|
||||
O : TFullCalendarOptions;
|
||||
|
||||
begin
|
||||
// Your code here
|
||||
Terminate;
|
||||
FCalendarEl:=GetHTMLElement('thecalendar');
|
||||
O:=TFullCalendarOptions.New;
|
||||
O.Events:=CreateEvents;
|
||||
O.plugins:=['interaction', 'dayGrid', 'timeGrid','bootstrap'];
|
||||
O.themeSystem:='bootstrap';
|
||||
O.defaultView:='dayGridMonth';
|
||||
O.header:=TCalendarHeaderFooterOptions.New;
|
||||
O.header.center:='title';
|
||||
O.header.left:='prev,next today';
|
||||
O.header.right:='dayGridMonth,timeGridWeek,timeGridDay';
|
||||
FCalendar:=TFullCalendar.new(FCalendarEl,O);
|
||||
FCalendar.render;
|
||||
ShowLocales;
|
||||
end;
|
||||
|
||||
var
|
||||
Application : TMyApplication;
|
||||
|
||||
begin
|
||||
Application:=TMyApplication.Create(nil);
|
||||
Application.Initialize;
|
||||
Application.Run;
|
||||
|
||||
end.
|
636
packages/fullcalendar/libfullcalendar.pp
Normal file
636
packages/fullcalendar/libfullcalendar.pp
Normal file
@ -0,0 +1,636 @@
|
||||
unit libfullcalendar;
|
||||
|
||||
{$mode objfpc}
|
||||
{$modeswitch externalclass}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
sysutils, types, js, web;
|
||||
|
||||
Const
|
||||
fcViewMonth = 'dayGridMonth';
|
||||
fcViewWeek = 'timeGridWeek';
|
||||
fcViewDay = 'timeGridDay';
|
||||
|
||||
// A list of plugin names, created from the plugin index page
|
||||
fcInteractionPlugin = 'interaction';
|
||||
fcDayGridPlugin = 'dayGrid';
|
||||
fcTimeGridPlugin = 'timeGrid';
|
||||
fcListPlugin = 'list';
|
||||
fcTimelinePlugin = 'timeline';
|
||||
fcResourceDayGridPlugin = 'resourceDayGrid';
|
||||
fcResourceTimeGridPlugin = 'resourceTimeGrid';
|
||||
fcResourceTimelinePlugin = 'resourceTimeline';
|
||||
fcBootstrapPlugin = 'bootstrap';
|
||||
fcGoogleCalendarPlugin = 'googleCalendar';
|
||||
fcRRulePlugin = 'rrule';
|
||||
fcMomentPlugin = 'moment';
|
||||
fcMomentTimezonePlugin = 'momentTimeZone';
|
||||
fcReactPlugin = 'react';
|
||||
fcAngularPlugin = 'angular';
|
||||
fcVuePlugin = 'vue';
|
||||
|
||||
fcHeaderFooterTitle = 'title';
|
||||
fcHeaderFooterPrev = 'prev';
|
||||
fcHeaderFooterNext = 'next';
|
||||
fcHeaderFooterPrevYear = 'prevYear';
|
||||
fcHeaderFooterNextYear = 'nextYear';
|
||||
fcHeaderFooterToday = 'today';
|
||||
|
||||
fcDateFormatNumeric = 'numeric';
|
||||
fcDateFormat2Digit = '2-digit';
|
||||
fcDateFormatLong = 'long';
|
||||
fcDateFormatShort = 'short';
|
||||
fcDateFormatNarrow = 'narrow';
|
||||
|
||||
Type
|
||||
TProcedural = reference to procedure;
|
||||
TDateFunction = reference to Function : TJSDate;
|
||||
|
||||
TDateFormatter = Class external name 'Object' (TJSObject)
|
||||
// Use fcDateFormat* constants
|
||||
year : String;
|
||||
month : String;
|
||||
day : String;
|
||||
week : string;
|
||||
meridiem : string;
|
||||
weekday : String;
|
||||
hour : string;
|
||||
minute : string;
|
||||
second : string;
|
||||
hour12 : Boolean;
|
||||
timeZoneName : string;
|
||||
omitZeroMinute : Boolean;
|
||||
omitCommas : Boolean;
|
||||
end;
|
||||
|
||||
TDuration = Class external name 'Object' (TJSObject)
|
||||
years : NativeInt;
|
||||
months : NativeInt;
|
||||
days : NativeInt;
|
||||
milliseconds : NativeInt;
|
||||
end;
|
||||
|
||||
TDateRange = Class external name 'Object' (TJSObject)
|
||||
start : TJSDate;
|
||||
startStr : string; external name 'start';
|
||||
startInt : nativeInt; external name 'start';
|
||||
end;
|
||||
|
||||
TCalendarHeaderFooterOptions = Class external name 'Object' (TJSObject)
|
||||
// use the fcHeaderFooter consts
|
||||
left : string;
|
||||
right : string;
|
||||
center : string;
|
||||
end;
|
||||
|
||||
TDateFormatHandler = reference to function(aDate : TJSDate) : String;
|
||||
|
||||
TButtonText = Class external name 'Object' (TJSObject)
|
||||
today : string;
|
||||
month : string;
|
||||
week : string;
|
||||
day : string;
|
||||
list : string;
|
||||
end;
|
||||
|
||||
TButtonTextRec = record
|
||||
today : string;
|
||||
month : string;
|
||||
week : string;
|
||||
day : string;
|
||||
list : string;
|
||||
end;
|
||||
|
||||
TButtonIcons = Class external name 'Object' (TJSObject)
|
||||
title : string;
|
||||
prev : string;
|
||||
next : string;
|
||||
prevYear : string;
|
||||
nextYear : string;
|
||||
today : string;
|
||||
end;
|
||||
|
||||
TButtonIconsRec = record
|
||||
today : string;
|
||||
title : string;
|
||||
prev : string;
|
||||
next : string;
|
||||
prevYear : string;
|
||||
nextYear : string;
|
||||
end;
|
||||
|
||||
TCustomButtonSpec = record
|
||||
text : string;
|
||||
click : TJSEventHandler;
|
||||
end;
|
||||
|
||||
TFontAwesomeSpec = Class external name 'Object' (TJSObject)
|
||||
close : string;
|
||||
title : string;
|
||||
prev : string;
|
||||
next : string;
|
||||
prevYear : string;
|
||||
nextYear : string;
|
||||
today : string;
|
||||
end;
|
||||
|
||||
TFontAwesomeSpecRec = record
|
||||
close : string;
|
||||
title : string;
|
||||
prev : string;
|
||||
next : string;
|
||||
prevYear : string;
|
||||
nextYear : string;
|
||||
today : string;
|
||||
end;
|
||||
|
||||
|
||||
TCustomButtonSpecs = Class external name 'Object' (TJSObject)
|
||||
private
|
||||
function GetButton(Name: String): TCustomButtonSpec; external name '[]';
|
||||
procedure SetButton(Name: String; const AValue: TCustomButtonSpec); external name '[]';
|
||||
Public
|
||||
property buttons [aIndex : string] : TCustomButtonSpec read GetButton Write SetButton;
|
||||
end;
|
||||
|
||||
TBusinessHoursSpec = Class external name 'Object' (TJSObject)
|
||||
daysOfWeek : TIntegerDynArray;
|
||||
startTime : TDuration;
|
||||
startTimeStr : string; external name 'startTime';
|
||||
startTimeInt : nativeInt; external name 'startTime';
|
||||
endTime : TDuration;
|
||||
endTimeStr : string; external name 'endTime';
|
||||
endTimeInt : nativeInt; external name 'endTime';
|
||||
end;
|
||||
TBusinessHoursSpecArray = Array of TBusinessHoursSpec;
|
||||
|
||||
TCalendarEvent = Class;
|
||||
TCalendarResource = Class;
|
||||
TFullCalendarView = class;
|
||||
|
||||
TAllowDropInfo = record
|
||||
allDay : Boolean;
|
||||
end_ : TJSDate; external name 'end';
|
||||
resource : TCalendarResource;
|
||||
start : TJSDate;
|
||||
startStr : String;
|
||||
end;
|
||||
|
||||
TAllowFunction = reference to function (dropInfo : TAllowDropInfo; draggedEvent : TCalendarEvent) : Boolean;
|
||||
|
||||
TBaseCalendarResource = Class external name 'Object' (TJSObject)
|
||||
id : String;
|
||||
title : string;
|
||||
eventColor : string;
|
||||
eventBackgroundColor : string;
|
||||
eventBorderColor : string;
|
||||
eventTextColor : string;
|
||||
eventClassNames : String;
|
||||
eventClassNamesArray : TStringDynArray; external name 'eventClassNames';
|
||||
eventOverlap : Boolean;
|
||||
eventAllow : TAllowFunction;
|
||||
end;
|
||||
TBaseCalendarResourceArray = array of TBaseCalendarResource;
|
||||
|
||||
TCalendarResource = Class external name 'Object' (TJSObject)
|
||||
end;
|
||||
|
||||
TCalendarResourceArray = array of TCalendarResource;
|
||||
|
||||
THeightHandler = Reference to function : NativeInt;
|
||||
|
||||
TBaseCalendarEvent = Class external name 'Object' (TJSObject)
|
||||
id : string;
|
||||
idInt : NativeInt; external name 'id';
|
||||
groupId : string;
|
||||
groupIdInt : NativeInt; external name 'groupId';
|
||||
allDay : Boolean;
|
||||
start : TJSDate;
|
||||
startStr : string; external name 'start';
|
||||
startInt : nativeInt; external name 'start';
|
||||
end_ : TJSDate; external name 'end';
|
||||
endStr : string; external name 'end';
|
||||
endInt : nativeInt; external name 'end';
|
||||
daysOfWeek : TIntegerDynArray;
|
||||
startTime : TDuration;
|
||||
startTimeStr : string; external name 'startTime';
|
||||
endTime : TDuration;
|
||||
endTimeStr : string; external name 'endTime';
|
||||
startRecur : TJSDate;
|
||||
startRecurStr : string; external name 'startRecur';
|
||||
startRecurInt : nativeInt; external name 'startRecur';
|
||||
endRecur : TJSDate;
|
||||
endRecurStr : string; external name 'endRecur';
|
||||
endRecurInt : nativeInt; external name 'endRecur';
|
||||
title : string;
|
||||
url : string;
|
||||
classNames : string;
|
||||
classNamesArray : TStringDynArray; external name 'classNames';
|
||||
editable : boolean;
|
||||
startEditable : Boolean;
|
||||
durationEditable : Boolean;
|
||||
resourceEditable : Boolean;
|
||||
resourceId : String;
|
||||
resourceIds : TStringDynArray;
|
||||
rendering : string;
|
||||
overlap : boolean;
|
||||
constraint : string;
|
||||
constraintObj : TBusinessHoursSpec; external name 'constraint';
|
||||
color : string;
|
||||
backgroundColor : string;
|
||||
borderColor : string;
|
||||
textColor : string;
|
||||
extendedProps : TJSObject;
|
||||
end;
|
||||
TBaseCalendarEventArray = array of TBaseCalendarEvent;
|
||||
|
||||
{ TBaseCalendarEventHelper }
|
||||
|
||||
TBaseCalendarEventHelper = class helper for TBaseCalendarEvent
|
||||
class function event(const aTitle : String; aStart,aEnd : TDateTime) : TBaseCalendarEvent; static;
|
||||
end;
|
||||
|
||||
{ TCalendarEvent }
|
||||
|
||||
TCalendarEvent = Class external name 'Object' (TJSObject)
|
||||
private
|
||||
FAllDay: Boolean; external name 'allDay';
|
||||
FbackgroundColor: string; external name 'backgroundColor';
|
||||
FBorderColor: string; external name 'borderColor';
|
||||
FClassNames: TStringDynArray; external name 'classNames';
|
||||
FdurationEditable: Boolean; external name 'durationEditable';
|
||||
feditable: boolean; external name 'editable';
|
||||
FEnd: TJSDate; external name 'end';
|
||||
fEventConstraint: string; external name 'eventConstraint';
|
||||
FExtendedProps: TJSObject; external name 'extendedProps';
|
||||
FGroupID: string; external name 'groupId';
|
||||
FID: string; external name 'id';
|
||||
FOverLap: boolean; external name 'overlap';
|
||||
FRendering: string; external name 'rendering';
|
||||
FresourceEditable: Boolean; external name 'resourceEditable';
|
||||
FSource: JSValue; external name 'source';
|
||||
FStart: TJSDate; external name 'start';
|
||||
FstartEditable: Boolean; external name 'startEditable';
|
||||
FTextColor: string; external name 'textColor';
|
||||
FTitle: string; external name 'title';
|
||||
FURL: string; external name 'url';
|
||||
Public
|
||||
procedure setProp(const aName : string; aValue : JSValue);
|
||||
procedure setExtendedProp(const aName : string; aValue : JSValue);
|
||||
Procedure setStart(aDate : TJSDate); overload;
|
||||
Procedure setStart(aDate : String); overload;
|
||||
Procedure setStart(aDate : NativeInt); overload;
|
||||
Procedure setStart(aDate : TJSDate; Options : TJSObject); overload;
|
||||
Procedure setStart(aDate : String; Options : TJSObject); overload;
|
||||
Procedure setStart(aDate : NativeInt; Options : TJSObject); overload;
|
||||
Procedure setEnd(aDate : TJSDate); overload;
|
||||
Procedure setEnd(aDate : String); overload;
|
||||
Procedure setEnd(aDate : NativeInt); overload;
|
||||
Procedure setDates(aStart,aEnd : TJSDate); overload;
|
||||
Procedure setDates(aStart,aEnd : String); overload;
|
||||
Procedure setDates(aStart,aEnd : NativeInt); overload;
|
||||
Procedure setDates(aStart,aEnd : TJSDate; Options : TJSObject); overload;
|
||||
Procedure setDates(aStart,aEnd : String; Options : TJSObject); overload;
|
||||
Procedure setDates(aStart,aEnd : NativeInt; Options : TJSObject); overload;
|
||||
Procedure setAllDay(aValue : Boolean); overload;
|
||||
Procedure setAllDay(aValue : Boolean; Options:TJSObject); overload;
|
||||
Procedure moveStart(aDelta : TDuration); overload;
|
||||
Procedure moveStart(aDelta : String); overload;
|
||||
Procedure moveStart(aDelta : NativeInt); overload;
|
||||
Procedure moveEnd(aDelta : TDuration); overload;
|
||||
Procedure moveEnd(aDelta : String); overload;
|
||||
Procedure moveEnd(aDelta : NativeInt); overload;
|
||||
Procedure moveDates(aDelta : TDuration); overload;
|
||||
Procedure moveDates(aDelta : String); overload;
|
||||
Procedure moveDates(aDelta : NativeInt); overload;
|
||||
Procedure formatRange(formatter : TDateFormatter);
|
||||
Procedure remove;
|
||||
Function getResources : TCalendarResourceArray;
|
||||
Procedure setResources(aResources : array of string); overload;
|
||||
Procedure setResources(aResources : TCalendarResourceArray); overload;
|
||||
|
||||
Property id : string read FID;
|
||||
Property groupId : string read FGroupID;
|
||||
Property allDay : Boolean read FAllDay;
|
||||
Property start : TJSDate read FStart;
|
||||
Property end_ : TJSDate read FEnd;
|
||||
Property title : string read FTitle;
|
||||
Property url : string read FURL;
|
||||
Property classNames : TStringDynArray read FClassNames;
|
||||
Property editable : boolean read feditable;
|
||||
Property startEditable : Boolean read FstartEditable;
|
||||
property eventConstraint : string Read fEventConstraint;
|
||||
Property durationEditable : Boolean Read FdurationEditable;
|
||||
Property resourceEditable : Boolean read FresourceEditable;
|
||||
Property rendering : string read FRendering;
|
||||
Property overlap : boolean read FOverLap;
|
||||
Property backgroundColor : string read FbackgroundColor;
|
||||
Property borderColor : string read FBorderColor;
|
||||
Property textColor : string Read FTextColor;
|
||||
Property extendedProps : TJSObject Read FExtendedProps;
|
||||
Property source : JSValue Read FSource;
|
||||
end;
|
||||
TCalendarEventArray = array of TCalendarEvent;
|
||||
|
||||
TGoogleCalendarEventsSpec = Class external name 'Object' (TJSObject)
|
||||
googleCalendarId : String;
|
||||
// Other options can be specified
|
||||
end;
|
||||
|
||||
|
||||
TJSONFeedSpec = Class external name 'Object' (TJSObject)
|
||||
url : string;
|
||||
// Other options can be specified
|
||||
end;
|
||||
|
||||
TEventGeneratorInfo = record
|
||||
start : TJSDate;
|
||||
end_ : TJSDate; external name 'end';
|
||||
startStr : String;
|
||||
endStr : String;
|
||||
timeZone : String;
|
||||
end;
|
||||
|
||||
TSelectInfo = Record
|
||||
Start : TJSDate;
|
||||
end_ : TJSDate; external name 'end';
|
||||
resourceId : String;
|
||||
end;
|
||||
|
||||
TEventMouseInfo = record
|
||||
event : TCalendarEvent;
|
||||
el : TJSHTMLElement;
|
||||
jsEvent : TJSEvent;
|
||||
view : TFullCalendarView;
|
||||
end;
|
||||
|
||||
|
||||
TGenerateEventsCallBack = Procedure (Res : TBaseCalendarEventArray);
|
||||
TGenerateEventsFailureCallBack = Procedure (Res : TBaseCalendarEventArray);
|
||||
TCalendarEventGenerator = reference to Procedure (info : TEventGeneratorInfo; successCallBack : TGenerateEventsCallBack; FailCallBack : TGenerateEventsFailureCallBack);
|
||||
TCalendarLoadingCallback = reference to procedure (isLoading : Boolean);
|
||||
TSelectOverlapHandler = reference to function(Event : TJSObject) : boolean;
|
||||
TSelectAllowHandler = reference to function(info : TSelectInfo) : Boolean;
|
||||
TEventMouseEventHandler = reference to procedure(info : TEventMouseInfo);
|
||||
|
||||
TCalendarEventSource = Class external name 'Object' (TJSObject)
|
||||
events : TBaseCalendarEventArray;
|
||||
eventsStr : string; external name 'events'; // JSON feed
|
||||
eventsFunc : TCalendarEventGenerator; external name 'events'; // JSON feed
|
||||
eventsJSONFeed : TJSONFeedSpec; external name 'events'; // JSON feed
|
||||
eventsArr : TCalendarEventArray; external name 'events'; // JSON feed
|
||||
eventsObjList : TJSObjectDynArray ; external name 'events'; // Roll your own
|
||||
Procedure refetch;
|
||||
Procedure remove;
|
||||
end;
|
||||
|
||||
TCalendarEventSourceArray = Array of TCalendarEventSource;
|
||||
|
||||
TFullCalendarOptions = Class external name 'Object' (TJSObject)
|
||||
plugins : TStringDynArray;
|
||||
pluginRaw : TJSArray; external name 'plugins';
|
||||
rerenderDelay : NativeInt;
|
||||
defaultDate : TJSDate;
|
||||
defaultDateStr : string; external name 'defaultDate';
|
||||
defaultDateInt : nativeInt; external name 'defaultDate';
|
||||
dateIncrement : TDuration;
|
||||
dateIncrementStr : string; external name 'dateIncrement';
|
||||
dateAlignment : String;
|
||||
validRange : TDateRange;
|
||||
defaultView : string;
|
||||
header : TCalendarHeaderFooterOptions;
|
||||
headerBool : Boolean; external name 'header';
|
||||
footer : TCalendarHeaderFooterOptions;
|
||||
footerBool : Boolean; external name 'footer';
|
||||
titleFormat : TDateFormatter;
|
||||
titleFormatStr : string; external name 'titleFormat';
|
||||
titleFormatFunc : TDateFormatHandler; external name 'titleFormat';
|
||||
titleRangeSeparator : String;
|
||||
buttonText : TButtonText;
|
||||
buttonTextRec : TButtonTextRec;
|
||||
buttonIcons : TButtonIcons;
|
||||
buttonIconsRec : TButtonIconsRec;
|
||||
customButtons : TCustomButtonSpecs;
|
||||
customButtonsObj : TJSObject;
|
||||
themeSystem : string;
|
||||
bootstrapFontAwesome : TFontAwesomeSpec;
|
||||
bootstrapFontAwesomeRec : TFontAwesomeSpecRec;
|
||||
weekends : boolean;
|
||||
hiddenDays : TNativeIntDynArray;
|
||||
columnHeader : Boolean;
|
||||
columnHeaderFormat : TDateFormatter;
|
||||
columnHeaderText : TDateFormatHandler;
|
||||
columnHeaderHTML : TDateFormatHandler;
|
||||
slotDuration : TDuration;
|
||||
slotDurationStr : string; external name 'slotDuration';
|
||||
slotLabelInterval : TDuration;
|
||||
slotLabelIntervalStr : string; external name 'slotLabelInterval';
|
||||
slotLabelFormat : TDateFormatter;
|
||||
slotLabelFormatStr : String;
|
||||
minTime : TDuration;
|
||||
minTimeStr : string; external name 'minTime';
|
||||
maxTime : TDuration;
|
||||
maxTimeStr : string; external name 'maxTime';
|
||||
scrollTime : TDuration;
|
||||
scrollTimeStr : string; external name 'scrollTime';
|
||||
firstDay : Integer;
|
||||
locale : string;
|
||||
dir : string;
|
||||
height : Integer;
|
||||
heightStr : String; external name 'height';
|
||||
heightFunc : THeightHandler; external name 'height';
|
||||
contentHeight : Integer;
|
||||
contentHeightStr : String; external name 'contentHeight';
|
||||
contentHeightFunc : THeightHandler; external name 'contentHeight';
|
||||
aspectRatio : Double;
|
||||
handleWindoResize : Boolean;
|
||||
windowResizeDelay : Integer;
|
||||
showNonCurrentDates : Boolean;
|
||||
fixedWeekCount : Boolean;
|
||||
businessHours : TBusinessHoursSpec;
|
||||
businessHoursBool : Boolean; external name 'businessHours';
|
||||
businessHoursArray : TBusinessHoursSpecArray; external name 'businessHours';
|
||||
nowIndicator : Boolean;
|
||||
now : TJSDate;
|
||||
nowStr : string; external name 'now';
|
||||
nowInt : nativeInt; external name 'now';
|
||||
nowFunc : TDateFunction; external name 'now';
|
||||
events : TBaseCalendarEventArray;
|
||||
eventsStr : string; external name 'events'; // JSON feed
|
||||
eventsFunc : TCalendarEventGenerator; external name 'events'; // JSON feed
|
||||
eventsJSONFeed : TJSONFeedSpec; external name 'events'; // JSON feed
|
||||
eventsArr : TCalendarEventArray; external name 'events'; // JSON feed
|
||||
eventsObjList : TJSObjectDynArray ; external name 'events'; // Roll your own
|
||||
eventSources : TCalendarEventSourceArray;
|
||||
startParam : string;
|
||||
endParam : string;
|
||||
timeZoneParam : string;
|
||||
lazyFetching : Boolean;
|
||||
loading : TCalendarLoadingCallback;
|
||||
selectable : boolean;
|
||||
selectMirror : Boolean;
|
||||
unselectAuto : Boolean;
|
||||
unselectCancel : string;
|
||||
selectOverlap : boolean;
|
||||
selectOverlapFunc : TSelectOverlapHandler; external name 'selectOverlap';
|
||||
selectAllow : TSelectAllowHandler;
|
||||
selectMinDistance : Integer;
|
||||
selectConstraint: TBusinessHoursSpec;
|
||||
eventClick : TEventMouseEventHandler;
|
||||
eventMouseEnter : TEventMouseEventHandler;
|
||||
eventMouseLeave : TEventMouseEventHandler;
|
||||
end;
|
||||
|
||||
{ TFullCalendarView }
|
||||
TDateSelector = Class external name 'Object' (TJSObject)
|
||||
start : TJSDate;
|
||||
startStr : string; external name 'start';
|
||||
startInt : NativeInt; external name 'start';
|
||||
end_ : TJSDate;
|
||||
endStr : string; external name 'end';
|
||||
endInt : NativeInt; external name 'end';
|
||||
allDay : Boolean;
|
||||
resourceId : String;
|
||||
end;
|
||||
|
||||
TFullCalendarView = Class external name 'Object' (TJSObject)
|
||||
private
|
||||
FType: string; external name 'type';
|
||||
Public
|
||||
title : string;
|
||||
activeStart : TJSDate;
|
||||
activeEnd : TJSDate;
|
||||
currentStart : TJSDate;
|
||||
currentEnd : TJSDate;
|
||||
Property type_ : string read FType;
|
||||
end;
|
||||
|
||||
TFullCalendarEventInfo = record
|
||||
view : TFullCalendarView;
|
||||
el : TJSHTMLElement;
|
||||
end;
|
||||
|
||||
TDayRenderInfo = record
|
||||
date : TJSDate;
|
||||
view : TFullCalendarView;
|
||||
el : TJSHTMLElement;
|
||||
end;
|
||||
|
||||
TDateClickInfo = record
|
||||
date : TJSDate;
|
||||
dateStr : string;
|
||||
allDay : Boolean;
|
||||
dayEl : TJSHTMLElement;
|
||||
jsEvent : TJSEvent;
|
||||
view : TFullCalendarView;
|
||||
resource : TCalendarResource;
|
||||
end;
|
||||
|
||||
TDateSelectInfo = record
|
||||
start : TJSDate;
|
||||
startStr : string;
|
||||
end_ : TJSDate; external name 'end';
|
||||
endStr : string;
|
||||
allDay : Boolean;
|
||||
jsEvent : TJSEvent;
|
||||
view : TFullCalendarView;
|
||||
resource : TCalendarResource;
|
||||
end;
|
||||
|
||||
|
||||
TFullCalendarEvent = reference to function(Info :TFullCalendarEventInfo) : Boolean;
|
||||
TDayRenderEvent = reference to function(Info : TDayrenderInfo) : Boolean;
|
||||
TViewEvent = reference to function(View : TFullCalendarView) : Boolean;
|
||||
TDateClickEvent = reference to procedure (Info: TDateClickInfo);
|
||||
TDateSelectEvent = reference to procedure (Info: TDateSelectInfo);
|
||||
TDateUnSelectEvent = reference to procedure (event: TJSEvent; View : TFullCalendarView);
|
||||
|
||||
|
||||
|
||||
TFullCalendar = Class external name 'FullCalendar.Calendar' (TJSObject)
|
||||
Constructor new(el : TJSHTMLElement; Options : TFullCalendarOptions) ; // external name 'Calendar';
|
||||
class function Calendar(el : TJSHTMLElement; Options : TFullCalendarOptions) : TFullCalendar; static;
|
||||
function getOption(aName : String) : JSValue;
|
||||
procedure setOption(aName : string; aValue : JSValue);
|
||||
procedure render;
|
||||
procedure destroy;
|
||||
Procedure batchRendering(aBatch : TProcedural);
|
||||
Procedure prev;
|
||||
Procedure next;
|
||||
Procedure prevYear;
|
||||
Procedure nextYear;
|
||||
Procedure today;
|
||||
Procedure gotoDate(aDate : string); overload;
|
||||
Procedure gotoDate(aDate : NativeInt); overload;
|
||||
Procedure gotoDate(aDate : TJSDate); overload;
|
||||
Procedure incrementDate(aDuration : TDuration); overload;
|
||||
Procedure incrementDate(aDuration : string);overload;
|
||||
Procedure incrementDate(aDuration : NativeInt);overload;
|
||||
Procedure on_(eventName : string; aHandler : TFullCalendarEvent); external name 'on';
|
||||
Procedure on_(eventName : string; aHandler : TDayRenderEvent);external name 'on';
|
||||
Procedure on_(eventName : string; aHandler : TViewEvent);external name 'on';
|
||||
Procedure on_(eventName : string; aHandler : TDateSelectEvent);external name 'on';
|
||||
Procedure on_(eventName : string; aHandler : TDateClickEvent);external name 'on';
|
||||
Procedure on_(eventName : string; aHandler : TDateUnSelectEvent);external name 'on';
|
||||
Procedure off(eventName : string); overload;
|
||||
Procedure off(eventName : string; aHandler : TFullCalendarEvent); overload;
|
||||
Procedure off(eventName : string; aHandler : TDayRenderEvent);
|
||||
Procedure off(eventName : string; aHandler : TViewEvent);
|
||||
Procedure off(eventName : string; aHandler : TDateClickEvent);
|
||||
Procedure off(eventName : string; aHandler : TDateUnSelectEvent);
|
||||
function GetDate : TJSDate;
|
||||
function View : TFullCalendarView;
|
||||
procedure changeView(aViewName : string); overload;
|
||||
procedure changeView(aViewName : string; aDate : TJSDate); overload;
|
||||
procedure changeView(aViewName : string; aDate : String); overload;
|
||||
procedure changeView(aViewName : string; aDate : NativeInt); overload;
|
||||
procedure changeView(aViewName : string; aDate : TDateRange); overload;
|
||||
procedure scrollToTime(aTime : TDuration); overload;
|
||||
procedure scrollToTime(aTime : String); overload;
|
||||
procedure scrollToTime(aTime : NativeInt); overload;
|
||||
Procedure updateSize;
|
||||
Function getEvents : TCalendarEventArray;
|
||||
Function getEvent(aID : NativeInt) :TCalendarEvent; overload;
|
||||
Function getEvent(aID : String) : TCalendarEvent; overload;
|
||||
Function addEvent(aEvent : TBaseCalendarEvent) : TCalendarEvent; overload;
|
||||
Function addEvent(aEvent : TBaseCalendarEvent; Source : String) : TCalendarEvent; overload;
|
||||
Function addEvent(aEvent : TBaseCalendarEvent; Source : TBaseCalendarEvent) : TCalendarEvent; overload;
|
||||
Function getEventSources : TCalendarEventSourceArray;
|
||||
Function getEventSourcebyId(aID: String) : TCalendarEventSource;
|
||||
Procedure addEventSource(aSource : TCalendarEventGenerator);
|
||||
Procedure addEventSource(aSource : TJSONFeedSpec);
|
||||
Procedure addEventSource(aSource : TCalendarEventArray);
|
||||
Procedure addEventSource(aSource : TBaseCalendarEventArray);
|
||||
Procedure addEventSource(aSource : String);
|
||||
procedure refetchEvents;
|
||||
procedure Select(aStart : TJSDate; aEnd : TJSDate);
|
||||
procedure Select(aStart : String; aEnd : String);
|
||||
procedure Select(aStart : NativeInt; aEnd : NativeInt);
|
||||
procedure Select(aStart : TJSDate);
|
||||
procedure Select(aStart : String);
|
||||
procedure Select(aStart : NativeInt);
|
||||
procedure Select(aSel : TDateSelector);
|
||||
procedure unselect;
|
||||
|
||||
|
||||
Function getAvailableLocaleCodes : TStringDynArray;
|
||||
Property Date : TJSDate Read GetDate Write GotoDate;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TBaseCalendarEventHelper }
|
||||
|
||||
class function TBaseCalendarEventHelper.event(const aTitle : String; aStart,aEnd : TDateTime) : TBaseCalendarEvent;
|
||||
|
||||
begin
|
||||
Result:=TBaseCalendarEvent.new;
|
||||
Result.title:=aTitle;
|
||||
Result.Start:=DateTimeToJSDate(aStart);
|
||||
Result.end_:=DateTimeToJSDate(aEnd);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user