Often times in interfaces we have this use case .
...
where we have a datasource
...
For instance in email protocols like the IMAP protocol will give each email a unique sequential ID.
...
title | We need to have a convenient way to set the ID we want to come from |
---|
So we can decide where to take the feed from.
...
that will give us information with a sequence of incrementing IDs. For instance the IMAP email protocol is an example of this.
If you only had 20 emails and each email takes a second to query, then a for loop would work fine. But what if you have 100,000 emails? You really need to be able to wake up a component, get a small batch of say 10, iterate and store the next ID and then get the next 10 and so on.
It’s nice to control where you start from and keep incrementing the value as we go forward. The COUNT library solves this problem.
Expand | ||
---|---|---|
| ||
To test out the COUNT library, make a custom component. See Create a Component. |
Expand | ||||
---|---|---|---|---|
|
| |||
See Import a Library if you need a refresher on how to do it. |
Expand | ||
---|---|---|
| ||
Note: You’ll need to change your component to use the DEVELOPMENT commit to see the newly added custom field. See Choosing the code to run for your component. |
Expand | |||||
---|---|---|---|---|---|
| |||||
This is how we We can use COUNTget to get the data from a the custom field called NextMailId.NextId. We increment NextId by 1 each time the component runs.
|
Expand | |||||
---|---|---|---|---|---|
| So this
| ||||
title | ItCOUNTset saves the new value of the custom field in the custom field value file.
| ||||
Expand | |||||
This means we can see the | NextMailId NextId in the card view of the component - and we can set it too! |
Expand | ||
---|---|---|
| ||
You can use component.setTimer{} is used here to run main every 2 seconds. This is a complete little program to increment a custom number field:
|
Expand | ||
---|---|---|
| ||
Expand | ||
---|---|---|
| ||
Remember, the Custom Fields values are stored on disc in JSON. This means we can load and save them programmatically. This is how this library works. |
This is a very useful pattern for lots of ‘feeder’ interfaces Feeder interfaces. It’s used as part of the IMAP Email Feed component.