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.
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 that 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.
Conferia.getUserAgendaRecords() => CSVRecord[]-
Similar to the methods above, this returns all records that are also 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.
})
Important: 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)-
Add an item to the user’s agenda. Will show the intro dialog if the user has never before added an item.
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.
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: CSV Record
Since you will primarily interact with CSV records, we document their shape here.
id-
An auto-generated ID for this record.
type-
Describes the type of this record. Can be
single,keynote,meta,special,session, orsession_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), andsessionOrder(the sorting of the presentations). abstract-
Only available for records of type
session_presentation,single,keynote, andspecial. author-
Only available for records of type
session_presentation,single,keynote, andspecial.
Note that, while
session_presentationrecords 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 ofsessionrecords.