Overview AE Timelines AE Explorer Hep Explorer Delta-Delta Histogram Outlier Explorer Results Over Time

ae-timelines - Quality Control Details

This page provides a detailed report of the quality control documentation for ae-timelines. The source code for this page is available on github.

Technical Specs

Technical documentation including, functional specifications, regressions tests and risk assessments. see original

Functional Specifications

Users can interact with an AE timeline in the following ways:

Filter by Serious Event

This drop-down menu is used to filter serious events in the data set. The default is set to include all events, but can be manipulated to include events that are only marked as serious or events that are only marked as non-serious. An open-ended black circle marks serious events so they can be viewed in the timeline at a glance.

Filter by Severity/Intensity

This drop-down menu displays a listing of the adverse event severity levels in the data set. The default is to display all severity levels. The current severity levels captured are mild, moderate, and severe, which are color coded and displayed in a legend above the timeline.

Filter by Subject Identifier

This drop-down menu displays a list of all of the subject identifiers included in the data set. Each participant is assigned a unique identifier that is associated with their adverse event data. Filtering to view a particular subject ID will only show data for that subject. The default for this filter is set to show data for all subjects.

Filter by pre-selected characteristics

The chart can be configured to have any number of data filters. Each specified filter has a drop-down menu that is used to filter the visit data that is displayed in the chart.

Sort by Subject IDs

This drop-down menu can sort the subject IDs included in the timeline data set. This option can sort the data by the participants with the earliest occurring adverse event(s) or the participants that appear first alphabetically in descending order. This option defaults to the earliest occurring events and their related participants.

Total Participants Shown

Displayed in the top right corner of the page, this statement provides the total number of participants in the data set in integers as well as the percentage of participants shown to one decimal place. In the default view, all participant data is included in the chart, or 100%, unless the project team requests otherwise. When filters are used, the data shown in the histogram is manipulated and the number of participant records shown at the top of the page may increase or decrease, depending on the variable selected.

Hover

By moving a mouse cursor over a bar in the chart, users can display metadata for some variables. Hovering the cursor over a particular bar will display the reported term of an event, the day the event started, and the day the event stopped. More information about the event can be accessed by clicking on the Subject ID.

Show details

Clicking on the Subject ID seen to the left of the bar will load a more detailed view. This view displays the raw data for a participant's adverse events. This view shows the sequence number for the event, the day the event started, the day the event stopped, the reported term, the event's severity/intensity, and if the event is classified as serious or not.

Return to the AE Timelines

The Back button is only visible if users have clicked on the detailed view for a given participant. Clicking on this button returns users to the default AE Timelines view.

Regression Tests

Data Guidelines

Data Specifications for the charts. see original

AE Timelines are initialized using JSON data files that match the format created by d3.csv(). The chart requires a data set with one record per adverse event with placeholder rows added for participants who didn't experience any adverse events over the course of the study. The chart uses column names from the AdAM data standard by default, but can be customized to work with any column names as long as the data structure is as expected.

Default Chart

The following columns are expected in a data file used to create an instance of AE Timelines. A sample chart using this configuration is found here.

Data Specification

Settings Variable Description Default Required?
id_col Unique Subject Identifier USUBJID Y
seq_col Sequence Number AESEQ Y
stdy_col Analysis Start Relative Day ASTDY Y
endy_col Analysis End Relative Day AENDY Y
term_col Reported Term AETERM Y
color.value_col Severity/Intensity AESEV Y *
highlight.value_col Serious Event AESER
* a coloring variable of some sort is required but it does not have to be AESEV

Settings

No customization is needed to initialize a chart when the data object contains all default variables above. Just pass an empty object ({}) for settings and initialize the chart like so: aeTimelines('body', {}).init(data).

Customized Chart with Queries

The following data specs and chart settings can be used to create a chart with several custom filters, including Sex, Race and Query Status. The chart also highlights severe AEs and events under query. A sample chart using this configuration is found here.

Data Specification

Settings Variable Description Default Required?
id_col Unique Subject Identifier USUBJID Y
seq_col Sequence Number AESEQ Y
stdy_col Analysis Start Relative Day ASTDY Y
endy_col Analysis End Relative Day AENDY Y
term_col Reported Term AETERM Y
color.value_col Severity/Intensity AESEV Y *
highlight.value_col Serious Event AESER
filter AE Seriousness AESER Y
filter AE Severity AESEV Y
filter AE Relationship AEREL Y
filter AE Outcome AEOUT Y
filter Site ID SITEID Y
filter Treatment Arm ARM Y
filter Sex SEX Y
filter Race RACE Y
filter Query Flag ("Y" for yes) QUERYFL Y
* a coloring variable of some sort is required but it does not have to be AESEV

Settings Object

     var settings =
        {color:
            {value_col: 'AEREL'
            ,label: 'Relationship'
            ,values:
                ['NOT RELATED'
                ,'UNLIKELY RELATED'
                ,'POSSIBLY RELATED'
                ,'PROBABLY RELATED'
                ,'DEFINITELY RELATED']}
        ,highlight:
            {value_col: 'QUERYFL'
            ,label: 'Open Query'
            ,value: 'Y'
            ,detail_col: 'QUERY'
            ,attributes:
                {'stroke': 'black'
                ,'stroke-width': '8'
                ,'fill': 'none'
                ,'stroke-opacity':"0.2"}}
        ,custom_marks:
            [
                {type: 'circle'
                ,per: ['USUBJID', 'AESEQ', 'wc_value']
                ,tooltip: 'Serious Adverse Event'
                ,radius: 6
                ,attributes:
                    {'fill-opacity': .5
                    ,'fill': 'None'
                    ,'stroke': 'Red'}
                ,values: {"AESER": ['Y'] ,"wc_category":["ASTDY"]}}
            ]
        ,filters:
            [   {value_col: 'AESER', label: 'Serious Event'}
            ,   {value_col: 'AEREL', label: 'Relationship'}
            ,   {value_col: 'AESEV', label: 'Severity/Intensity'}
            ,   {value_col: 'USUBJID', label: 'Subject Identifier'}
            ,   {value_col: 'ARM', label: 'Arm'}
            ,   {value_col: 'SITEID', label: 'Site ID'}
            ,   {value_col: 'SEX', label: 'Sex'}
            ,   {value_col: 'RACE', label: 'Race'}
            ,   {value_col: 'QUERYFL', label: 'Has query?'}

            ]};

API

Technical specifications for API. see original

aeTimelines(element, settings)

a factory to create a custom Webcharts chart object

returns: chart

Param Type Description
element string CSS selector identifying the element in which to create the chart
settings object settings object specifying options for how the chart is to appear and behave. Options defined here overwrite default values; see Configuration

Events

participantsSelected

The custom participantsSelected event is dispatched to the overall chart wrapper (chart.wrap) whenever the details for a given participant are viewed (or cleared) by clicking on the y-axis labels in the chart. The event has a custom data property holding an array with the selected ID when a new participant is selected (["123-456-7"]) or an empty array when participant details are cleared.

Chart Configuration

Technical specifications for chart configuration. see original

The most straightforward way to customize the AE Timelines is by using a configuration object whose properties describe the behavior and appearance of the chart. Since the AE Timelines is a Webcharts chart object, many default Webcharts settings are set in the defaultSettings.js file as described below. Refer to the Webcharts documentation for more details on these settings.

In addition to the standard Webcharts settings several custom settings not available in the base Webcharts library have been added to the AE Timelines to facilitate data mapping and other custom functionality. These custom settings are described in detail below. All defaults can be overwritten by users.

Renderer-specific settings

The sections below describe each ae-timelines setting as of version 2.1.0.

settings.id_col

string

unique identifier variable name

default: "USUBJID"

settings.seq_col

string

event sequence number variable name

default: "AESEQ"

settings.stdy_col

string

event start day variable name

default: "ASTDY"

settings.endy_col

string

event end day variable name

default: "AENDY"

settings.term_col

string

verbatim adverse event text variable name

default: "AETERM"

settings.color

object

an object that defines the event color stratification variable, its label, its levels, and their corresponding colors

settings.color.value_col

string

color stratification variable name, usually set to event severity

default: "AESEV"

settings.color.label

string

color stratification variable label

default: "Severity/Intensity"

settings.color.values

array

an array of stratification values

default:

[
  "MILD",
  "MODERATE",
  "SEVERE"
]

settings.color.colors

array

an array of stratification colors

default:

[
  "#66bd63",
  "#fdae61",
  "#d73027",
  "#377eb8",
  "#984ea3",
  "#ff7f00",
  "#a65628",
  "#f781bf",
  "#999999"
]

settings.highlight

object

an object that defines what events to highlight and how to highlight them

settings.highlight.value_col

string

event highlighting variable name

default: "AESER"

settings.highlight.label

string

a description of the highlighted event

default: "Serious Event"

settings.highlight.value

string

value of highlight.value_col that identifies events to highlight

default: "Y"

settings.highlight.detail_col

string

detail of highlighted event variable name

default: none

settings.highlight.attributes

object

an object of attributes that define highlighted marks

settings.filters

array

an array of filter variables and associated metadata

default: none

settings.filters[].value_col

string

the name of the filter variable

default: none

settings.filters[].label

string

a description of the filter variable

default: none

settings.details

array

an array of detail listing variables and associated metadata

default: none

settings.details[].value_col

string

the name of the detail variable

default: none

settings.details[].label

string

a description of the detail variable

default: none

settings.custom_marks

array

an array of custom Webcharts marks

default: none

settings.custom_marks[].type

string

a Webcharts mark type: point, bar, line, or text

default: none

settings.custom_marks[].per

array

an array of variables for each value combination of which a mark is drawn

default: none

settings.custom_marks[].tooltip

string

the tooltip of the custom mark

default: none

settings.custom_marks[].attributes

object

the attributes of the custom mark

Webcharts settings

The object below contains each Webcharts setting as of version 2.1.0.

{
    x: {
        column: 'wc_value',
        type: 'linear',
        label: null
    },
    y: {
        column: null, // set in syncSettings()
        type: 'ordinal',
        label: '',
        sort: 'earliest',
        behavior: 'flex'
    },
    marks: [
        {
            type: 'line',
            per: null, // set in syncSettings()
            tooltip: null, // set in syncSettings()
            attributes: {
                'stroke-width': 5,
                'stroke-opacity': 0.5
            }
        },
        {
            type: 'circle',
            per: null, // set in syncSettings()
            tooltip: null, // set in syncSettings()
            attributes: {
                'fill-opacity': 0.5,
                'stroke-opacity': 0.5
            }
        }
    ],
    legend: { location: 'top' },
    gridlines: 'y',
    range_band: 15,
    margin: { top: 50 }, // for second x-axis
    resizable: true
}

Testing Logs

Interactive log of QC for all code updates. Includes code reviews, feature testing and regression testing for all releases. see original
PullRequestRequesterDateRequestedBranchTargetTitleReviewIDReviewerReviewDateReviewStatusMergedByDateMergedReviewComments
0006jwildfire2016-04-12T16:42:02ZreorgmasterReorgNONEjwildfire2016-04-13T12:45:53Z
0014jwildfire2016-05-25T19:38:02Zreorg-backupmasterReorg backupNONENathan Bryant2016-06-08T14:47:19Z
0017jwildfire2016-06-22T20:27:11Zv1.2.0masterV1.2.0NONEjwildfire2016-06-22T20:27:22Z
0018jwildfire2016-06-22T22:03:17Zv1.2.1masterremoving custom filter labels for now (creates issues in some situati…NONEjwildfire2016-06-22T22:03:26Z
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015230562jwildfire2017-01-05T00:54:22ZCOMMENTEDjwildfire2017-02-21T17:08:49ZIs `AESER` required now? If so, does this break backwards compatibility with v1.2.0?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015230684jwildfire2017-01-05T00:55:52ZCOMMENTEDjwildfire2017-02-21T17:08:49ZAdding the marks like this is an elegant solution. 👍👍
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015231313jwildfire2017-01-05T01:02:09ZCOMMENTEDjwildfire2017-02-21T17:08:49ZAfter reading through the rest of this and reviewing the discussion on #12, I do think we're breaking backwards compatibility. Not a huge deal, we'll just need to go through and update milestones and update package.json. Agree?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015231888jwildfire2017-01-05T01:07:35ZCOMMENTEDjwildfire2017-02-21T17:08:49ZWe're going to have to argue about this leading comma insanity eventually 😱
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015232032jwildfire2017-01-05T01:09:01ZCOMMENTEDjwildfire2017-02-21T17:08:49ZJust noting that `sev_vals` is new here for reference.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015232130jwildfire2017-01-05T01:10:08ZCOMMENTEDjwildfire2017-02-21T17:08:49Zcomment is out of place.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015232229jwildfire2017-01-05T01:11:04ZCOMMENTEDjwildfire2017-02-21T17:08:49Znote: class:serious is new
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015232370jwildfire2017-01-05T01:12:41ZCOMMENTEDjwildfire2017-02-21T17:08:49ZSo if the user doesn't provide filters we use the defaults ... seems reasonable ...
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015232474jwildfire2017-01-05T01:13:56ZCOMMENTEDjwildfire2017-02-21T17:08:49ZAny specific reason for removing the SOC from the tooltip? Not a huge deal, but I'd lean towards keeping it.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015232876jwildfire2017-01-05T01:19:04ZCOMMENTEDjwildfire2017-02-21T17:08:49Zso `sev_vals` sets the order of axis. default is ['MILD','MODERATE','SEVERE'], which is reasonable, but we probably won't get close to 100% compliance there. What happens if there are other values or the formatting is different ("Mild" instead of "MILD")? Guessing they'll just get tacked on to the legend in alpha order?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015233006jwildfire2017-01-05T01:20:26ZCOMMENTEDjwildfire2017-02-21T17:08:49ZThis is only a problem if we don't support the edge case - if rows with AESER="Mild" won't render at all in the chart, and give "Mild" in the legend we have a problem.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015233090jwildfire2017-01-05T01:21:23ZCOMMENTEDjwildfire2017-02-21T17:08:49ZThe more I see it the more I like this simplified approach to filters :+1:;;
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015233318jwildfire2017-01-05T01:23:43ZCOMMENTEDjwildfire2017-02-21T17:08:49Zis the the ES6 way to clone an object? I like!
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015233501jwildfire2017-01-05T01:25:24ZCOMMENTEDjwildfire2017-02-21T17:08:49ZNote: Not going to code review the chunk below since it is fairly low priority and also fairly complex. We can always debug (or just take out the functionality) if it becomes problematic.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015233899jwildfire2017-01-05T01:29:28ZCOMMENTEDjwildfire2017-02-21T17:08:49ZNice. good call to do this in a separate file.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015233984jwildfire2017-01-05T01:30:22ZCOMMENTEDjwildfire2017-02-21T17:08:49Zskipping code review. can look later if needed.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015234225jwildfire2017-01-05T01:33:31ZCOMMENTEDjwildfire2017-02-21T17:08:49ZWhy'd you decide to use this instead of just sticking with:;; ```;; var currentObs = d3.set(chart.filtered_data.map(function (d) {;; return d[id_col];;; })).values().length;;; ```
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015234314jwildfire2017-01-05T01:34:41ZCOMMENTEDjwildfire2017-02-21T17:08:49ZIn other words, why rederive `filtered_data` here instead of just using `chart.filtered_data`?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015234534jwildfire2017-01-05T01:37:08ZCOMMENTEDjwildfire2017-02-21T17:08:49ZIs the class used anywhere? Doesn't hurt either way, I suppose?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015235070jwildfire2017-01-05T01:43:07ZCOMMENTEDjwildfire2017-02-21T17:08:49ZSo basically, if these `value_cols` are included in `settings.details_cols` they get a custom `label`. Items in `settings.details_cols` that aren't listed below, just don't get a custom label. Yes?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015235075jwildfire2017-01-05T01:43:12ZCOMMENTEDjwildfire2017-02-21T17:08:49ZThis is nice.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015235113jwildfire2017-01-05T01:43:37ZCOMMENTEDjwildfire2017-02-21T17:08:49ZWhat's this doing?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015235325jwildfire2017-01-05T01:46:24ZCOMMENTEDjwildfire2017-02-21T17:08:49ZThe more I think about this the less sure I am it makes sense ... I'll put a comment on the issue.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015322217samussiah2017-01-05T15:16:30ZCOMMENTEDjwildfire2017-02-21T17:08:49ZAll my insane formatting gets gets roll'd up and babel'd in the end. But for me it's a matter of aligning everything that can be logically aligned. Plus leading commas make it easier to add items and properties and spot syntax errors (arguably): https://gist.github.com/isaacs/357981
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015322346samussiah2017-01-05T15:17:05ZCOMMENTEDjwildfire2017-02-21T17:08:49ZYeah, I added that at some point but didn't use it in the end.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015324654samussiah2017-01-05T15:27:51ZCOMMENTEDjwildfire2017-02-21T17:08:49ZIt would be nice to be able plot uncoded adverse events, such as early on in the study lifecycle. Alternatively we could modify the tooltip when the user specifies coding terms.
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015325396samussiah2017-01-05T15:31:13ZCOMMENTEDjwildfire2017-02-21T17:08:49ZI went with that terminology because it's "controlled" in SDTM. But the user can just specify `sev_vals`. Are you suggesting to just ignore the case of the values?
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015325404jwildfire2017-01-05T15:31:16ZCOMMENTEDjwildfire2017-02-21T17:08:49Z🤔
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015326252samussiah2017-01-05T15:35:30ZCOMMENTEDjwildfire2017-02-21T17:08:49ZYou know, I'm still not entirely sure how to deep clone an object, like down into arrays and objects and arrays of objects and so on. But I hate manually syncing multiple settings objects so I like this approach. But as you can see I couldn't get the `marks` to clone :crying_cat_face:
0022jwildfire2016-12-17T17:21:44Zv1.3.0masterAE Timelines 2.0.015326619samussiah2017-01-05T15:37:23ZCOMMENTEDjwildfire2017-02-21T17:08:49ZBecause as far as I can tell, in webCharts `filtered_data` corresponds to the last mark defined, which in this renderer is the SAE marks. So I had to redefine `filtered_data`.
0023jwildfire2016-12-17T17:23:50ZSAEsv1.3.0Visual tweaks for SAEsNONESpencer Childress2017-01-04T16:40:45Z
0027samussiah2017-01-19T22:40:41Zcustom-marksv1.3.0Custom marks.18033449jwildfire2017-01-23T21:47:29ZCOMMENTEDjwildfire2017-01-23T21:56:21ZCan this be used to add multiple "highlight" marks to the legend?
0027samussiah2017-01-19T22:40:41Zcustom-marksv1.3.0Custom marks.18033931jwildfire2017-01-23T21:49:52ZAPPROVEDjwildfire2017-01-23T21:56:21ZLooks great. Lines up perfectly with our plan to use arrays of marks for highlighting points of special interest.
0027samussiah2017-01-19T22:40:41Zcustom-marksv1.3.0Custom marks.18039587samussiah2017-01-23T22:16:35ZCOMMENTEDjwildfire2017-01-23T21:56:21ZI don't see why the `highlight` parameter couldn't be extended as an array...
0030jwildfire2017-03-07T02:10:51Zv2.0.1masterdon't render filters with 0 or 1 values. resolves #2925649545samussiah2017-03-07T22:27:18ZCOMMENTEDjwildfire2017-03-13T23:22:50Zstray
0030jwildfire2017-03-07T02:10:51Zv2.0.1masterdon't render filters with 0 or 1 values. resolves #2925649591samussiah2017-03-07T22:27:29ZCOMMENTEDjwildfire2017-03-13T23:22:50Zanother stray
0030jwildfire2017-03-07T02:10:51Zv2.0.1masterdon't render filters with 0 or 1 values. resolves #2925649754samussiah2017-03-07T22:28:06ZAPPROVEDjwildfire2017-03-13T23:22:50ZOutstanding! Couple stray `console.log()`s in there.
0038jwildfire2017-10-16T18:16:05Zv2.0.3-devmasterV2.0.3 dev69664233samussiah2017-10-16T19:00:04ZCOMMENTEDjwildfire2017-10-16T20:21:18Zstray log
0038jwildfire2017-10-16T18:16:05Zv2.0.3-devmasterV2.0.3 dev69664409samussiah2017-10-16T19:00:37ZAPPROVEDjwildfire2017-10-16T20:21:18Z
0042samussiah2017-12-04T17:49:28Zv2.0.4-devmasterv2.0.4-devNONEjwildfire2017-12-15T15:50:39Z
0043samussiah2017-12-04T18:52:06Zlisting-bugv2.0.4-devupdate to hide detail listing initially83024903jwildfire2017-12-13T00:02:30ZAPPROVEDjwildfire2017-12-13T00:02:41Z👍
0050samussiah2018-04-02T14:16:03Zv2.1.0-devmasterAE Timelines v2.1.0NONEsamussiah2018-04-24T15:04:40Z
0051samussiah2018-04-03T18:11:24Ztest-pagemasterTest page109484680pburnsdata2018-04-04T20:21:27ZAPPROVEDSpencer Childress2018-04-24T15:04:39Zfantestic
0052samussiah2018-04-03T19:15:45Zsettings-schemav2.1.0-devSettings schema110110465pburnsdata2018-04-06T15:35:40ZAPPROVEDSpencer Childress2018-04-24T15:04:46Z
0053samussiah2018-04-03T19:36:52Zitalicize-population-annotationv2.1.0-devItalicize population annotation109107567pburnsdata2018-04-03T20:37:21ZAPPROVEDSpencer Childress2018-04-24T15:04:54Z
0053samussiah2018-04-03T19:36:52Zitalicize-population-annotationv2.1.0-devItalicize population annotation112545124tmbarald2018-04-16T18:55:49ZAPPROVEDSpencer Childress2018-04-24T15:04:54ZFixed on all browsers.
0054samussiah2018-04-03T19:46:13Zfix-color-domainv2.1.0-devFix color domain110112843pburnsdata2018-04-06T15:42:32ZAPPROVEDSpencer Childress2018-04-24T15:05:00Z
0055samussiah2018-04-03T20:52:19Zadd-settings-mergev2.1.0-devAdd settings merge110116071pburnsdata2018-04-06T15:52:00ZAPPROVEDSpencer Childress2018-04-24T15:05:08Z
0058samussiah2018-04-24T15:31:39Zv2.1.0-devmasterAE Timelines v2.1.0115232688tmbarald2018-04-25T15:32:35ZAPPROVEDSpencer Childress2018-04-27T19:38:36ZSince we cleared up the sorting issue today, everything is good!
0059samussiah2018-04-24T15:32:07Ztest-pagev2.1.0-devTest pageNONESpencer Childress2018-04-24T15:32:49Z
0060brittsikora2018-04-27T18:19:31Zbrittsikora-patch-1masterUpdating links116058776samussiah2018-04-27T19:34:43ZAPPROVEDSpencer Childress2018-04-27T19:34:48Z
0061rtbailey2018-08-09T19:45:12Zrtbailey-patch-1masterUpdate LICENSE.md167535243samussiah2018-10-23T17:07:07ZAPPROVEDSpencer Childress2018-10-23T17:13:13Z
0065samussiah2018-12-18T15:56:04Zdev-v2.1.3masterAE Timelines v2.1.3194177632rchronowic2019-01-18T16:28:19ZAPPROVEDSpencer Childress2019-01-18T16:32:25ZApproved!
0066samussiah2018-12-18T15:56:54Zsecurity-vulnerabilitiesdev-v2.1.3fix #64186726845pburnsdata2018-12-19T20:07:24ZAPPROVEDSpencer Childress2019-01-18T16:21:46Zvery secure
0066samussiah2018-12-18T15:56:54Zsecurity-vulnerabilitiesdev-v2.1.3fix #64194090092rchronowic2019-01-18T13:18:23ZAPPROVEDSpencer Childress2019-01-18T16:21:46ZApproved
0067samussiah2018-12-18T15:57:43Zfix-test-pagedev-v2.1.3Fix test page186727616pburnsdata2018-12-19T20:09:28ZAPPROVEDSpencer Childress2019-01-18T16:21:58Zjsdelivrd
0067samussiah2018-12-18T15:57:43Zfix-test-pagedev-v2.1.3Fix test page194161626rchronowic2019-01-18T15:55:37ZAPPROVEDSpencer Childress2019-01-18T16:21:58ZApproved
0068samussiah2018-12-18T15:58:13Zscale-y-axisdev-v2.1.3Scale y axis186730543pburnsdata2018-12-19T20:17:12ZAPPROVEDSpencer Childress2019-01-18T16:22:05ZChange made in webcharts
0068samussiah2018-12-18T15:58:13Zscale-y-axisdev-v2.1.3Scale y axis194089772rchronowic2019-01-18T13:17:20ZAPPROVEDSpencer Childress2019-01-18T16:22:05Z
0069samussiah2018-12-18T15:58:38Zignore-placeholder-rowsdev-v2.1.3Ignore placeholder rows186732906pburnsdata2018-12-19T20:23:34ZCOMMENTEDSpencer Childress2019-01-18T16:22:16Znice touch
0069samussiah2018-12-18T15:58:38Zignore-placeholder-rowsdev-v2.1.3Ignore placeholder rows186733152pburnsdata2018-12-19T20:48:32ZAPPROVEDSpencer Childress2019-01-18T16:22:16ZSpencer, is everything in your life modular?
0069samussiah2018-12-18T15:58:38Zignore-placeholder-rowsdev-v2.1.3Ignore placeholder rows186750738samussiah2018-12-19T21:12:22ZCOMMENTEDSpencer Childress2019-01-18T16:22:16Zjust my home
0069samussiah2018-12-18T15:58:38Zignore-placeholder-rowsdev-v2.1.3Ignore placeholder rows194148862rchronowic2019-01-18T15:29:56ZAPPROVEDSpencer Childress2019-01-18T16:22:16ZPassed testing in both Firefox and Chrome
0071jwildfire2019-03-27T19:48:24Zdev-v2.1.4masterdev-v2.1.4220061748samussiah2019-03-28T14:37:08ZAPPROVEDSpencer Childress2019-03-28T14:37:14Z
0073samussiah2019-04-30T17:24:15Zdev-v2.1.5masterAvoid filtering out negative study days.232401841pburnsdata2019-04-30T20:56:37ZAPPROVEDSpencer Childress2019-05-01T14:07:54Zno time indeed -nice regex!
0075dependabot[bot]2019-07-12T04:09:52Zdependabot/npm_and_yarn/lodash-4.17.14masterBump lodash from 4.17.11 to 4.17.14261295934samussiah2019-07-12T14:36:12ZAPPROVEDSpencer Childress2019-07-12T14:37:33Z
0077jwildfire2019-08-09T16:50:12Zdev-v2.1.6masterDev v2.1.6274932957pburnsdata2019-08-14T14:38:23ZAPPROVEDjwildfire2019-08-19T19:39:28ZLooks good - just need to merge in the changes!
0078jwildfire2019-08-09T16:50:44ZaddCustomEventdev-v2.1.6add participantSelected event. Fix #76274931798pburnsdata2019-08-14T14:36:46ZAPPROVEDjwildfire2019-08-19T19:38:51Z