libfullcalendar4.pp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. {
  2. This file is part of the Pas2JS run time library.
  3. Copyright (C) 2019 Michael Van Canneyt
  4. FullCalendar version 4 mappings for pas2js
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. **********************************************************************}
  11. unit libfullcalendar4;
  12. {$mode objfpc}
  13. {$modeswitch externalclass}
  14. interface
  15. uses
  16. sysutils, types, js, web;
  17. Const
  18. fcViewMonth = 'dayGridMonth';
  19. fcViewWeek = 'timeGridWeek';
  20. fcViewDay = 'timeGridDay';
  21. // A list of plugin names, created from the plugin index page
  22. fcInteractionPlugin = 'interaction';
  23. fcDayGridPlugin = 'dayGrid';
  24. fcTimeGridPlugin = 'timeGrid';
  25. fcListPlugin = 'list';
  26. fcTimelinePlugin = 'timeline';
  27. fcResourceDayGridPlugin = 'resourceDayGrid';
  28. fcResourceTimeGridPlugin = 'resourceTimeGrid';
  29. fcResourceTimelinePlugin = 'resourceTimeline';
  30. fcBootstrapPlugin = 'bootstrap';
  31. fcGoogleCalendarPlugin = 'googleCalendar';
  32. fcRRulePlugin = 'rrule';
  33. fcMomentPlugin = 'moment';
  34. fcMomentTimezonePlugin = 'momentTimeZone';
  35. fcReactPlugin = 'react';
  36. fcAngularPlugin = 'angular';
  37. fcVuePlugin = 'vue';
  38. fcHeaderFooterTitle = 'title';
  39. fcHeaderFooterPrev = 'prev';
  40. fcHeaderFooterNext = 'next';
  41. fcHeaderFooterPrevYear = 'prevYear';
  42. fcHeaderFooterNextYear = 'nextYear';
  43. fcHeaderFooterToday = 'today';
  44. fcDateFormatNumeric = 'numeric';
  45. fcDateFormat2Digit = '2-digit';
  46. fcDateFormatLong = 'long';
  47. fcDateFormatShort = 'short';
  48. fcDateFormatNarrow = 'narrow';
  49. Type
  50. TProcedural = reference to procedure;
  51. TDateFunction = reference to Function : TJSDate;
  52. TDateFormatter = Class external name 'Object' (TJSObject)
  53. // Use fcDateFormat* constants
  54. year : String;
  55. month : String;
  56. day : String;
  57. week : string;
  58. meridiem : string;
  59. weekday : String;
  60. hour : string;
  61. minute : string;
  62. second : string;
  63. hour12 : Boolean;
  64. timeZoneName : string;
  65. omitZeroMinute : Boolean;
  66. omitCommas : Boolean;
  67. end;
  68. TDuration = Class external name 'Object' (TJSObject)
  69. years : NativeInt;
  70. months : NativeInt;
  71. days : NativeInt;
  72. milliseconds : NativeInt;
  73. end;
  74. TDateRange = Class external name 'Object' (TJSObject)
  75. start : TJSDate;
  76. startStr : string; external name 'start';
  77. startInt : nativeInt; external name 'start';
  78. end;
  79. TCalendarHeaderFooterOptions = Class external name 'Object' (TJSObject)
  80. // use the fcHeaderFooter consts
  81. left : string;
  82. right : string;
  83. center : string;
  84. end;
  85. TDateFormatHandler = reference to function(aDate : TJSDate) : String;
  86. TButtonText = Class external name 'Object' (TJSObject)
  87. today : string;
  88. month : string;
  89. week : string;
  90. day : string;
  91. list : string;
  92. end;
  93. TButtonTextRec = record
  94. today : string;
  95. month : string;
  96. week : string;
  97. day : string;
  98. list : string;
  99. end;
  100. TButtonIcons = Class external name 'Object' (TJSObject)
  101. title : string;
  102. prev : string;
  103. next : string;
  104. prevYear : string;
  105. nextYear : string;
  106. today : string;
  107. end;
  108. TButtonIconsRec = record
  109. today : string;
  110. title : string;
  111. prev : string;
  112. next : string;
  113. prevYear : string;
  114. nextYear : string;
  115. end;
  116. TCustomButtonSpec = record
  117. text : string;
  118. click : TJSEventHandler;
  119. end;
  120. TFontAwesomeSpec = Class external name 'Object' (TJSObject)
  121. close : string;
  122. title : string;
  123. prev : string;
  124. next : string;
  125. prevYear : string;
  126. nextYear : string;
  127. today : string;
  128. end;
  129. TFontAwesomeSpecRec = record
  130. close : string;
  131. title : string;
  132. prev : string;
  133. next : string;
  134. prevYear : string;
  135. nextYear : string;
  136. today : string;
  137. end;
  138. TCustomButtonSpecs = Class external name 'Object' (TJSObject)
  139. private
  140. function GetButton(Name: String): TCustomButtonSpec; external name '[]';
  141. procedure SetButton(Name: String; const AValue: TCustomButtonSpec); external name '[]';
  142. Public
  143. property buttons [aIndex : string] : TCustomButtonSpec read GetButton Write SetButton;
  144. end;
  145. TBusinessHoursSpec = Class external name 'Object' (TJSObject)
  146. daysOfWeek : TIntegerDynArray;
  147. startTime : TDuration;
  148. startTimeStr : string; external name 'startTime';
  149. startTimeInt : nativeInt; external name 'startTime';
  150. endTime : TDuration;
  151. endTimeStr : string; external name 'endTime';
  152. endTimeInt : nativeInt; external name 'endTime';
  153. end;
  154. TBusinessHoursSpecArray = Array of TBusinessHoursSpec;
  155. TCalendarEvent = Class;
  156. TCalendarResource = Class;
  157. TFullCalendarView = class;
  158. TAllowDropInfo = record
  159. allDay : Boolean;
  160. end_ : TJSDate; external name 'end';
  161. resource : TCalendarResource;
  162. start : TJSDate;
  163. startStr : String;
  164. end;
  165. TAllowFunction = reference to function (dropInfo : TAllowDropInfo; draggedEvent : TCalendarEvent) : Boolean;
  166. TBaseCalendarResource = Class external name 'Object' (TJSObject)
  167. id : String;
  168. title : string;
  169. eventColor : string;
  170. eventBackgroundColor : string;
  171. eventBorderColor : string;
  172. eventTextColor : string;
  173. eventClassNames : String;
  174. eventClassNamesArray : TStringDynArray; external name 'eventClassNames';
  175. eventOverlap : Boolean;
  176. eventAllow : TAllowFunction;
  177. end;
  178. TBaseCalendarResourceArray = array of TBaseCalendarResource;
  179. TCalendarResource = Class external name 'Object' (TJSObject)
  180. end;
  181. TCalendarResourceArray = array of TCalendarResource;
  182. THeightHandler = Reference to function : NativeInt;
  183. TBaseCalendarEvent = Class external name 'Object' (TJSObject)
  184. id : string;
  185. idInt : NativeInt; external name 'id';
  186. groupId : string;
  187. groupIdInt : NativeInt; external name 'groupId';
  188. allDay : Boolean;
  189. start : TJSDate;
  190. startStr : string; external name 'start';
  191. startInt : nativeInt; external name 'start';
  192. end_ : TJSDate; external name 'end';
  193. endStr : string; external name 'end';
  194. endInt : nativeInt; external name 'end';
  195. daysOfWeek : TIntegerDynArray;
  196. startTime : TDuration;
  197. startTimeStr : string; external name 'startTime';
  198. endTime : TDuration;
  199. endTimeStr : string; external name 'endTime';
  200. startRecur : TJSDate;
  201. startRecurStr : string; external name 'startRecur';
  202. startRecurInt : nativeInt; external name 'startRecur';
  203. endRecur : TJSDate;
  204. endRecurStr : string; external name 'endRecur';
  205. endRecurInt : nativeInt; external name 'endRecur';
  206. title : string;
  207. url : string;
  208. classNames : string;
  209. classNamesArray : TStringDynArray; external name 'classNames';
  210. editable : boolean;
  211. startEditable : Boolean;
  212. durationEditable : Boolean;
  213. resourceEditable : Boolean;
  214. resourceId : String;
  215. resourceIds : TStringDynArray;
  216. rendering : string;
  217. overlap : boolean;
  218. constraint : string;
  219. constraintObj : TBusinessHoursSpec; external name 'constraint';
  220. color : string;
  221. backgroundColor : string;
  222. borderColor : string;
  223. textColor : string;
  224. extendedProps : TJSObject;
  225. end;
  226. TBaseCalendarEventArray = array of TBaseCalendarEvent;
  227. { TBaseCalendarEventHelper }
  228. TBaseCalendarEventHelper = class helper for TBaseCalendarEvent
  229. class function event(const aTitle : String; aStart,aEnd : TDateTime) : TBaseCalendarEvent; static;
  230. end;
  231. { TCalendarEvent }
  232. TCalendarEvent = Class external name 'Object' (TJSObject)
  233. private
  234. FAllDay: Boolean; external name 'allDay';
  235. FbackgroundColor: string; external name 'backgroundColor';
  236. FBorderColor: string; external name 'borderColor';
  237. FClassNames: TStringDynArray; external name 'classNames';
  238. FdurationEditable: Boolean; external name 'durationEditable';
  239. feditable: boolean; external name 'editable';
  240. FEnd: TJSDate; external name 'end';
  241. fEventConstraint: string; external name 'eventConstraint';
  242. FExtendedProps: TJSObject; external name 'extendedProps';
  243. FGroupID: string; external name 'groupId';
  244. FID: string; external name 'id';
  245. FOverLap: boolean; external name 'overlap';
  246. FRendering: string; external name 'rendering';
  247. FresourceEditable: Boolean; external name 'resourceEditable';
  248. FSource: JSValue; external name 'source';
  249. FStart: TJSDate; external name 'start';
  250. FstartEditable: Boolean; external name 'startEditable';
  251. FTextColor: string; external name 'textColor';
  252. FTitle: string; external name 'title';
  253. FURL: string; external name 'url';
  254. Public
  255. procedure setProp(const aName : string; aValue : JSValue);
  256. procedure setExtendedProp(const aName : string; aValue : JSValue);
  257. Procedure setStart(aDate : TJSDate); overload;
  258. Procedure setStart(aDate : String); overload;
  259. Procedure setStart(aDate : NativeInt); overload;
  260. Procedure setStart(aDate : TJSDate; Options : TJSObject); overload;
  261. Procedure setStart(aDate : String; Options : TJSObject); overload;
  262. Procedure setStart(aDate : NativeInt; Options : TJSObject); overload;
  263. Procedure setEnd(aDate : TJSDate); overload;
  264. Procedure setEnd(aDate : String); overload;
  265. Procedure setEnd(aDate : NativeInt); overload;
  266. Procedure setDates(aStart,aEnd : TJSDate); overload;
  267. Procedure setDates(aStart,aEnd : String); overload;
  268. Procedure setDates(aStart,aEnd : NativeInt); overload;
  269. Procedure setDates(aStart,aEnd : TJSDate; Options : TJSObject); overload;
  270. Procedure setDates(aStart,aEnd : String; Options : TJSObject); overload;
  271. Procedure setDates(aStart,aEnd : NativeInt; Options : TJSObject); overload;
  272. Procedure setAllDay(aValue : Boolean); overload;
  273. Procedure setAllDay(aValue : Boolean; Options:TJSObject); overload;
  274. Procedure moveStart(aDelta : TDuration); overload;
  275. Procedure moveStart(aDelta : String); overload;
  276. Procedure moveStart(aDelta : NativeInt); overload;
  277. Procedure moveEnd(aDelta : TDuration); overload;
  278. Procedure moveEnd(aDelta : String); overload;
  279. Procedure moveEnd(aDelta : NativeInt); overload;
  280. Procedure moveDates(aDelta : TDuration); overload;
  281. Procedure moveDates(aDelta : String); overload;
  282. Procedure moveDates(aDelta : NativeInt); overload;
  283. Procedure formatRange(formatter : TDateFormatter);
  284. Procedure remove;
  285. Function getResources : TCalendarResourceArray;
  286. Procedure setResources(aResources : array of string); overload;
  287. Procedure setResources(aResources : TCalendarResourceArray); overload;
  288. Property id : string read FID;
  289. Property groupId : string read FGroupID;
  290. Property allDay : Boolean read FAllDay;
  291. Property start : TJSDate read FStart;
  292. Property end_ : TJSDate read FEnd;
  293. Property title : string read FTitle;
  294. Property url : string read FURL;
  295. Property classNames : TStringDynArray read FClassNames;
  296. Property editable : boolean read feditable;
  297. Property startEditable : Boolean read FstartEditable;
  298. property eventConstraint : string Read fEventConstraint;
  299. Property durationEditable : Boolean Read FdurationEditable;
  300. Property resourceEditable : Boolean read FresourceEditable;
  301. Property rendering : string read FRendering;
  302. Property overlap : boolean read FOverLap;
  303. Property backgroundColor : string read FbackgroundColor;
  304. Property borderColor : string read FBorderColor;
  305. Property textColor : string Read FTextColor;
  306. Property extendedProps : TJSObject Read FExtendedProps;
  307. Property source : JSValue Read FSource;
  308. end;
  309. TCalendarEventArray = array of TCalendarEvent;
  310. TGoogleCalendarEventsSpec = Class external name 'Object' (TJSObject)
  311. googleCalendarId : String;
  312. // Other options can be specified
  313. end;
  314. TJSONFeedSpec = Class external name 'Object' (TJSObject)
  315. url : string;
  316. // Other options can be specified
  317. end;
  318. TEventGeneratorInfo = record
  319. start : TJSDate;
  320. end_ : TJSDate; external name 'end';
  321. startStr : String;
  322. endStr : String;
  323. timeZone : String;
  324. end;
  325. TSelectInfo = Record
  326. Start : TJSDate;
  327. end_ : TJSDate; external name 'end';
  328. resourceId : String;
  329. end;
  330. TEventMouseInfo = record
  331. event : TCalendarEvent;
  332. el : TJSHTMLElement;
  333. jsEvent : TJSEvent;
  334. view : TFullCalendarView;
  335. end;
  336. TGenerateEventsCallBack = Procedure (Res : TBaseCalendarEventArray);
  337. TGenerateEventsFailureCallBack = Procedure (Res : TBaseCalendarEventArray);
  338. TCalendarEventGenerator = reference to Procedure (info : TEventGeneratorInfo; successCallBack : TGenerateEventsCallBack; FailCallBack : TGenerateEventsFailureCallBack);
  339. TCalendarLoadingCallback = reference to procedure (isLoading : Boolean);
  340. TSelectOverlapHandler = reference to function(Event : TJSObject) : boolean;
  341. TSelectAllowHandler = reference to function(info : TSelectInfo) : Boolean;
  342. TEventMouseEventHandler = reference to procedure(info : TEventMouseInfo);
  343. TCalendarEventSource = Class external name 'Object' (TJSObject)
  344. events : TBaseCalendarEventArray;
  345. eventsStr : string; external name 'events'; // JSON feed
  346. eventsFunc : TCalendarEventGenerator; external name 'events'; // JSON feed
  347. eventsJSONFeed : TJSONFeedSpec; external name 'events'; // JSON feed
  348. eventsArr : TCalendarEventArray; external name 'events'; // JSON feed
  349. eventsObjList : TJSObjectDynArray ; external name 'events'; // Roll your own
  350. Procedure refetch;
  351. Procedure remove;
  352. end;
  353. TCalendarEventRenderInfo = record
  354. event: TCalendarEvent;
  355. el : TJSHTMLElement;
  356. isMirror : Boolean;
  357. isStart : Boolean;
  358. isEnd : Boolean;
  359. view : TFullCalendarView;
  360. end;
  361. TCalendarEventRenderCallback = reference to procedure(Info : TCalendarEventRenderInfo);
  362. TCalendarEventSourceArray = Array of TCalendarEventSource;
  363. TFullCalendarOptions = Class external name 'Object' (TJSObject)
  364. plugins : TStringDynArray;
  365. pluginRaw : TJSArray; external name 'plugins';
  366. rerenderDelay : NativeInt;
  367. defaultDate : TJSDate;
  368. defaultDateStr : string; external name 'defaultDate';
  369. defaultDateInt : nativeInt; external name 'defaultDate';
  370. dateIncrement : TDuration;
  371. dateIncrementStr : string; external name 'dateIncrement';
  372. dateAlignment : String;
  373. validRange : TDateRange;
  374. defaultView : string;
  375. header : TCalendarHeaderFooterOptions;
  376. headerBool : Boolean; external name 'header';
  377. footer : TCalendarHeaderFooterOptions;
  378. footerBool : Boolean; external name 'footer';
  379. titleFormat : TDateFormatter;
  380. titleFormatStr : string; external name 'titleFormat';
  381. titleFormatFunc : TDateFormatHandler; external name 'titleFormat';
  382. titleRangeSeparator : String;
  383. buttonText : TButtonText;
  384. buttonTextRec : TButtonTextRec;
  385. buttonIcons : TButtonIcons;
  386. buttonIconsRec : TButtonIconsRec;
  387. customButtons : TCustomButtonSpecs;
  388. customButtonsObj : TJSObject;
  389. themeSystem : string;
  390. bootstrapFontAwesome : TFontAwesomeSpec;
  391. bootstrapFontAwesomeRec : TFontAwesomeSpecRec;
  392. weekends : boolean;
  393. hiddenDays : TNativeIntDynArray;
  394. columnHeader : Boolean;
  395. columnHeaderFormat : TDateFormatter;
  396. columnHeaderText : TDateFormatHandler;
  397. columnHeaderHTML : TDateFormatHandler;
  398. slotDuration : TDuration;
  399. slotDurationStr : string; external name 'slotDuration';
  400. slotLabelInterval : TDuration;
  401. slotLabelIntervalStr : string; external name 'slotLabelInterval';
  402. slotLabelFormat : TDateFormatter;
  403. slotLabelFormatStr : String;
  404. minTime : TDuration;
  405. minTimeStr : string; external name 'minTime';
  406. maxTime : TDuration;
  407. maxTimeStr : string; external name 'maxTime';
  408. scrollTime : TDuration;
  409. scrollTimeStr : string; external name 'scrollTime';
  410. firstDay : Integer;
  411. locale : string;
  412. dir : string;
  413. height : Integer;
  414. heightStr : String; external name 'height';
  415. heightFunc : THeightHandler; external name 'height';
  416. contentHeight : Integer;
  417. contentHeightStr : String; external name 'contentHeight';
  418. contentHeightFunc : THeightHandler; external name 'contentHeight';
  419. aspectRatio : Double;
  420. handleWindoResize : Boolean;
  421. windowResizeDelay : Integer;
  422. showNonCurrentDates : Boolean;
  423. fixedWeekCount : Boolean;
  424. businessHours : TBusinessHoursSpec;
  425. businessHoursBool : Boolean; external name 'businessHours';
  426. businessHoursArray : TBusinessHoursSpecArray; external name 'businessHours';
  427. nowIndicator : Boolean;
  428. now : TJSDate;
  429. nowStr : string; external name 'now';
  430. nowInt : nativeInt; external name 'now';
  431. nowFunc : TDateFunction; external name 'now';
  432. eventLimit : Boolean;
  433. eventLimitInt : Integer; external name 'eventLimit';
  434. events : TBaseCalendarEventArray;
  435. eventsStr : string; external name 'events'; // JSON feed
  436. eventsFunc : TCalendarEventGenerator; external name 'events'; // JSON feed
  437. eventsJSONFeed : TJSONFeedSpec; external name 'events'; // JSON feed
  438. eventsArr : TCalendarEventArray; external name 'events'; // JSON feed
  439. eventsObjList : TJSObjectDynArray ; external name 'events'; // Roll your own
  440. eventSources : TCalendarEventSourceArray;
  441. eventRender : TCalendarEventRenderCallback;
  442. startParam : string;
  443. endParam : string;
  444. timeZoneParam : string;
  445. lazyFetching : Boolean;
  446. loading : TCalendarLoadingCallback;
  447. selectable : boolean;
  448. selectMirror : Boolean;
  449. unselectAuto : Boolean;
  450. unselectCancel : string;
  451. selectOverlap : boolean;
  452. selectOverlapFunc : TSelectOverlapHandler; external name 'selectOverlap';
  453. selectAllow : TSelectAllowHandler;
  454. selectMinDistance : Integer;
  455. selectConstraint: TBusinessHoursSpec;
  456. eventClick : TEventMouseEventHandler;
  457. eventMouseEnter : TEventMouseEventHandler;
  458. eventMouseLeave : TEventMouseEventHandler;
  459. listDayFormat : TDateFormatter;
  460. listDayBool : Boolean; external name 'listDayFormat';
  461. listDayAltFormat : TDateFormatter;
  462. listDayAltBool : Boolean; external name 'listDayAltFormat';
  463. noEventsMessage : String;
  464. end;
  465. { TFullCalendarView }
  466. TDateSelector = Class external name 'Object' (TJSObject)
  467. start : TJSDate;
  468. startStr : string; external name 'start';
  469. startInt : NativeInt; external name 'start';
  470. end_ : TJSDate;
  471. endStr : string; external name 'end';
  472. endInt : NativeInt; external name 'end';
  473. allDay : Boolean;
  474. resourceId : String;
  475. end;
  476. TFullCalendarView = Class external name 'Object' (TJSObject)
  477. private
  478. FType: string; external name 'type';
  479. Public
  480. title : string;
  481. activeStart : TJSDate;
  482. activeEnd : TJSDate;
  483. currentStart : TJSDate;
  484. currentEnd : TJSDate;
  485. Property type_ : string read FType;
  486. end;
  487. TFullCalendarEventInfo = record
  488. view : TFullCalendarView;
  489. el : TJSHTMLElement;
  490. end;
  491. TDayRenderInfo = record
  492. date : TJSDate;
  493. view : TFullCalendarView;
  494. el : TJSHTMLElement;
  495. end;
  496. TDateClickInfo = record
  497. date : TJSDate;
  498. dateStr : string;
  499. allDay : Boolean;
  500. dayEl : TJSHTMLElement;
  501. jsEvent : TJSEvent;
  502. view : TFullCalendarView;
  503. resource : TCalendarResource;
  504. end;
  505. TDateSelectInfo = record
  506. start : TJSDate;
  507. startStr : string;
  508. end_ : TJSDate; external name 'end';
  509. endStr : string;
  510. allDay : Boolean;
  511. jsEvent : TJSEvent;
  512. view : TFullCalendarView;
  513. resource : TCalendarResource;
  514. end;
  515. TFullCalendarEvent = reference to function(Info :TFullCalendarEventInfo) : Boolean;
  516. TDayRenderEvent = reference to function(Info : TDayrenderInfo) : Boolean;
  517. TViewEvent = reference to function(View : TFullCalendarView) : Boolean;
  518. TDateClickEvent = reference to procedure (Info: TDateClickInfo);
  519. TDateSelectEvent = reference to procedure (Info: TDateSelectInfo);
  520. TDateUnSelectEvent = reference to procedure (event: TJSEvent; View : TFullCalendarView);
  521. TFullCalendar = Class external name 'FullCalendar.Calendar' (TJSObject)
  522. Constructor new(el : TJSHTMLElement; Options : TFullCalendarOptions) ; // external name 'Calendar';
  523. class function Calendar(el : TJSHTMLElement; Options : TFullCalendarOptions) : TFullCalendar; static;
  524. function getOption(aName : String) : JSValue;
  525. procedure setOption(aName : string; aValue : JSValue);
  526. procedure render;
  527. procedure destroy;
  528. Procedure batchRendering(aBatch : TProcedural);
  529. Procedure prev;
  530. Procedure next;
  531. Procedure prevYear;
  532. Procedure nextYear;
  533. Procedure today;
  534. Procedure gotoDate(aDate : string); overload;
  535. Procedure gotoDate(aDate : NativeInt); overload;
  536. Procedure gotoDate(aDate : TJSDate); overload;
  537. Procedure incrementDate(aDuration : TDuration); overload;
  538. Procedure incrementDate(aDuration : string);overload;
  539. Procedure incrementDate(aDuration : NativeInt);overload;
  540. Procedure on_(eventName : string; aHandler : TFullCalendarEvent); external name 'on';
  541. Procedure on_(eventName : string; aHandler : TDayRenderEvent);external name 'on';
  542. Procedure on_(eventName : string; aHandler : TViewEvent);external name 'on';
  543. Procedure on_(eventName : string; aHandler : TDateSelectEvent);external name 'on';
  544. Procedure on_(eventName : string; aHandler : TDateClickEvent);external name 'on';
  545. Procedure on_(eventName : string; aHandler : TDateUnSelectEvent);external name 'on';
  546. Procedure off(eventName : string); overload;
  547. Procedure off(eventName : string; aHandler : TFullCalendarEvent); overload;
  548. Procedure off(eventName : string; aHandler : TDayRenderEvent);
  549. Procedure off(eventName : string; aHandler : TViewEvent);
  550. Procedure off(eventName : string; aHandler : TDateClickEvent);
  551. Procedure off(eventName : string; aHandler : TDateUnSelectEvent);
  552. function GetDate : TJSDate;
  553. function View : TFullCalendarView;
  554. procedure changeView(aViewName : string); overload;
  555. procedure changeView(aViewName : string; aDate : TJSDate); overload;
  556. procedure changeView(aViewName : string; aDate : String); overload;
  557. procedure changeView(aViewName : string; aDate : NativeInt); overload;
  558. procedure changeView(aViewName : string; aDate : TDateRange); overload;
  559. procedure scrollToTime(aTime : TDuration); overload;
  560. procedure scrollToTime(aTime : String); overload;
  561. procedure scrollToTime(aTime : NativeInt); overload;
  562. Procedure updateSize;
  563. Function getEvents : TCalendarEventArray;
  564. Function getEvent(aID : NativeInt) :TCalendarEvent; overload;
  565. Function getEvent(aID : String) : TCalendarEvent; overload;
  566. Function addEvent(aEvent : TBaseCalendarEvent) : TCalendarEvent; overload;
  567. Function addEvent(aEvent : TBaseCalendarEvent; Source : String) : TCalendarEvent; overload;
  568. Function addEvent(aEvent : TBaseCalendarEvent; Source : TBaseCalendarEvent) : TCalendarEvent; overload;
  569. Function getEventSources : TCalendarEventSourceArray;
  570. Function getEventSourcebyId(aID: String) : TCalendarEventSource;
  571. Procedure addEventSource(aSource : TCalendarEventGenerator);
  572. Procedure addEventSource(aSource : TJSONFeedSpec);
  573. Procedure addEventSource(aSource : TCalendarEventArray);
  574. Procedure addEventSource(aSource : TBaseCalendarEventArray);
  575. Procedure addEventSource(aSource : String);
  576. procedure refetchEvents;
  577. procedure Select(aStart : TJSDate; aEnd : TJSDate);
  578. procedure Select(aStart : String; aEnd : String);
  579. procedure Select(aStart : NativeInt; aEnd : NativeInt);
  580. procedure Select(aStart : TJSDate);
  581. procedure Select(aStart : String);
  582. procedure Select(aStart : NativeInt);
  583. procedure Select(aSel : TDateSelector);
  584. procedure unselect;
  585. Function getAvailableLocaleCodes : TStringDynArray;
  586. Property Date : TJSDate Read GetDate Write GotoDate;
  587. end;
  588. implementation
  589. { TBaseCalendarEventHelper }
  590. class function TBaseCalendarEventHelper.event(const aTitle : String; aStart,aEnd : TDateTime) : TBaseCalendarEvent;
  591. begin
  592. Result:=TBaseCalendarEvent.new;
  593. Result.title:=aTitle;
  594. Result.Start:=DateTimeToJSDate(aStart);
  595. Result.end_:=DateTimeToJSDate(aEnd);
  596. end;
  597. end.