Zulu - Filtering

From 360Works Product Documentation Wiki
Jump to: navigation, search

Contents

Overview

Filtering lets you limit the records that are synced to a calendar based on search criteria, or a day range. This will lets you have multiple calendars that do not share events. A good example of this is having a calendar for each employee, and each employees calendars only show the events that belong to them.

Each calendar in your calendar application is represented by a record in the ZuluCalendarList table. To see more about how the calendar records work, see: Zulu - Calendars And Publishing

Filtering By Value

Consider the following calendar record:
ZuluCalendarFilteringExample.png

To get the events that belong to this calendar, Zulu will do the following:

  • Go to the "ZuluSampleEvents" layout
  • Search the "Status" field for the value "Urgent"

The resultant found set are the events that Zulu will sync for this calendar.

Notes

  • Events that are created in calendar application will be inserted into FileMaker with the appropriate filterKey and filterValue values. For example, if this calendar were configured with Apple Calendar, and a user inserted an event into this Apple Calendar calendar, it would be inserted into FileMaker with "Urgent" in the "Status" field.
  • When specifying a field in the zulu_filterKey field, you do not need to include the table name, just the name of the field on the events layout.
  • If the events are not showing on your calendar, double check that the field targeted by zulu_filterKey has same value as zulu_filterValue. A lot of times when events don't show up on a calendar, its because the filter field does not have a value in it, or has the wrong value.
  • if you are using a list of filter values in your filter field, to share events between multiple different calendar records, if the event is edited on one calendar, the event have the other calendars filter values removed from the filter field, only viewable on the calendar that edited it. This behavior is caused by the fact that when Zulu inserts or updates an event in FileMaker, Zulu writes the filterValue for the calendar record to the filterKey field specified. This behavior can be modified using the Zulu_PostEdit script. See here for more details on the Zulu_PostEdit script and event hooks: Zulu - Event Hooks

Filtering By Day Range

Consider the following calendar record:
ZuluCalendarFilterDayRange.png

To get the events that belong to this calendar, Zulu will do the following:

  • Go to the "ZuluSampleEvents" layout
  • Search for records that have a Start Date between 30 days in the past, and 60 days in the future. This is a dynamic search criteria, and will advance the search values as the current date advances.
    • For example, if the current date was 1/30/2019, Zulu would search the Start Date field for "1/1/2019...3/31/2019". On the next day, 1/31/2019, Zulu would change the search criteria to "1/2/2019...4/1/2019". Records that started on 1/1/2019 would be deleted from your calendar application, and records that started on 4/1/2019 would be added.

The resultant found set are the events that Zulu will sync for this calendar.

Notes

  • Day Range Filtering is a one way operation from FileMaker to your calendar application. If you have year old events in your calendar application, then you apply this filter, the events will be removed from the calendar application. However these events will persist in FileMaker. Zulu never deletes records from FileMaker, but it will delete records from your calendar application.

Filtering By Record Level Access Privileges

When you set up a sync configuration or add an account to Apple Calendar, you provide a FileMaker account in the process. Zulu will always use this FileMaker account when querying FileMaker for calendar and event records. The benefit of this is that Zulu will obey the FileMaker Record Level Access Privileges. So you can filter the event records based on FileMaker privileges, and records the account does not have access to will not be pushed to the calendar application.

You can see more about Record Level Access Privileges here: FileMaker Record Level Access Privileges

Filtering Calendars By FileMaker Account

The easiest way to accomplish this, is to use Record Level Access Privileges on the the ZuluCalendarList table, so that only a user can only see the calendar that belongs to them. This takes advantage of the order that events are fetched:

  • First, Zulu queries FileMaker for which calendars it should sync.
  • Then, it queries for the events that belong to each of the calendars returned.

If a calendar is not returned by the first calendar query, the calendar will not be synced, and its events will not be fetched. You may have business logic that requires a more complex setup, but this example is the bare minimum that you need.

Walkthrough

Here are the basic configuration details of this privilege set:

  • The privilege set will need custom privileges for records. Also, be sure that "Access via XML Web Publishing" is also checked while you are here

ZuluCalendarUserPrivilegeSet.png

  • Limited record "View" privileges are needed for the ZuluCalendarList table:

ZuluCalendarUserRecordPrivileges.png

  • Set the privilege calculation to:
zulu_filterValue = Get(AccountName)

ZuluCalendarUserViewPrivilegeCalc.png

Personal tools
Namespaces

Variants
Actions
Plug-in Products
Other Products
Navigation
Toolbox