Common props in Tidepool data visualization code
Several of the pieces of the state common to most, if not all, of Tidepool's data visualization views are most often encountered in the code as props passed to React components. This page provides a quick reference describing the canonical forms of these pieces of state since they occur and are used (for example: as a parameter in a utility function) very frequently.
bgPrefs
bgPrefs is an object with two properties: bgUnits and bgBounds. Sometimes these component properties are passed around on their own, and sometimes bgPrefs is passed around as a whole. (As we increase our commitment to support for mmol/L as well as mg/dL blood glucose units, it will probably be necessary to access both bgUnits and bgBounds simultaneously most of the time, so it is probably a good idea to just get used to passing around bgPrefs as a whole.)
bgUnits is a String value that can be either mg/dL or mmol/L. To avoid typos and capitalization errors, we export a constant for each of these strings from src/utils/constants.js; use them with import { MGDL_UNITS, MMOLL_UNITS } from 'path/to/utils/constants'.
bgBounds is an Object with five numerical fields:
veryLowThresholdencodes the threshold (logic is <) for encoding a blood glucose value as "very low"- (a value >=
veryLowThresholdand <targetLowerBoundis "low") targetLowerBoundencodes the lower bound for the user's target blood glucose range; logic is >= the threshold is "target"targetUpperBoundencodes the upper bound for the user's target blood glucose range; logic is <= the threshold is "target"- (a value >
targetUpperBoundand <=veryHighThresholdis "high") veryHighThresholdencodes the threshold (logic is >) for encoding a blood glucose value as "very high"clampThresholdencodes the value at which we clamp the blood glucose scale (logic is >); read about clamping scales in the d3-scale documentation
The function classifyBgValue exported from the blood glucose utilities in src/utils/bloodglucose.js will return the classification for any blood glucose value given the value and the bgBounds. (See also all the API documentation for blood glucose utility functions.)
timePrefs
timePrefs is an object with two properties: timezoneAware and timezoneName. The timezoneAware property is a simple Boolean indicating whether or not the user wants to view data in timezone-aware mode; timezoneAware defaults to true. Because the extraction of a named timezone depends in part on the value of timezoneAwarea, timePrefs should always be passed around as an entire object, and the utility function getTimezoneFromTimePrefs exported from the datetime utilities in src/utils/datetime.js should be used to extract the timezone String when required. (See also all the API documentation for datetime utility functions.)
timezoneName is a String timezone that the Moment.js datetime utility library recognizes. Moment.js in turn recognizes all timezones from the IANA Time Zone Database.
a. In brief, iftimezoneAwareisfalse, thenUTCis used for the timezone String in all circumstances and methods where a timezoe String is required. ↩