API
While simply setting up Conferia is likely sufficient for many conferences, the library comes with a powerful API that allows you to extend and customize its functionality further.
Warning
Using the API requires some basic knowledge of (asynchronous) JavaScript. Also, the API has no guard rails against improper behavior. Make sure you understand what you do! It is very easy to break things.
Accessing the Conferia Instance
Before you can work with the Conferia library, you need to access the Conferia instance that you create when calling new Conferia(). In the quickstart guide, we have simply created a Conferia instance and assigned it to the variable conf:
const conf = new Conferia({
parent: document.body,
src: '/program.csv'
})
You can now access the conf object to programmatically control the instance.
Awaiting the Initial Load
Immediately when you instantiate the library, it will not be of much use, because it first needs to fetch the CSV data and parse it. This can take some time. To get notified once this is done, you can use the awaitBoot method. This method returns a Promise. When this promise resolves, you can be sure that the library has loaded the initial batch of data and you can access it:
conf.awaitBoot().then(() => {
// Now you can, e.g., access the records from the object.
})
Note
This will only work directly after the initialization of the library. If you have configured Conferia to periodically reload the data, you will have to retrieve the updated records yourself from time to time.
API Reference
In the following, we document all methods and properties of the Conferia instance that you can use.
Instance Methods
Conferia offers three methods to retrieve a subset of CSV records from the instance that you can access. Each one returns a list of CSVRecords. To see the reference for the CSVRecord objects, see its type reference below.
Conferia.getRecords() => CSVRecord[]
This method returns all records from the instance. These will be already parsed and are the same that Conferia will display on the board. You can use this to, e.g., offer the entire agenda also as a list. To see what this could look like, take a look at the IC2S2 2025 program page.
Conferia.getVisibleRecords() => CSVRecord[]
This method returns all currently visible records from the instance. That is, this method gives you the same subset of the records that are currently visible on the schedule board. This could be just the current day, or user search results.
Conferia.getUserAgendaRecords() => CSVRecord[]
Similar to the methods above, this returns all records that are part of the user agenda.
Instance Properties
Besides methods, the Conferia instance also exposes a set of public properties that allow you to interact with the instance:
Conferia.state
This is the state machine for the library. It exposes a get and a set method to change the state, and an event listener to be notified when the state changes. Which state properties are part of the application state can differ between releases, so instead of documenting all current properties here, we refer you to the source code, where you can always find an up-to-date list of settings that the state includes.
In general, you can interact with the state like so:
// Get a property
const value = conf.state.get('propertyName')
// Set a property
conf.state.set('propertyName', value)
conf.state.on('change', (which, value) => {
// This callback will be called whenever the state changes. "which" includes
// the property key, and "value" the new value.
})
Caution
We expose this for the convenience of extending Conferia, but we take no responsibility if you set the library into an erroneous state. There is no state recovery built in. Use this at your own risk.
Conferia.agenda
This accessor allows you to access the personal user agenda. You could use this, e.g., in conjunction with the record retrieval methods to add or remove items from a user's agenda if you provide a custom schedule list. The agenda works very similar to the application state, except that the agenda always works with the id properties of a CSV record.
You have the following methods at your disposal:
conf.agenda.addItem(record.id)
Adds an item to the user's agenda. Will show the intro dialog to the user if the user has never before added an item, which means that you should not do this without user interaction.
conf.agenda.removeItem(record.id)
Removes an item from the user's agenda.
conf.agenda.clearPersonalAgenda()
Clears the entire agenda. Will trigger a user confirmation dialog, which means you should not do this without user interaction.
conf.agenda.hasItem(record.id)
Checks whether the provided record is on the user's agenda.
conf.agenda.getItems()
Returns all items on the user's agenda.
Type Reference: CSVRecord
Since you will primarily interact with CSV records, we document their shape here. If in doubt, please check the source code to see the up-to-date shape.
id
An auto-generated ID for this record.
type
Describes the type of this record. Can be single, keynote, meta, special, session, or session_presentation.
dateStart
The start of the event, as a luxon DateTime.
dateEnd
The end of the event, as a luxon DateTime.
title
The title of the event.
location
Optional (can be undefined), the location string for this event.
chair
Optional (can be undefined), the chair for this event.
notes
Optional (can be undefined), any notes for this event.
presentations
Only for session records. Contains a list of all presentations in this session. Presentations have all the general properties of CSV records (title, date, etc.) plus abstract, author, session (the session title), and sessionOrder (the sorting of the presentations).
abstract
Only available for records of type session_presentation, single, keynote, and special.
author
Only available for records of type session_presentation, single, keynote, and special.
Note
While session_presentation records contain the same type of information as other records, they will never be part of lists of CSV records returned from the object. Instead, they are always part of session records.