All posts
Sonstiges

“Calendar Loop Filter Guide” (including copy/paste prompt)

“Calendar Loop Filter Guide” (including copy/paste prompt)

Calendar Loop: Filter Guide (MECE) for _bCalendarRek_(...)

With the Calendar Loop, you can dynamically display appointments (onOffice Appointments) – e.g. all future slot appointments for a property. To help you build filters quickly and correctly, here is the complete, clearly structured reference.


1) Quickstart: Minimal example

Time period only (required):

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2026-12-31")
... Appointment output ...
_eCalendarRek_
 

Typical standard (future, not completed, not cancelled):

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2027-12-31;isCancelled:false;isDone:false")
...
_eCalendarRek_
 

2) Filter syntax (grammar)

_bCalendarRek_("key:value;key2:op:value2;key3:a,b,c")

  • ; means AND (all conditions must match)

  • , means OR within a key (at least one value is sufficient)

  • key:value is identical to key:=:value

  • For like you use wildcards: %TERMIN-SLOT%


3) MECE: What filters are available?

A) Mandatory parameters (exactly these two)

  1. startDate:YYYY-MM-DD

  2. endDate:YYYY-MM-DD

Tip: “Future only” = startDate set to “today”.


B) API filters (server-side, high-performance)

B1) Boolean flags (values are MECE: {true,false})
  • isCancelled:true|false

  • isDone:true|false

  • isRecurrent:true|false

B2) Participant filters (lists)
  • userIds:1,2,3

  • groupIds:10,11

B3) Text/Type/Creator filters (SQL operators)

These keys support operators:

  • subject

  • notes

  • type

  • createdBy

SQL operators (MECE list):
=, !=, <, <=, >, >=, between, like, not like, in, not in

Examples:

 
 
subject:like:%TERMIN-SLOT%
notes:not like:%intern%
type:=:Viewing
createdBy:=:max.mustermann
 

C) Propform/PHP filters (also possible on data fields)

Anything contained in the data fields of the AppointmentList can be filtered further – including nested filtering using dot notation.

Typical examples:

  • estate.id:12345 (Appointments for a property)

  • status.value:active

  • confirmationStatus:sent

  • private:false

Note: The API filters what the API can. Propform filters everything else accordingly.


4) Permitted values (MECE) for typical fields

status.value

Permitted values:

  • active

  • completed

  • canceled

  • participantsAvailable

Example:

 
 
status.value:active
 

confirmationStatus

Allowed values:

  • canceled

  • confirmed

  • confirmed and canceled

  • not-set

  • sent

Example:

 
 
confirmationStatus:sent
 

Booleans

Allowed: true or false (recommended: write exactly as shown)


5) Practical examples (Copy/Paste)

5.1 Future dates for a property, slots only

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2027-12-31;estate.id:_Id;subject:like:%TERMIN-SLOT%;isCancelled:false;isDone:false")
_AppointmentDateTime –
_AppointmentSubject_eCalendarRek_
 

5.2 Future appointments for a specific property

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2027-12-31;estate.id:12345;isCancelled:false;isDone:false")
...
_eCalendarRek_
 

5.3 Appointments for a specific user or group only

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2026-12-31;userIds:31;isCancelled:false;isDone:false")
...
_eCalendarRek_
 
 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2026-12-31;groupIds:219;isCancelled:false;isDone:false")
...
_eCalendarRek_
 

5.4 Subject must allow multiple terms (OR)

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2026-12-31;subject:like:%TERMIN-SLOT%,%BESICHTIGUNG%;isCancelled:false;isDone:false")
...
_eCalendarRek_
 

5.5 Recurring events vs. one-off events

 
 
_bCalendarRek_("startDate:2026-02-26;endDate:2026-12-31;isRecurrent:true")
...
_eCalendarRek_
 

6) Copy/paste prompt for AI (so users get clean filters)

Prompt template (simply copy and fill in):

 
 
Build me a propform Calendar-Loop filter for _bCalendarRek_(...), using this syntax
:- Required: startDate, endDate (YYYY-MM-DD)
- AND = ; OR within a key = ,
- Operators: =, !=, <, <=, >, >=, between, like, not like, in, not in-
like with %...%
- Additionally, PHP filters on data fields are permitted (e.g. estate.id, status.value, confirmationStatus, private)

Target
:- Period: [START] to [END]
- Property: estate.id = [ESTATE_ID] (or _Id)
- Subject contains: [STRING]
- Optional: isCancelled/isDone/isRecurrent, userIds, groupIds, confirmationStatus, status.value

Please provide:
1) the filter string in quotation marks
2) a short example snippet using _bCalendarRek_ ... _eCalendarRek_
 

7) Common pitfalls (brief)

  • startDate / endDate are mandatory, otherwise (depending on the implementation) default time periods or no results will be returned.

  • If you use macros such as _Id in the filter, the loop arguments must be resolved beforehand (propform does this automatically if you have enabled the pre-resolve logic).

  • conflicts as data field can lead to empty responses depending on the setup → omit if necessary.

Want to try propform.io?

First form free, no credit card needed.

Start for free