Data Source
Filtering Records
By default, all of the records you chose when setting up the data component will be displayed. For example, if you’re working on the details page of a customer and chose to view all the jobs connected to this customer - all records for this customer will be displayed.
If you would like to filter the records to only display certain records based on criteria you choose, you can do so in the Data Source Tab under Filters. In our case if you want to filter the jobs to only show jobs that meet specific criteria (on top of the original criteria) you can do so in the Data Source tab.
You can create as many filter groups, conditions and nested filter groups as you see fit.
Conditions have the following options: Choose the field, operator and value.
For example: Job Status (Field) is (operator) “Open” (value)
You can choose if the conditions should be AND or OR by changing between the “Match All” and “Match Any” options:
In some cases you might want to nest conditions as a “Child Filter Group” which can give you much filtering flexibility.
For example, suppose we want to find the following jobs in our table:
All jobs where the title contains “Video” AND where status is “Open” OR status is “Pending”.
In most query languages this would look something like this:
`job title` CONTAINS “video” AND
(
`status` = “open”
OR
`status` = “pending”
);
This will first check for any jobs with the title “Video” and then it will check if the status is “Open” or “Pending”.
The relationship between the parent and child filter will always be filtered as “AND.” So in our case it will check for jobs with the title “Video” and the status is “Open” OR the title is “Video” and the status is “Pending”.
To take this even a step further we can nest another filter below our second filter.
For example, suppose we want to find all jobs where title contains “Video” AND the status is “Open” OR status is “Pending” AND the due date is today.
In most query languages this would look something like this:
`job title` CONTAINS “video” AND
(
`status` = “open”
OR
`status` = “pending”
AND
(
`due date` “is today"
)
);
The following is a comprehensive list of filter options available depending on the field type:
Operator: |
For Fields: |
is |
Text, Long Text, Rich Text, Name, Email, Address, Phone, Text Formula, Radio, Select, Complex Formula, Auto Increment, Link, Connection, Checkbox, Multi-Select, Number, Currency, Basic Formula, Rating, Slider |
is not |
Text, Long Text, Rich Text, Name, Email, Address, Phone, Text Formula, Radio, Select, Complex Formula, Auto Increment, Link, Connection, Checkbox, Multi-Select, Number, Currency, Basic Formula, Rating, Slider |
contains |
Text, Long Text, Rich Text, Name, Email, Address, Phone, Checkbox, Multi-Select |
does not contain |
Text, Long Text, Rich Text, Name, Email, Address, Phone, Checkbox, Multi-Select |
starts with |
Text, Long Text, Rich Text, Name, Email, Address, Phone, |
ends with |
Text, Long Text, Rich Text, Name, Email, Address, Phone, |
is blank |
Text, Long Text, Rich Text, Name, Email, Address, Phone, Text Formula, Radio, Select, Complex Formula, Auto Increment, Link, Connection, Checkbox, Multi-Select, Number, Currency, Basic Formula, Rating, Image, Signature, Slider |
is not blank |
Text, Long Text, Rich Text, Name, Email, Address, Phone, Text Formula, Radio, Select, Complex Formula, Auto Increment, Link, Connection, Checkbox, Multi-Select, Number, Currency, Basic Formula, Rating, Image, Signature |
higher than |
Number, Currency, Basic Formula, Rating, Slider |
lower than |
Number, Currency, Basic Formula, Rating, Slider |
is unchecked |
Decision Box |
is checked |
Decision Box |
is not unchecked |
Decision Box |
is not checked |
Decision Box |
size is less than |
File |
size is greater than |
File |
file type is |
File |
file type is not |
File |
Filters for date fields:
Operator: |
Operator Value 1: |
is |
|
is not |
|
is during the current |
week, month, quarter, year |
is during the previous |
X days, weeks, months, years |
is during the next |
X days, weeks, months, years |
is before the previous |
X days, weeks, months, years |
is after the next |
X days, weeks, months, years |
is before |
|
is after |
|
is today |
|
is today or before |
|
is today or after |
|
is before today |
|
is after today |
|
is blank |
|
is not blank |
|
is before current time |
|
is after current time |
|
There are several advanced filtering functions on top of the basic filtering that can be added based on the user who’s currently logged in:
-
Show records that share a connection with the logged in user.
-
Show records that are connected to a user who has one of the same role as the logged in user.
For the first scenario, we’ll assume the following data structure.
We have 3 tables:
-
Users
-
Companies
-
Jobs
Each Job belongs to a single company and each User belongs to a company- as can be seen in this diagram:
Suppose we want to view all the Jobs that belong to the same Company that the logged in user belongs to.
Since each User belongs to a specific company, we can easily add a filter to show only his company. But in our case there is no direct connection between the User and the Job. So how can we only show jobs that are for the same company that the user belongs to?
This can be done by adding a “Jobs” component and filtering to only show Jobs where the Company is connected to the Company the logged in user belongs to.
The second advanced filter is the ability to filter records that are connected to a record that is in the same role as the user logged in. That’s a mouthful so let’s break it down.
For this example we’ll assume the following database structure:
We have 2 tables and 3 user roles:
Tables:
-
Jobs
-
Users (our default table)
Each Job belongs to a specific user in our case - the one who created the record.
We also have 3 different user roles: Marketing, Human Resources, and Engineering.
Here is a list of our users currently in the app and their associated roles.
Notice how Jennifer Weiss and Alison Marcus are both assigned the Human Resources role.
Now let’s look at the jobs table.
Notice how Alison has 2 jobs and Jennifer has one job.
Our objective is to allow anyone that shares the same role as the person who created the job the ability to view the job. (For this instance it’ll be helpful to think of each role as a group.)
In this case, suppose Jennifer from Human Resources logs in the app, we want her to see all the jobs created by anyone in the Human Resources team, in this case that would be Alison… and vice versa.
You can accomplish this by adding the filter in the data source to show records where Created By is connected to any logged in user’s roles. As you can see in screenshot below:
Sorting records
You can choose which field is used for sorting records from the server. This can have an impact on which records you see especially when you combine this with limiting how many records you see.
Limit records
By default all records that match the predefined criteria are sent from the database. However, you can limit the number to a specific amount by changing the record limit.
We'd love to hear your feedback.