SQLPage v0.20.4 documentation

If you are completely new to SQLPage, you should start by reading the get started tutorial, which will guide you through the process of creating your first SQLPage application.

Building an application with SQLPage is quite simple. To create a new web page, just create a new SQL file. For each SELECT statement that you write, the data it returns will be analyzed and rendered to the user. The two most important concepts in SQLPage are components and parameters.

To select a component and set its top-level properties, you write the following SQL statement:

SELECT 'component_name' AS component, 'my value' AS top_level_parameter_1;

Then, you can set its row-level parameters by writing a second SELECT statement:

SELECT my_column_1 AS row_level_parameter_1, my_column_2 AS row_level_parameter_2 FROM my_table;

This page documents all the components provided by default in SQLPage and their parameters. Use this as a reference when building your SQL application. If at any point you need help, you can ask for it on the SQLPage forum.

If you know some HTML, you can also easily create your own components for your application.

components

The "map" component

Displays a map with markers on it. Useful in combination with PostgreSQL's PostGIS or SQLite's spatialite.

Introduced in SQLPage v0.8.0.

Top-level parameters

attribution

Text to display at the bottom right of the map. Defaults to "© OpenStreetMap".

class

class attribute added to the container in HTML. It can be used to apply custom styling to this item through css. Added in v0.18.0.

id

id attribute added to the container in HTML. It can be used to target this item through css or for scrolling to this item through links (use "#id" in link url).

latitude

Latitude of the center of the map.

longitude

Longitude of the center of the map.

max_zoom

How far the map can be zoomed in. Defaults to 18. Added in v0.15.2.

tile_source

Custom map tile images to use, as a URL. Defaults to "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png". Added in v0.15.2.

zoom

Zoom Level to apply to the map. Defaults to 5.

Row-level parameters

latitude

REQUIRED. Latitude of the marker. Required only if geojson is not set.

longitude

REQUIRED. Longitude of the marker. Required only if geojson is not set.

color

Background color of the marker on the map. Requires "icon" to be set.

description

Plain text description of the marker, to be displayed in a tooltip when the marker is clicked.

description_md

Description of the marker, in markdown, rendered in a tooltip when the marker is clicked.

geojson

A GeoJSON geometry (line, polygon, ...) to display on the map. Can be styled using geojson properties using the name of leaflet path options. Introduced in 0.15.1. Accepts raw strings in addition to JSON objects since 0.15.2.

icon

Name of the icon to use for the marker

link

A link to associate to the marker's title. If set, the marker tooltip's title will be clickable and will open the link.

size

Size of the marker icon. Requires "icon" to be set. Introduced in 0.15.2.

title

Title of the marker, displayed on hover and in the tooltip when the marker is clicked.

Example 1

Basic example of a map with a marker

select 
    'map' as component,
    1     as zoom;
select 
    'New Delhi' as title,
    28.6139     as latitude,
    77.209      as longitude;

Result

Loading map...

Example 2

Basic marker defined in GeoJSON. Using leaflet marker options as GeoJSON properties.

select 
    'map' as component,
    5     as zoom,
    8     as max_zoom,
    600   as height,
    -25   as latitude,
    28    as longitude,
    'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png' as tile_source,
    ''    as attribution;
select 
    'peace' as icon,
    20      as size,
    'https://en.wikipedia.org/wiki/Nelson_Mandela' as link,
    '{"type":"Feature", "properties": { "title":"Mvezo, Birth Place of Nelson Mandela" }, "geometry": { "type":"Point", "coordinates": [28.49, -31.96] }}' as geojson;

Result

Loading map...

Example 3

Map of Paris. Illustrates the use custom styling, and GeoJSON to display a line between two points. In a real-world scenario, the GeoJSON could be generated by calling PostGIS's ST_AsGeoJSON or Spatialite's AsGeoJSON functions on a geometry column.

select 
    'map'   as component,
    'Paris' as title,
    11      as zoom,
    48.85   as latitude,
    2.34    as longitude;
select 
    'Notre Dame'             as title,
    'building-castle'        as icon,
    'indigo'                 as color,
    48.853                   as latitude,
    2.3498                   as longitude,
    'A beautiful cathedral.' as description_md,
    'https://en.wikipedia.org/wiki/Notre-Dame_de_Paris' as link;
select 
    'Eiffel Tower' as title,
    'tower'        as icon,
    'yellow'       as color,
    48.8584        as latitude,
    2.2945         as longitude,
    'A tall tower. [Wikipedia](https://en.wikipedia.org/wiki/Eiffel_Tower)' as description_md;
select 
    'Tower to Cathedral'      as title,
    JSON('{"type":"LineString","coordinates":[[2.2945,48.8584],[2.3498,48.8530]]}') as geojson,
    'teal'                    as color,
    'A nice 45 minutes walk.' as description;

Result

Paris

Loading map...

Official SQLPage documentation