mapcomplete/Docs/SpecialInputElements.md

6.9 KiB

Available types for text fields

The listed types here trigger a special input element. Use them in tagrendering.freeform.type of your tagrendering to activate them

Table of contents

  1. string
  2. text
  3. date
  4. nat
  5. int
  6. distance
  7. direction
  8. Input helper
  9. wikidata
  10. Helper arguments
  11. Example usage
  12. pnat
  13. float
  14. pfloat
  15. email
  16. url
  17. phone
  18. opening_hours
  19. Helper arguments
  20. Example usage
  21. color
  22. image
  23. simple_tag
  24. tag
  25. key
  26. translation
  27. icon
  28. fediverse
  29. id
  30. slope
  31. velopark
  32. currency

string

A simple piece of text

text

A longer piece of text. Uses an textArea instead of a textField

date

A date with date picker

nat

A whole, positive number or zero

int

A whole number, either positive, negative or zero

distance

A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"]

direction

A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl).

Input helper

This element has an input helper showing a map and 'viewport' indicating the direction. By default, this map is zoomed to zoomlevel 17, but this can be changed with the first argument

wikidata

A wikidata identifier, e.g. Q42.

Helper arguments

name

doc

key

the value of this tag will initialize search (default: name). This can be a ';'-separated list in which case every key will be inspected. The non-null value will be used as search

options

A JSON-object of type { removePrefixes: string[], removePostfixes: string[] }.

subarg | doc -------- | ----- removePrefixes | remove these snippets of text from the start of the passed string to search. This is either a list OR a hash of languages to a list. The individual strings are interpreted as case ignoring regexes removePostfixes | remove these snippets of text from the end of the passed string to search. This is either a list OR a hash of languages to a list. The individual strings are interpreted as case ignoring regexes. instanceOf | A list of Q-identifier which indicates that the search results must be an entity of this type, e.g. Q5 for humans notInstanceof | A list of Q-identifiers which indicates that the search results must not be an entity of this type, e.g. Q79007 to filter away all streets from the search results

Example usage

The following is the 'freeform'-part of a layer config which will trigger a search for the wikidata item corresponding with the name of the selected feature. It will also remove '-street', '-square', ... if found at the end of the name

"freeform": {
    "key": "name:etymology:wikidata",
    "type": "wikidata",
    "helperArgs": [
        "name",
        {
            "removePostfixes": {"en": [
                "street",
                "boulevard",
                "path",
                "square",
                "plaza",
            ],
             "nl": ["straat","plein","pad","weg",laan"],
             "fr":["route (de|de la|de l'| de le)"]
             },

            "#": "Remove streets and parks from the search results:"
             "notInstanceOf": ["Q79007","Q22698"]
        }

    ]
}

Another example is to search for species and trees:

 "freeform": {
        "key": "species:wikidata",
        "type": "wikidata",
        "helperArgs": [
          "species",
          {
          "instanceOf": [10884, 16521]
        }]
      }

pnat

A strict positive number

float

A decimal number

pfloat

A positive decimal number or zero

email

An email adress

url

The validatedTextField will format URLs to always be valid and have a https://-header (even though the 'https'-part will be hidden from the user. Furthermore, some tracking parameters will be removed

phone

A phone number

opening_hours

Has extra elements to easily input when a POI is opened.

Helper arguments

name

doc

options

A JSON-object of type { prefix: string, postfix: string }.

subarg | doc -------- | ----- prefix | Piece of text that will always be added to the front of the generated opening hours. If the OSM-data does not start with this, it will fail to parse. postfix | Piece of text that will always be added to the end of the generated opening hours

Example usage

To add a conditional (based on time) access restriction:

"freeform": {
    "key": "access:conditional",
    "type": "opening_hours",
    "helperArgs": [
        {
          "prefix":"no @ (",
          "postfix":")"
        }
    ]
}

Don't forget to pass the prefix and postfix in the rendering as well: {opening_hours_table(opening_hours,yes @ &LPARENS, &RPARENS )

color

Shows a color picker

image

Same as the URL-parameter, except that it checks that the URL ends with .jpg, .png or some other typical image format

simple_tag

A simple tag of the format key=value where key conforms to a normal key `

tag

A simple tag of the format key=value OR a tagExpression

key

Validates a key, mostly that no weird characters are used

translation

Makes sure the the string is of format Record<string, string>

icon

Makes sure that a valid .svg-path is added

fediverse

Validates fediverse addresses and normalizes them into @username@server-format

id

Checks for valid identifiers for layers, will automatically replace spaces and uppercase

slope

Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction.

velopark

A special URL-validator that checks the domain name and rewrites to the correct velopark format.

currency

Validates monetary amounts

This document is autogenerated from src/UI/InputElement/Validators.ts