How can I filter the calendar?

Filters operate like a find request, letting you see just a subset of the events in the calendar: that may be "your events", or events for a particular department, or those for a single customer. You can use the filters that come with the calendar, repurpose those, or create your own following the instructions below.

Filters are available on the Filters tab in the left hand status area. SeedCode Calendar ships with four filters in place already: title, project, status, and resource. To see how this works, select an item in the status filter and you'll see the calendar change to show just the items of that status. Note that you can select more than one status in the filter.

Now click "Omit" beside the filter and you'll see everything except events of the status you've selected.

The title filter works the same way: type in "Call" and you'll see all the events where a work in the Summary begins with "Call". These filters work very much like the "constrain found set" find request you're already familiar with in FileMaker except that these filters are case sensitive, so "Some" will find the event "Someone is coming over" but not "Get me some help."

Filtering on different fields & different sources

You can point the existing filters at any fields in your events table that you'd like. Mapping filters to fields is done in the "Load Calendar Settings - On Startup..." script you edited as part of your integration.

If you're using multiple sources you can map the same filter to a different field in each of your source tables. For example, our "title" filter may be mapped to the Summary field in your events table (that is, it searched for an event summary containing the text entered in the title filter) and mapped to the Procedure field in your surgeries table.

To do this (to map a filter to more than one field) separate the mapped fields with carriage returns like we've done in our sample integration for filters 1 and 2. (Note that you can only map a filter to one field from each table.)

More Details

A generic filter like "Event Title" may need to be mapped to a different field in each source's events table, so we let you map a return delimited list of field names (ideally GetFieldName()s) to each filter. When filtering we then execute on the first mapped field from the same table occurrence as the source in question.
This means we can only filter fields local to the source TO, but that is probably a good thing.
If no mapped fields match the source's TO we treat the filter as excluding that source. So a source of "Company meetings" might have a filter for "mandatory". That doesn't make sense in any other context. If you're then showing meetings along side your Birthdays source and you filter to see everything "mandatory", we'll hide all Birthdays since none are mandatory.

Can I add new filters?

Sure. Let's say you wanted to add a filter called "Staff" so you could see just the events for one or more staff members (for just you, or for the members of your team). Here's how you'd do it...

1. Create a staff name field in the events table.
If you don't already have a field in your events table for the staff member's name, create one. For the sake of this example we'll use the staff member's name as the filter, but you could use their ID, etc.
2. Create a value list for staff names. Then create a global text field in the CalendarInterface table called FilterGlob_5
3. Enter layout mode and navigate to the Filters tab of the calendar layout.
4. Duplicate (copy and paste) one of the existing filter fields (don't use the resource filter, it's special) on the layout and then switch this field to be FilterGlob_5. Format this field to use the value list you created in 2 above; format it as checkboxes if you'd like to support multiple selections.
5. These filter fields have script triggers on them: you can leave the trigger alone if you've copied one of the existing fields.
6. Still editing the Filters tab of the Calendar layout, duplicate the "clear", "include", and "omit" buttons, placing them next to your new filter and change the script's script parameters for each of these buttons to use the "number" of the field ("5" in our example). Edit the conditional formatting for each of these to use the new filter number ("5" in our example). If you're not sure how to edit those "include / omit" switches, you can learn how here.
7. Finally, edit the script "Load Calendar Settings - On Startup..." and find the comment "Maps filters to fields". Create a new SetVariable line for your new filter ($$sc_FilterField5 in our example) and, using your new field for the GetFieldName ( SampleEvents::StaffName) in our example.
8. Edit the script "Clear All Filters" and add additional SetField and SetVariable steps for your new filter fields.
9. Edit the script "Build Filters ( Source No )" under the comment #Short circuit if no filters are filled in so the If calculation contains any new filters you've added.
10. Enter browse mode and run the Upon Opening script again. That's it!

Can I pre-filter the calendar so it starts up already filtered?

Yes, and this can be a great way to speed up the calendar if you have tons of events, but many are already "complete" or irrelevant.

Toward the end of the configuration script "Load Calendar Settings - On Startup --- Edit Configuration Here ---" you'll see a comment called "Pre-Filter the calendar if necessary". The next lines set the four default filters that come with our calendar. The lines are currently disabled: enable any pair of them if you have FileMaker Advanced, or recreate the pair of lines you need if you don't.

The first line (the Set Field) in each pair sets the value to be filtered ("Something" in our example), and the second line (the Set Variable) passes that filter into the calendar engine. Both lines in the pair need to be enabled, but you only need to edit the value in the first line of the pair ("Something" in our example).

Follow us: