18.1. General
This page describes the syntax of “form.json” file which is a part of NextGIS Formbuilder project file (with “.ngfp” extension). The file uses the JSON specification rules and is encoded in UTF-8.
18.2. Syntax
Example of the “form.json” file which represents a form with two elements for entering person’s name:
[
{
"attributes" : {
"text" : "Person"
},
"type" : "text_label"
},
{
"attributes" : null,
"type" : "space"
},
{
"attributes" : {
"field" : "researcher",
"last" : true,
"max_string_count" : 1,
"ngid_login" : false,
"ngw_login" : false,
"only_figures" : false,
"text" : "John Smith"
},
"type" : "text_edit"
}
]
All elements are always arranged vertically on the form in a strict order, so the root of the file is an array of objects.
- <json jsonobj attributes
Contains several pairs where each name can only be one of the reserved attribute’s keynames. The set of pairs depends on the type of the element.
Note:
if the element has no attributes the null value is correct.- <json string type
Can only be one of the reserved elem’s keynames.
18.3. Elements
18.3.1. Checkbox
Keyname
checkbox
Attributes
json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
json bool init_value: Initial value: on/off.
json bool last: Whether to keep value for further sessions of data collection.
json string text: Text which displays near the box of this checkbox. Can be void string.
Example
{
"attributes" : {
"field" : "voice_desc",
"init_value" : false,
"last" : false,
"text" : "Have voice description"
},
"type" : "checkbox"
}
18.3.2. Combobox
Keyname
combobox
Attributes
json bool allow_adding_values: Whether to allow user to add own items to this combobox during data collection.
json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
json bool input_search: Whether to show all corresponding items from this combobox at the time when user types some text.
json bool last: Whether to keep value for further sessions of data collection.
json int ngw_id: Currently always = -1.
json array values: The list of items for this combobox. An array of JSON objects where each one has two (or three) pairs of name-values. See below.
json string alias: Alias (displayed value) for the item. Can not be void string.
json string name: Name (inner value) for the item. Can not be void string.
json bool default: If exists: whether this item is showed as default one before user enters this combobox. The value is always true.
Example
{
"attributes" : {
"allow_adding_values" : false,
"field" : "tree_type",
"input_search" : false,
"last" : true,
"ngw_id" : -1,
"values" : [
{
"alias" : "Pine tree",
"name" : "1"
},
{
"alias" : "Oak tree",
"default": true,
"name" : "2"
},
{
"alias" : "Olive tree",
"name" : "3"
}
]
},
"type" : "combobox"
}
18.3.3. Coordinates
Keyname
coordinates
Attributes
json int crs: Coordinate Reference System. Currently always = 0 which refers to “EPSG:4326” (WGS 84).
json string field_lat: The name of the layer’s field to which this element saves its latitude value. Can be null if there was no field selected.
json string field_long: The name of the layer’s field to which this element saves its longitude value. Can be null if there was no field selected.
json int format: Format of the string. Currently always = 0 which refers to “dd.dddddd”.
json bool hidden: Whether this element will not be shown to user on the mobile device.
Example
{
"attributes" : {
"crs" : 0,
"field_lat" : "lat_str",
"field_long" : "lon_str",
"format" : 0,
"hidden" : false
},
"type" : "coordinates"
}
18.3.4. Counter
Keyname
counter
Attributes
json string field: The name of the layer’s field to which this element saves its value.
Note:
can be null if there was no field selected.json int increment: The value which is added to the current value each session of data collection. Range: from 1 to 65535.
json int init_value: Initial value from which incrementing starts. Range: from 0 to 65535.
json string prefix: Text string to add before the current counter’s number. Can be void string.
json string suffix: Text string to add after the current counter’s number. Can be void string.
json string prefix_from_list: Currently unused and is always null.
json string suffix_from_list: Currently unused and is always null.
Example
{
"attributes" : {
"field" : "id_collector",
"increment" : 1,
"init_value" : 0,
"prefix" : "XX",
"prefix_from_list": null,
"suffix" : "NV",
"suffix_from_list": null
},
"type" : "counter"
}
18.3.5. Date & Time
Keyname
date_time
Attributes
json int date_type: What to save for this date-time element. Possible types: 1) 1 for date, 2) 2 for time, 3) 3 for date and time.
json string datetime: Initial value for this date-time element. The string with date is always written in the specific format. Possible formats (according to types): 1) yyyy-MM-dd, 2) HH:mm:ss, 3) yyyy-MM-dd HH:mm:ss.
Note:
can be null which means that the current date/time/date-time will be written on the mobile device.json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
json bool last: Whether to keep value for further sessions of data collection.
Example
{
"attributes" : {
"date_type" : 1,
"datetime" : "2016-01-01 15:00:00",
"field" : "time",
"last" : false
},
"type" : "date_time"
}
18.3.6. Distance meter
Keyname
distance
Attributes
json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
Example
{
"attributes": {
"field": "dist_to_target"
},
"type": "distance"
}
18.3.7. Double combobox
Keyname
double_combobox
Attributes
json string field_level1: The name of the layer’s field to which the first (main) combobox saves its value. Can be null if there was no field selected.
json string field_level2: The name of the layer’s field to which the second (dependant) combobox saves its value. Can be null if there was no field selected.
json bool last: Whether to keep values for further sessions of data collection.
json array values: The list of items for the first (main) combobox. An array of JSON objects where each one has three (or four) pairs of name-values. See below.
Note:
if user had not defined any items for the first (main) combobox - the stub item is pasted with “alias”:”–” and “name”:”-1”.json string alias: Alias (displayed value) for the item.
json string name: Name (inner value) for the item.
json bool default: If exists: whether this item is showed as default one before user enters the first (main) combobox. The value is always true.
json array values: The list of items for the second (dependant) combobox. An array of JSON objects where each one has two (or three) pairs of name-values.
Example
{
"attributes" : {
"field_level1" : "state",
"field_level2" : "city",
"last" : true,
"values" : [
{
"alias" : "California",
"name" : "CA",
"values" : [
{
"alias" : "Los Angeles",
"name" : "1"
},
{
"alias" : "San Francisco",
"name" : "2"
},
{
"alias" : "Sacramento",
"default" : true,
"name" : "3"
}
]
},
{
"alias" : "New York",
"name" : "NY",
"values" : [
{
"alias" : "Albany",
"default" : true,
"name" : "4"
},
{
"alias" : "New York",
"name" : "5"
}
]
},
{
"alias" : "Oregon",
"name" : "OR",
"values" : [
{
"alias" : "--",
"name" : "-1"
}
]
}
]
},
"type" : "double_combobox"
}
18.3.8. Label
Keyname
text_label
Attributes
json string text: Text which displays in this text label. Can be a void string.
Example
{
"attributes" : {
"text" : "Biotope"
},
"type" : "text_label"
}
18.3.9. Photo
Keyname
photo
Attributes
json int gallery_size: The maximum amount of photos user can make. Range: from 1 to 5.
Example
{
"attributes" : {
"gallery_size" : 1
},
"type" : "photo"
}
18.3.10. Radiogroup
Keyname
radio_group
Attributes
json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
json bool last: Whether to keep value for further sessions of data collection.
json array values: The list of items for this combobox. An array of JSON objects where each one has two (or three) pairs of name-values. See below.
Note:
the array must have at least two items and one of them is always default.json string alias: Alias (displayed value) for the item. Can not be void string.
json string name: Name (inner value) for the item. Can not be void string.
json bool default: If exists: whether this item is showed as default one before user enters this radiogroup. The value is always true.
Example
{
"attributes" : {
"field" : "tree_type",
"last" : false,
"values" : [
{
"alias" : "Pine tree",
"default" : true,
"name" : "1"
},
{
"alias" : "Oak tree",
"name" : "2"
}
]
},
"type" : "radio_group"
}
18.3.11. Signature
Keyname
signature
Attributes
No attributes
Example
{
"attributes" : null,
"type" : "signature"
}
18.3.12. Space
Keyname
space
Attributes
No attributes
Example
{
"attributes" : null,
"type" : "space"
}
18.3.13. Splitted combobox
Keyname
split_combobox
Attributes
json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
json bool last: Whether to keep value for further sessions of data collection.
json array values: The list of items for this combobox.
json string label1: Left caption above the combobox.
json string label2: Right caption above the combobox.
json string alias: Left alias (displayed value) for the item. Can not be void string.
json string alias2: Right alias (displayed value) for the item. Can not be void string.
json string name: Name (inner value) for the item. Can not be void string.
json bool default: If exists: whether this item is showed as default one before user enters this combobox. The value is always true.
Example
{
"attributes": {
"field": "tree_type",
"label1": "Latin name",
"label2": "Italian name",
"last": false,
"values": [
{
"alias": "Viburnum lantana",
"alias2": "Viburno",
"default": true,
"name": "1472"
},
{
"alias": "Buxus sempervirens",
"alias2": "Bosso",
"name": "6741"
},
{
"alias": "Prunus persica",
"alias2": "Pesco",
"name": "1128"
}
]
},
"type": "split_combobox"
}
18.3.14. Tabs
Keyname
tabs
Attributes
No attributes
Other keys
json array pages: An array of objects where each has the following keys: “caption”, “elements” and optionally “default”.
json string caption: A text which is displayed in the header of the page.
json array elements: An array of objects similar to the main form array of objects.
json bool default: If this key exists and is equal to true than this page is default-showed to the user.
Example
{
"attributes": {
},
"pages": [
{
"caption": "TAB 1",
"elements": [
{
"attributes": {
"date_type": 2,
"datetime": null,
"field": "field_1",
"last": false
},
"type": "date_time"
},
{
"attributes": {
"field": "field_2"
},
"type": "distance"
}
]
},
{
"caption": "TAB 2",
"elements": [
]
},
{
"caption": "TAB 3",
"default": true,
"elements": [
{
"attributes" : {
"text" : "Some text"
},
"type" : "text_label"
}
]
}
],
"type": "tabs"
}
18.3.15. Text edit
Keyname
text_edit
Attributes
json string field: The name of the layer’s field to which this element saves its value. Can be null if there was no field selected.
json bool last: Whether to keep value for further sessions of data collection.
json int max_string_count: How much strings (not symbols!) can be entered to this text edit.
json bool ngid_login: Whether to replace the value of this text edit with NextGIS ID login. Mutually exclusive with “ngw_login”.
json bool ngw_login: Whether to replace the value of this text edit with NextGIS Web login. Mutually exclusive with “ngid_login”.
json bool only_figures: Whether to allow only numbers for user input to this text edit.
json string text: Initial text which displays in this text edit before user enters it. Can be a void string.
Example
{
"attributes" : {
"field" : "researcher",
"last" : true,
"max_string_count" : 1,
"ngid_login": false,
"ngw_login" : false,
"only_figures" : false,
"text" : "Researcher"
},
"type" : "text_edit"
}