Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/joaomonteir0/printheritage/llms.txt

Use this file to discover all available pages before exploring further.

PrintHeritage provides a guided, multi-step wizard for attaching time-series sensor data to any project. You can upload a CSV file, upload an Excel spreadsheet (XLSX), or connect to an external REST API endpoint. The wizard walks you through sensor configuration, source selection, column mapping, and a live chart preview before the data is committed to the project.

Sensor Configuration (NewSensorModal)

Before selecting a data source you must first define the sensor that will own the dataset. This is a three-step process:
1

Name and Description

Provide a sensor name (required) and an optional free-text description that describes the sensor and its physical location within the structure.
2

Units and Measurement Type

Choose a sensor type from the three available options — Temperature, Humidity, or Vibration. Selecting a type auto-populates the unit field:
Sensor TypeDefault Unit
Temperature°C
Humidity%
Vibrationmm/s
You can override the unit by typing directly into the unit field.
3

Chart Types

Select one or more supported chart types from Line, Area, Bar, and Scatter. You must also nominate a default chart type that will be used when the dataset is first displayed on the Monitoring Dashboard. At least one chart type must be selected before proceeding.
The sensor configuration you supply in this wizard is stored as dataset metadata alongside the time-series data. It is used by the Monitoring Dashboard to set the initial chart type and y-axis unit label.

Data Source Selection (AddDataResourceModal)

Once sensor metadata is confirmed, the Add Data Resource wizard opens. This wizard also progresses through numbered steps that vary slightly depending on the source type chosen.

Choosing a Source Type

Select Ficheiro CSV to upload a comma-separated values file from your local machine. The file is parsed in the browser using PapaParse with header: true and skipEmptyLines: true, so every row becomes a keyed object.Required format: The first row must be a header row. One column must be a date/time column identified by a header name containing date, data, timestamp, tempo, or time (case-insensitive). All other columns are treated as numeric sensor readings.
date,displacement,temperature
2024-01-01,0.12,21.3
2024-01-02,0.15,21.8
If the header row does not contain a recognisable date column, the wizard will default to the first column as the time axis. Always verify the time column selection in the column mapping step.
The wizard auto-detects the time column and pre-selects all remaining columns for import. You can deselect any columns you do not want to include.

Column Mapping (CSV and XLSX only)

After uploading a file, a column-selection step is shown before the preview:
1

Select the Time Column (X Axis)

Choose which column holds the timestamps. The wizard auto-detects this based on the column name but you can override the selection via a dropdown. This becomes the timeColumn field in the stored metadata.
2

Select Data Columns to Import

Every column except the time column is listed with a checkbox. Toggle individual columns on or off. At least one column must remain selected. Only selected columns are included in the selectedColumns metadata array and serialised into the stored dataset.

Date Parsing

Raw date values are normalised by the parseDate utility before storage. Supported input formats include:
  • ISO 8601 strings (e.g. 2024-01-01T00:00:00Z)
  • DD/MM/YY HH:mm and DD/MM/YYYY HH:mm slash-delimited formats
  • Any string parseable by the JavaScript Date constructor
Two-digit years are assumed to be in the 2000s.

Preview Step

After column mapping (or immediately after API configuration for API sources), the wizard enters a preview phase:
  1. A 2.5-second processing animation simulates data ingestion.
  2. On completion, a summary card shows the source filename (or API de Dados) and the total number of parsed entries.
  3. You can click Pré-visualizar gráfico to open an embedded ApexCharts chart rendered from up to 100 sample rows.
  4. If the sensor has multiple supported chart types, you can switch the default chart type from this screen — the change is persisted to the sensor metadata before final submission.

Saving the Dataset

Clicking Concluir on the preview step sends the following request:
PATCH /projects/{project_id}/data
with a JSON body structured as:
{
  "label": "T1 - Ala Norte",
  "metadata": {
    "sensorName": "T1 - Ala Norte",
    "sensorType": "Temperatura",
    "unit": "°C",
    "supportedChartTypes": ["Linha", "Área"],
    "defaultChartType": "Linha",
    "dataSource": "readings.csv",
    "timeColumn": "date",
    "selectedColumns": ["displacement", "temperature"]
  },
  "data": [
    { "date": "2024-01-01T00:00:00.000Z", "displacement": 0.12, "temperature": 21.3 },
    { "date": "2024-01-02T00:00:00.000Z", "displacement": 0.15, "temperature": 21.8 }
  ]
}
Each row value is coerced to a float (commas replaced with dots before parsing). Rows where a selected column value cannot be parsed as a number are stored as null.
After a successful import, a full-screen success confirmation is shown with a Concluir button. The project data is refreshed automatically so the new dataset appears immediately on the Monitoring Dashboard.

Build docs developers (and LLMs) love