API Charts
API charts in the legacy agents were declared using express routes.
In the new agent, you will need to use either the agent.addChart or the collection.addChart function, depending on if the chart is to be displayed on a record of a collection or a dashboard.
Code cheatsheet
router.post
agent.addChart collection.addChart(...)
Liana.StatSerializer
return resultBuilder.value(...) return resultBuilder.distribution(...)
request.query?.record_id
context.recordId
How to migrate
Migrating should be straightforward: the only differences are that:
dashboard charts are now declared using the
agent.addChartfunction.collection charts are now declared using the
collection.addChartfunction, and access the record id usingcontext.recordIdinstead ofrequest.query?.record_id.Both types should use the
resultBuilderhelper to return the chart data.
router.post('/stats/mrr', (req, res) => {
// Load data
const from = moment.utc('2018-03-01').unix();
const to = moment.utc('2018-03-31').unix();
const charges = await stripe.charges.list({ created: { gte: from, lte: to } });
// Compute chart
const mrr = charges.reduce((acc, charge) => acc + charge.amount, 0);
const json = new Liana.StatSerializer({value: mrr}).perform();
res.send(json);
});agent.addChart('monthlyRecuringRevenue', async (context, resultBuilder) => {
// Load data
const from = moment.utc('2018-03-01').unix();
const to = moment.utc('2018-03-31').unix();
const charges = await stripe.charges.list({ created: { gte: from, lte: to } });
// Compute chart
const mrr = charges.reduce((acc, charge) => acc + charge.amount, 0);
return resultBuilder.value(mrr);
});Last updated
Was this helpful?