What is a Line Report?
The Line Report displays learner performance on a line chart. Choose multiple measures and the Line Report will display values with colored lines. It’s ideal for viewing change in measure values over time.
Creating and Editing a Line Report
Use the report builder to create new Line Reports and to configure existing Line Reports.
Line Report Filters and Options
Beyond the typical report builder filters and options, the Line Report provides options that are unique to the Line Report.
Line Section
When setting up a new Line Report or configuring an existing Line Report, click Line in the filter menu:
Below are the different options in the Line section:
Organized
On the Organized menu, you’ll choose what you’d like to rank on the Line Report. Just choose an option from the Organized menu and the Line Report will organize data by what you’ve chosen. Line reports are normally configured to be organized by time durations (day, month or year) but it can also be organised by any part of your Watershed data.

The Line Report also allows you to specify a second dimension. If specified this will create additional lines per measure, for each item in the second dimension you select. We recommend using the second dimension option only with a small number of measures (ideally just one measure) to avoid too many lines. Your reports are clearer if you keep them simple.

Line reports can also use non time based dimensions, to configure these see our article on Advanced Dimensions.
Measures
On the Measures menu, you’ll choose how you’d like to rank what you chose in the Organized menu. You can choose multiple measures for the same Line Report, but we don’t recommending choosing more than 4 to keep your chart clear.

To add a measure to the Line, choose a measure from the Select a Measure menu and click the Add Measure button next to the menu. You’ll see the measure added to the Line, and the measure will be added to the Measures section. To deselect a measure, click the X next to the Measure in the Measures section:
Chart Type
Chart Type determines if the line chart will shade in the area under each line.
- The Line option will not show any shading under the line
- The Area option will shade under each line with the same color as the line.
Charts
Charts determines if the report viewer will view all measures on the same line chart or separate measures on different line charts within the Line Report. No matter which option you choose, a single chart is always used on the dashboard view.
- Single Chart displays all measures on a single line chart.
- Charts by measure separates measures onto different line charts within the Line Report.
Gaps
Gaps determines how the report will handle gaps in the data. For example, if a report is organized by day and there was no activity on a certain day, this option determines whether the Line Report will connect the points either side of the gap, leave a blank space, or fill in the gap with zero values.
- Connect will draw a line between two points with data if there are gaps between them.
- Don't connect will not connect two data points with data gaps between them.
- Fill with zeroes will assume all data gaps should be represented by zeroes on the chart and fill the gaps by making the line go to zero in every instance where there are gaps in the data. Filling with zeros is normally the most appropriate for data based on counts since no data is effectively a count of zero.
Unfiltered Line
Aside from editing the report, Report viewers can filter Line Reports in one of two ways: using Quick Filters at the top of the report, or (for reports with secondary dimensions) using the checkboxes listed at the bottom of the report. By default, when you apply these filters, the Line Report only shows filtered data.
Sometimes, you might want to compare the filtered data against unfiltered data on the same chart. If the Unfiltered Line option is set to Include, when you use Quick Filters or a secondary dimension, the report will show you both the unfiltered data and the filtered data so that you can compare the two.
When using one dimension, the unfiltered line is only visible when using Quick Filters, because without Quick Filters, the main line shows the overall value anyway. With Quick Filters enabled, the report will show a comparison of the filtered data with the unfiltered data. For example, in the screenshot below, you can see a comparison of the overall average score with the average score between a filtered pair of learners.
When using two dimensions, Watershed splits up the data by the 2nd dimension and provides dimension filters below the line chart with checkboxes to compare different items in the dimension. With the Unfiltered Line enabled, Watershed will include an additional item at the top that shows data for all items combined. The can be useful if, for example, you want to compare the overall average score with the average score for a particular learner. In the example below, we can see how Ashley Schmidt’s score compares to the overall average and to the benchmark over time.
Cumulative Sum
By default, a line report will display each point as a value that matches the dimension configured in the report. The line can also be configured to display a running total of the data the line represents by selecting Display Cumulative Sum.
Advanced Configuration
Advanced configuration is designed to be used by expert users who understand JSON and the properties of xAPI statements.
Certain settings unique to the Line Report are configurable in Advanced Configuration.
Property |
Explanation |
Example values |
line |
If true, the graph will display as a line. If false, it will display a line with the area under the line filled in. |
false |
allowGaps |
If true, where there is no data for a particular point along the y axis, Watershed will leave a gap to indicate this. If false, Watershed will join all the dots with a line across the gap. |
true |
fillGapsWithZeroes |
If true, Watershed will assume points with no data are 0. The value of allowGaps will be ignored. This is the most appropriate option for count based measures. |
false |
singleGraph |
If true, the data will be displayed as a single graph; otherwise it will display a graph per measure. |
false |
defaultSecondDimensions |
When a second dimension is used, this property defines a list of items that are selected by default and shown on the graph. For reports organized by a dimension that uses an id (most of the default statement property dimensions), use the id of the item rather than what is displayed. |
["apple", "orange"] [12345, 12346] |
eventLines |
Adds lines representing events and interventions to the chart. See Event Lines. |
Related: Check out our Advanced Configuration guide for more information on customizing your reports.
Event Lines
Line Reports are a great way of showing changes in metrics over time, or the impact that an event or events have had on those metrics. Whether it’s coaching sessions, training events, or communication campaigns, Event Lines offer a way to visualize these key events on reports.
Event Lines are configured in Advanced Configuration using the eventLines property. This contains an array of object, each configured to filter a specific set of xAPI statements representing the events to display. A separate event line is added for every xAPI statement filtered by the event line settings and positioned on the chart based on that statement’s timestamp property.
Example configuration is shown below:
"eventLines": [ { "filter": { "activityIds": { "ids": [ "https://example.xapiapps.com/xapi/def/assdef/709f99a5-014b-a9a0-d7ae-b957d945eaff/q/75b0e314-e0fd-cfab-7c5f-891d45d19dfc" ] } }, "labelTemplate": "Coaching Intervention", "tooltipTemplate": "<div align='center'><b>Coaching Intervention</b></div> <div align='center'>Topic: {{replace (replace result.response '<p>' '') '</p>' ''}}</div> {{ actor.person.name }} on {{substring timestamp 0 10}}", "color": "red", "width": 2 } ]
The table below explains each of the properties shown in the example above.
Property |
Explanation |
filter |
Filter object to use to select xAPI statements that represent events. See Advanced Data Filters for details of configuring filters. |
labelTemplate |
Represents the text to display on the chart to the right of each event line. This can include some simple html code, and handlebars functions. This can be left blank if you don’t want to display any text on the chart. |
tooltipTemplate |
Represents the text to display in a tooltip when the user hovers over the event line. This can include some simple html code, and handlebars functions. Handlebars functions can include the values of xAPI statement properties, referenced using dot notation e.g. “result.response”. |
color |
The color of the event line. This can be a color name (e.g. “red”) or hexadecimal code (e.g. “#ff0000”). |
width |
The width of each event line in pixels. We recommend between 2 and 5 pixels, but you can experiment with other values. |
The screenshot below shows how tooltips for event lines are displayed.
Manually adding event lines statements to Watershed
While you can use existing statements in Watershed to drive the display of an event line, it can be difficult to find a statement that represents the event correctly. In these situations you can send a statement that represents the exact moment that the event happened to Watershed.
To do this you will need to first familiarise yourself with how to construct an xAPI statement, and how to use Postman to send statements to Watershed. Below are some examples of statements you could use to drive event lines. Please note these all use a generic group actor so you should update the homepage to represent your organization. Also if you want to use these statements for other purposes than event lines, you should use a more relevant actor.
Face to face event
In this example a face to face event was held in the New York location:
{ "actor": { "objectType": "Group", "name": "New York", "account": { "homePage": "www.example.com", "name": "New York" } }, "verb": { "id": "http://activitystrea.ms/schema/1.0/experience", "display": { "en-US": "experienced" } }, "object": { "objectType": "Activity", "id": "https://xapi.example.com/facetoface/newyork-20-02-19", "definition": { "name": { "en-US": "Face to Face New York" }, "description": { "en-US": "Face to face event in New York on 20-02-19" }, "type": "http://activitystrea.ms/schema/1.0/event" } }, "timestamp": "2019-02-20T00:00:00.000Z", }
Email communication
In this example an email communication was sent:
{ "actor": { "objectType": "Group", "name": "All Users", "account": { "name": "All Users", "homePage": "http://www.example.com" } }, "verb": { "id": "http://activitystrea.ms/schema/1.0/receive", "display": { "en-US": "received" } }, "object": { "id": "http://id.tincanapi.com/activitytype/email", "definition": { "name": { "en-US": "Email title" }, "description": { "en-US": "Long description of the email" } }, "objectType": "Activity" }, "timestamp": "2019-02-20T00:00:00+0000Z" }
Event Lines Handlebars Functions
Related: Event Line labels and tooltips can use the same handlebars functions as used for CSV templates. See CSV Templates Functions and Variables
Handlebars functions can include the values of xAPI statement properties, referenced using dot notation e.g. {{result.response}}
will insert the value of the xAPI result.response property.
To access xAPI properties that use arrays requires the handlebars {{#each}}
function. For example, to get the id of the first parent context activity, use this:
{{#each context.contextActivities.parent}}{{#if @first}}{{this.id}}{{/if}}{{/each}}