LRS Custom Dashboards and Charts

Custom Dashboards and Charts


The Veracity Learning LRS offers several ways to generate custom dashboards. At the most basic level, you can place widgets (charts or lists) on a dashboard page. You can customize each widget with a set of options like what actor, what object, or what verb to use. Beyond that, we offer a set of highly flexible widgets that you can use to build custom bar, pie, and timeseries charts. These widgets include a point-and-click interface to build many common queries. We also offer a fully customizable Custom VQL Query widget, which uses the same query language as our aggregation endpoint. This widget lets you build very sophisticated analyses and pair them with a huge variety of chart options.
Notes
For on-premises enterprise customers, you can customize your server with additional widgets through an easy-to-use API.

Custom Dashboards

The most basic way to get additional insight into your data is to use our Custom Dashboard feature. Each custom dashboard can have a set of configurable widgets on it, each of which shows a chart or table.

How to Create a Custom Dashboard

Start by loading the Analytics page for your LRS. Do this by clicking the Analytics button on the left side menu.

LRS Main Menu

Then open the Custom Dashboards menu item on the left and click New Dashboard.

LRS Analytics menu

This creates a new custom dashboard and lets you enter a title. Click Create to save the dashboard.

New Dashboard dialog box

You will now see the new dashboard saved under Custom Dashboards. Click the pencil icon to edit the dashboard.

Custom Dashboards menu

From here you can add widgets, configure widgets, and rename the dashboard.

Custom Dashboard menu options

To add a widget, click Add a Widget from the menu.

Add a Widget menu option

You'll now see a popup with a list of widget types you can select. Click More in the bottom-left to view the full list of widget types to choose from. Choose a widget from the list by clicking it.

Add a Widget dialog box

Below each widget button is a description of its function.

More Widget Types dialog box

When you select a widget, one will be added to the dashboard. The layout engine will choose a location and size for the widget, which you can edit later. If the widget expects configuration, its configuration dialog will appear.

Chart Builder form

Every widget exposes a set of parameters that modify how the widget works. Generally, widgets expose properties to help scope their chart to a particular actor, object, or verb. Many also let you override the global time range. You must click the Ok button to save the parameters. Click the Cancel button to discard the changes.

You can remove, move, and size, and configure widgets with the menu on the top right. These options are only visible when the dashboard is in "Edit mode". Click the Edit Widget icon to launch each widget's configuration dialog. You can move the widget by clicking the top center movement icon, and you can resize it by clicking and dragging the corners. The layout engine will move other widgets around as necessary.

Widget icons

You might find that your parameters result in an empty chart. This simply means that there is not enough data to display a chart.
Notes
When you exit Edit mode, if a widget doesn't have enough data to display, then it will be hidden completely.

No Data widget

You can set the title of the dashboard with the Rename option in the left menu. Change the title and click the Rename button to save it.

Rename Dashboard dialog box

All custom dashboards will be shown on the list in the left-hand menu. Anyone with Analytics permissions on the LRS can view these dashboards.

Custom Dashboards menu

The Chart Builder

The Chart Builder widget presents a flexible and user-friendly form for building bar, pie, and timeseries charts, including split or multiple series.

The Chart Builder is divided into four major sections. On the left is the series editor form where you'll make all your configuration changes. Top right is the render preview. Bottom right, you'll find both the full data returned by the analysis, and the computed query Veracity Query Language (VQL). You can use the VQL in a variety of places to reproduce this chart.

Series Editor
Series Editor Form

Render Preview

Render Preview

Data and VQL

Returned Data (left), Computed VQL Query (right)

The render preview will update automatically as you make changes to the chart.

Series Options When Chart Type Is Bar or Pie

  1. Series Title — This is a title for each series. In a multi series chart, the legend will use this title to label the columns or slices.
  2. Make a column for each unique value of — This allows you to specify a path into an xAPI statement. The chart builder will generate one column or slice for each unique value found on this path.
  3. Set the height (or width) of the (column or slice) to — This selects a metric setting the value of the column or slice. By default, the value is the Total Count of the statements that have the given unique value (see above). You can change this to a metric aggregation such as the AverageSumStandard DeviationMinimumMaximum, or Unique Count across some field.
  4. Of the values at — When the value of the bar or slice is not the count, you can tell the system what values to include when taking the average, sum, etc. Supply a path into an xAPI statement that selects a number (See note below*).
  5. Sort By — By default, you'll get the top ten columns or slices by the count of statements that have the unique value on the supplied path. Even if the value of the bars is some metric, you'll still sort by the count by default. If the sort is not set or is Count descending (or Count ascending), then you're showing something like "scores of the most (or least) common students." Set the sort order to Metric descending (or Metric ascending) to show "highest (or lowest) scoring students", which may not include the most frequently seen actors.
  6. How many columns to show — The number of columns or slices to compute.
  7. Matching statements where — This lets you filter the dataset based on any path and value.
Notes
*If you want to choose an xAPI statement duration property as a value path, then don’t use result.duration. It returns a string value: e.g., PT36.69S. Use meta.duration instead. It returns an integer value, in milliseconds: e.g., 36690.
The below image shows the configuration to find the top ten most frequently seen actors across all data (within the globally selected time range).

Bar chart of ten most frequent actors

This image shows the same actors but makes the value of the bar the average of each actor's scaled score.

Bar chart of scores of ten most frequent actors

Now, we change the sort order to Metric Descending to select the ten actors with the highest average score.

Bar chart of ten highest scoring actors

This version adds a filter, so we're seeing the top scoring actors in only the "Data Science" course.

Bar chart of ten highest scoring actors in one course

Splitting and Adding Series

A chart can have either one series, which you can optionally "split", or it can have multiple series. You cannot split a series if you have multiple, and you cannot add a second series if you've enabled a split.

Split Series

You can subdivide each bar based on the uniqueness of some other field. Click + Split Series at the bottom to do so. When you add a series split, you'll see these values in the Series Split portion of the form.

Series Editor with Split Series button

This chart shows a bar chart of the most frequent actors, split by the object.

Bar chart of ten most frequent objects for each of the ten most frequent actors

Split series charts ignore the metric of the original series. Instead, the value of the bar is the sum of all its split sections. You can configure the metric for the series split just like the original series.

Multi Series

You can plot two different series side-by-side along the X-axis. The rendering engine will attempt to group the bars by common values on the X-axis. If you don't select a query that generates the same X-axis values for both series, each entire chart will appear in order on the X-axis.

Here's a chart showing students' average scores versus their standard deviation.

Multi series bar chart of avg score vs std dev


This chart plots students in one series and courses in the second. We end up with two different charts side-by-side on the X-axis.

Multi series bar chart of top students and courses

To add a series, click + Add Series at the bottom of the Series Editor form, which adds a blank series that you must fill-in.
Notes
Another easier way to add a series is to build the first series, and then click + Duplicate Series inside the form and change the duplicate only as much as needed.

Series Options When Chart Type Is Timeseries

  1. Series Title — This is a title for each series. In a multi series chart, the legend will use this title to label the lines.
  2. The field representing the time value is — Choose a path to a time value in the xAPI statements. This is usually either timestamp or stored but could be some extension value. 
  3. Set the value of the line at each time to — This selects a metric setting the value of the series. By default, the value is the Total Count of the statements that fall on the given day. You can change this to a metric aggregation such as the AverageSumStandard DeviationMinimumMaximum, or Unique Count across some field.
  4. Of the values at — When the value of the series is not the Total Count, you can tell the system what values to include when taking the average, sum, etc. Supply a path into the xAPI statement that selects a number.
  5. Matching statements where — This allows you to filter the dataset based on any path and value.
This image shows the total count of statements over time.

Times series of total statements

This image shows the average score for one course over time.

Time series of statements in one course

Split Timeseries

You can split a timeseries chart just like a bar chart.
Notes
Some series may not extend to the bounds of the chart, and some series may not have data at every time interval.
Here, we split the above chart by actor.id. Because the default split metric is Total Count, we see the relative traffic over time in this one course for the top ten actors.

Time series of total statements in course, split over top ten students

Multi Timeseries

A multi time series will simply plot two different lines over each other on the X-axis. The Series Title will be used to label the lines. Here's an example showing the relative traffic over time in two different courses.

Time series of total statements in two courses

The List Builder

The list builder lets you show information in a scrollable list widget. Each list item has a title, a subtitle, and an icon.

List of ten highest scoring students, and their average score

The List Builder works almost exactly like the Chart Builder, but with a different rendering. See the documentation on the Chart Builder for information on how to filter and sort data or compute metrics. Unlike the Chart Builder, the List Builder has no option for multi or split series.

The List Builder uses JavaScript string interpolation for setting the title and subtitle of each list item. You can use the template string, ${value.}, to select some portion of the data. Here's a handy list of values:
  1. ${value._id} — This is the value of the field selected in the "Make an entry for each unique value of" part of the configuration.
  2. ${value.canonical.display} — If the value at the _id is the URI of an actor, activity, or verb, then value.canonical will automatically be populated with the canonical representation of the object. value.canonical.display always returns the best available display name for the object. In general, it's best to make lists over the IDs of things and use the canonical value for display. This prevents a change in a course title or actor name from being counted as a new course or actor. The chart renderer does this for you automatically, but you'll need to let us know using the JavaScript syntax in the List Builder.
  3. ${value.count} — The number of statements that matched the unique value of the list entry.
  4. ${value.metric} — The computed metric value.
Notes
Look in the Returned Data window in the lower-right of the List Builder to see all the values available in the selected path.
Notes
You can use expression substitution to perform some simple arithmetic in the interpolated string: like ${value.metric * 100}.

The Metric Builder

The Metric Builder is nearly exactly like the list builder, except it presents only one item as a large, centered title.

Metric of average score

    • Related Articles

    • Configuration

      Setting Configuration Values These settings only apply to on-site installations. When using a hosted SaaS plan, Veracity will manage the settings for your deployment. Contact support if you require modifications to the settings on your hosted ...
    • Accessibility Support

      Accessibility Compliance While Veracity Learning is not inherently 508 compliant, users can create and publish alternative access options that adhere to Section 508 and WCAG 2.0 AA guidelines. Section 508 compliance is achieved by implementing ...
    • Versions of Veracity Learning

      Veracity Learning LRS comes in a few versions. The main version, and the one you're most likely looking at right now, is LRS.io. LRS.io (SaaS Hosted Plans) This is our cloud hosted SaaS service, where anyone can create an LRS. You can use the free ...
    • Veracity Learning Basics

      Veracity Learning is an easy to use, cloud or self-hosted Learning Record Store (LRS). The most essential feature of an LRS is that it receives and processes eXperience API (xAPI) data transactions. xAPI is a new standard for moving around ...
    • LMS Integration

      The Veracity Learning offers seamless integration with your LMS to allow instructors and students to access the services of the LRS without leaving their LMS environment. This is accomplished via LTI (Learning Tools Interoperability), a standard from ...