Advanced Configuration

This guide outlines the Advanced configuration feature of Explore. This guide may also be useful to developers connecting to Watershed’s Cards API.

Please note: Advanced configuration is designed to be used by advanced users who understand JSON and the properties of xAPI statements. We can create Advanced configuration report cards for you, so if you are not an advanced user, please contact us instead of struggling with this guide.

This guide has several sections:

Accessing Advanced configuration

To open Advanced configuration, click Advanced configuration in Explore.

The Advanced configuration panel enables you to edit the configuration JSON object which defines the filters, aggregations and behaviors of report card.

Using Advanced configuration with Simple configuration

When creating report cards, you can switch between Simple configuration and Advanced configuration as you need. We recommend creating as much of the card as possible using Simple configuration rather than writing the advanced configuration from scratch. For example, to create a custom measure, select the standard measure that is the closest match in simple configuration, then switch to advanced configuration to make edits.

Some configuration options, such as Card Text,  are not available in Advanced configuration. You must set and edit these using Simple configuration.

Advanced filters

In Simple configuration, the top three sections of each card (Activities, People and Dates) are used to filter xAPI statements for use by the report card. These settings are used to populate the filter property of the card configuration object in Advanced configuration. For example, a filter that includes an activity, person and date range might look like this:

"filter": {
  "activityIds": {
    "ids": [
      "https://twitter.com/6209872/status/65472397"
    ],
    "regExp": false
  },
  "personIds": [
    94
  ],
  "groupIds": null,
  "dateFilter": {
    "dateType": "trailing",
    "trailingAmount": "6",
    "trailingType": "months",
    "customDateFrom": null,
    "customDateTo": null
  }
}

Each of these filters is most easily set and edited using Simple configuration. There are some additional filters and properties that can only be edited via advanced configuration.

Filter by child groups

childGroupsOf will filter all groups that are direct children of the selected group. This is useful where a group has a large number of direct children that you want to compare. For example if an organization contains 200 departments, you can use the childGroupsOf filter with the id of the organization group that contains those departments. The card will then display all departments within fthe organization.

"childGroupsOf": [
  "1234"
]

Filter by group type

The group type filter enables you to filter for groups of a particular type, for such as departments or teams. It filters out any people that do not belong to a group of the configured types, and when the card is organized by group, ensures that only groups of the configured types are shown.

"groupTypeNames": [
  "team"
]

Please note: group type names displayed in Settings / Your Organization are all plural (e.g. "teams", "departments"). If you are copying the group type name from that page, you need to remove the 's' before using it in this filter.

Filter by group without adding that group to the list of items

When a card is organized by group, the default behavior is to list all groups included in the group filter to the list of items. But what if you want to filter a card by a group without adding that group to the list of items? For example, what if you want to report on data by job role, but only show data for a particular region? In this case, you can use the excludeFromOutput flag. For example:

"groupTypeNames": [
  "Job Role"
],
"and": [
  {
    "groupIds": [
      123
    ],
    "excludeFromOutput": true
  },
  {
    "groupIds": [
      456
    ],
    "excludeFromOutput": false
  }
]

This will show every job role, plus group id 456 in the list of items. It will only show data for people who belong to one of those groups and to group id 123. Group 123 will not appear in the list of items.

Filter people by interactions

The people filter enables you to filter a population of people based on their interactions. For example, you might filter all people who have completed a particular course:

"peopleFilter": {
  "activityIds": {
    "ids": ["http://leadership.assessment.example.com"]
  }
}

When used inside a people filter, the not filter has a special behavior of filtering all people who do not match the filter:

"peopleFilter": {
  "not": {
    "activityIds": {
      "ids": ["http://leadership.assessment.example.com"]
    }
  }
}

Filter by verb

"verbIds": {
  "ids": [
    "http://id.tincanapi.com/verb/viewed"
  ],
  "regExp": false
}

Filter by context activity

It's also possible to filter by context activities using the 'parentActivityIds', 'groupingActivityIds', and ‘contextActivityIds ‘ properties. For example:

"contextActivityIds": {
  "ids": [
    "https://twitter.com/"
  ],
  "regExp": false
}

Please note: the contextActivityIds filter property will match activity ids whichever collection of context activities they are found in (parent, grouping, category or other).

Filter by dates in fields other than timestamp

By default, the date filter is applied to the 'timestamp' property that represents when the interaction happened. You can also filter by dates in other statement properties (such as 'stored' and extensions) using the 'fieldName' property in a date filter. 

"dateFilter": {
    "dateType": "trailing",
    "trailingAmount": "6",
    "trailingType": "months",
    "fieldName": "stored"
}

Hint: to filter by multiple date based properties, use an 'and' filter. See below.

Filter by any statement property

In fact, it’s possible to filter by any statement property using the required and equals filter properties.

Use required to filter all statements that have a certain property with any value. For example if you are reporting on score data, you might want to filter only statements that contain a score:

"required": "result.score.scaled"

Use equals to specify that a certain value is required, for example perhaps you filter only accounts with a specific account:

"equals": [{
  "fieldName": "actor.account.homePage",
  "values": {
    "ids": [
      "http://watershedlrs.com"
    ],
    "regExp": false
  }
}]

When equals is used with a numerical value, you should supply a string value that includes a decimal point. For example if you wanted to filter all statements with a raw score of 5, you would use the following syntax:

"equals": [{
  "fieldName": "result.score.raw",
  "values": {
    "ids": [
      "5.0"
    ],
    "regExp": false
  }
}]

When using filters with extensions, you may need some extra syntax to help Watershed understand the structure of the extension. The fieldType property tells Watershed what type of value you are filtering by. Possible values are string, number, boolean, null or array. For example, consider the following result extension:

"https://example.com/fruits" : [
  "apple",
  "pear",
  "orange", 
  "bear"
]

To filter just statements containing apples, you could use the following filter:

"equals": [{
  "fieldName": "result.extensions.[https://example.com/fruits]",
  "fieldType": "array",
  "values": {
    "ids": [
      "apple"
    ],
    "regExp": false
  }
}]

If your extension includes an array of objects and you want to filter by a property of those objects, you need to tell Watershed about the array using the __arr__ syntax. For example, let's say you have a context extension with the following value:

"https://example.com/shopping-list" : {
  "fruits": [
    {
      "type": "apple",
      "color": "green"
    },
    {
      "type": "apple",
      "color": "red"
    }
  ]
}

To filter just statements containing green fruit, you'd use the following filter:

"equals": [{
  "fieldName": "context.extensions.[https://example.com/shopping-list].fruits.__arr__.color",
  "fieldType": "string",
  "values": {
    "ids": [
      "green"
    ],
    "regExp": false
  }
}]

Regex

Advanced configuration supports regex to filter matching activities, context activities and verbs.  For example, the following would filter all statements where the activity id started with “https://twitter.com/”

"activityIds": {
  "ids": [
    "https://twitter.com/.*"
  ],
  "regExp": true
}

Another more complex example filters all activity ids starting with "http://example.com/assessments", except those that contain the string "question":

"activityIds": {
  "ids": [
    "(http://example.com/assessments.*)&~(.*question.*)"
  ],
  "regExp": true
}

Not all regex syntax elements are supported by Watershed. The table below lists some of the unsupported syntax elements and alternatives you can use.

Regex

What it does

Alternatives

^ $

Anchors the expression at the start or end of the string.

Watershed uses Regex to match the whole string only (not partial strings) so anchors are not required.

?:

Non-matching group. Used to include expressions relating to a part of the target string that are not intended to be matched.

Watershed uses Regex to match the whole string only (not partial strings) so non-matching groups are not required.

/d

Matches any numerical character.

Use [0-9] instead.

If you are not familiar with regex, please speak to us for help with your activity filter.

Please note: Regex filters are case sensitive unless specified within the regex otherwise. 

And, or and not

By default, filter properties are added together so that if you include a verb filter and an activity id filter, statements must match both that verb and activity id. On the other hand, lists are interpreted as an or filter, so if you specify a list of verb ids, statements matching any verb on the list are included. And, or and not filters give you the power to change that and, for example, match statements that either use a particular verb or a particular activity id. 

You can combine multiple filter properties using and, or and not to craft very complex filters. The following contrived example includes all three properties nested together.

"or": [
    {
        "verbIds": {
            "ids": [
                "http://id.tincanapi.com/verb/tweeted"
            ],
            "regExp": false
        }

    },
    {
        "and": [
            {
                "contextActivityIds": {
                  "ids": [
                    "https://twitter.com/"
                  ],
                  "regExp": false
                }
            },
            {
                "equals": [{
                    "fieldName": "object.definition.type",
                    "values": {
                        "ids": [
                            "http://id.tincanapi.com/activitytype/tweet"
                        ],
                        "regExp": false
                    }
                }]
            }
        ],
        "not": {
            "required": "actor.mbox"
        }
    }
]

In the example above, either the verb must be ‘tweeted’ or twitter must be a context activity and the activity type must be a tweet, but the actor must not be identified by email.

In the example below, the last 2 months are filtered, then the last 1 month is removed giving only statements from 'last month':

"filter": {
  "dateFilter": {
    "dateType": "trailing",
    "trailingAmount": "2",
    "trailingType": "months"
  },
  "not" :{
    "dateFilter": {
      "dateType": "trailing",
      "trailingAmount": "1",
      "trailingType": "months"
    }
  }
}

Please note: and and or contain arrays of filter objects, whereas not contains a single filter object.

Custom dimensions

Several cards (such as Leaderboard and Correlation) aggregate data using dimensions and measures. In Simple configuration, dimensions are represented by the Organized field. Data can be organized by person, group, day, week, month, year, activity or activity type. If the dimension you need is not on that list, you can use advanced configuration to create a custom dimension. For example perhaps you want to organize data by a context property such as a context activity or instructor.

Constant Dimension

The CONSTANT dimension does not split the data at all and shows measure values for one item representing all the data

Property

Explanation

Example

type

The type of dimension

CONSTANT

For example:

"dimensions": [{
  "type": "CONSTANT"
}]

Statement Property Dimensions

Statement property dimensions break data into items based on the value of a specified statement property.

Property

Explanation

Example

type

The type of dimension

STATEMENT_PROPERTY

statementProperty

The property of the xAPI statement to organize data by.

actor.person.id

caseSensitive

Defaults to true. If false, items that are the same in all but case will be grouped together. This is especially useful when organizing by the result.response statement property.

false

Here’s a complete example that organizes by parent context activity:

"dimensions": [
  {
    "type": "STATEMENT_PROPERTY",
    "statementProperty": "context.contextActivities.parent.id"
  }
]

Here’s another example that organizes by a context extension:

"dimensions": [
  {
    "type": "STATEMENT_PROPERTY",
    "statementProperty": "context.extensions.[http://example.com/xapi/extensions/context/example]"
  }
]

Here’s an example that organizes by response case insensitively:

"dimensions": [
  {
    "type": "STATEMENT_PROPERTY",
    "statementProperty": "result.response",
    "caseSensitive": false
  }
]

Histogram Dimensions

When working with numerical values, it can often be useful to group those values into buckets. For example, perhaps you want to report on how many times people pause a video at different points in the video. It would be unhelpful to compare every possible video duration value down to the millisecond, but by grouping duration values into buckets of 1, 5 or 10 seconds, you can get a much clearer picture. The Histogram Dimension enables you to do exactly that.

Property

Explanation

Example

type

The type of dimension.

HISTOGRAM

statementProperty

The property of the xAPI statement to organize data by. 

context.extensions.[http://id.tincanapi.com/extension/ending-point]

valyeType

The data type of the statement property. Use this when the statement property is an extension

duration

interval The size of each bucket in whatever units the statement property is measured in. For example, durations are measured in centiseconds (100ths of a second). 1000
minCount The minimum number of statements required for a bucket to appear on the report card. This defaults to 1 and cannot be 0 (or negative). Use this if you only want to show buckets that have a minimum amount of data. 1
minValue The starting point for the first item to display. Statements with a statementProperty value lower than this minimum will be ignored. null
maxValue The top value for the last item to display. Statements with a statementProperty value higher than this maximum will be ignored. null

The example below shows how to use a histogram dimension to look at a video in 10 second intervals between 30 and 60 seconds.

"dimensions": [{
  "type": "HISTOGRAM",
  "statementProperty": "result.durationCentiseconds",
  "interval": 1000,
  "minCount": 1,
  "minValue": 3000,
  "maxValue": 6000
}]

Time Period Dimensions

Time period dimensions group statements together by time period. 

Property

Explanation

Example

type

The type of dimension.

TIME

timePeroid

Used with the TIME type to specify the time period.

YEAR

format

Used with the CUSTOM timePeriod format to specify a custom time period. Here's a list of allowed format values

 ha 'on' E

timeZone

Used with the TIME type to specify the time zone used to determine what time a new day/week/month/year starts. The cut off between days is midnight in whatever timezone is used.

The timeZone property also determines the timezone used for hour values displayed when using a CUSTOM timePeriod. 

US/Eastern

Here’s an example that organizes by hour of the day. Labels display values like "1PM":

"dimensions": [
  {
    "type": "TIME",
    "timePeriod": "CUSTOM",
    "format": "ha"
  }
]

Here’s an example that organizes by day of the week. Labels display values like "Tuesday":

"dimensions": [
  {
    "type": "TIME",
    "timePeriod": "CUSTOM",
    "format": "E"
  }
]

Here’s an example that organizes by hour of the day and day of the week combined. Labels display values like "1PM on Monday":

"dimensions": [
  {
    "type": "TIME",
    "timePeriod": "CUSTOM",
    "format": "ha 'on' E"
  }
]
Please note: The dimensions property contains an array of dimension objects. At the time of writing only the line card uses more than one dimension. Additional dimensions after the first will be ignored.

Custom measures

Several cards (such as Leaderboard and Correlation) aggregate data using dimensions and measures. In Simple configuration, measures are represented by the measures dropdown and list, or simply as two dropdowns in the case of the Correlation card.

The easiest way to create a custom measure is to use the Measure Editor. Details of advanced measure configuration are outlined in the Measure Editor guide.  

Additional Statement Properties

For the most part, Watershed's filters, dimensions and measures use the properties defined as part of xAPI statements. There are some additional properties that Watershed adds to the data for the purposes of reporting. Most of these are added within the statement's actor property and include additional metadata about the person who the statement is about.

Person metadata can be accessed using the actor.person property. actor.person.id matches the Watershed id of the person the statement is about. actor.person.name matches the name of the person the statement is about as defined within Watershed. This can sometimes be different from the value of actor.name, which is the name of the actor as defined in the xAPI statement. actor.person.email matches the email address as defined in Watershed. Unlike actor.mbox, actor.person.email is not prefixed with "mailto:" and therefore looks nicer in reports.

Another peice of metadata that can be accessed is the number of centiseconds represented by the result.duration property. In xAPI result.duration is measured using an ISO 8601 duration string such as 'PT6H34M65.56S'. As this can include hours, minutes, seconds, or even years, months and weeks, it can be difficult to compare duration values in reports. Watershed therefore adds a result.durationCentiseconds property that translates the duration into centiseconds (100th's of a second) to be more easily compared in reports.

Please note: The calculation of result.durationCentiseconds assumes that the duration includes no leap time such as leap years and leap seconds.

Caching

Card results are cached to improve performance. By default the cache duration is 1 hour, which means that when you view a card, data can be up to an hour old. You can adjust the number of minutes data will be cached for by using the cachingMinutes property. This contains an integer number of minutes Watershed will wait before checking for new data. Decrease this to get more immediate results; increase it to improve the speed and performance of your dashboard.

Custom card text

Watershed’s Simple configuration enables you to edit the card title, summary and description. Some additional pieces of text on some types of card is editable using Advanced configuration. Currently, Leaderboard and Accomplishment cards offer editable text.

Leaderboard

The card text property on leaderboards takes this structure:

"cardText": {
  "cardView": {
    "dimension": "{{dimension}}"
  },
  "detailView": {
    "dimension": "{{dimension}}",
    "sentence": "{{activityCount}} distinct {{activityName}} for {{peopleCount}} distinct {{peopleName}} {{observedVerb}} over {{dimensionCount}} distinct {{dimension}}."
  }
}

The cardView object controls what text is displayed when the leaderboard is viewed as a card on the dashboard. The detailView object controls what text is displayed when the full card detail is viewed. {{placeholders}} are used to fill in variable values.

The table below explains the allowed properties of these objects.

Property

Explanation

dimension

The header of the first column of the leaderboard. By default this is the name of the dimension. Only supports the dimension placeholder.

sentence

The text of the sentence displayed at the top of the leaderboard. This sentence will only appear if the card’s showSentence property is set to true. Supports all Leaderboard placeholders.

The table below explains the allowed placeholders.

Placeholder

Explanation

activityCount

The number of activities in the filtered result set.

peopleCount

The number of people in the filtered result set.

dimensionCount

The number of dimension items in the filtered result set, for example if the card is organized by weeks, this would be the number of weeks.

activityName

Either “activity” if activityCount is 1 or “activities” otherwise.

peopleName

Either “person” if peopleCount is 1 or “people” otherwise.

observedVerb

Either “was observed” if peopleCount is 1 or “were observed” otherwise.

dimension

The name of the dimension.

Accomplishment

The card text property on accomplishment cards takes the following structure:

“cardText”: {
  "peopleLabel": {
      "singular": "person",
      "plural": "people"
  },
  "progressCategories": {
      "notStarted": "Not started",
      "lessThanEqual50": "Less than or equal to halfway complete",
      "greaterThan50": "Greater than halfway complete",
      "complete": "Completed"
  },
  "cardView": {
      "summary": "{{registeredPercent}}% of your {{selected}}people are registered for this accomplishment."
  },
  "progressChart": {
      "title": "Progress of {{selected}}registered people",
      "selected": {
          "somethingSelected": "selected ",
          "nothingSelected": ""
      },
      "toogtip": {
          "label": "<b>{{progressCategory}}:</b> <div>{{progressPercent}}% of registered people</div>"
      },
      "legend": {
          "label": "{{progressPercent}}% - {{progressCategory}}"
      }
  },
  "microView": {
      "sentence": "{{completedPercent}}% of registered people have completed this accomplishment."
  },
  "header": {
      "titleSuffix": " for {{groupName}}",
      "sentence1": "{{registeredCount}} out of {{orgCount}} people are registered for this accomplishment.",
      "sentence2": "{{completedCount}} out of {{registeredCount}} registered people have completed this accomplishment."
  },
  "interactionTimeline": {
      "title": "Interaction Timeline{{titleSuffix}}",
      "weekLabel": {
          "singular": "week",
          "plural": "{{weeks}} weeks"
      },
      "timelineLabel": {
          "interactions": "Last {{weekLabel}} of interactions",
          "noInteractions": "No interactions"
      }
  },
  "groupLeaderboard": {
      "title": "Group Leaderboard{{titleSuffix}}",
      "searchPlaceholder": "Search for group name",
      "toogtip": {
          "label": "{{completedPercent}}% of registered people are<br>{{completedStatus}}"
      },
      "sortLabels": {
          "group": "Group",
          "completed": "Completed",
          "avgScore": "Avg Criteria Score",
          "progress": "Accomplishment Progress"
      }
  },
  "personLeaderboard": {
      "title": "Leaderboard{{titleSuffix}}",
      "searchPlaceholder": "Search for person's name",
      "sortLabels": {
          "people": "People",
          "completion": "Completion Probability",
          "avgScore": "Avg Criteria Score",
          "history": "Interaction History"
      }
  },
  "criteriaList": {
      "title": "{{criteriaName}}",
      "description": "{{criteriaDesc}}",
      "sentence": "{{completedCount}} out of {{registeredCount}} people have completed this criteria ({{completedPercent}}%)"
  },
  "sequenceHeatmap": {
      "title": "Criteria Completion Sequence{{titleSuffix}}",
      "xAxisCategory": "Step {{stepId}}",
      "yAxisCategory": "{{criteriaName}}",
      "toogtip": {
          "label": "{{completedPercent}}% of registered people completed <br><b>{{criteria}}</b> as {{step}}"
      },
      "dataLabels": {
          "label": "{{completedPercent}}%"
      }
  },
  "groupHeatmap": {
      "title": "Group Criteria Completion{{titleSuffix}}",
      "searchPlaceholder": "Search for group name",
      "toogtip": {
          "notComplete": "Criteria has not been completed by anyone in the group.",
          "complete": "{{completedCount}} registered {{peopleLabel}} in <b>{{group}}</b> completed <br><b>{{criteria}}</b>.",
          "avgScore": "<br>Avg Score: {{avgScore}}",
          "avgDuration": "<br>Avg Duration: {{avgDuration}}"
      },
      "dataLabels": {
          "label": "{{completedPercent}}%"
      }
  },
  "personHeatmap": {
      "title": "Criteria Completion{{titleSuffix}}",
      "searchPlaceholder": "Search for person's name",
      "toogtip": {
          "notComplete": "Criteria not completed",
          "complete": "Date completed: {{completedDate}}",
          "avgScore": "<br>Avg Score: {{avgScore}}",
          "avgDuration": "<br>Avg Duration: {{avgDuration}}"
      },
      "dataLabels": {
          "complete": "Completed",
          "notComplete": "Not completed"
      }
  }
}

The table below explains where each of the top level properties appear on the accomplishment card.

Property

Explanation

peopleLabel

Controls the terms used for “person” and “people”. E.g. “learner” and “learners”.

Currently this only affects tooltips in the Group Criteria Completion visualization via the peopleLabel placeholder.  

progressCategories

The labels for different progress categories. These are used for the legend on the pie chart on card view and within the tooltips of the Group Leaderboard visualizarion. This property does not support any placeholders.

cardView

Text at the bottom of card view. Supports registeredCount and registeredPercent placeholders.

progressChart

The pie chart on card view. Incorporates the legend labels defined in progressCategories using the progressCategory placeholder. Also supports the progressValue placeholder.

microView

The text displayed when the card is viewed as part of a group card preview. Supports completedCount and completedPercent placeholders.

header

The two sentences at the top of the card. Supports registeredCount, orgCount and completedCount placeholders.

Also controls the title suffix that is added to the title of each visualization if the card is filtered for a single group. This supports the groupName placeholder.

interactionTimeline

Controls text on the Interaction Timeline visualization. Supports titleSuffix, weeks and weekLabel placeholders.

groupLeaderboard

Controls text on the Group Leaderboard visualization. Supports titleSuffix, completedCount, completedPercent and completedStatus placeholders.

personLeaderboard

Controls text on the Group Leaderboard visualization. Supports the titleSuffix placeholder.

criteriaList

Controls text for each item of the Criteria List visualization. Supports the criteriaName, criteriaDesc, completedCount, completedPercent and registeredCount placeholders.

It is not possible to edit the title of the Criteria List visualization.

sequenceHeatmap

Controls text on the Criteria Completion Sequence visualization. Supports titleSuffix, stepId, criteriaName, completedPercent, criteria and step placeholders.

groupHeatmap

Controls text on the Group Criteria Completion visualization. Supports titleSuffix, avgDuration, avgScore, criteria, completedCount, completedPercent, group and peopleLabel placeholders.

 

Controls text on the Criteria Completion visualization. Supports titleSuffix, avgDuration, avgScore,and completedDate placeholders.

The table below explains the placeholders.

Placeholder

Explanation

registeredCount

The number of people registered for the accomplishment and included by the card’s people and groups filter.

registeredPercent

The percentage of people registered for the accomplishment from those included by the card’s people and groups filter.

orgCount

The number of people included by the card’s people and groups filter.

completedCount

The number of people who have completed the accomplishment or criteria and included by the card’s people and groups filter.

completedPercent

The percentage of people who have completed the accomplishment or criteria from those included by the card’s people and groups filter.

completedStatus

The text for the appropriate progress category (completed, not started etc.) as defined in the progressCategories property.  

progressCategory

The text for the appropriate progress category (completed, not started etc.) as defined in the progressCategories property.  

progressPercent

The percentage of people that fall within the current progress category.

groupName

The name of the group the card is filtered by. This is only used if the card is filtered by exactly 1 group.

titleSuffix

The text defined in the header.titleSuffix property.

weeks

The number of weeks that the interaction timeline is displaying data for.

weekLabel

The text defined in the interactionTimeline.weekLabel property.

peopleLabel

The relevant word for person or people as defined in the peopleLabel property.

criteriaName

The name of the criteria.

criteria

The name of the criteria.

criteriaDesc

The description of the criteria.

stepId

“Step “ followed by the number representing the order the criteria was completed in. E.g. “Step 1”.

step

“Step “ followed by the number representing the order the criteria was completed in. E.g. “Step 1”.

avgDuration

The average duration relating to completion of the criteria.

avgScore

The average score relating to completion of the criteria.

Card specific Advanced configuration options

Some card types have additional advanced configuration properties relating to specific settings for that card type. These can all be set in Simple configuration, so we recommend using Simple configuration for those properties.

If you are creating cards via API, you do not have the option to use Simple configuration. This section outlines additional advanced configuration properties that are used with specific cards.

Accomplishment

Property

Explanation

Example value

accomplishmentId

The id of the accomplishment the card is reporting on.

1

Activity

Property

Explanation

Example value

surveyMode

If true, the card assumes that data represents survey data and hides any information relating to scores, success or answering questions correctly/incorrectly. Multiple choice options are displayed as multicolored bar charts instead of the grey normally used for incorrect answers. 

false

Bar

Property

Explanation

Example values

defaultSort

How the data should be sorted by default.

“-dimension[0].label”

“measure[1].value”

vertical

If true, the bar chart will display vertical bars; otherwise the bars will be horizontal.

true

singleGraph

If true, the data will be displayed as a single graph; otherwise it will display a graph per measure.

false

The value of the default sort property contains four pieces of information:

  1. Whether to sort accessending (default) or descending ("-" prefix).
  2. Whether to sort by a dimension or by a measure.
  3. The index of the dimension or measure to sort by.
  4. Whether to sort by the measure value or by it’s label.

Group

Property

Explanation

Example values

cardGroupId

The id of the card group to display..

345

Heatmap

Property

Explanation

Example values

showValues

Whether or not to show values on heatmap grid squares.

null

If show values is null, the report viewer will be able to select whether or not to show values in the UI, without having to use Explore.

Line

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

Leaderboard 

Property

Explanation

Example value

showSentence

If it's included with a value of true, the leaderboard will include a summary sentence at the top.

false

hideDimension

If it's included with a value of true, the leaderboard will hide the dimension column and only display measure values.

true

Pie

Property

Explanation

Example value

includePeopleWithoutStatements

If true, the pie chart will include all people who match the card filter, regardless of whether they have any statement data. This is useful when you want to see which or how many people in a group have not done something. 

false

colors

A list of colors to be used for slices of the pie. 

[
"#80C663",
"#F1FC74",
"#D85353"
]

Scatter

Property

Explanation

Example value

showQuadrants

If true, will show a quadrants background image. The bottom boundaries of the A quadrant are the benchmarks defined for each measure, or the average value for measures with no benchmarks defined. The A+ quadrant within the A quadrant is always half way between the bottom boundary of the A quadrant and the chart maximum. 

false

Program

Program advanced configuration is covered in a separate article.

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

If you can't find what you need or you want to ask a real person a question, please contact customer support.