code: function getTemporalFiltersContext(item, procedure, observableProperty) {
    var defaultDuration =
      (procedure && procedure.defaultDuration) ||
      (observableProperty && observableProperty.defaultDuration);
    // If the item has no endDate, use the current datetime (to nearest second).
    var endDateIso8601 =
      item.endDate || JulianDate.toIso8601(JulianDate.now(), 0);
    if (defined(defaultDuration)) {
      var startDateIso8601 = addDurationToIso8601(
        endDateIso8601,
        "-" + defaultDuration
      );
      // This is just a string-based comparison, so timezones could make it up to 1 day wrong.
      // That much error is fine here.
      if (startDateIso8601 < item.startDate) {
        startDateIso8601 = item.startDate;
      }
      return [{ index: 1, startDate: startDateIso8601, endDate: endDateIso8601 }];
    } else {
      // If there is no procedure- or property-specific duration, use the item's start and end dates, if any.
      if (item.startDate) {
        return [{ index: 1, startDate: item.startDate, endDate: endDateIso8601 }];
      }
    }
  }
docs: Return the Mustache template context "temporalFilters" for this item.
  If a "defaultDuration" parameter (eg. 60d or 12h) exists on either
  procedure or observableProperty, restrict to that duration from item.endDate.
  @param  {SensorObservationServiceCatalogItem} item This catalog item.
  @param  {Object} [procedure] An element from the item.procedures array.
  @param  {Object} [observableProperty] An element from the item.observableProperties array.
  @return {Object[]} An array of {index, startDate, endDate}, or undefined.