SQLPage v0.17.1 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

alert
A visually distinctive message or notification.
authentication
An advanced component that can be used to create pages with password-restricted access. When used, this component has to be at the top of your page, because once the page has begun being sent to the browser, it is too late to restrict access to it. The authentication component checks if the user has sent the correct password, and if not, redirects them to the URL specified in the link parameter. If you don't want to re-check the password on every page (which is an expensive operation), you can check the password only once and store a session token in your database. You can use the cookie component to set the session token cookie in the client browser, and then check whether the token matches what you stored in subsequent pages.
button
A versatile button component do display one or multiple button links of different styles.
card
A grid where each element is a small card that displays a piece of data.
chart
A component that plots data. Line, area, bar, and pie charts are all supported. Each item in the component is a data point in the graph.
cookie
Sets a cookie in the client browser, used for session management and storing user-related information. This component creates a single cookie. Since cookies need to be set before the response body is sent to the client, this component should be placed at the top of the page, before any other components that generate output. After being set, a cookie can be accessed anywhere in your SQL code using the `sqlpage.cookie('cookie_name')` pseudo-function.
csv
A button that lets the user download data as a CSV file. Each column from the items in the component will map to a column in the resulting CSV.
datagrid
Display small pieces of information in a clear and readable way. Each item has a name and is associated with a value.
debug
Display all the parameters passed to the component. Useful for debugging: just replace the name of the component you want to debug with 'debug'.
dynamic
A special component that can be used to render other components, the number and properties of which are not known in advance.
form
A series of input fields that can be filled in by the user. The form contents can be posted and handled by another sql file in your site. The value entered by the user in a field named x will be accessible to the target SQL page as a variable named $x. For instance, you can create a SQL page named "create_user.sql" that would contain "INSERT INTO users(name) VALUES($name)" and a form with its action property set to "create_user.sql" that would contain a field named "name".
hero
Display a large title and description for your page, with an optional large illustrative image. Useful in your home page, for instance.
http_header
An advanced component that can be used to create redirections, set a custom caching policy to your pages, or set any HTTP header. If you are a beginner, you probably don't need this component. When used, this component has to be the first component in the page, because once the page is sent to the browser, it is too late to change the headers. Any valid HTTP header can be used as a top-level parameter for this component. HTTP headers are additional pieces of information sent with responses to web requests that provide instructions or metadata about the data being sent — for example, setting cache control directives to control caching behavior or specifying the content type of a response.
json
For advanced users, allows you to easily build an API over your database. The json component responds to the current HTTP request with a JSON object. This component must appear at the top of your SQL file, before any other data has been sent to the browser.
list
A vertical list of items. Each item can be clickable and link to another page.
map
Displays a map with markers on it. Useful in combination with PostgreSQL's PostGIS or SQLite's spatialite.
redirect
Redirects the user to another page. This component is useful for implementing redirects after a form submission, or to redirect users to a login page if they are not logged in. Contrary to the http_header component, this component completely stops the execution of the page after it is called, so it is suitable to use to hide sensitive information from users that are not logged in, for example. Since it uses an HTTP header to redirect the user, it is not possible to use this component after the page has started being sent to the browser.
shell
Personalize the "shell" surrounding your page contents. Used to set properties for the entire page.
steps
Guide users through multi-stage processes, displaying a clear list of previous and future steps.
tab
Build a tabbed interface, with each tab being a link to a page. Each tab can be in two states: active or inactive.
table
A table with optional filtering and sorting. Unlike most others, this component does not have a fixed set of item properties, any property that is used will be rendered directly as a column in the table.
text
A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.
timeline
A list of events with a vertical line connecting them.

The "chart" component

A component that plots data. Line, area, bar, and pie charts are all supported. Each item in the component is a data point in the graph.

Top-level parameters

type

REQUIRED. The type of chart: "line", "area", "bar", "column", "pie", "scatter", or "bubble".

color

The name of a color in which to display the chart. If there are multiple series in the chart, this parameter can be repeated multiple times.

horizontal

Displays a bar chart with horizontal bars instead of vertical ones.

labels

Whether to show the data labels on the chart or not.

logarithmic

Display the y-axis in logarithmic scale.

marker

Marker size

stacked

Whether to cumulate values from different series.

time

Whether the x-axis represents time. If set to true, the x values will be parsed and formatted as dates for the user.

title

The name of the chart.

toolbar

Whether to display a toolbar at the top right of the chart, that offers downloading the data as CSV.

xticks

Number of ticks on the x axis.

xtitle

Title of the x axis, displayed below it.

ymax

The maximum value for the y-axis.

ymin

The minimal value for the y-axis.

ytitle

Title of the y axis, displayed to its left.

ztitle

Title of the z axis, displayed in tooltips.

Row-level parameters

x

REQUIRED. The value of the point on the horizontal axis

y

REQUIRED. The value of the point on the vertical axis

label

An alias for parameter "x"

series

If multiple series are represented and share the same y-axis, this parameter can be used to distinguish between them.

value

An alias for parameter "y"

Example 1

An area chart representing a time series, using the top-level property time. Ticks on the x axis are adjusted automatically, and ISO datetimes are parsed and displayed in a readable format.

select 
    'chart'             as component,
    'Quarterly Revenue' as title,
    'area'              as type,
    'indigo'            as color,
    5                   as marker,
    TRUE                as time;
select 
    '2022-01-01T00:00:00Z' as x,
    15                     as y;
select 
    '2022-04-01T00:00:00Z' as x,
    46                     as y;
select 
    '2022-07-01T00:00:00Z' as x,
    23                     as y;
select 
    '2022-10-01T00:00:00Z' as x,
    70                     as y;
select 
    '2023-01-01T00:00:00Z' as x,
    35                     as y;
select 
    '2023-04-01T00:00:00Z' as x,
    106                    as y;
select 
    '2023-07-01T00:00:00Z' as x,
    53                     as y;

Result

Quarterly Revenue

Loading...

Example 2

A pie chart.

select 
    'chart'   as component,
    'Answers' as title,
    'pie'     as type,
    TRUE      as labels;
select 
    'Yes' as label,
    65    as value;
select 
    'No' as label,
    35   as value;

Result

Answers

Loading...

Example 3

A basic bar chart

select 
    'chart'             as component,
    'bar'               as type,
    'Quarterly Results' as title,
    TRUE                as horizontal;
select 
    'Tom' as label,
    35    as value;
select 
    'Olive' as label,
    15      as value;

Result

Quarterly Results

Loading...

Example 4

A bar chart with multiple series.

select 
    'chart'    as component,
    'Expenses' as title,
    'bar'      as type,
    TRUE       as stacked,
    TRUE       as toolbar;
select 
    'Marketing' as series,
    2021        as x,
    35          as value;
select 
    'Marketing' as series,
    2022        as x,
    15          as value;
select 
    'Human resources' as series,
    2021              as x,
    30                as value;
select 
    'Human resources' as series,
    2022              as x,
    55                as value;

Result

Expenses

Loading...

Example 5

A scatter plot with multiple custom options.

select 
    'chart'               as component,
    'Gross domestic product and its growth' as title,
    'scatter'             as type,
    'Growth Rate'         as xtitle,
    'GDP (Trillions USD)' as ytitle,
    8                     as marker,
    0                     as xmin,
    10                    as xmax,
    0                     as ymin,
    25                    as ymax,
    10                    as yticks;
select 
    'Brazil' as series,
    2.5      as x,
    2        as y;
select 
    'China' as series,
    6.5     as x,
    14      as y;
select 
    'United States' as series,
    2.3             as x,
    21              as y;
select 
    'France' as series,
    1.5      as x,
    3        as y;
select 
    'South Africa' as series,
    0.9            as x,
    0.3            as y;

Result

Gross domestic product and its growth

Loading...

Example 6

Heatmaps

You can build heatmaps using the heatmap top-level property.

The data format follows the apexcharts heatmap format, where each series is represented as a line in the chart:

  • The x property of each item will be used as the x-axis value.
  • The series property of each item will be used as the y-axis value.
  • The y property of each item will be used as the value to display in the heatmap

The color property sets the color of each series separately, in order.

select 
    'chart'                     as component,
    'Survey Results'            as title,
    'heatmap'                   as type,
    'Database managemet system' as ytitle,
    'Year'                      as xtitle,
    'blue'                      as color,
    'blue'                      as color,
    'blue'                      as color;
select 
    'PostgreSQL' as series,
    '2000'       as x,
    48           as y;
select 
    'SQLite' as series,
    '2000'   as x,
    14       as y;
select 
    'MySQL' as series,
    '2000'  as x,
    78      as y;
select 
    'PostgreSQL' as series,
    '2010'       as x,
    65           as y;
select 
    'SQLite' as series,
    '2010'   as x,
    22       as y;
select 
    'MySQL' as series,
    '2010'  as x,
    83      as y;
select 
    'PostgreSQL' as series,
    '2020'       as x,
    73           as y;
select 
    'SQLite' as series,
    '2020'   as x,
    28       as y;
select 
    'MySQL' as series,
    '2020'  as x,
    87      as y;

Result

Survey Results

Loading...

Official SQLPage documentation