001/** 002 * BBjCalendarWidget 003 * @author ndecker 004 * 005 * The <code>BBjCalendarWidget</code> is a BBj Interface that serves as a plug-in to the 006 * <a href = 'https://fullcalendar.io/' target = '_blank'>FullCalendar</a> JavaScript-based calendar control. 007 * 008 * For the full copyright and license information, please see the LICENSE.txt files distributed with this source code in the appropriate lib directory. 009 * 010 * @see <a href = 'https://fullcalendar.io' target = '_blank'>FullCalendar</a> for further information on the underlying JavaScript-based calendar. 011 * 012 * @since BBj 21.00 013*/ 014package BBjCalendarWidget; 015import java.util.HashSet; 016import java.util.HashMap; 017import java.util.TreeMap; 018import java.io.File; 019import java.util.Vector; 020import com.google.gson.Gson; 021import com.google.gson.JsonParser; 022import com.google.gson.JsonObject; 023import com.google.gson.JsonArray; 024import com.google.gson.JsonPrimitive; 025import com.google.gson.JsonElement; 026import com.google.gson.GsonBuilder; 027/** 028 * <code>BBjCalendarWidget</code> is a BBj Interface that serves as a plug-in to the 029 * <a href = 'https://fullcalendar.io/' target = '_blank'>FullCalendar</a> JavaScript-based calendar control. 030 * <p> 031 * For the full copyright and license information, please view the LICENSE file that was distributed with this source code. 032 * 033 * <code>THROW</code>n Error Codes: 034 * <ul> 035 * <li><b><code>500</code></b>: The calendar is not ready for interaction. Setting a callback for the 036 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> event 037 * will result in your application getting a <code><a href = 'CalendarReadyEvent.html' target = '_blank'>CalendarReadyEvent</a></code> 038 * event signaling that the calendar is ready for interaction.</li> 039 * <li><b><code>510</code></b>: Invalid theme specified. The specified theme file does not exist. 040 * See the <code><a href = 'BBjCalendarWidget.html#getThemes' target = '_blank'>getThemes()</a></code> method for more 041 * information on installing and getting valid theme names.</li> 042 * <li><b><code>512</code></b>: Invalid parameter. The parameter provided to a method is null() or invalid. The error message may indicate which method call failed.</li> 043 * <li><b><code>514</code></b>: Invalid configuration. The specified object has not been configured correctly or is missing required properties.</li> 044 * <li><b><code>530</code></b>: Invalid date or time specified. The specified date or time string is not valid or cannot be parsed.</li> 045 * <li><b><code>700</code></b>: Missing file. The specified file does not exist. This may occur when the library attempts to read in an HTML, CSS, JavaScript, or theme file.</li> 046 * </ul> 047 * 048 * @see <a href = 'https://fullcalendar.io/' target = '_blank'>FullCalendar</a> for information on the FullCalendar JavaScript-based calendar control. 049 * 050 * @since BBj 21.00 051*/ 052public interface BBjCalendarWidget { 053/** 054 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the <code>BBjCalendarWidget</code> is ready. 055 * <p> 056 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarReadyEvent.html' target = '_blank'>CalendarReadyEvent</a></code> object. 057*/ 058public static BBjNumber ON_CALENDAR_READY() { } 059/** 060 * <p> 061 * <b>Note</b>: This <b>only</b> fires when the type of view changes, not when the user changes the view from one subtype to another. For example, 062 * the event <b>will</b> be triggered when the user switches from the 063 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code> to the 064 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_MONTH()</a></code> view. But it <b>won't</b> be triggerd when the user changes from 065 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code> to 066 * <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</a></code> since both views are 067 * the same type (dayGrid) and just the subtype (week vs. month) changes. 068*/ 069public static BBjNumber ON_CALENDAR_VIEW_CHANGE() { } 070/** 071 * If you set a callback for this event, then add several entries to the calendar, your callback routine may be flooded because the event will fire for every entry that you add. 072 * <p> 073 * When responding to this event, the <code><a href = 'https://documentation.basis.com/BASISHelp/WebHelp/bbjobjects/bbjapi/bbjapi_getlastevent.htm' target = '_blank'>BBjAPI().getLastEvent()</a></code> call 074 * will return a <code><a href = 'CalendarEntriesSetEvent.html' target = '_blank'>CalendarEntriesSetEvent</a></code> object. 075 * You can call the <code><a href = 'CalendarEntriesSetEvent.html#getEntries' target = '_blank'>CalendarEntriesSetEvent::getEntries()</a></code> method to return a BBjVector of 076 * <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects that corresponds to all the known entries in the calendar at that instant in time. 077 * <p> 078 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntriesSetEvent.html' target = '_blank'>CalendarEntriesSetEvent</a></code> object. 079 * 080 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/index.htm#gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a>. 081*/ 082public static BBjNumber ON_CALENDAR_ENTRIES_SET() { } 083/** 084 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has clicked on a calendar's event. 085 * <p> 086 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryClickEvent.html' target = '_blank'>CalendarEntryClickEvent</a></code> object. 087*/ 088public static BBjNumber ON_CALENDAR_ENTRY_CLICK() { } 089/** 090 * <p> 091 * <b>Note</b>: If you set a callback for this event, then add several events to the calendar, your callback routine may be flooded. 092 * <p> 093 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryAddEvent.html' target = '_blank'>CalendarEntryAddEvent</a></code> object. 094*/ 095public static BBjNumber ON_CALENDAR_ENTRY_ADD() { } 096/** 097 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the calendar's event data has changed in any way. 098 * <p> 099 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryChangeEvent.html' target = '_blank'>CalendarEntryChangeEvent</a></code> object. 100*/ 101public static BBjNumber ON_CALENDAR_ENTRY_CHANGE() { } 102/** 103 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that an entry has been removed from the calendar. 104 * If you set a callback for this event, then remove several entries from the calendar, your callback routine may be flooded because 105 * the event will fire for every entry that was removed. 106 * <p> 107 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryRemoveEvent.html' target = '_blank'>CalendarEntryRemoveEvent</a></code> object. 108*/ 109public static BBjNumber ON_CALENDAR_ENTRY_REMOVE() { } 110/** 111 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user moved the mouse into the bounds of a calendar event. 112 * <p> 113 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryMouseEnterEvent.html' target = '_blank'>CalendarEntryMouseEnterEvent</a></code> object. 114*/ 115public static BBjNumber ON_CALENDAR_ENTRY_MOUSE_ENTER() { } 116/** 117 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user moved the mouse out of the bounds of a calendar event. 118 * <p> 119 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarEntryMouseLeaveEvent.html' target = '_blank'>CalendarEntryMouseLeaveEvent</a></code> object. 120*/ 121public static BBjNumber ON_CALENDAR_ENTRY_MOUSE_LEAVE() { } 122/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has started dragging an event. */ 123 124public static BBjNumber ON_CALENDAR_ENTRY_DRAG_START() { } 125/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has stopped dragging an event. */ 126 127public static BBjNumber ON_CALENDAR_ENTRY_DRAG_STOP() { } 128/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has started resizing an event. */ 129 130public static BBjNumber ON_CALENDAR_ENTRY_RESIZE_START() { } 131/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has stopped resizing an event. */ 132 133public static BBjNumber ON_CALENDAR_ENTRY_RESIZE_STOP() { } 134/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has stopped resizing an event and the event has a different duration. */ 135 136public static BBjNumber ON_CALENDAR_ENTRY_RESIZE() { } 137/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user has dropped the event to a different day/time. */ 138 139public static BBjNumber ON_CALENDAR_ENTRY_DROP() { } 140/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the calendar has received an external draggable element with event data from another source or another calendar. */ 141 142public static BBjNumber ON_CALENDAR_ENTRY_RECEIVE() { } 143/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user is about to drop one of the calendar events on to another calendar. */ 144 145public static BBjNumber ON_CALENDAR_ENTRY_LEAVE() { } 146/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that fetching a <code>CalendarEntrySource</code> succeeded. */ 147 148public static BBjNumber ON_CALENDAR_ENTRY_SOURCE_SUCCESS() { } 149/** A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that fetching a <code>CalendarEntrySource</code> failed. */ 150 151public static BBjNumber ON_CALENDAR_ENTRY_SOURCE_FAILURE() { } 152/** 153 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the calendar's date range has changed in any way. 154 * <p> 155 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarDatesSetEvent.html' target = '_blank'>CalendarDatesSetEvent</a></code> object. 156*/ 157public static BBjNumber ON_CALENDAR_DATES_SET() { } 158/** 159 * <p> 160 * Note that <code>ON_CALENDAR_DATE_CLICK</code> event is not fired when the user clicks a day heading in a list view. 161 * <p> 162 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarDateClickEvent.html' target = '_blank'>CalendarDateClickEvent</a></code> object. 163*/ 164public static BBjNumber ON_CALENDAR_DATE_CLICK() { } 165/** 166 * <p> 167 * <b>Note</b>: You must configure the calendar to enable user selections via the <code>CalendarOptions:setEnableSelectable()</code> method 168 * if you intend to set a callback for the <code>BBjCalendarWidget:ON_CALENDAR_SELECT</code> or <code>BBjCalendarWidget:ON_CALENDAR_UNSELECT</code> events. 169 * <p> 170 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarSelectEvent.html' target = '_blank'>CalendarSelectEvent</a></code> object. 171*/ 172public static BBjNumber ON_CALENDAR_SELECT() { } 173/** 174 * <p> 175 * <b>Note</b>: You must configure the calendar to enable user selections via the <code>CalendarOptions:setEnableSelectable()</code> method 176 * if you intend to set a callback for the <code>BBjCalendarWidget:ON_CALENDAR_SELECT</code> or <code>BBjCalendarWidget:ON_CALENDAR_UNSELECT</code> events. 177 * <p> 178 * A selection might be cleared for a number of reasons: 179 * <ul> 180 * <li>The user clicks away from the current selection (doesn't happen when EnableUnselectAuto is false).</li> 181 * <li>The user makes a new selection. The unselect callback will be fired before the new selection occurs.</li> 182 * <li>The user moves forward or backward in the current view, or switches to a new view.</li> 183 * <li>The unselect method is called through the API.</li> 184 * </ul> 185 * <p> 186 * The <code>CalendarOptions::setEnableUnselectAuto()</code> impacts what causes the <code>BBjCalendarWidget.ON_CALENDAR_UNSELECT</code> event to be fired. 187 * If automatic unselection is enabled, then the unselection event will typically be fired after the user releases their selection mouse button. 188 * <p> 189 * Setting a callback for this event type will result in your application getting a <code><a href = 'CalendarUnselectEvent.html' target = '_blank'>CalendarUnselectEvent</a></code>. 190*/ 191public static BBjNumber ON_CALENDAR_UNSELECT() { } 192/** 193 * A constant value that's used with the <code><a href = 'BBjCalendarWidget.html#setCallback' target = '_blank'>BBjCalendarWidget::setCallback()</a></code> method that signals that the user dropped an external draggable element or an event from another calendar onto this calendar. 194*/ 195public static BBjNumber ON_CALENDAR_DROP() { } 196/** 197 * Returns a unique auto-generated ID for the calendar instance that may be used to distinguish between instances of the class. 198 * 199 * @return BBjString The calendar's unique ID. 200*/ 201public BBjString getUuid() { } 202/** 203 * Returns the underlying BBjHtmlView control that contains the JavaScript FullCalendar. 204 * 205 * @return BBjHtmlView The underlying BBjHtmlView control that contains the JavaScript FullCalendar. 206 * 207 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl2/bbjhtmlview.htm' target = '_blank'>BBjHtmlView</a> for more information on the BBjHtmlView control. 208*/ 209public BBjHtmlView getHtmlView() { } 210/** 211 * Returns a BBjNumber acting as a boolean that indicates whether the widget is ready to be interacted with (1) or not (0). 212 * 213 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the widget is ready to be interacted with (1) or not (0). 214*/ 215public BBjNumber getIsReady() { } 216/** 217 * Sets whether the <code>BBjCalendarWidget</code> should run in debug mode (1) or not (0), where the default is 0. 218 * <p> 219 * When this is set to true (1), the <code>BBjCalendarWidget</code> will: 220 * <ul> 221 * <li>use unminified JavaScript and CSS when possible</li> 222 * <li>display the debugger console in a browser when run in GUI if your <code>!CHROMIUM_SWITCHES</code> global string entry is properly set before instantiating the <code>BBjCalendarWidget</code>, as in: <code>chromium_switches$ = stbl("!CHROMIUM_SWITCHES", "--remote-debugging-port = 9223")</code></li> 223 * <li>log messages to the console from both the BBj programs and the JavaScript code</li> 224 * </ul> 225 * 226 * @param BBjNumber enableDebug A BBjNumber acting as a boolean that determines whether the <code>BBjCalendarWidget</code> should run in debug mode (1) or not (0). 227*/ 228public void setEnableDebug(BBjNumber enableDebug) { } 229/** 230 * Returns whether the <code>BBjCalendarWidget</code> should run in debug mode (1) or not (0). 231 * 232 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the <code>BBjCalendarWidget</code> is running in debug mode. 233*/ 234public BBjNumber getEnableDebug() { } 235/** 236 * Sets the calendar's options given an instance of the <code><a href = 'CalendarOptions.html' target = '_blank'>CalendarOptions</a></code> class. 237 * <p> 238 * <b>Note</b>: After setting the calendar's options inline (see example #1 below), you will need to call the calendar's <code>render()</code> method to apply the changes to the calendar in order for them to take effect. 239 * <p> 240 * There are a couple of ways to set options for the calendar: 241 * 242 * 1) Get and then set the desired options inline dynamically, calling the render() method afterwards to force the calendar to update with the new configuration: 243 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'> 244 * 245 * <i><span style = 'color:#080;'>rem Get and then set the desired options inline dynamically, calling the render() method afterwards to force the calendar to update with the new configuration:</span></i> 246 * myCal!.getOptions().setEnableEntryDurationEditable(1) 247 * myCal!.getOptions().setEnableEntryResizableFromStart(1) 248 * myCal!.getOptions().setEnableEntryStartEditable(1) 249 * myCal!.getOptions().setEnableSlotEntryOverlap(0) 250 * myCal!.render() 251 * </div></code></pre></blockquote> 252 * 253 * 2) Get the options instance, call setter methods on it, then use it to set the calendar's options: 254 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'> 255 * 256 * <i><span style = 'color:#080;'>rem Get the calendar's options object, then call the desired set methods, then apply the updated options to the calendar:</span></i> 257 * opts! = myCal!.getOptions() 258 * opts!.setEnableEntryDurationEditable(1) 259 * opts!.setEnableEntryResizableFromStart(1) 260 * opts!.setEnableEntryStartEditable(1) 261 * opts!.setEnableSlotEntryOverlap(0) 262 * myCal!.setOptions(opts!) 263 * </div></code></pre></blockquote> 264 * 265 * @param CalendarOptions options! An instance of the <code><a href = 'CalendarOptions.html' target = '_blank'>CalendarOptions</a></code> class that has been configured with the desired settings. 266*/ 267public void setOptions(CalendarOptions options!) { } 268/** 269 * Returns the calendar's current options in an instance of the <code><a href = 'CalendarOptions.html' target = '_blank'>CalendarOptions</a></code> class. 270 * 271 * @return CalendarOptions 272*/ 273public CalendarOptions getOptions() { } 274/** 275 * Injects the provided CSS string into the <code><head></code> element of the HTML document in the BBjHtmlView that contains the calendar. 276 * <p> 277 * This method provides a simple way to add custom CSS that affects the calendar. For more advanced use cases, see the 278 * <code><a href = 'BBjCalendarWidget.html#injectCss' target = '_blank'>injectCss()</a></code> method that takes several 279 * parameters to provide greater control over the injection. 280 * 281 * @param BBjString css! The CSS to inject into the BBjHtmlView's DOM. 282*/ 283public void injectCss(BBjString css!) { } 284/** 285 * Injects the provided CSS string into the <code>head</code> or <code>body</code> of the HTML DOM (as specified by the location! parameter) 286 * in the BBjHtmlView that contains the calendar, as well as providing the ability to tag the CSS and replace it in subsequent calls. 287 * 288 * @param BBjString css! The CSS to inject into the BBjHtmlView's DOM. 289 * @param BBjString location! The target for injection which can be 'head' or 'body'. If it's an empty string, it will default to 'body'. 290 * @param BBjString description! The description of the CSS, which is used to replace it in subsequent calls. 291 * @param BBjNumber removePrevious! A BBjNumber acting as a boolean that determines whether the CSS should replace existing CSS with the same description. 292*/ 293public void injectCss(BBjString css!, BBjString location!, BBjString description!, BBjNumber removePrevious!) { } 294/** 295 * Injects the CSS contained in the specified file into the <code><head></code> element of the HTML document in the BBjHtmlView that contains the calendar. 296 * This is a convenience method that reads in the contents of the provided CSS file and injects it into the HtmlView control that contains the calendar. 297 * 298 * @param BBjString cssPath! A string representing the full path and filename of the file that contains the CSS to be injected. 299*/ 300public void injectCssFile(BBjString cssPath!) { } 301/** 302 * Injects the provided JavaScript string at the top-level window. 303 * 304 * @param BBjString script! The JavaScript to inject into the BBjHtmlView. 305 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/index.htm#sysguicontmethods/bbjhtmlview/bbjhtmlview_injectscript.htm' target = '_blank'>BBjHtmlView::injectScript</a>. 306*/ 307public void injectScript(BBjString script!) { } 308/** 309 * Injects the JavaScript contained in the specified script file into the top-level window. This is a convenience method 310 * that reads in the contents of the provided JavaScript file and injects it into the HtmlView control that contains the calendar. 311 * 312 * @param BBjString scriptPath! A string representing the full path and filename of the file that contains the JavaScript to be injected. 313 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/index.htm#sysguicontmethods/bbjhtmlview/bbjhtmlview_injectscript.htm' target = '_blank'>BBjHtmlView::injectScript</a>. 314*/ 315public void injectScriptFile(BBjString scriptPath!) { } 316/** 317 * Injects the specified JavaScript URL into the HTML DOM, making it available for subsequent use by client-side JavaScript. 318 * 319 * @param BBjString url! The URL string containing JavaScript to be injected into the HTML DOM. 320*/ 321public void injectUrl(BBjString url!) { } 322/** 323 * Executes the provided JavaScript via the BBjJavaScriptExecutor class which results in a debounced execution, which 324 * is useful when you don't need the return value from the script and the script can be batched with other scripts. If you 325 * need the return value from the script, then you need to call the 326 * <code><a href = 'BBjCalendarWidget.html#executeScriptImmediately' target = '_blank'>executeScriptImmediately()</a></code> method instead. 327 * <p> 328 * <b>Note</b>: The executor handles JSNI automatically so you don't have to check for BUI and adjust the window and document JavaScript objects. 329 * 330 * If the BBjHtmlView is not ready yet then the script will be queued. After the BBjHtmlView control is ready then the executor will execute it on the client. 331 * 332 * @param BBjString script$ The JavaScript code to execute. 333 * 334 * @return Object The result of the JavaScript code execution if the script returns a value. 335*/ 336public Object executeScript(BBjString script!) { } 337/** 338 * Executes the provided JavaScript immediately via the BBjJavaScriptExecutor class without debouncing, which 339 * is necessary when you need the return value from the script. 340 * <p> 341 * <b>Note</b>: The executor handles JSNI automatically so you don't have to check for BUI and adjust the window and document JavaScript objects. 342 * 343 * If the BBjHtmlView is not ready then this method will throw an error 500. Setting a callback for the 344 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> 345 * will result in your application getting a <code><a href = 'CalendarReadyEvent.html' target = '_blank'>CalendarReadyEvent</a></code> 346 * event signaling that the calendar is ready for interaction. 347 * 348 * @param BBjString script$ The JavaScript code to execute. 349 * 350 * @return Object The result of the JavaScript code execution if the script returns a value. 351*/ 352public Object executeScriptImmediately(BBjString script!) { } 353/** 354 * Supresses JavaScript debouncing for BUI. 355 * <p> 356 * Setting this to "0" may help to improve the communication performance between BBj and the calendar in the BBjHtmlViewControl when running in BUI. 357 * 358 * @param BBjNumber suppress! A BBjNumber acting as a boolean that determines whether the BBjJavaScriptExecutor should disable debouncing or not where 1 = suppressDebouncing and 0 = doNotSuppressDebouncing (default). 359 * 360 * @see <a href = '#render'>#suppressDebouncing()</a>. 361 * @see <a href = '#render'>#suppressGuiDebouncing()</a>. 362*/ 363public void suppressBuiDebouncing(BBjNumber suppress!) { } 364/** 365 * Supresses JavaScript debouncing when running in GUI. 366 * <p> 367 * Setting this to "0" may help to improve the communication performance between BBj and the calendar in the BBjHtmlViewControl when running in GUI. 368 * 369 * @param BBjNumber suppress! A BBjNumber acting as a boolean that determines whether the BBjJavaScriptExecutor should disable debouncing or not where 1 = suppressDebouncing and 0 = doNotSuppressDebouncing (default). 370 * 371 * @see <a href = '#render'>#suppressDebouncing()</a>. 372 * @see <a href = '#render'>#suppressBuiDebouncing()</a>. 373*/ 374public void suppressGuiDebouncing(BBjNumber suppress!) { } 375/** 376 * Supressesss JavaScript debouncing for both GUI and BUI. 377 * 378 * @param BBjNumber suppress! A BBjNumber acting as a boolean that determines whether the BBjJavaScriptExecutor should disable debouncing or not where 1 = suppressDebouncing and 0 = doNotSuppressDebouncing (default). 379 * 380 * @see <a href = '#render'>#suppressBuiDebouncing()</a>. 381 * @see <a href = '#render'>#suppressGuiDebouncing()</a>. 382*/ 383public void suppressDebouncing(BBjNumber suppress!) { } 384/** 385 * Renders the calendar inside the HtmlView and applies the current calendar options. 386 * <p> 387 * This composes the calendar configuration and sends it to the client for a full rerendering. This is the 388 * difference between the <code>render()</code> and the <code>redraw()</code> method - the <code>redraw()</code> method 389 * only instructs the calendar to repaint itself; it doesn't change or apply any configuration options. 390 * <p> 391 * You can call this method to force the calendar to be updated after you modify its setup configuration, as in: 392 * 393 * <blockquote><pre><code><div style = 'background:#E1E6EA; border:1px solid #000; border-radius:1em; padding:0 1em;'> 394 * 395 * <i><span style = 'color:#080;'>rem Get and then set the desired options inline dynamically, calling the render() method afterwards to force the calendar to update with the new configuration:</span></i> 396 * myCal!.getOptions().setEnableEntryDurationEditable(1) 397 * myCal!.getOptions().setEnableEntryResizableFromStart(1) 398 * myCal!.getOptions().setEnableEntryStartEditable(1) 399 * myCal!.getOptions().setEnableSlotEntryOverlap(0) 400 * myCal!.render() 401 * </div></code></pre></blockquote> 402 * 403 * <b>Note</b>: You don't have to call the <code>render()</code> method if you update the calendar's configuration via the <code>setOptions()</code> method. 404*/ 405public void render() { } 406/** 407 * Causes the calendar to refetch entries from all sources and rerender. 408 * <p> 409 * If you've previously added events to the calendar from a remote source, such 410 * as a web service or Google Calendar, then the calendar will requery those sources 411 * for an updated entry set. If the entries on the backend have changed, such as 412 * some entries have been added and others deleted, then those changes will be 413 * reflected on the calendar after calling this method. 414*/ 415public void refetchAllEntries() { } 416/** 417 * Logs a debug string to the browser's console for debugging purposes if the EnableDebug option has been set. This method is used 418 * internally by the BBjCalendarWidget and may also be used in your applications. To <b><i>always</i></b> log information to the console 419 * regardless of whether the EnableDebug option has been set, use the <code><a href = '#consoleLog'>consoleLog()</a></code> method instead. 420 * <p> 421 * If you provide a simple string, like 422 * <p>"<code>Got Here!</code>" 423 * <p>then you'll see an entry in the console that looks like 424 * <p>"<code><span style = 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%); 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Got Here!</span></code>" 425 * <p> 426 * <b>Note</b>: If you provide a static string with single quotes, then you can print out JavaScript objects 427 * if they're not enclosed in the single quotes. For example, calling the method with the string 428 * <p>"<code><span style = 'background: yellow;'>'</span>Calendar View: <span style = 'background: yellow;'>'</span>, window.calendar.view.type</code>" 429 * <p>(note the single quotes) results in the following message being printed in the console: 430 * <p>"<code><span style = 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%); 'background: hsl(40, 90%, 95%); color: hsl(40, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Calendar View: timeGridWeek</code>". 431 * <p>In other words, if you supply single quotes then the entire parameter is applied to the <code>console.log()</code> JavaScript function without any modifications. 432*/ 433public void debugLog(BBjString msg!) { } 434/** 435 * Logs the provided string to the browser's console for debugging purposes <b><i>regardless</i></b> of whether the EnableDebug option has been set. 436 * <p> 437 * If you provide a simple string, like 438 * <p>"<code>Got Here!</code>" 439 * <p>then you'll see an entry in the console that looks like 440 * <p>"<code><span style = 'background: hsl(60, 100%, 65%); color: hsl(350, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Got Here!</span></code>" 441 * <p> 442 * <b>Note</b>: If you provide a static string with single quotes, then you can print out JavaScript objects 443 * if they're not enclosed in the single quotes. For example, calling the method with the string 444 * <p>"<code><span style = 'background: yellow;'>'</span>Calendar View: <span style = 'background: yellow;'>'</span>, window.calendar.view.type</code>" 445 * <p>(note the single quotes) results in the following message being printed in the console: 446 * <p>"<code><span style = 'background: hsl(60, 100%, 65%); color: hsl(350, 100%, 25%);'><b>BBjCalendarWidget Debug: </b>Calendar View: timeGridWeek</code>". 447 * <p>In other words, if you supply single quotes then the entire parameter is applied to the <code>console.log()</code> JavaScript function without any modifications. 448 * @since BBj 21.12 449*/ 450public void consoleLog(BBjString msg!) { } 451/** 452 * An internal event handler for native JavaScript events from the BBjHtmlView control that converts a JavaScript calendar event to a BBj callback event. 453 * 454 * @param BBjNativeJavaScriptEvent ev! The Javascript event from the client. 455*/ 456public void onNativeEvent(BBjNativeJavaScriptEvent ev!) { } 457/** 458 * Initially draws or redraws the widget whenever it needs to be rendered. 459 * <p> 460 * Your application code won't ever have to call this method under normal conditions. It's typically only used internally 461 * to redraw the calendar after the the <code>setSize()</code> method has been called. However, if you may want to call 462 * the <code><a href = '#render'>render()</a></code> method if you modified the calendar's options inline (as opposed to using the <code>setOptions()</code> method. 463 * 464 * @param BBjNumber shouldCreate! A BBjNumber acting as a boolean that indicates if the control should be (re)created (1) or just redrawn (0). 465 * @see <a href = '#render'>render()</a> 466*/ 467public void redraw(BBjNumber shouldCreate!) { } 468/** 469 * Returns the calendar's options as a JsonObject. 470 * 471 * @return JsonObject The calendar's options as a JsonObject. 472 * @see <a href = 'https://www.javadoc.io/doc/com.google.code.gson/gson/2.8.5/com/google/gson/JsonObject.html' target = '_blank'>JsonObject</a> for information about an object in JSON format. 473*/ 474public JsonObject getOptionsAsJsonObject() { } 475/** 476 * Forces the calendar to resize itself based on the available space in the container DIV. 477 * <p> 478 * Using the default index.html template, the calendar is contained within the DIV that has the class 'BBjCalendarWidgetContainer'. 479 * Whenever you modify the container DIV in such a way that it affects the calendar's size, such as dynamically changing 480 * its margin CSS, you may want to call this method afterwards to cause the calendar to adjust to the new container size. 481 * <p> 482 * <b>Note</b>: If you call one of the setPadding() methods then this will be executed automatically after 483 * the padding has been added to the container DIV, so this method isn't likely to be needed very often. 484 * 485*/ 486public void updateSize() { } 487/** 488 * Sets the padding, or spacing around the calendar control, to the same number of pixels for all four sides. 489 * <p> 490 * Using the default index.html template, the calendar is contained within the DIV that has the class 'BBjCalendarWidgetContainer'. 491 * This method modifies the CSS for the container DIV by setting its padding to the provided padding size in pixels. 492 * 493 * @param BBjNumber padding! The numeric value of the desired padding in pixels, e.g. '5' for a 5-pixel padding on all sides. 494*/ 495public void setPadding(BBjNumber padding!) { } 496/** 497 * Sets the padding, or spacing around the calendar control, to the specified number of pixels for the top, right, bottom, and left sides. 498 * <p> 499 * Using the default index.html template, the calendar is contained within the DIV that has the class 'BBjCalendarWidgetContainer'. 500 * This method modifies the CSS for the container DIV by setting its padding to the provided padding size in pixels. 501 * 502 * @param BBjNumber paddingTop! The numeric value of the desired top padding in pixels, e.g. '5' for a 5-pixel padding on the top of the container. 503 * @param BBjNumber paddingRight! The numeric value of the desired right padding in pixels, e.g. '5' for a 5-pixel padding on the right side of the container. 504 * @param BBjNumber paddingBottom! The numeric value of the desired bottom padding in pixels, e.g. '5' for a 5-pixel padding on the bottom of the container. 505 * @param BBjNumber paddingLeft! The numeric value of the desired left in pixels, e.g. '5' for a 5-pixel padding on the left side of the container. 506*/ 507public void setPadding(BBjNumber paddingTop!, BBjNumber paddingRight!, BBjNumber paddingBottom!, BBjNumber paddingLeft!) { } 508/** 509 * Returns the unique control type for the <code>BBjCalendarWidget</code>, which is 65050. 510 * 511 * @return int controlType = 65050 512*/ 513public int getControlType() { } 514/** 515 * Returns a BBjImage screenshot of the <code>BBjCalendarWidget</code>. 516 * 517 * @return BBjImage A screenshot of the calendar in BBjImage format. 518 * 519 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjimage.htm' target = '_blank'>BBjImage</a> 520*/ 521public BBjImage getImage() { } 522/** 523 * Saves a BBjImage screenshot of the <code>BBjCalendarWidget</code> to the specified file path. 524 * 525 * @param BBjString path! A string representing the full path and filename for the saved screenshot of the calendar. 526*/ 527public void saveAsPngImage(BBjString path!) { } 528/** 529 * Returns a BBjVector filled with optional custom tags that were previously set with the setVisibleTags() method and determine which calendar entries should be displayed. 530 * <p> 531 * When dealing with entry tags, there are three sets to be aware of: 532 * <ol> 533 * <li> The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers setTags() methods that give you the opportunity to add custom tags to any entry.</li> 534 * <li> The <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods allow you to set which entries will be visible in the calendar, as any entries that share a tag with the visible tag set will be displayed normally.</li> 535 * <li> The <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods allow you to set which entries will be hidden in the calendar, as any entries that share a tag with the hidden tag set will be be hidden from view.</li> 536 * </ol> 537 * <p> 538 * <b>Note</b>: If the <code>BBjCalendarWidget</code>'s set of visible tags is empty then all calendar entries will be visible. 539 * If the <code>BBjCalendarWidget</code>'s set of hidden tags is empty then all calendar entries will be visible. 540 * <p> 541 * <b>Note</b>: You will typically affect the calendar's entry visibility by calling either the setVisibleTags() or setHiddenTags() methods, but not both. 542 * 543 * @return BBjVector A vector filled with tags such as "work", "programming", "meeting", etc. that has been previously filled via one of the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods. 544 * 545 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a> 546*/ 547public BBjVector getVisibleTags() { } 548/** 549 * Sets one or more optional, custom tags that determine which calendar 550 * entries should be displayed. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers 551 * setTags() methods that give you the opportunity to add custom tags to any entry. After 552 * adding tags to one or more entries, you can call methods on the calendar to show or 553 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and 554 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods. 555 * <p> 556 * This is similar to the <code>setVisibleTags()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness. 557 * 558 * @param BBjString tags! A comma-delimted string of tags such as "work, programming". 559*/ 560public void setVisibleTags(BBjString tags!) { } 561/** 562 * Sets one or more optional, custom tags that determine which calendar 563 * entries should be displayed. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers 564 * setTags() methods that give you the opportunity to add custom tags to any entry. After 565 * adding tags to one or more entries, you can call methods on the calendar to show or 566 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and 567 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods. 568 * 569 * @param BBjVector A vector filled with tags such as "work", "programming", "meeting", etc. 570*/ 571public void setVisibleTags(BBjVector tags!) { } 572/** 573 * Returns a BBjVector filled with optional custom tags that were previously set with the setHiddenTags() method and determine which calendar entries should be hidden. 574 * <p> 575 * When dealing with entry tags, there are three sets to be aware of: 576 * <ol> 577 * <li> The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers setTags() methods that give you the opportunity to add custom tags to any entry.</li> 578 * <li> The <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods allow you to set which entries will be visible in the calendar, as any entries that share a tag with the visible tag set will be displayed normally.</li> 579 * <li> The <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods allow you to set which entries will be hidden in the calendar, as any entries that share a tag with the hidden tag set will be be hidden from view.</li> 580 * </ol> 581 * <p> 582 * <b>Note</b>: If the <code>BBjCalendarWidget</code>'s set of visible tags is empty then all calendar entries will be visible. 583 * If the <code>BBjCalendarWidget</code>'s set of hidden tags is empty then all calendar entries will be visible. 584 * <p> 585 * <b>Note</b>: You will typically affect the calendar's entry visibility by calling either the setVisibleTags() or setHiddenTags() methods, but not both. 586 * 587 * @return BBjVector A vector filled with tags such as "work", "programming", "meeting", etc. that has been previously filled via one of the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> methods. 588 * 589 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a> 590*/ 591public BBjVector getHiddenTags() { } 592/** 593 * Sets one or more optional, custom tags that determine which calendar 594 * entries should be hidden. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers 595 * setTags() methods that give you the opportunity to add custom tags to any entry. After 596 * adding tags to one or more entries, you can call methods on the calendar to show or 597 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and 598 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods. 599 * <p> 600 * This is similar to the <code>setHiddenTags()</code> method that takes a BBjVector except that it takes a comma-delimted string of tags for succinctness. 601 * 602 * @param BBjString A comma-delimted string of tags such as "work, programming, personal". 603*/ 604public void setHiddenTags(BBjString tags!) { } 605/** 606 * Sets one or more optional, custom tags that determine which calendar 607 * entries should be hidden. The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> custom class offers 608 * setTags() methods that give you the opportunity to add custom tags to any entry. After 609 * adding tags to one or more entries, you can call methods on the calendar to show or 610 * hide entries based on their tags by calling the <code><a href = 'BBjCalendarWidget.html#setVisibleTags' target = '_blank'>BBjCalendarWidget::setVisibleTags()</a></code> and 611 * <code><a href = 'BBjCalendarWidget.html#setHiddenTags' target = '_blank'>BBjCalendarWidget::setHiddenTags()</a></code> methods. 612 * 613 * @param BBjVector A vector filled with tags such as "work", "programming", "meeting", etc. 614*/ 615public void setHiddenTags(BBjVector tags!) { } 616/** 617 * Returns the calendar's view type which will be one of the following constants: 618 * <ul> 619 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</a></code>.</li> 620 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code>.</li> 621 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_DAY()</a></code>.</li> 622 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_WEEK()</a></code>.</li> 623 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_DAY()</a></code>.</li> 624 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_WEEK()</a></code>.</li> 625 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_MONTH()</a></code>.</li> 626 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_YEAR' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_YEAR()</a></code>.</li> 627 * </ul> 628 * 629 * @return BBjString The calendar's current view type, such as <code>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</code>. 630*/ 631public BBjString getViewType() { } 632/** 633 * Sets the calendar's view type. 634 * <p> 635 * <b>Note</b>: Calling this method causes the calendar to change its view, which then results in a 636 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> event. 637 * <p> 638 * The provided view type should be one of the following constants: 639 * <ul> 640 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_WEEK()</a></code>.</li> 641 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_DAY_GRID_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_DAY_GRID_MONTH()</a></code>.</li> 642 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_DAY()</a></code>.</li> 643 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_WEEK()</a></code>.</li> 644 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_DAY' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_DAY()</a></code>.</li> 645 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_WEEK()</a></code>.</li> 646 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_MONTH' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_MONTH()</a></code>.</li> 647 * <li><code><a href = 'CalendarAPI.html#CALENDAR_VIEW_LIST_YEAR' target = '_blank'>CalendarAPI.CALENDAR_VIEW_LIST_YEAR()</a></code>.</li> 648 * </ul> 649 * 650 * @param BBjString viewType! The desired calendar view type, such as <code><a href = 'CalendarAPI.html#CALENDAR_VIEW_TIME_GRID_WEEK' target = '_blank'>CalendarAPI.CALENDAR_VIEW_TIME_GRID_WEEK()</a></code>. 651*/ 652public void setViewType(BBjString viewType!) { } 653/** 654 * Returns all of the calendar's available themes as an alphabetized list in a BBjVector filled with the theme names. 655 * <p> 656 * After determining which themes are available, you can call the <code><a href = 'BBjCalendarWidget.html#setTheme' target = '_blank'>setTheme()</a></code> 657 * method specifying any of the theme names in the return vector to change the calendar's theme. 658 * <p> 659 * Note that the installed themes are located in the BBjCalendarWidget's <code>lib/bootstrap/themes/</code> directory. The installed themes 660 * are free Bootstrap themes from <code><a href = 'https://bootswatch.com/' target = '_blank'>https://bootswatch.com/</a></code>, although free 661 * Bootstrap themes are available from many other sites such as 662 * <code><a href = 'https://startbootstrap.com/themes?showPro = false&showVue = false&showAngular = false' target = '_blank'>https://startbootstrap.com/themes</a></code>. 663 * If you would like to add more themes, create a subdirectory under the calendar's themes directory and copy the <code>bootstrap.css</code> and 664 * <code>bootstrap.min.css</code> files in the newly-created subdirectory. The calendar will attempt to find and use the 665 * <code>bootstrap.min.css</code> first due to its reduced size. 666 * 667 * @return BBjVector A BBjVector filled with the alphabetized list of available theme names. 668*/ 669public static BBjVector getThemes() { } 670/** 671 * Sets the calendar's theme to one of the installed Boostrap themes, which modifies the calendar's fonts and color scheme. 672 * <p> 673 * To determine which themes are available, you can call the <code><a href = 'BBjCalendarWidget.html#getThemes' target = '_blank'>getThemes()</a></code> 674 * method which returns a BBjVector filled with the installed theme names. 675 * <p> 676 * Note that the installed themes are located in the BBjCalendarWidget's <code>lib/bootstrap/themes/</code> directory. The installed themes 677 * are free Bootstrap themes from <code><a href = 'https://bootswatch.com/' target = '_blank'>https://bootswatch.com/</a></code>, although free 678 * Bootstrap themes are available from many other sites such as 679 * <code><a href = 'https://startbootstrap.com/themes?showPro = false&showVue = false&showAngular = false' target = '_blank'>https://startbootstrap.com/themes</a></code>. 680 * If you would like to add more themes, create a subdirectory under the calendar's themes directory and copy the <code>bootstrap.css</code> and 681 * <code>bootstrap.min.css</code> files in the newly-created subdirectory. The calendar will attempt to find and use the 682 * <code>bootstrap.min.css</code> first due to its reduced size. 683 * 684 * @param BBjString theme! 685*/ 686public void setTheme(BBjString theme!) { } 687/** 688 * Registers a callback in a procedural program for the provided event type. 689 * <p> 690 * These are the valid callback event type options: 691 * <ul> 692 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> - the calendar is ready for interaction</li> 693 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> - the calendar's view has changed</li> 694 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRIES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRIES_SET</a></code> - entries have been changed or initialized in any way</li> 695 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CLICK</a></code> - the user clicked on an entry</li> 696 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> - an entry was added to the calendar</li> 697 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CHANGE</a></code> - the entry has been modified</li> 698 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> - the entry has been removed from the calendar</li> 699 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_ENTER' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_ENTER</a></code> - the user moved the mouse on an entry</li> 700 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_LEAVE</a></code> - the user moved the mouse off an entry</li> 701 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_START</a></code> - the user began dragging an entire entry</li> 702 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_STOP</a></code> - the user stopped dragging the entry</li> 703 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DROP</a></code> - the user has completed dragging and dropping the entire entry</li> 704 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_START</a></code> - the user began to resize the entry to change its duration</li> 705 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_STOP</a></code> - the user stopped resizing the entry</li> 706 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE</a></code> - the user completed resizing the entry resulting in a changed duration</li> 707 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RECEIVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RECEIVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li> 708 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_LEAVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li> 709 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_DROP</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li> 710 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_DATES_SET</a></code> - the calendar's range has been initially set or changed in some way</li> 711 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATE_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_DATE_CLICK</a></code> - the user clicked on a date or time in the calendar</li> 712 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_SELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_SELECT</a></code> - the user selected a date or time in the calendar (not an entry)</li> 713 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_UNSELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_UNSELECT</a></code> - the date/time selection has been cleared</li> 714 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_SUCCESS' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_SUCCESS</a></code> - fetching a CalendarEntrySource has succeded</li> 715 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_FAILURE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_FAILURE</a></code> - fetching a CalendarEntrySource has failed</li> 716 * </ul> 717 * <p> 718 * <b>Note</b>: Callbacks associated with dragging/dropping calendar entries between two different calendars has not yet been implemented. 719 * 720 * @param BBjNumber event! The event number which is one of the <code>CalendarAPI.ON_CALENDAR_*</code> constants. 721 * @param BBjString callback! The program's callback subroutine label. 722*/ 723public void setCallback(BBjNumber event!, BBjString callback!) { } 724/** 725 * Registers a callback in an object-oriented program for the provided event type. 726 * <p> 727 * These are the valid callback event type options: 728 * <ul> 729 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_READY' target = '_blank'>CalendarAPI.ON_CALENDAR_READY</a></code> - the calendar is ready for interaction</li> 730 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_VIEW_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_VIEW_CHANGE</a></code> - the calendar's view has changed</li> 731 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRIES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRIES_SET</a></code> - entries have been changed or initialized in any way</li> 732 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CLICK</a></code> - the user clicked on an entry</li> 733 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> - an entry was added to the calendar</li> 734 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_CHANGE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_CHANGE</a></code> - the entry has been modified</li> 735 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> - the entry has been removed from the calendar</li> 736 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_ENTER' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_ENTER</a></code> - the user moved the mouse on an entry</li> 737 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_MOUSE_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_MOUSE_LEAVE</a></code> - the user moved the mouse off an entry</li> 738 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_START</a></code> - the user began dragging an entire entry</li> 739 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DRAG_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DRAG_STOP</a></code> - the user stopped dragging the entry</li> 740 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_DROP</a></code> - the user has completed dragging and dropping the entire entry</li> 741 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_START' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_START</a></code> - the user began to resize the entry to change its duration</li> 742 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE_STOP' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE_STOP</a></code> - the user stopped resizing the entry</li> 743 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RESIZE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RESIZE</a></code> - the user completed resizing the entry resulting in a changed duration</li> 744 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_RECEIVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_RECEIVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li> 745 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_LEAVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_LEAVE</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li> 746 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DROP' target = '_blank'>CalendarAPI.ON_CALENDAR_DROP</a></code> - <b>Not Yet Implemented</b>, deals with dragging and dropping entries from an external source</li> 747 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATES_SET' target = '_blank'>CalendarAPI.ON_CALENDAR_DATES_SET</a></code> - the calendar's range has been initially set or changed in some way</li> 748 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_DATE_CLICK' target = '_blank'>CalendarAPI.ON_CALENDAR_DATE_CLICK</a></code> - the user clicked on a date or time in the calendar</li> 749 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_SELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_SELECT</a></code> - the user selected a date or time in the calendar (not an entry)</li> 750 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_UNSELECT' target = '_blank'>CalendarAPI.ON_CALENDAR_UNSELECT</a></code> - the date/time selection has been cleared</li> 751 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_SUCCESS' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_SUCCESS</a></code> - fetching a CalendarEntrySource has succeded</li> 752 * <li><code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_SOURCE_FAILURE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_SOURCE_FAILURE</a></code> - fetching a CalendarEntrySource has failed</li> 753 * </ul> 754 * <p> 755 * <b>Note</b>: Callbacks associated with dragging/dropping calendar entries between two different calendars has not yet been implemented. 756 * 757 * @param BBjNumber event! The event number which is one of the <code>CalendarAPI.ON_CALENDAR_*</code> constants. 758 * @param CustomObject instance! The program's custom class instance, usually #this! 759 * @param BBjString method! The program's custom class's method name. 760*/ 761public void setCallback(BBjNumber event!, CustomObject instance!, BBjString method!) { } 762/** 763 * Removes the callback given the callback number. 764 * 765 * @param BBjNumber event! The event number which is one of the <code>CalendarAPI.ON_CALENDAR_*</code> constants. 766*/ 767public void clearCallback(BBjNumber event!) { } 768/** 769 * Sets the background color of the calendar's containing window. 770 * 771 * @param BBjColor backColor! A BBjColor that defines the containing window's background color. 772*/ 773public void setBackColor(BBjColor backColor!) { } 774/** 775 * Returns the background color of the calendar's containing window. 776 * 777 * @return BBjColor The containing window's background color as a BBjColor. 778*/ 779public BBjColor getBackColor() { } 780/** 781 * Sets a custom, arbitrary object to be associated with the widget which can be retrieved later via the <code>getUserData()</code> method. 782 * 783 * @param Object userData! The object to associate with the widget. 784*/ 785public void setUserData(Object userData!) { } 786/** 787 * Returns the custom object that was previously associated with the widget by calling the <code>setUserData()</code> method. 788 * 789 * @return Object The custom object associated with the widget. 790*/ 791public Object getUserData() { } 792/** 793 * Sets whether the widget should be enabled. 794 * 795 * @param boolean enabled! A boolean that indicates whether the widget should be enabled (1) or not (0). 796*/ 797public void setEnabled(boolean enabled!) { } 798/** 799 * Returns whether the widget is enabled or disabled. 800 * 801 * @return boolean A boolean that indicates whether the widget is enabled (1) or not (0). 802*/ 803public boolean isEnabled() { } 804/** 805 * Sets whether the widget should be visible or hidden. 806 * 807 * @param boolean visible! A boolean that indicates whether the widget should be visible (1) or not (0). 808*/ 809public void setVisible(boolean visible!) { } 810/** 811 * Returns whether the widget is visible or hidden. 812 * 813 * @return boolean A boolean that indicates whether the widget is visible (1) or not (0). 814*/ 815public boolean isVisible() { } 816/** 817 * Returns the widget's width. 818 * 819 * @return BBjNumber The widget's width. 820*/ 821public BBjNumber getWidth() { } 822/** 823 * Returns the widget's height. 824 * 825 * @return BBjNumber The widget's height. 826*/ 827public BBjNumber getHeight() { } 828/** 829 * Sets the size of the calendar widget given the provided width and height. 830 * 831 * @param BBjNumber width! The widget's width. 832 * @param BBjNumber height! The widget's height. 833*/ 834public void setSize(BBjNumber width!, BBjNumber height!) { } 835/** 836 * Returns the widget's X coordinate, or horizontal position. 837 * 838 * @return BBjNumber The widget's X coordinate. 839*/ 840public BBjNumber getX() { } 841/** 842 * Returns the widget's Y coordinate, or vertical position. 843 * 844 * @return BBjNumber The widget's Y coordinate. 845*/ 846public BBjNumber getY() { } 847/** 848 * Sets the location of the calendar widget given the provided X and Y coordinates. 849 * 850 * @param BBjNumber x! The widget's X coordinate. 851 * @param BBjNumber y! The widget's Y coordinate. 852*/ 853public void setLocation(BBjNumber x!, BBjNumber y!) { } 854/** 855 * Returns the widget's name as previously-set via the <code>setName()</code> method. 856 * 857 * @return String The widget's name. 858*/ 859public String getName() { } 860/** 861 * Sets the widget's name, which can later be retrieved via the <code>getName()</code> method. 862 * This value is propagated to the CSS class attribute of the HTML element representing the control in BUI. 863 * 864 * @param BBjString name! The widget's name. 865*/ 866public void setName(BBjString name!) { } 867/** 868 * Adds the provided CSS style name to the widget. 869 * 870 * @param BBjString style! The CSS style name to add to the widget. 871 * @return boolean A boolean that indicates whether the style name was added to the widget (1) or not (0). 872*/ 873public boolean addStyle(BBjString style!) { } 874/** 875 * Removes the provided CSS style name from the widget. 876 * 877 * @param BBjString style! The CSS style name to remove from the widget. 878 * @return boolean A boolean that indicates whether the style name was removed from the widget (1) or not (0). 879*/ 880public boolean removeStyle(BBjString style!) { } 881/** 882 * Clears all the CSS styles from the widget. 883*/ 884public void clearStyles() { } 885/** 886 * Sets a CSS property on the widget. 887 * 888 * @param BBjString property! The CSS property name to set. 889 * @param BBjString style! The CSS value to be assigned to the provided CSS property. 890*/ 891public void setStyle(BBjString property!, BBjString style!) { } 892/** 893 * Returns the widget's name as previously-set via the <code>setName()</code> method. 894 * 895 * @return BBjVector A BBjVector filled with a list of all the CSS style names that have been added to the widget. 896*/ 897public BBjVector getStyles() { } 898/** 899 * Returns the value of the specified CSS property. 900 * 901 * @param BBjString property! The CSS property name to get the value of. 902 * 903 * @return BBjString The value of the specified CSS property. 904*/ 905public BBjString getStyle(BBjString property!) { } 906/** 907 * Navigates the calendar programmatically one step back (by a month or week for example), 908 * and is the same as the user clicking on the 'prev' toolbar button. The amount of time 909 * moved depends on the current view type. 910*/ 911public void navigatePrev() { } 912/** 913 * Navigates the calendar programmatically one step forward (by a month or week for example), 914 * and is the same as the user clicking on the 'next' toolbar button. The amount of time 915 * moved depends on the current view type. 916*/ 917public void navigateNext() { } 918/** 919 * Navigates the calendar programmatically back one year, and is the same as the user clicking on the 'prevYear' toolbar button. 920*/ 921public void navigatePrevYear() { } 922/** 923 * Navigates the calendar programmatically forward one year, and is the same as the user clicking on the 'nextYear' toolbar button. 924*/ 925public void navigateNextYear() { } 926/** 927 * Navigates the calendar programmatically to the current date, and is the same as the user clicking on the 'today' toolbar button. 928*/ 929public void navigateToday() { } 930/** 931 * Navigates the calendar programmatically to the specified date. To ensure the calendar navigates to the correct date, the provided 932 * date should be in the ISO 8601 format. However, this method attempts to parse ambiguous dates and is often able to construct 933 * a date in the format <code>"YYYY-MM-DD"</code> given a date string in another format. 934 * <p> 935 * If the provided string is ambiguous, there are no guarantees that the method will be able to resolve the date/time string correctly. 936 * The success of this method depends on the format of the supplied date/time string and the client's browser. For example, a date of 937 * <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular 938 * date that you had in mind. That's because there is no good way to know which number corresponds to the year, month, and day. However, 939 * a string like <code>"Jan 1, 2000"</code> is far less ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>. 940 * <p> 941 * Additionally, since the method uses JavaScript when parsing dates and time, the success is dependant on the browser's JavaScript implementation. 942 * For example, at the time of this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. 943 * However, Firefox returns an "Invalid Date" for those values. 944 * <p> 945 * The date string should ideally be in the <code>"YYYY-MM-DD"</code> format at a minimum, but the parser should be able to interpret various formats. 946 * 947 * @param BBjString date! The date string that will be parsed and then passed to the FullCalendar's gotoDate() method. 948 * 949 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats. 950 * @see <a href = 'https://fullcalendar.io/docs/Calendar-gotoDate' target = '_blank'>Calendar::gotoDate</a> for information on the FullCalendar's gotoDate() method. 951*/ 952public void navigateDate(BBjString date!) { } 953/** 954 * Navigates the calendar programmatically to the specified time. To ensure the calendar navigates to the correct time, the provided 955 * time should be in the ISO 8601 format or <code>"hh:mm"</code> format at a minimum.. However, this method attempts to parse ambiguous 956 * times and is often able to construct a time in the format <code>"hh:mm:ss"</code> given a time string in another format. 957 * <p> 958 * If the provided string is ambiguous, there are no guarantees that the method will be able to resolve the date/time string correctly. 959 * The success of this method depends on the format of the supplied date/time string and the client's browser. For example, a date of 960 * <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular 961 * date that you had in mind. That's because there is no good way to know which number corresponds to the year, month, and day. However, 962 * a string like <code>"Jan 1, 2000"</code> is far less ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>. 963 * <p> 964 * Additionally, since the method uses JavaScript when parsing dates and time, the success is dependant on the browser's JavaScript implementation. 965 * For example, at the time of this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. 966 * However, Firefox returns an "Invalid Date" for those values. 967 * <p> 968 * The time string should ideally be in one of the following formats. 969 * <ul> 970 * <li>"hh:mm:ss.sss"</li> 971 * <li>"hh:mm:ss"</li> 972 * <li>"hh:mm"</li> 973 * </ul> 974 * but the parser should be able to interpret various formats. 975 * 976 * @param BBjString time! The time string that will be parsed and then passed to the FullCalendar's scrollToTime() method. 977 * 978 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats. 979 * @see <a href = 'https://fullcalendar.io/docs/scrollToTime' target = '_blank'>Calendar::scrollToTime</a> for information on the FullCalendar's scrollToTime() method. 980 * 981 * @since BBj 22.00 982*/ 983public void navigateTime(BBjString time!) { } 984/** 985 * Returns the calendar's currently selected date. 986 * 987 * @return BBjString The calendar's current date as a string. 988*/ 989public BBjString getDate() { } 990/** 991 * Returns the calendar's currently selected date in ISO format. 992 * 993 * @return BBjString The calendar's current date as a string in 8601 format (YYYY-MM-DD), such as "2020-12-31" 994 * 995 * @see <a href = 'https://www.w3.org/TR/NOTE-datetime' target = '_blank'>Date and Time Formats</a> for information on ISO 8601 date/time formats. 996*/ 997public BBjString getDateAsISOString() { } 998/** 999 * A utility method that returns a formatted, or pretty-printed version of the supplied JSON object sorted alphabetically by key. 1000 * 1001 * @param JsonObject json! The JSON object to be formatted. 1002 * @return BBjString A BBjString that is a string representation of the supplied JSON object after it has been formatted, or an empty string if the provided JsonObject was null(). 1003*/ 1004public static BBjString getJsonObjectAsFormattedString(JsonObject json!) { } 1005/** 1006 * A utility method that returns a JSON array version of the supplied BBjVector. 1007 * 1008 * @param BBjVector vector! The BBjVector to be converted to a JSON array. 1009 * @return JsonArray A JSON array version of the supplied BBjVector. 1010*/ 1011public static JsonArray getBBjVectorAsJsonArray(BBjVector vector!) { } 1012/** 1013 * A utility method that returns a BBjVector version of the supplied JSON array. 1014 * 1015 * @param JsonArray array! The JSON array to be converted to a BBjVector. 1016 * @return BBjVector A BBjVector version of the supplied JSON array. 1017*/ 1018public static BBjVector getJsonArrayAsBBjVector(JsonArray array!) { } 1019/** 1020 * A utility method that converts a BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> object to a JSON array of calendar entries. 1021 * 1022 * @param BBjVector entries! A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1023 * @return JsonArray A JsonArray filled with Json entry objects. 1024*/ 1025public static JsonArray convertEntriesBBjVectorToJsonArray(BBjVector entries!) { } 1026/** 1027 * A utility method that converts a JSON array of calendar entries, such as what's received from 1028 * the JavaScript code, into a BBjVector filled with CalendarEntry objects. 1029 * 1030 * @param JsonArray entries! A JsonArray of calendar entries. 1031 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1032*/ 1033public static BBjVector convertEntriesArrayToBBjVector(JsonArray entries!) { } 1034/** 1035 * A utility method that converts a stringified JSON array of calendar entries, such as what's received 1036 * from the JavaScript code, into a BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1037 * 1038 * @param BBjString entries! A stringified JSON array of calendar entries. 1039 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1040*/ 1041public static BBjVector convertEntriesArrayToBBjVector(BBjString entries!) { } 1042/** 1043 * A utility method that returns a descriptive string given an event number based on the <code>CalendarAPI.ON_CALENDAR_*</code> callback constants. 1044 * 1045 * @param BBjNumber eventNumber! The event number that is one of the <code>CalendarAPI.ON_CALENDAR_*</code> callback constants. 1046 * 1047 * @return BBjString A string description of the event number. 1048*/ 1049public BBjString getEventDescription(BBjNumber eventNumber!) { } 1050/** 1051 * Returns a date string formatted as YYYY-MM-DD if the provided date string can be parsed into a valid date, or null() if the date string is invalid. 1052 * <p> 1053 * <b>Note</b>: An ISO 8601 formatted date/time string (<code>YYYY-MM-DDTHH:mm:ss.sssZ</code>) is never ambiguous, but this method exists to attempt to parse an ambiguous 1054 * date/time string into an ISO 8601 formatted date/time string. If the provided string is ambiguous, there are no guarantees that the method will be able to 1055 * resolve the date/time string correctly. The success of this method depends on the format of the supplied date/time string and the client's browser. For example, 1056 * a date of <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular date that you had in mind. 1057 * That's because there is no good way to know which number corresponds to the year, month, and day. However, a string like <code>"Jan 1, 2000"</code> is far less 1058 * ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>. 1059 * <p> 1060 * Additionally, since the method uses JavaScript when parsing dates, the success is dependant on the browser's JavaScript implementation. For example, at the time of 1061 * this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. However, Firefox returns an "Invalid Date" for those values. 1062 * 1063 * @param BBjString dateString! A string that contains a date representation. If you provide a ISO formatted date, such as 2022-12-25, then 1064 * 1065 * @return BBjString A YYYY-MM-DD formatted date representation of the provided date string, or null() if the date string cannot be parsed into an ISO formatted date. 1066 * 1067 * @since BBj 22.00 1068*/ 1069public BBjString getValidDateString(BBjString dateString!) { } 1070/** 1071 * Returns a time string formatted as HH:MM:SS using 24-hour format if the provided time string can be parsed into a valid time, or null() if the time string is invalid. 1072 * <p> 1073 * <b>Note</b>: An ISO 8601 formatted date/time string (<code>YYYY-MM-DDTHH:mm:ss.sssZ</code>) is never ambiguous, but this method exists to attempt to parse an ambiguous 1074 * date/time string into an ISO 8601 formatted date/time string. If the provided string is ambiguous, there are no guarantees that the method will be able to 1075 * resolve the date/time string correctly. The success of this method depends on the format of the supplied date/time string and the client's browser. For example, 1076 * a date of <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular date that you had in mind. 1077 * That's because there is no good way to know which number corresponds to the year, month, and day. However, a string like <code>"Jan 1, 2000"</code> is far less 1078 * ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>. 1079 * <p> 1080 * Additionally, since the method uses JavaScript when parsing dates, the success is dependant on the browser's JavaScript implementation. For example, at the time of 1081 * this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. However, Firefox returns an "Invalid Date" for those values. 1082 * 1083 * @param BBjString timeString! A string that contains a time representation. 1084 * 1085 * @return BBjString A 24-hour HH:MM:SS formatted time representation of the provided time string, or null() if the time string cannot be parsed into an ISO formatted time. 1086 * 1087 * @since BBj 22.00 1088*/ 1089public BBjString getValidTimeString(BBjString timeString!) { } 1090/** 1091 * Returns an ISO 8601 formatted date/time string if the provided date/time string can be parsed into a valid date, or null() if it can't be parsed. 1092 * <p> 1093 * <b>Note</b>: An ISO 8601 formatted date/time string (<code>YYYY-MM-DDTHH:mm:ss.sssZ</code>) is never ambiguous, but this method exists to attempt to parse an ambiguous 1094 * date/time string into an ISO 8601 formatted date/time string. If the provided string is ambiguous, there are no guarantees that the method will be able to 1095 * resolve the date/time string correctly. The success of this method depends on the format of the supplied date/time string and the client's browser. For example, 1096 * a date of <code>"1-2-3"</code> is very ambiguous and while the method may be able to return a valid date string, it may not be the particular date that you had in mind. 1097 * That's because there is no good way to know which number corresponds to the year, month, and day. However, a string like <code>"Jan 1, 2000"</code> is far less 1098 * ambiguous and will likely be parsed correctly in to <code>"2000-01-01"</code>. 1099 * <p> 1100 * Additionally, since the method uses JavaScript when parsing dates, the success is dependant on the browser's JavaScript implementation. For example, at the time of 1101 * this writing, Chrome can parse ambiguous dates like <code>"May 2020"</code> and <code>"May 15"</code>. However, Firefox returns an "Invalid Date" for those values. 1102 * 1103 * @param BBjString dateTimeString! A string that contains a date/time representation. 1104 * 1105 * @return BBjString An ISO 8601 formatted date representation of the provided date string, or null() if the date string cannot be parsed into an ISO formatted date/time string. 1106 * 1107 * @since BBj 22.00 1108*/ 1109public BBjString getValidDateTimeString(BBjString dateTimeString!) { } 1110/** 1111 * Returns the difference between the client's local time and UTC in minutes. For example, if your time zone is 1112 * UTC+10, then -600 will be returned because UTC is 600 minutes behind the local time zone. Another way to view 1113 * it is that the return value is the number of minutes that should be added to the local time in order to find 1114 * UTC. Note that daylight savings time prevents this value from being a constant. 1115 * 1116 * @return BBjNumber The number of minutes needed to add to the local time to result in UTC. 1117 * 1118 * @since BBj 22.00 1119*/ 1120public BBjNumber getLocalTimeZoneOffsetFromUtc() { } 1121/** 1122 * Adds an entry to the calendar given a JsonObject representation of the calendar entry. 1123 * <p> 1124 * <b>Note</b>: Adding entries to the calendar via this method will trigger the 1125 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event. 1126 * 1127 * @param JsonObject entry! The entry to be added to the calendar. 1128*/ 1129public void addEntry(JsonObject entry!) { } 1130/** 1131 * Adds an entry to the calendar given a <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> object. 1132 * <p> 1133 * <b>Note</b>: Adding entries to the calendar via this method will trigger the 1134 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event. 1135 * 1136 * @param CalendarEntry entry! The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to be added to the calendar. 1137*/ 1138public void addEntry(CalendarEntry entry!) { } 1139/** 1140 * Adds several JsonObject entries in a JsonArray to the calendar at once for improved performance. 1141 * <p> 1142 * <b>Note</b>: Adding multiple entries to the calendar via this method will <b>not</b> trigger the 1143 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event. 1144 * 1145 * @param JsonArray entries! A JsonArray filled with JSON objects to be added to the calendar. 1146*/ 1147public void addEntries(JsonArray entries!) { } 1148/** 1149 * Adds several entries of type <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to the calendar at once for improved performance. 1150 * <p> 1151 * <b>Note</b>: Adding multiple entries to the calendar via this method will <b>not</b> trigger the 1152 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD()</a></code> event. 1153 * 1154 * @param BBjVector entries! A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects to be added to the calendar. 1155*/ 1156public void addEntries(BBjVector entries!) { } 1157/** 1158 * Adds entries to the calendar from a <code>CalendarEntrySource</code>. 1159 * 1160 * @param CalendarEntrySource entrySource! A previously-defined <code>CalendarEntrySource</code>. 1161*/ 1162public void addEntrySource(CalendarEntrySource entrySource!) { } 1163/** 1164 * Returns a BBjVector filled with IDs for all the <code>CalendarEntrySource</code> objects that have previously been added to the calendar via the <code>addEntrySource()</code> method. 1165 * 1166 * @return BBjVector A BBjVector filled with the current <code>CalendarEntrySource</code> object IDs that have previously been added to the calendar, or null() if none have been added. 1167*/ 1168public BBjVector getEntrySourceIds() { } 1169/** 1170 * Removes a <code>CalendarEntrySource<code> and its entries from the calendar given its unique ID. 1171 * 1172 * @param BBjString id! A BBjString filled with the unique ID for the <code>CalendarEntrySource<code> to remove. 1173*/ 1174public void removeEntrySource(BBjString id!) { } 1175/** 1176 * Refetches the <code>CalendarEntrySource<code> object in the calendar given its unique ID, causing it to retrieve its entries again. 1177 * 1178 * @param BBjString id! A BBjString filled with the unique ID for the <code>CalendarEntrySource<code> to remove. 1179*/ 1180public void refetchEntrySource(BBjString id!) { } 1181/** 1182 * Removes all <code>CalendarEntrySource<code> objects from the calendar. 1183 * 1184 * @return BBjNumber A BBjNumber indicating the number of entries that were removed from the calendar. 1185*/ 1186public BBjNumber removeAllEntrySources() { } 1187/** 1188 * Refetches all <code>CalendarEntrySource<code> objects in the calendar, causing them to retrieve their entries again. 1189*/ 1190public void refetchAllEntrySources() { } 1191/** 1192 * Returns all of the calendar's entries as a BBjVector of <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1193 * 1194 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects for all the events in the calendar. 1195 * 1196 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a> 1197*/ 1198public BBjVector getEntries() { } 1199/** 1200 * Returns all of the calendar's entries as a JsonArray of JsonObject events. 1201 * 1202 * @return JsonArray A JsonArray filled with JsonObjects for all the events in the calendar. 1203*/ 1204public JsonArray getEntriesAsJsonArray() { } 1205/** 1206 * Returns all of the calendar's entries as a BBjVector of <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1207 * 1208 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects for all the events in the calendar. 1209 * 1210 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a> 1211*/ 1212public BBjVector getEntriesWithTag(BBjString tag!) { } 1213/** 1214 * Returns all of the calendar's entries as a BBjVector of <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects. 1215 * 1216 * @return BBjVector A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects for all the events in the calendar. 1217 * 1218 * @see <a href = 'https://documentation.basis.com/BASISHelp/WebHelp/gridctrl/bbjvector_bbj.htm' target = '_blank'>BBjVector</a> 1219*/ 1220public BBjVector getEntriesWithTags(BBjVector tags!) { } 1221/** 1222 * Removes an entry from the calendar given its optional unique ID which must have previously been set. 1223 * 1224 * @param BBjString id! A BBjString containing the entry's unique ID. 1225 * 1226 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the event was removed (1) or not (0). 1227*/ 1228public BBjNumber removeEntryById(BBjString id!) { } 1229/** 1230 * Removes an entry from the calendar. 1231 * 1232 * @param CalendarEntry entry! The <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to remove from the calendar. 1233 * 1234 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the event was removed (1) or not (0). 1235*/ 1236public BBjNumber removeEntry(CalendarEntry entry!) { } 1237/** 1238 * Removes all the entries contained in the BBjVector from the calendar. 1239 * <p> 1240 * <b>Note</b>: Removing entries from the calendar via this method will trigger the 1241 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE()</a></code> event for each entry that was removed. 1242 * 1243 * @param BBjVector entries! A BBjVector filled with the <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects to remove from the the calendar. 1244 * 1245 * @return BBjNumber A BBjNumber indicating the number of entries that were removed from the calendar. 1246*/ 1247public BBjNumber removeEntries(BBjVector entries!) { } 1248/** 1249 * Removes all the entries in the calendar. 1250 * <p> 1251 * <b>Note</b>: Removing entries from the calendar via this method will trigger the 1252 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE()</a></code> event for each entry that was removed. 1253 * 1254 * @return BBjNumber A BBjNumber indicating the number of entries that were removed from the calendar. 1255*/ 1256public BBjNumber removeAllEntries() { } 1257/** 1258 * Updates an entry in the calendar. 1259 * <p> 1260 * This method uses the <code>CalendarEntry</code>'s ID (if set) or UUID (if the ID isn't set) to find the entry in the calendar. If found, it removes the 1261 * old version of the entry from the calendar, then adds the new version of the entry to the calendar. Because of that, if you've registered for the 1262 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> or 1263 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> events then your callback 1264 * code will executed as a result of calling this method. 1265 * 1266 * @param CalendarEntry entry! The updated <code>CalendarEntry</code> object 1267 * 1268 * @return BBjNumber A BBjNumber acting as a boolean that indicates whether the event was updated (1) or not (0). If the entry could not be found in the calendar, the method will return a 0. 1269 * @since BBj 21.12 1270*/ 1271public void updateEntry(CalendarEntry entry!) { } 1272/** 1273 * Updates several JsonObject entries in a JsonArray to the calendar at once for improved performance. 1274 * <p> 1275 * This method iterates through the <code>CalendarEntry</code> objects and calls the same code as the <code>updateEntry()</code> method does. Therefore, it 1276 * uses the <code>CalendarEntry</code>'s ID (if set) or UUID (if the ID isn't set) to find the entry in the calendar. If found, it removes the 1277 * old version of the entry from the calendar, then adds the new version of the entry to the calendar. Because of that, if you've registered for the 1278 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> or 1279 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> events then your callback 1280 * code will executed once for each entry in the array as a result of calling this method. 1281 * 1282 * @param JsonArray entries! A JsonArray filled with JSON objects to be added to the calendar. 1283 * @since BBj 21.12 1284*/ 1285public void updateEntries(JsonArray entries!) { } 1286/** 1287 * Updates several entries of type <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> to the calendar at once for improved performance. 1288 * <p> 1289 * This method iterates through the <code>CalendarEntry</code> objects and calls the same code as the <code>updateEntry()</code> method does. Therefore, it 1290 * uses the <code>CalendarEntry</code>'s ID (if set) or UUID (if the ID isn't set) to find the entry in the calendar. If found, it removes the 1291 * old version of the entry from the calendar, then adds the new version of the entry to the calendar. Because of that, if you've registered for the 1292 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_ADD' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_ADD</a></code> or 1293 * <code><a href = 'CalendarAPI.html#ON_CALENDAR_ENTRY_REMOVE' target = '_blank'>CalendarAPI.ON_CALENDAR_ENTRY_REMOVE</a></code> events then your callback 1294 * code will executed once for each <code>CalendarEntry</code> in the BBjVector as a result of calling this method. 1295 * 1296 * @param BBjVector entries! A BBjVector filled with <code><a href = 'CalendarEntry.html' target = '_blank'>CalendarEntry</a></code> objects to be updated in the calendar. 1297 * @since BBj 21.12 1298*/ 1299public void updateEntries(BBjVector entries!) { } 1300}