GoMaps

Filters

GoMaps.Filters History

Hide minor edits - Show changes to output

January 26, 2016, at 02:51 PM by 192.88.134.15 -
Added lines 62-65:
!! Can I change those filters to checkboxes?

Sure. Checkboxes let you select more than one item in the same filter: like properties that are "active" and those that are "waiting". This is an easy change to make and you'll find [[http://www.seedcode.com/filtering-filemaker-maps/ | instructions here]].
 
November 27, 2015, at 12:21 AM by 192.88.134.15 -
Changed lines 42-43 from:
sc_allString = "All"\\
to:
sc_allString = "All"
Changed lines 50-52 from:
)\\
to:
)

-> '''6.''' Change the script "Load Map Settings" to set your new MapSettings::SelectActiveGlob field to "All" (without a value in that filter no properties will show up) and you're all set! Enjoy!
November 27, 2015, at 12:18 AM by 192.88.134.15 -
Changed lines 34-43 from:
--> \\
--> //The field to search in\\
--> sc_field = Properties::Active ;\\
--> \\
--> //The value we are searching on\\
--> sc_value = MapSettings::SelectActiveGlob ;\\
--> \\
--> //The value we are using to represent "All"\\
--> sc_allString = "All"\\
to:
\\
//The field to search in\\
sc_field = Properties::Active ;\\
\\
//The value we are searching on\\
sc_value = MapSettings::SelectActiveGlob ;\\
\\
//The value we are using to represent "All"\\
sc_allString = "All"\\
Changed lines 47-50 from:
--> $sc_propertyType ;\\
--> $sc_propertyStatus ;\\
--> $sc_propertyActive\\
--> )\\
to:
$sc_propertyType ;\\
$sc_propertyStatus ;\\
$sc_propertyActive\\
)\\
November 27, 2015, at 12:16 AM by 192.88.134.15 -
Changed lines 23-43 from:
1. Create a new global field in MapSettings to be used as the filter field--the field users enter their filter criteria into. This will be like the existing SelectStatusGlob field: in our example we'll call it "SelectActiveGlob".

2. If the field you're filtering on has a value list, make a duplicate version of the value list that has "All" as the first option: you'll see value lists like this for status: "PropertyStatusFilter". In our example the new value list is called "PropertyActive_Filter".

3. On the PropertiesMap layout, duplicate the existing SelectStatusGlob field and change the label to "Select Status". Change the field to your newly created SelectActiveGlob field and assign the value list "PropertyActive_Filter" created above.

4. These global filter fields have script triggers on them so be sure your "SelectActiveGlob" field the same triggers as "SelectStatusGlob".

5. Edit the script "Filters And Headers" and follow the comments to add a new variable for your new filter field; again, you can copy what's done for "status" as your pattern. The beginning of the set variable for our new $sc_propertyActive variable looks like this:

Let ([\\
\\
//The field to search in\\
sc_field = Properties::Active ;\\
\\
//The value we are searching on\\
sc_value = MapSettings::SelectActiveGlob ;\\
\\
//The value we are using to represent "All"\\
sc_allString = "All"\\
to:
-> '''1.''' Create a new global field in MapSettings to be used as the filter field--the field users enter their filter criteria into. This will be like the existing SelectStatusGlob field: in our example we'll call it "SelectActiveGlob".

-> '''2.''' If the field you're filtering on has a value list, make a duplicate version of the value list that has "All" as the first option: you'll see value lists like this for status: "PropertyStatusFilter". In our example the new value list is called "PropertyActive_Filter".

-> '''3.''' On the PropertiesMap layout, duplicate the existing SelectStatusGlob field and change the label to "Select Status". Change the field to your newly created SelectActiveGlob field and assign the value list "PropertyActive_Filter" created above.

-> '''4.''' These global filter fields have script triggers on them so be sure your "SelectActiveGlob" field the same triggers as "SelectStatusGlob".

-> '''5.''' Edit the script "Filters And Headers" and follow the comments to add a new variable for your new filter field; again, you can copy what's done for "status" as your pattern. The beginning of the set variable for our new $sc_propertyActive variable looks like this:

--> Let ([\\
--> \\
--> //The field to search in\\
--> sc_field = Properties::Active ;\\
--> \\
--> //The value we are searching on\\
--> sc_value = MapSettings::SelectActiveGlob ;\\
--> \\
--> //The value we are using to represent "All"\\
--> sc_allString = "All"\\

-> The last variable you have to edit is the one $sc_searchFieldString and that will be changed to include our new active filter:
 
--> List (\\
--> $sc_propertyType ;\\
--> $sc_propertyStatus ;\\
--> $sc_propertyActive\\
--> )\\
November 27, 2015, at 12:14 AM by 192.88.134.15 -
Added lines 31-42:
5. Edit the script "Filters And Headers" and follow the comments to add a new variable for your new filter field; again, you can copy what's done for "status" as your pattern. The beginning of the set variable for our new $sc_propertyActive variable looks like this:

Let ([\\
\\
//The field to search in\\
sc_field = Properties::Active ;\\
\\
//The value we are searching on\\
sc_value = MapSettings::SelectActiveGlob ;\\
\\
//The value we are using to represent "All"\\
sc_allString = "All"\\
November 27, 2015, at 12:11 AM by 192.88.134.15 -
Added lines 22-29:

1. Create a new global field in MapSettings to be used as the filter field--the field users enter their filter criteria into. This will be like the existing SelectStatusGlob field: in our example we'll call it "SelectActiveGlob".

2. If the field you're filtering on has a value list, make a duplicate version of the value list that has "All" as the first option: you'll see value lists like this for status: "PropertyStatusFilter". In our example the new value list is called "PropertyActive_Filter".

3. On the PropertiesMap layout, duplicate the existing SelectStatusGlob field and change the label to "Select Status". Change the field to your newly created SelectActiveGlob field and assign the value list "PropertyActive_Filter" created above.

4. These global filter fields have script triggers on them so be sure your "SelectActiveGlob" field the same triggers as "SelectStatusGlob".
November 27, 2015, at 12:02 AM by 192.88.134.15 -
Added lines 18-23:

!! How can I create my own filters?

In addition to repurposing the filters that come with ProMaps & GoMaps, you can add your own. Let's say you have a field in the properties table called "active" and this contains either "yes" or "no".  Here is how you'd add a filter for active:

February 06, 2015, at 03:16 PM by 142.4.217.187 -
Changed lines 25-27 from:
The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected.

!! Can I show a FileMaker found set on the map? [[#FoundSets]]
to:
The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected.[[#FoundSets]]

!! Can I show a FileMaker found set on the map?
February 06, 2015, at 03:15 PM by 142.4.217.187 -
Changed line 27 from:
!! Can I show a FileMaker found set on the map?
to:
!! Can I show a FileMaker found set on the map? [[#FoundSets]]
February 04, 2015, at 06:06 PM by 142.4.217.188 -
Changed line 35 from:
Once you have your summary field created you will need to create a way to set that field data to a global variable. Either create a new script or edit an existing script you might have for viewing the map from the context of a property record / records. In that script add a script step to set a global variable. Name the global variable "$$sc_IDList" and set the contents of that variable to the summary field "IDList we created in the previous step. You will then want to reload the map data by adding a "Run Script" script step the will execute the script "Load Map". Then a "GoTo Layout" script step that navigates to the map layout.
to:
Once you have your summary field created you will need to create a way to set that field data to a global variable. Either create a new script or edit an existing script you might have for viewing the map from the context of a property record / records. In that script add a script step to set a global variable. Name the global variable "$$sc_IDList" and set the contents of that variable to the summary field "IDList we created in the previous step. You will then want to reload the map data by adding a "Perform Script" script step the will execute the script "Load Map". Then a "GoTo Layout" script step that navigates to the map layout.
February 04, 2015, at 05:57 PM by 142.4.217.187 -
Changed line 49 from:
sc_value = Substitute ($sc_idList ; "" ; "','") ;
to:
sc_value = Substitute ($$sc_IDList ; "" ; "','") ;
February 03, 2015, at 03:23 AM by 142.4.217.187 -
Changed lines 41-42 from:
In the set variable script step add the following calculation contents:
to:
In the set variable script step "$sc_idList" add the following calculation contents:
Changed line 57 from:
sc_value ≠ sc_allString ;
to:
sc_value <> sc_allString ;
February 03, 2015, at 03:21 AM by 142.4.217.187 -
February 03, 2015, at 03:20 AM by 142.4.217.187 -
Changed lines 43-44 from:
[@Let ([sc_field = Properties::_id ;
sc_value = Substitute ($$sc_IDList ; "" ; "','") ;
to:
[@Let ([

//The
field to search in
sc_field = Properties::_id ;

//The value we are searching on
sc_value = Substitute ($sc_idList
; "" ; "','") ;

//The value we are using to represent "All"
Added line 53:
Added line 55:
Changed lines 58-59 from:
"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"
to:
"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) &
"\" IN ('" & sc_value & "')"
February 03, 2015, at 03:18 AM by 142.4.217.188 -
Changed line 43 from:
>>pre<<Let ([sc_field = Properties::_id ;
to:
[@Let ([sc_field = Properties::_id ;
Changed line 51 from:
)>><<
to:
)@]
February 03, 2015, at 03:17 AM by 142.4.217.187 -
Changed lines 43-51 from:
Let ([<<sc_field = Properties::_id ;\\sc_value = Substitute ($$sc_IDList ; "" ; "','") ;\\sc_allString = "All"\\] ;\\Case (\\sc_value &#8800; sc_allString ;\\"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"\\)\\)
to:
>>pre<<Let ([sc_field = Properties::_id ;
sc_value = Substitute ($$sc_IDList ; "" ; "','") ;
sc_allString = "All"
] ;
Case (
sc_value &#8800; sc_allString ;
"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"
)
)>><<
February 03, 2015, at 03:16 AM by 142.4.217.187 -
Changed line 43 from:
Let ([\\sc_field = Properties::_id ;\\sc_value = Substitute ($$sc_IDList ; "" ; "','") ;\\sc_allString = "All"\\] ;\\Case (\\sc_value &#8800; sc_allString ;\\"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"\\)\\)
to:
Let ([<<sc_field = Properties::_id ;\\sc_value = Substitute ($$sc_IDList ; "" ; "','") ;\\sc_allString = "All"\\] ;\\Case (\\sc_value &#8800; sc_allString ;\\"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"\\)\\)
February 03, 2015, at 03:15 AM by 142.4.217.187 -
February 03, 2015, at 03:15 AM by 142.4.217.187 -
Changed lines 43-52 from:
''Let ([
sc_field = Properties::_id ;
sc_value = Substitute ($$sc_IDList ; "" ; "','") ;
sc_allString = "All"
] ;
Case (
sc_value &#8800; sc_allString ;
"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"
)
)''
to:
Let ([\\sc_field = Properties::_id ;\\sc_value = Substitute ($$sc_IDList ; "" ; "','") ;\\sc_allString = "All"\\] ;\\Case (\\sc_value &#8800; sc_allString ;\\"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"\\)\\)
February 03, 2015, at 02:38 AM by 142.4.217.187 -
Changed lines 43-44 from:
Let ([
to:
''Let ([
Deleted line 44:
Deleted line 45:
Deleted line 46:
Deleted line 47:
Changed lines 52-53 from:
)
to:
)''
Added lines 57-58:

That's it!
February 03, 2015, at 02:04 AM by 142.4.217.187 -
Changed lines 43-44 from:
''Let ([
to:
Let ([
Changed lines 57-61 from:
)''
to:
)

Then simply add our new "$sc_idList" variable to top of the list calculation in the "$sc_searchFieldString" set variable script step.

%center% http://www.seedcode.com/rootimages/stikipad/gomaps/query-items.png
February 03, 2015, at 02:01 AM by 142.4.217.187 -
Added lines 38-39:

%center% http://www.seedcode.com/rootimages/stikipad/gomaps/id-list.png
February 03, 2015, at 01:57 AM by 142.4.217.188 -
Changed lines 41-43 from:
Let ([

//The field to search in
to:
''Let ([
Deleted line 44:
//The value we are searching on
Deleted line 46:
//The value we are using to represent "All"
Changed line 55 from:
)
to:
)''
February 03, 2015, at 01:55 AM by 142.4.217.187 -
Changed lines 41-42 from:
->Let ([
to:
Let ([
Deleted lines 52-53:

//-------------------------  You shouldn't have to edit below this line -------------------------//
February 03, 2015, at 01:55 AM by 142.4.217.187 -
Changed lines 33-60 from:
%center% http://www.seedcode.com/rootimages/stikipad/gomaps/list-of.png
to:
%center% http://www.seedcode.com/rootimages/stikipad/gomaps/list-of.png

Once you have your summary field created you will need to create a way to set that field data to a global variable. Either create a new script or edit an existing script you might have for viewing the map from the context of a property record / records. In that script add a script step to set a global variable. Name the global variable "$$sc_IDList" and set the contents of that variable to the summary field "IDList we created in the previous step. You will then want to reload the map data by adding a "Run Script" script step the will execute the script "Load Map". Then a "GoTo Layout" script step that navigates to the map layout.

Now that we have a script that will set a global var to our list of ID's and take us to the map we need to modify our query process to accept this ID list. In script manager find and edit the script "Filters and Headers" and add an "if" code block as pictured below.

In the set variable script step add the following calculation contents:

->Let ([

//The field to search in
sc_field = Properties::_id ;

//The value we are searching on
sc_value = Substitute ($$sc_IDList ; "" ; "','") ;

//The value we are using to represent "All"
sc_allString = "All"

] ;

//-------------------------  You shouldn't have to edit below this line -------------------------//

Case (
sc_value &#8800; sc_allString ;
"a.\"" & GetValue (Substitute (GetFieldName (sc_field) ; "::" ; "") ; 2) & "\" IN ('" & sc_value & "')"
)
)
February 03, 2015, at 12:38 AM by 142.4.217.187 -
Changed lines 25-33 from:
The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected.
to:
The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected.

!! Can I show a FileMaker found set on the map?

Yes. This is possible but will require a few script modifications. The first step in the process is getting a list of ID's from your found set. This can be accomplished by either looping through records and building a return delimited list or if you are using FileMaker 13 or later you can use the Summary field type "List Of".

In this case we recommend using List Of if possible. Create a new field in your properties table called "IDList", select a field type of "Summary" and make sure in the options to select "List Of" summarizing your property table ID field.

%center% http://www.seedcode.com/rootimages/stikipad/gomaps/list-of.png
February 05, 2014, at 10:13 PM by 98.203.211.206 -
Changed lines 19-25 from:
!! Can I default the map to show zero properties unless it is fltered? Yes. This is easily done by editing the script "Filters And Headers" in GoMaps (the mobile file) and is generally a good idea if you have a large data set. You'll probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users. There is a couple of set variable script steps toward the top of the script that helps build the filter queries. They are "$sc_propertyType" and "$sc_propertyStatus". You will need to reference which one (or both) of these filters should be populated before querying for map data. To do this, just wrap the script step where we set the map data package "$$sc_mapDataPackage" in an if/else statement. The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected.
to:
!! Can I default the map to show zero properties unless it is fltered?

Yes. This is easily done by editing the script "Filters And Headers" in GoMaps (the mobile file) and is generally a good idea if you have a large data set. You'll probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users.

There is a couple of set variable script steps toward the top of the script that helps build the filter queries. They are "$sc_propertyType" and "$sc_propertyStatus". You will need to reference which one (or both) of these filters should be populated before querying for map data. To do this, just wrap the script step where we set the map data package "$$sc_mapDataPackage" in an if/else statement.

The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected.
February 05, 2014, at 10:12 PM by 98.203.211.206 -
Changed lines 17-19 from:
You'll notice that there are two value lists for ever filter. For example, there is both a "PropertyStatus" and a "PropertyStatus_Filter" list. Edit the one without "_Filter" in the name. We use the "_Filter" one solely so we can add "All" to the filters when we present them to users.
to:
You'll notice that there are two value lists for ever filter. For example, there is both a "PropertyStatus" and a "PropertyStatus_Filter" list. Edit the one without "_Filter" in the name. We use the "_Filter" one solely so we can add "All" to the filters when we present them to users.

!! Can I default the map to show zero properties unless it is fltered? Yes. This is easily done by editing the script "Filters And Headers" in GoMaps (the mobile file) and is generally a good idea if you have a large data set. You'll probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users. There is a couple of set variable script steps toward the top of the script that helps build the filter queries. They are "$sc_propertyType" and "$sc_propertyStatus". You will need to reference which one (or both) of these filters should be populated before querying for map data. To do this, just wrap the script step where we set the map data package "$$sc_mapDataPackage" in an if/else statement. The if calculation will read "not IsEmpty ($sc_propertyType) or not IsEmpty($sc_propertyStatus)" without the quotes. Then within the if statement you will run the set variable for "$$sc_mapDataPackage" as it is now. After that add an "Else" statement and within that a script step that sets the variable "$$sc_mapDataPackage" to null / empty using two quotes. That's it... Now pins will only appear on the map when at least one filter is selected
.
April 10, 2013, at 08:51 PM by 184.78.159.107 -
Changed lines 5-8 from:
bg here https://seedcode.fogbugz.com/default.asp?19444#137914

 > > instructions

to:
Yes. This is easily done by editing the script "Filters And Headers" in GoMaps (the mobile file). You'll probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users

You'll find a SetVariable line for each filter you have, and you can select which field we search on (a field in the Properties table) and which field acts as the filter (a field in the Interface table). The script is well commented, so read through every line above the comment "You shouldn't have to edit below this line". (My favorite comment in all of scriptdom.)

Changed lines 15-16 from:
You do this right in the value lists of the mobile GoMaps file (and you probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users.
to:
You do this right in the value lists of the mobile GoMaps file (again, you probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users).
April 10, 2013, at 08:25 PM by 184.78.159.107 -
Deleted line 6:
Added lines 9-12:
Note that if you make your own drop down fields for you own filters, you'll want to add the same script triggers we have on ours:

%center% http://www.seedcode.com/rootimages/stikipad/gomaps/filterpop.png

April 10, 2013, at 08:22 PM by 184.78.159.107 -
Deleted lines 4-5:
 > > instructions
Added lines 7-14:

 > > instructions

!! How do I change the value lists used for filters?

You do this right in the value lists of the mobile GoMaps file (and you probably want to do it before you [[DistributeGoMaps | distribute]] GoMaps to your users.

You'll notice that there are two value lists for ever filter. For example, there is both a "PropertyStatus" and a "PropertyStatus_Filter" list. Edit the one without "_Filter" in the name. We use the "_Filter" one solely so we can add "All" to the filters when we present them to users.
April 10, 2013, at 08:17 PM by 184.78.159.107 -
Changed lines 1-2 from:
''If you mean "filter" as in "filter the records that come down to the iPad via sync"... yes you can. Read this: [[sync found sets]].''
to:
''If you mean "filter" as in "filter the records that come down to the iPad via sync", read this: [[sync found sets]].''
March 28, 2013, at 02:34 AM by 50.132.84.245 -
Added lines 1-2:
''If you mean "filter" as in "filter the records that come down to the iPad via sync"... yes you can. Read this: [[sync found sets]].''
March 28, 2013, at 02:32 AM by 50.132.84.245 -
Deleted lines 6-12:
!! How do I only pull down "my" properties? That is, can I filter the records that come down in a sync?

Yes. In fact we strongly recommend that you only sync the data that each user need at any given time. Maybe that is "my customers" or "my customers to visit this week" but filtering the sync is key to a good user experience.

(If you're interested in reading more on this, check out.... blog XXXXX)

Filtering records this way is built into GoZync, the sync engine behind GoMaps. For instructions on how to add these sync filters to GoZync, read this: [[GoZync3.DownloadingFoundSets | Downloading Found Sets]]
March 28, 2013, at 02:28 AM by 50.132.84.245 -
Changed lines 3-4 from:
 > > instructions bg here https://seedcode.fogbugz.com/default.asp?19444#137914
to:
 > > instructions

bg here https://seedcode.fogbugz.com/default.asp?19444#137914
March 28, 2013, at 02:28 AM by 50.132.84.245 -
Changed lines 1-3 from:
!! Can I change the fields GoMaps filters on? (Currently status and Property Type)

 > > instructions
to:
!! Can I change the fields GoMaps filters on? (Currently Status and Property Type)

 > > instructions bg here https://seedcode.fogbugz.com/default.asp?19444#137914

!! How do I only pull down "my" properties? That is, can I filter the records that come down in a sync?

Yes. In fact we strongly recommend that you only sync the data that each user need at any given time. Maybe that is "my customers" or "my customers to visit this week" but filtering the sync is key to a good user experience.

(If you're interested in reading more on this, check out.... blog XXXXX)

Filtering records this way is built into GoZync, the sync engine behind GoMaps. For instructions on how to add these sync filters to GoZync, read this: [[GoZync3.DownloadingFoundSets | Downloading Found Sets]]
March 28, 2013, at 02:16 AM by 50.132.84.245 -
Added lines 1-3:
!! Can I change the fields GoMaps filters on? (Currently status and Property Type)

 > > instructions
(855) SEEDCODE
support@seedcode.com
Follow us: