carbon-addons-iot-react 4.4.1 → 4.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +6 -2
- package/es/components/BarChartCard/BarChartCard.js +16 -4
- package/es/components/BarChartCard/barChartUtils.js +8 -7
- package/es/components/Card/Card.js +8 -5
- package/es/components/Card/CardToolbar.js +3 -1
- package/es/components/DateTimePicker/DateTimePicker.js +29 -10
- package/es/components/DateTimePicker/DateTimePickerV2WithTimeSpinner.js +2 -3
- package/es/components/DateTimePicker/DateTimePickerV2WithoutTimeSpinner.js +30 -10
- package/es/components/DateTimePicker/dateTimePickerUtils.js +34 -29
- package/es/components/ImageCard/ImageCard.js +15 -2
- package/es/components/ListCard/ListCard.js +7 -2
- package/es/components/TableCard/TableCard.js +15 -4
- package/es/components/TableCard/tableCardUtils.js +2 -2
- package/es/components/TimeSeriesCard/TimeSeriesCard.js +15 -4
- package/es/components/TimeSeriesCard/timeSeriesUtils.js +2 -2
- package/es/components/ValueCard/ValueCard.js +6 -1
- package/es/constants/CardPropTypes.js +2 -0
- package/es/utils/cardUtilityFunctions.js +1 -1
- package/es/utils/dayjs.js +21 -1
- package/lib/components/BarChartCard/BarChartCard.js +16 -4
- package/lib/components/BarChartCard/barChartUtils.js +8 -7
- package/lib/components/Card/Card.js +7 -4
- package/lib/components/Card/CardToolbar.js +3 -1
- package/lib/components/DateTimePicker/DateTimePicker.js +28 -9
- package/lib/components/DateTimePicker/DateTimePickerV2WithTimeSpinner.js +2 -3
- package/lib/components/DateTimePicker/DateTimePickerV2WithoutTimeSpinner.js +29 -9
- package/lib/components/DateTimePicker/dateTimePickerUtils.js +34 -29
- package/lib/components/ImageCard/ImageCard.js +15 -2
- package/lib/components/ListCard/ListCard.js +7 -2
- package/lib/components/TableCard/TableCard.js +15 -4
- package/lib/components/TableCard/tableCardUtils.js +2 -2
- package/lib/components/TimeSeriesCard/TimeSeriesCard.js +15 -4
- package/lib/components/TimeSeriesCard/timeSeriesUtils.js +2 -2
- package/lib/components/ValueCard/ValueCard.js +6 -1
- package/lib/constants/CardPropTypes.js +2 -0
- package/lib/utils/cardUtilityFunctions.js +1 -1
- package/lib/utils/dayjs.js +22 -0
- package/package.json +1 -1
- package/umd/carbon-addons-iot-react.js +234 -111
|
@@ -815,7 +815,6 @@ var DateTimePicker = function DateTimePicker(_ref2) {
|
|
|
815
815
|
return setInvalidState(invalid);
|
|
816
816
|
}, [invalid]);
|
|
817
817
|
var onApplyClick = function onApplyClick() {
|
|
818
|
-
var _value$absolute$start, _value$absolute$end;
|
|
819
818
|
var value = renderValue();
|
|
820
819
|
var returnValue = {
|
|
821
820
|
timeRangeKind: value.kind,
|
|
@@ -830,8 +829,8 @@ var DateTimePicker = function DateTimePicker(_ref2) {
|
|
|
830
829
|
returnValue.timeRangeValue = _objectSpread(_objectSpread({}, value.absolute), {}, {
|
|
831
830
|
humanValue: humanValue,
|
|
832
831
|
tooltipValue: tooltipValue,
|
|
833
|
-
ISOStart:
|
|
834
|
-
ISOEnd:
|
|
832
|
+
ISOStart: value.absolute.start ? new Date(value.absolute.start).toISOString() : undefined,
|
|
833
|
+
ISOEnd: value.absolute.end ? new Date(value.absolute.end).toISOString() : undefined
|
|
835
834
|
});
|
|
836
835
|
break;
|
|
837
836
|
case DateConstants.PICKER_KINDS.SINGLE:
|
|
@@ -43,7 +43,7 @@ var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
|
43
43
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
44
44
|
var warning__default = /*#__PURE__*/_interopDefault(warning);
|
|
45
45
|
|
|
46
|
-
var _excluded = ["testId", "defaultValue", "dateTimeMask", "presets", "intervals", "relatives", "expanded", "disabled", "invalid", "showRelativeOption", "showCustomRangeLink", "hasTimeInput", "renderPresetTooltipText", "onCancel", "onApply", "i18n", "light", "locale", "hasIconOnly", "menuOffset", "renderInPortal", "useAutoPositioning", "style", "buttonProps"];
|
|
46
|
+
var _excluded = ["testId", "defaultValue", "dateTimeMask", "presets", "intervals", "relatives", "expanded", "disabled", "invalid", "showRelativeOption", "showCustomRangeLink", "hasTimeInput", "renderPresetTooltipText", "onCancel", "onApply", "i18n", "light", "locale", "timeZone", "hasIconOnly", "menuOffset", "renderInPortal", "useAutoPositioning", "style", "buttonProps"];
|
|
47
47
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
48
48
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
49
49
|
var iotPrefix = Settings.settings.iotPrefix,
|
|
@@ -153,6 +153,8 @@ var propTypes = {
|
|
|
153
153
|
light: PropTypes__default.default.bool,
|
|
154
154
|
/** The language locale used to format the days of the week, months, and numbers. */
|
|
155
155
|
locale: PropTypes__default.default.string,
|
|
156
|
+
/** IANA timezone string to set as default timezone for dayjs */
|
|
157
|
+
timeZone: PropTypes__default.default.string,
|
|
156
158
|
/** Unique id of the component */
|
|
157
159
|
id: PropTypes__default.default.string,
|
|
158
160
|
/** Optionally renders only an icon rather than displaying the current selected time */
|
|
@@ -243,6 +245,7 @@ var defaultProps = {
|
|
|
243
245
|
},
|
|
244
246
|
light: false,
|
|
245
247
|
locale: 'en',
|
|
248
|
+
timeZone: undefined,
|
|
246
249
|
id: undefined,
|
|
247
250
|
hasIconOnly: false,
|
|
248
251
|
menuOffset: undefined,
|
|
@@ -271,6 +274,7 @@ var DateTimePicker = function DateTimePicker(_ref) {
|
|
|
271
274
|
i18n = _ref.i18n,
|
|
272
275
|
light = _ref.light,
|
|
273
276
|
locale = _ref.locale,
|
|
277
|
+
timeZone = _ref.timeZone,
|
|
274
278
|
hasIconOnly = _ref.hasIconOnly,
|
|
275
279
|
menuOffset = _ref.menuOffset,
|
|
276
280
|
renderInPortal = _ref.renderInPortal,
|
|
@@ -278,6 +282,9 @@ var DateTimePicker = function DateTimePicker(_ref) {
|
|
|
278
282
|
style = _ref.style,
|
|
279
283
|
buttonProps = _ref.buttonProps,
|
|
280
284
|
others = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
285
|
+
var effectiveTimezone = timeZone || dayjs.default.tz.guess();
|
|
286
|
+
dayjs.default.tz.setDefault(effectiveTimezone);
|
|
287
|
+
dayjs.default.locale(locale);
|
|
281
288
|
var id = React.useRef(others.id || uuid.v4()).current;
|
|
282
289
|
React__default.default.useEffect(function () {
|
|
283
290
|
{
|
|
@@ -417,7 +424,7 @@ var DateTimePicker = function DateTimePicker(_ref) {
|
|
|
417
424
|
value.kind = DateConstants.PICKER_KINDS.PRESET;
|
|
418
425
|
}
|
|
419
426
|
setCurrentValue(value);
|
|
420
|
-
var parsedValue = dateTimePickerUtils.parseValue(value, dateTimeMask, mergedI18n.toLabel);
|
|
427
|
+
var parsedValue = dateTimePickerUtils.parseValue(value, dateTimeMask, mergedI18n.toLabel, hasTimeInput, effectiveTimezone);
|
|
421
428
|
setHumanValue(parsedValue.readableValue);
|
|
422
429
|
return _objectSpread(_objectSpread({}, value), parsedValue);
|
|
423
430
|
};
|
|
@@ -472,15 +479,17 @@ var DateTimePicker = function DateTimePicker(_ref) {
|
|
|
472
479
|
setIsCustomRange(true);
|
|
473
480
|
setCustomRangeKind(DateConstants.PICKER_KINDS.ABSOLUTE);
|
|
474
481
|
if (!absolute.hasOwnProperty('start')) {
|
|
475
|
-
|
|
482
|
+
var startDateTime = "".concat(absolute.startDate, " ").concat(absolute.startTime);
|
|
483
|
+
absolute.start = dayjs.default.tz(startDateTime, dayjs.detectDateTimeFormat(startDateTime), effectiveTimezone).valueOf();
|
|
476
484
|
}
|
|
477
485
|
if (!absolute.hasOwnProperty('end')) {
|
|
478
|
-
|
|
486
|
+
var endDateTime = "".concat(absolute.endDate, " ").concat(absolute.endTime);
|
|
487
|
+
absolute.end = dayjs.default.tz(endDateTime, dayjs.detectDateTimeFormat(endDateTime), effectiveTimezone).valueOf();
|
|
479
488
|
}
|
|
480
|
-
absolute.startDate = dayjs.default(absolute.start).format('MM/DD/YYYY');
|
|
481
|
-
absolute.startTime = dayjs.default(absolute.start).format('HH:mm');
|
|
482
|
-
absolute.endDate = dayjs.default(absolute.end).format('MM/DD/YYYY');
|
|
483
|
-
absolute.endTime = dayjs.default(absolute.end).format('HH:mm');
|
|
489
|
+
absolute.startDate = dayjs.default.tz(absolute.start).format('MM/DD/YYYY');
|
|
490
|
+
absolute.startTime = dayjs.default.tz(absolute.start).format('HH:mm');
|
|
491
|
+
absolute.endDate = dayjs.default.tz(absolute.end).format('MM/DD/YYYY');
|
|
492
|
+
absolute.endTime = dayjs.default.tz(absolute.end).format('HH:mm');
|
|
484
493
|
setAbsoluteValue(absolute);
|
|
485
494
|
}
|
|
486
495
|
} else {
|
|
@@ -527,7 +536,7 @@ var DateTimePicker = function DateTimePicker(_ref) {
|
|
|
527
536
|
humanValue: humanValue
|
|
528
537
|
});
|
|
529
538
|
var disableRelativeApply = isCustomRange && customRangeKind === DateConstants.PICKER_KINDS.RELATIVE && (relativeLastNumberInvalid || relativeToTimeInvalid);
|
|
530
|
-
var disableAbsoluteApply = isCustomRange && customRangeKind === DateConstants.PICKER_KINDS.ABSOLUTE && (absoluteStartTimeInvalid || absoluteEndTimeInvalid || absoluteValue.startDate
|
|
539
|
+
var disableAbsoluteApply = isCustomRange && customRangeKind === DateConstants.PICKER_KINDS.ABSOLUTE && (absoluteStartTimeInvalid || absoluteEndTimeInvalid || !absoluteValue.startDate || !absoluteValue.endDate || (hasTimeInput ? !absoluteValue.startTime || !absoluteValue.endTime : false));
|
|
531
540
|
var disableApply = disableRelativeApply || disableAbsoluteApply;
|
|
532
541
|
React.useEffect(function () {
|
|
533
542
|
return setInvalidState(invalid || disableApply);
|
|
@@ -1221,6 +1230,17 @@ DateTimePicker.__docgenInfo = {
|
|
|
1221
1230
|
},
|
|
1222
1231
|
"required": false
|
|
1223
1232
|
},
|
|
1233
|
+
"timeZone": {
|
|
1234
|
+
"defaultValue": {
|
|
1235
|
+
"value": "undefined",
|
|
1236
|
+
"computed": true
|
|
1237
|
+
},
|
|
1238
|
+
"description": "IANA timezone string to set as default timezone for dayjs",
|
|
1239
|
+
"type": {
|
|
1240
|
+
"name": "string"
|
|
1241
|
+
},
|
|
1242
|
+
"required": false
|
|
1243
|
+
},
|
|
1224
1244
|
"id": {
|
|
1225
1245
|
"defaultValue": {
|
|
1226
1246
|
"value": "undefined",
|
|
@@ -89,7 +89,7 @@ var format12hourTo24hour = function format12hourTo24hour(time12hour) {
|
|
|
89
89
|
* @param {Object} value - the absolute time selection
|
|
90
90
|
* @returns {Object} a human readable value and a furtherly augmented value object
|
|
91
91
|
*/
|
|
92
|
-
var parseValue = function parseValue(timeRange, dateTimeMask, toLabel, hasTimeInput) {
|
|
92
|
+
var parseValue = function parseValue(timeRange, dateTimeMask, toLabel, hasTimeInput, timeZone) {
|
|
93
93
|
var _timeRange$kind, _timeRange$relative, _timeRange$absolute, _timeRange$single, _timeRange$preset;
|
|
94
94
|
var readableValue = '';
|
|
95
95
|
if (!timeRange) {
|
|
@@ -109,9 +109,9 @@ var parseValue = function parseValue(timeRange, dateTimeMask, toLabel, hasTimeIn
|
|
|
109
109
|
switch (kind) {
|
|
110
110
|
case DateConstants.PICKER_KINDS.RELATIVE:
|
|
111
111
|
{
|
|
112
|
-
var endDate = dayjs.default();
|
|
112
|
+
var endDate = dayjs.default.tz();
|
|
113
113
|
if (value.relativeToWhen !== '') {
|
|
114
|
-
endDate = value.relativeToWhen === DateConstants.RELATIVE_VALUES.YESTERDAY ? dayjs.default().
|
|
114
|
+
endDate = value.relativeToWhen === DateConstants.RELATIVE_VALUES.YESTERDAY ? dayjs.default.tz().subtract(1, DateConstants.INTERVAL_VALUES.DAYS) : dayjs.default.tz();
|
|
115
115
|
// wait to parse it until fully typed
|
|
116
116
|
if (value.relativeToTime.length === 5) {
|
|
117
117
|
endDate = endDate.hour(Number(value.relativeToTime.split(':')[0]));
|
|
@@ -123,37 +123,42 @@ var parseValue = function parseValue(timeRange, dateTimeMask, toLabel, hasTimeIn
|
|
|
123
123
|
}
|
|
124
124
|
returnValue.relative.start = new Date(startDate.valueOf());
|
|
125
125
|
returnValue.relative.end = new Date(endDate.valueOf());
|
|
126
|
-
readableValue = "".concat(
|
|
126
|
+
readableValue = "".concat(startDate.format(dateTimeMask), " ").concat(toLabel, " ").concat(endDate.format(dateTimeMask));
|
|
127
127
|
}
|
|
128
128
|
break;
|
|
129
129
|
}
|
|
130
130
|
case DateConstants.PICKER_KINDS.ABSOLUTE:
|
|
131
131
|
{
|
|
132
|
-
var _value$start
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
_endDate =
|
|
132
|
+
var _value$start;
|
|
133
|
+
if ((_value$start = value.start) !== null && _value$start !== void 0 ? _value$start : value.startDate) {
|
|
134
|
+
var _value$end;
|
|
135
|
+
var _startDate = value.start instanceof Date ? dayjs.default(value.start).tz(timeZone, true) // Date from picker - preserve local time
|
|
136
|
+
: value.start ? dayjs.default.tz(value.start) // Timestamp - convert from UTC
|
|
137
|
+
: dayjs.default.tz(value.startDate, 'MM/DD/YYYY', timeZone); // String - parse with format
|
|
138
|
+
|
|
139
|
+
if (value.startTime && value.startTime.includes(':')) {
|
|
140
|
+
var formatedStartTime = is24hours(dateTimeMask) ? value.startTime : format12hourTo24hour(value.startTime);
|
|
141
|
+
_startDate = _startDate.hours(formatedStartTime.split(':')[0]);
|
|
142
|
+
_startDate = _startDate.minutes(formatedStartTime.split(':')[1]);
|
|
143
|
+
}
|
|
144
|
+
if (!returnValue.absolute) {
|
|
145
|
+
returnValue.absolute = {};
|
|
146
|
+
}
|
|
147
|
+
returnValue.absolute.start = _startDate.valueOf();
|
|
148
|
+
var startTimeValue = value.startTime ? "".concat(_startDate.format(dateTimeMask)) : "".concat(_startDate.format(dateTimeMask)).split(' ')[0];
|
|
149
|
+
if ((_value$end = value.end) !== null && _value$end !== void 0 ? _value$end : value.endDate) {
|
|
150
|
+
var _endDate = value.end instanceof Date ? dayjs.default(value.end).tz(timeZone, true) : value.end ? dayjs.default(value.end).tz(timeZone) : dayjs.default.tz(value.endDate, 'MM/DD/YYYY', timeZone);
|
|
151
|
+
if (value.endTime && value.endTime.includes(':')) {
|
|
152
|
+
var formatedEndTime = is24hours(dateTimeMask) ? value.endTime : format12hourTo24hour(value.endTime);
|
|
153
|
+
_endDate = _endDate.hours(formatedEndTime.split(':')[0]);
|
|
154
|
+
_endDate = _endDate.minutes(formatedEndTime.split(':')[1]);
|
|
155
|
+
}
|
|
156
|
+
var endTimeValue = value.endTime ? "".concat(_endDate.format(dateTimeMask)) : "".concat(_endDate.format(dateTimeMask)).split(' ')[0];
|
|
157
|
+
returnValue.absolute.end = _endDate.valueOf();
|
|
158
|
+
readableValue = "".concat(startTimeValue, " ").concat(toLabel, " ").concat(endTimeValue);
|
|
159
|
+
} else {
|
|
160
|
+
readableValue = "".concat(startTimeValue, " ").concat(toLabel, " ").concat(startTimeValue);
|
|
151
161
|
}
|
|
152
|
-
var endTimeValue = value.endTime ? "".concat(dayjs.default(_endDate).format(dateTimeMask)) : "".concat(dayjs.default(_endDate).format(dateTimeMask)).split(' ')[0];
|
|
153
|
-
returnValue.absolute.end = new Date(_endDate.valueOf());
|
|
154
|
-
readableValue = "".concat(startTimeValue, " ").concat(toLabel, " ").concat(endTimeValue);
|
|
155
|
-
} else {
|
|
156
|
-
readableValue = "".concat(startTimeValue, " ").concat(toLabel, " ").concat(startTimeValue);
|
|
157
162
|
}
|
|
158
163
|
break;
|
|
159
164
|
}
|
|
@@ -584,7 +589,7 @@ var getIntervalValue = function getIntervalValue(_ref7) {
|
|
|
584
589
|
humanValue = _ref7.humanValue;
|
|
585
590
|
if (currentValue) {
|
|
586
591
|
if (currentValue.kind === DateConstants.PICKER_KINDS.PRESET) {
|
|
587
|
-
return "".concat(dayjs.default().subtract(currentValue.preset.offset, 'minutes').format(dateTimeMask), " ").concat(mergedI18n.toNowLabel);
|
|
592
|
+
return "".concat(dayjs.default.tz().subtract(currentValue.preset.offset, 'minutes').format(dateTimeMask), " ").concat(mergedI18n.toNowLabel);
|
|
588
593
|
}
|
|
589
594
|
return humanValue;
|
|
590
595
|
}
|
|
@@ -28,6 +28,7 @@ var Card = require('../Card/Card.js');
|
|
|
28
28
|
var cardUtilityFunctions = require('../../utils/cardUtilityFunctions.js');
|
|
29
29
|
var editorUtils = require('../DashboardEditor/editorUtils.js');
|
|
30
30
|
var Settings = require('../../constants/Settings.js');
|
|
31
|
+
var dayjs = require('../../utils/dayjs.js');
|
|
31
32
|
var ImageHotspots = require('./ImageHotspots.js');
|
|
32
33
|
var ImageUploader = require('./ImageUploader.js');
|
|
33
34
|
var iconsReact = require('@carbon/icons-react');
|
|
@@ -40,7 +41,7 @@ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefault(_objectWith
|
|
|
40
41
|
var _defineProperty__default = /*#__PURE__*/_interopDefault(_defineProperty);
|
|
41
42
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
42
43
|
|
|
43
|
-
var _excluded = ["title", "content", "children", "values", "size", "onCardAction", "availableActions", "isEditable", "isExpanded", "isResizable", "error", "isLoading", "maxFileSizeInBytes", "i18n", "i18n", "renderIconByName", "locale", "onUpload", "validateUploadedImage", "onBrowseClick", "testID", "testId"];
|
|
44
|
+
var _excluded = ["title", "content", "children", "values", "size", "onCardAction", "availableActions", "isEditable", "isExpanded", "isResizable", "error", "isLoading", "maxFileSizeInBytes", "i18n", "i18n", "renderIconByName", "locale", "onUpload", "validateUploadedImage", "onBrowseClick", "testID", "testId", "timeZone"];
|
|
44
45
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
45
46
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
46
47
|
var iotPrefix = Settings.settings.iotPrefix;
|
|
@@ -62,6 +63,7 @@ var defaultProps = {
|
|
|
62
63
|
}
|
|
63
64
|
},
|
|
64
65
|
locale: 'en',
|
|
66
|
+
timeZone: undefined,
|
|
65
67
|
content: {},
|
|
66
68
|
maxFileSizeInBytes: 1048576,
|
|
67
69
|
accept: null,
|
|
@@ -121,7 +123,10 @@ var ImageCard = function ImageCard(_ref) {
|
|
|
121
123
|
onBrowseClick = _ref.onBrowseClick,
|
|
122
124
|
testID = _ref.testID,
|
|
123
125
|
testId = _ref.testId,
|
|
126
|
+
timeZone = _ref.timeZone,
|
|
124
127
|
others = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
128
|
+
var effectiveTimezone = timeZone || dayjs.default.tz.guess();
|
|
129
|
+
dayjs.default.tz.setDefault(effectiveTimezone);
|
|
125
130
|
var _useState = React.useState(content),
|
|
126
131
|
_useState2 = _slicedToArray__default.default(_useState, 2),
|
|
127
132
|
imgContent = _useState2[0],
|
|
@@ -180,7 +185,8 @@ var ImageCard = function ImageCard(_ref) {
|
|
|
180
185
|
// TODO: remove deprecated testID prop in v3.
|
|
181
186
|
,
|
|
182
187
|
testId: testID || testId,
|
|
183
|
-
locale: locale
|
|
188
|
+
locale: locale,
|
|
189
|
+
timeZone: effectiveTimezone
|
|
184
190
|
}, others, {
|
|
185
191
|
error: error,
|
|
186
192
|
i18n: mergedI18n
|
|
@@ -256,6 +262,13 @@ ImageCard.__docgenInfo = {
|
|
|
256
262
|
},
|
|
257
263
|
"required": false
|
|
258
264
|
},
|
|
265
|
+
"timeZone": {
|
|
266
|
+
"defaultValue": {
|
|
267
|
+
"value": "undefined",
|
|
268
|
+
"computed": true
|
|
269
|
+
},
|
|
270
|
+
"required": false
|
|
271
|
+
},
|
|
259
272
|
"content": {
|
|
260
273
|
"defaultValue": {
|
|
261
274
|
"value": "{}",
|
|
@@ -26,6 +26,7 @@ var CardPropTypes = require('../../constants/CardPropTypes.js');
|
|
|
26
26
|
var Card = require('../Card/Card.js');
|
|
27
27
|
var cardUtilityFunctions = require('../../utils/cardUtilityFunctions.js');
|
|
28
28
|
var deprecate = require('../../internal/deprecate.js');
|
|
29
|
+
var dayjs = require('../../utils/dayjs.js');
|
|
29
30
|
|
|
30
31
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
31
32
|
|
|
@@ -36,7 +37,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
36
37
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
37
38
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
38
39
|
|
|
39
|
-
var _excluded = ["id", "title", "size", "data", "isLoading", "isResizable", "loadData", "hasMoreData", "layout", "className", "children", "testID", "testId"];
|
|
40
|
+
var _excluded = ["id", "title", "size", "data", "isLoading", "isResizable", "loadData", "hasMoreData", "layout", "className", "children", "testID", "testId", "timeZone"];
|
|
40
41
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
41
42
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
42
43
|
var ListCard = function ListCard(_ref) {
|
|
@@ -53,7 +54,10 @@ var ListCard = function ListCard(_ref) {
|
|
|
53
54
|
children = _ref.children,
|
|
54
55
|
testID = _ref.testID,
|
|
55
56
|
testId = _ref.testId,
|
|
57
|
+
timeZone = _ref.timeZone,
|
|
56
58
|
others = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
59
|
+
var effectiveTimezone = timeZone || dayjs.default.tz.guess();
|
|
60
|
+
dayjs.default.tz.setDefault(effectiveTimezone);
|
|
57
61
|
var handleScroll = function handleScroll(e) {
|
|
58
62
|
var element = e.target;
|
|
59
63
|
// height of the elements content - height element’s content is scrolled vertically === height of the scrollable part of the element
|
|
@@ -71,7 +75,8 @@ var ListCard = function ListCard(_ref) {
|
|
|
71
75
|
resizeHandles: resizeHandles
|
|
72
76
|
// TODO: remove deprecated 'testID' in v3.
|
|
73
77
|
,
|
|
74
|
-
testId: testID || testId
|
|
78
|
+
testId: testID || testId,
|
|
79
|
+
timeZone: effectiveTimezone
|
|
75
80
|
}, others), /*#__PURE__*/React__default.default.createElement("div", {
|
|
76
81
|
className: classnames__default.default('list-card', className),
|
|
77
82
|
style: {
|
|
@@ -55,13 +55,14 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
55
55
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
56
56
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
57
57
|
|
|
58
|
-
var _excluded = ["id", "title", "isExpanded", "content", "children", "size", "onCardAction", "values", "filters", "isEditable", "isResizable", "i18n", "tooltip", "locale", "timeRange", "timeRangeOptions", "availableActions", "isLoading", "testID", "testId", "className", "renderDateDropdownInPortal", "withToolbarTooltips", "defaultDateFormatPattern", "extraActions"];
|
|
58
|
+
var _excluded = ["id", "title", "isExpanded", "content", "children", "size", "onCardAction", "values", "filters", "isEditable", "isResizable", "i18n", "tooltip", "locale", "timeZone", "timeRange", "timeRangeOptions", "availableActions", "isLoading", "testID", "testId", "className", "renderDateDropdownInPortal", "withToolbarTooltips", "defaultDateFormatPattern", "extraActions"];
|
|
59
59
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
60
60
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
61
61
|
var iotPrefix = Settings.settings.iotPrefix;
|
|
62
62
|
var defaultProps = {
|
|
63
63
|
size: LayoutConstants.CARD_SIZES.LARGE,
|
|
64
64
|
locale: 'en',
|
|
65
|
+
timeZone: undefined,
|
|
65
66
|
values: [],
|
|
66
67
|
filters: [],
|
|
67
68
|
i18n: {
|
|
@@ -115,6 +116,7 @@ var TableCard = function TableCard(_ref) {
|
|
|
115
116
|
i18n = _ref.i18n,
|
|
116
117
|
tooltip = _ref.tooltip,
|
|
117
118
|
locale = _ref.locale,
|
|
119
|
+
timeZone = _ref.timeZone,
|
|
118
120
|
timeRange = _ref.timeRange,
|
|
119
121
|
timeRangeOptions = _ref.timeRangeOptions,
|
|
120
122
|
availableActions = _ref.availableActions,
|
|
@@ -128,8 +130,8 @@ var TableCard = function TableCard(_ref) {
|
|
|
128
130
|
extraActions = _ref.extraActions,
|
|
129
131
|
others = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
130
132
|
var mergedI18n = _objectSpread(_objectSpread({}, defaultProps.i18n), i18n);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
var effectiveTimezone = timeZone || dayjs.default.tz.guess();
|
|
134
|
+
dayjs.default.tz.setDefault(effectiveTimezone);
|
|
133
135
|
dayjs.default.locale(locale);
|
|
134
136
|
/** Searches for variables and updates the card if it is passed the cardVariables prop */
|
|
135
137
|
// Need to skip the linkTemplate variable for now because we will handle it at render time per row
|
|
@@ -312,7 +314,7 @@ var TableCard = function TableCard(_ref) {
|
|
|
312
314
|
var values = _objectSpread({}, row.values);
|
|
313
315
|
Object.keys(values).forEach(function (column) {
|
|
314
316
|
if (!isEditable && filteredTimestampColumns.includes(column)) {
|
|
315
|
-
values[column] = values[column] ? dayjs.default(values[column]).format(defaultDateFormatPattern) : '';
|
|
317
|
+
values[column] = values[column] ? dayjs.default.tz(values[column]).format(defaultDateFormatPattern) : '';
|
|
316
318
|
}
|
|
317
319
|
});
|
|
318
320
|
return _objectSpread(_objectSpread({}, row), {}, {
|
|
@@ -490,6 +492,7 @@ var TableCard = function TableCard(_ref) {
|
|
|
490
492
|
timeRangeOptions: timeRangeOptions,
|
|
491
493
|
renderDateDropdownInPortal: renderDateDropdownInPortal,
|
|
492
494
|
locale: locale,
|
|
495
|
+
timeZone: effectiveTimezone,
|
|
493
496
|
id: id,
|
|
494
497
|
extraActions: extraActions
|
|
495
498
|
});
|
|
@@ -507,6 +510,7 @@ var TableCard = function TableCard(_ref) {
|
|
|
507
510
|
isExpanded: isExpanded,
|
|
508
511
|
i18n: mergedI18n,
|
|
509
512
|
locale: locale,
|
|
513
|
+
timeZone: effectiveTimezone,
|
|
510
514
|
resizeHandles: resizeHandles,
|
|
511
515
|
hideHeader: true,
|
|
512
516
|
className: classnames__default.default("".concat(iotPrefix, "--table-card"), className, _defineProperty__default.default({}, "".concat(iotPrefix, "--table-card--with-tooltips"), withToolbarTooltips))
|
|
@@ -614,6 +618,13 @@ TableCard.__docgenInfo = {
|
|
|
614
618
|
},
|
|
615
619
|
"required": false
|
|
616
620
|
},
|
|
621
|
+
"timeZone": {
|
|
622
|
+
"defaultValue": {
|
|
623
|
+
"value": "undefined",
|
|
624
|
+
"computed": true
|
|
625
|
+
},
|
|
626
|
+
"required": false
|
|
627
|
+
},
|
|
617
628
|
"values": {
|
|
618
629
|
"defaultValue": {
|
|
619
630
|
"value": "[]",
|
|
@@ -70,7 +70,7 @@ var createColumnsWithFormattedLinks = function createColumnsWithFormattedLinks(c
|
|
|
70
70
|
});
|
|
71
71
|
var variableValue =
|
|
72
72
|
// format the TIMESTAMP type columns
|
|
73
|
-
(matchingColumn === null || matchingColumn === void 0 ? void 0 : matchingColumn.type) === 'TIMESTAMP' ? dayjs.default(row[variable]).format(defaultDateFormatPattern) : row[variable];
|
|
73
|
+
(matchingColumn === null || matchingColumn === void 0 ? void 0 : matchingColumn.type) === 'TIMESTAMP' ? dayjs.default.tz(row[variable]).format(defaultDateFormatPattern) : row[variable];
|
|
74
74
|
// encode value so the URL can be valid
|
|
75
75
|
var encodedValue = typeof variableValue === 'string' && variableValue !== null && variableValue !== void 0 && variableValue.includes('https') ? variableValue : encodeURIComponent(variableValue);
|
|
76
76
|
variableLink = variableLink.replace("{".concat(variable, "}"), encodedValue);
|
|
@@ -138,7 +138,7 @@ var determineFilterFunction = function determineFilterFunction(column, defaultFi
|
|
|
138
138
|
var defaultDateFormatPattern = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : dayjs.DAYJS_INPUT_FORMATS.SECONDS;
|
|
139
139
|
return _objectSpread(_objectSpread({}, column.type === 'TIMESTAMP' ? {
|
|
140
140
|
filterFunction: function filterFunction(cellValue, filterValue) {
|
|
141
|
-
var dateString = dayjs.default(cellValue).format(defaultDateFormatPattern);
|
|
141
|
+
var dateString = dayjs.default.tz(cellValue).format(defaultDateFormatPattern);
|
|
142
142
|
return dateString.includes(filterValue);
|
|
143
143
|
}
|
|
144
144
|
} : {}), {}, {
|
|
@@ -54,7 +54,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
54
54
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
55
55
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
56
56
|
|
|
57
|
-
var _excluded = ["title", "content", "children", "size", "interval", "isEditable", "isResizable", "values", "locale", "i18n", "isExpanded", "timeRange", "isLazyLoading", "isLoading", "domainRange", "tooltipDateFormatPattern", "tooltipShowTotals", "showTimeInGMT", "testID", "testId", "defaultDateFormatPattern"];
|
|
57
|
+
var _excluded = ["title", "content", "children", "size", "interval", "isEditable", "isResizable", "values", "locale", "timeZone", "i18n", "isExpanded", "timeRange", "isLazyLoading", "isLoading", "domainRange", "tooltipDateFormatPattern", "tooltipShowTotals", "showTimeInGMT", "testID", "testId", "defaultDateFormatPattern"];
|
|
58
58
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
59
59
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
60
60
|
var iotPrefix = Settings.settings.iotPrefix;
|
|
@@ -171,6 +171,7 @@ var defaultProps = {
|
|
|
171
171
|
},
|
|
172
172
|
chartType: LayoutConstants.TIME_SERIES_TYPES.LINE,
|
|
173
173
|
locale: 'en',
|
|
174
|
+
timeZone: undefined,
|
|
174
175
|
content: {
|
|
175
176
|
series: [],
|
|
176
177
|
timeDataSourceId: 'timestamp',
|
|
@@ -201,6 +202,7 @@ var TimeSeriesCard = function TimeSeriesCard(_ref) {
|
|
|
201
202
|
isResizable = _ref.isResizable,
|
|
202
203
|
initialValues = _ref.values,
|
|
203
204
|
locale = _ref.locale,
|
|
205
|
+
timeZone = _ref.timeZone,
|
|
204
206
|
i18n = _ref.i18n,
|
|
205
207
|
isExpanded = _ref.isExpanded,
|
|
206
208
|
timeRange = _ref.timeRange,
|
|
@@ -214,6 +216,9 @@ var TimeSeriesCard = function TimeSeriesCard(_ref) {
|
|
|
214
216
|
testId = _ref.testId,
|
|
215
217
|
defaultDateFormatPattern = _ref.defaultDateFormatPattern,
|
|
216
218
|
others = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
219
|
+
var effectiveTimezone = timeZone || dayjs.default.tz.guess();
|
|
220
|
+
dayjs.default.tz.setDefault(effectiveTimezone);
|
|
221
|
+
dayjs.default.locale(locale);
|
|
217
222
|
// need to deep merge the nested content default props as default props only uses a shallow merge natively
|
|
218
223
|
var contentWithDefaults = React.useMemo(function () {
|
|
219
224
|
return defaultsDeep({}, content, defaultProps.content);
|
|
@@ -243,8 +248,6 @@ var TimeSeriesCard = function TimeSeriesCard(_ref) {
|
|
|
243
248
|
valuesProp = _handleCardVariables.values;
|
|
244
249
|
var chartRef = React.useRef(null);
|
|
245
250
|
var previousTick = React.useRef();
|
|
246
|
-
dayjs.default.locale(locale);
|
|
247
|
-
|
|
248
251
|
// Workaround since downstream consumers might keep regenerating the series object and useMemo does a direct in-memory comparison for the object
|
|
249
252
|
var objectAgnosticSeries = JSON.stringify(series);
|
|
250
253
|
var objectAgnosticThresholds = JSON.stringify(thresholds);
|
|
@@ -324,7 +327,7 @@ var TimeSeriesCard = function TimeSeriesCard(_ref) {
|
|
|
324
327
|
});
|
|
325
328
|
return {
|
|
326
329
|
id: "dataindex-".concat(index),
|
|
327
|
-
values: _objectSpread(_objectSpread({}, omit(value, timeDataSourceId)), {}, _defineProperty__default.default({}, timeDataSourceId, dayjs.default(value[timeDataSourceId]).format(defaultDateFormatPattern))),
|
|
330
|
+
values: _objectSpread(_objectSpread({}, omit(value, timeDataSourceId)), {}, _defineProperty__default.default({}, timeDataSourceId, dayjs.default.tz(value[timeDataSourceId]).format(defaultDateFormatPattern))),
|
|
328
331
|
isSelectable: false
|
|
329
332
|
};
|
|
330
333
|
});
|
|
@@ -478,6 +481,7 @@ var TimeSeriesCard = function TimeSeriesCard(_ref) {
|
|
|
478
481
|
timeRange: timeRange
|
|
479
482
|
}, others, {
|
|
480
483
|
locale: locale,
|
|
484
|
+
timeZone: effectiveTimezone,
|
|
481
485
|
isExpanded: isExpanded,
|
|
482
486
|
isEditable: isEditable,
|
|
483
487
|
isEmpty: isChartDataEmpty,
|
|
@@ -628,6 +632,13 @@ TimeSeriesCard.__docgenInfo = {
|
|
|
628
632
|
},
|
|
629
633
|
"required": false
|
|
630
634
|
},
|
|
635
|
+
"timeZone": {
|
|
636
|
+
"defaultValue": {
|
|
637
|
+
"value": "undefined",
|
|
638
|
+
"computed": true
|
|
639
|
+
},
|
|
640
|
+
"required": false
|
|
641
|
+
},
|
|
631
642
|
"content": {
|
|
632
643
|
"defaultValue": {
|
|
633
644
|
"value": "{\n series: [],\n timeDataSourceId: 'timestamp',\n includeZeroOnXaxis: false,\n includeZeroOnYaxis: false,\n showLegend: true,\n legendPosition: 'bottom',\n truncation: {\n type: 'end_line',\n threshold: 20,\n numCharacter: 20,\n },\n}",
|
|
@@ -146,7 +146,7 @@ var formatGraphTick = function formatGraphTick(timestamp, index, ticks, interval
|
|
|
146
146
|
var previousTickTimestamp = arguments.length > 5 ? arguments[5] : undefined;
|
|
147
147
|
var shouldDisplayGMT = arguments.length > 6 ? arguments[6] : undefined;
|
|
148
148
|
dayjs.default.locale(locale);
|
|
149
|
-
var currentTimestamp = shouldDisplayGMT ? dayjs.default.utc(timestamp) : dayjs.default(timestamp);
|
|
149
|
+
var currentTimestamp = shouldDisplayGMT ? dayjs.default.utc(timestamp) : dayjs.default.tz(timestamp);
|
|
150
150
|
var sameDay = dayjs.default(previousTickTimestamp).isSame(currentTimestamp, 'day');
|
|
151
151
|
var sameMonth = dayjs.default(previousTickTimestamp).isSame(currentTimestamp, 'month');
|
|
152
152
|
var sameYear = dayjs.default(previousTickTimestamp).isSame(currentTimestamp, 'year');
|
|
@@ -240,7 +240,7 @@ var formatChartData = function formatChartData() {
|
|
|
240
240
|
// Check to see if the data Item actually exists in this timestamp before adding to data (to support sparse data in the values)
|
|
241
241
|
if (!isNil(dataItem[dataSourceId])) {
|
|
242
242
|
data.push({
|
|
243
|
-
date:
|
|
243
|
+
date: dayjs.default.tz(dataItem[timeDataSourceId]).toDate(),
|
|
244
244
|
value: dataItem[dataSourceId],
|
|
245
245
|
group: label,
|
|
246
246
|
dataSourceId: dataSourceId
|
|
@@ -19,6 +19,7 @@ var CardPropTypes = require('../../constants/CardPropTypes.js');
|
|
|
19
19
|
var LayoutConstants = require('../../constants/LayoutConstants.js');
|
|
20
20
|
var Card = require('../Card/Card.js');
|
|
21
21
|
var cardUtilityFunctions = require('../../utils/cardUtilityFunctions.js');
|
|
22
|
+
var dayjs = require('../../utils/dayjs.js');
|
|
22
23
|
var valueCardUtils = require('./valueCardUtils.js');
|
|
23
24
|
var ValueContent = require('./ValueContent.js');
|
|
24
25
|
|
|
@@ -30,7 +31,7 @@ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefault(_objectWith
|
|
|
30
31
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
31
32
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
32
33
|
|
|
33
|
-
var _excluded = ["title", "content", "size", "values", "isEditable", "isResizable", "i18n", "dataState", "id", "locale", "customFormatter", "children", "fontSize", "isNumberValueCompact", "testID", "testId", "onAttributeClick", "className", "shouldUseTranslatedLabels"];
|
|
34
|
+
var _excluded = ["title", "content", "size", "values", "isEditable", "isResizable", "i18n", "dataState", "id", "locale", "timeZone", "customFormatter", "children", "fontSize", "isNumberValueCompact", "testID", "testId", "onAttributeClick", "className", "shouldUseTranslatedLabels"];
|
|
34
35
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
35
36
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
36
37
|
|
|
@@ -51,6 +52,7 @@ var ValueCard = function ValueCard(_ref) {
|
|
|
51
52
|
dataState = _ref.dataState,
|
|
52
53
|
id = _ref.id,
|
|
53
54
|
locale = _ref.locale,
|
|
55
|
+
timeZone = _ref.timeZone,
|
|
54
56
|
customFormatter = _ref.customFormatter,
|
|
55
57
|
children = _ref.children,
|
|
56
58
|
fontSize = _ref.fontSize,
|
|
@@ -61,6 +63,8 @@ var ValueCard = function ValueCard(_ref) {
|
|
|
61
63
|
className = _ref.className,
|
|
62
64
|
shouldUseTranslatedLabels = _ref.shouldUseTranslatedLabels,
|
|
63
65
|
others = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
66
|
+
var effectiveTimezone = timeZone || dayjs.default.tz.guess();
|
|
67
|
+
dayjs.default.tz.setDefault(effectiveTimezone);
|
|
64
68
|
var availableActions = _objectSpread({
|
|
65
69
|
expand: false
|
|
66
70
|
}, others.availableActions);
|
|
@@ -86,6 +90,7 @@ var ValueCard = function ValueCard(_ref) {
|
|
|
86
90
|
i18n: i18n,
|
|
87
91
|
shouldUseTranslatedLabels: shouldUseTranslatedLabels,
|
|
88
92
|
locale: locale,
|
|
93
|
+
timeZone: effectiveTimezone,
|
|
89
94
|
id: id,
|
|
90
95
|
className: classnames__default.default(className, _defineProperty__default.default(_defineProperty__default.default({}, "".concat(valueCardUtils.BASE_CLASS_NAME, "__horizontal"), layout === LayoutConstants.CARD_LAYOUTS.HORIZONTAL), "".concat(valueCardUtils.BASE_CLASS_NAME, "__vertical"), layout === LayoutConstants.CARD_LAYOUTS.VERTICAL))
|
|
91
96
|
// TODO: remove deprecated 'testID' in v3.
|
|
@@ -753,6 +753,8 @@ var CardPropTypes = {
|
|
|
753
753
|
testId: PropTypes__default.default.string,
|
|
754
754
|
/** the locale of the card, needed for number and date formatting */
|
|
755
755
|
locale: PropTypes__default.default.string,
|
|
756
|
+
/** IANA timezone string to set as default timezone for dayjs */
|
|
757
|
+
timeZone: PropTypes__default.default.string,
|
|
756
758
|
/** a way to pass down dashboard grid resize handles, only used by other card types */
|
|
757
759
|
resizeHandles: PropTypes__default.default.array,
|
|
758
760
|
/** Optional callback function that is passed an onChange function and the original cardConfig object.
|
|
@@ -550,7 +550,7 @@ var handleTooltip = function handleTooltip(dataOrHoveredElement, defaultTooltip,
|
|
|
550
550
|
: dataOrHoveredElement;
|
|
551
551
|
var timeStamp = Array.isArray(data) ? (_data$ = data[0]) === null || _data$ === void 0 || (_data$ = _data$.date) === null || _data$ === void 0 ? void 0 : _data$.getTime() : data === null || data === void 0 || (_data$date = data.date) === null || _data$date === void 0 ? void 0 : _data$date.getTime();
|
|
552
552
|
var dateLabel = timeStamp ? "<li class='datapoint-tooltip'>\n <p class='label'>".concat((showTimeInGMT // show timestamp in gmt or local time
|
|
553
|
-
? dayjs.default.utc(timeStamp) : dayjs.default(timeStamp)).format(tooltipDateFormatPattern), "</p>\n </li>") : '';
|
|
553
|
+
? dayjs.default.utc(timeStamp) : dayjs.default.tz(timeStamp)).format(tooltipDateFormatPattern), "</p>\n </li>") : '';
|
|
554
554
|
var matchingAlertRanges = findMatchingAlertRange(alertRanges, data);
|
|
555
555
|
var matchingAlertLabels = Array.isArray(matchingAlertRanges) ? matchingAlertRanges.map(function (matchingAlertRange) {
|
|
556
556
|
return "<li class='datapoint-tooltip'><a style=\"background-color:".concat(matchingAlertRange.color, "\" class=\"tooltip-color\"></a><p class='label'>").concat(alertDetected, " ").concat(matchingAlertRange.details, "</p></li>");
|
package/lib/utils/dayjs.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
require('core-js/modules/es.array.find.js');
|
|
5
6
|
require('core-js/modules/es.object.keys.js');
|
|
6
7
|
require('core-js/modules/es.object.to-string.js');
|
|
8
|
+
require('core-js/modules/es.string.trim.js');
|
|
7
9
|
require('core-js/modules/web.dom-collections.for-each.js');
|
|
8
10
|
var dayjs$2 = require('dayjs');
|
|
9
11
|
|
|
@@ -16,12 +18,14 @@ var utc = require('dayjs/plugin/utc');
|
|
|
16
18
|
var pluralGetSet = require('dayjs/plugin/pluralGetSet');
|
|
17
19
|
var timezone = require('dayjs/plugin/timezone');
|
|
18
20
|
var localeData = require('dayjs/plugin/localeData');
|
|
21
|
+
var customParseFormat = require('dayjs/plugin/customParseFormat');
|
|
19
22
|
var dayjs = dayjs__default.default;
|
|
20
23
|
dayjs.extend(localizedFormat); // gives the 'L' formatting ability for .format
|
|
21
24
|
dayjs.extend(utc); // gives .utc() and .local()
|
|
22
25
|
dayjs.extend(pluralGetSet); // gives .hour .minute get/set ability
|
|
23
26
|
dayjs.extend(timezone); // timezone support
|
|
24
27
|
dayjs.extend(localeData); // gives local specific data
|
|
28
|
+
dayjs.extend(customParseFormat);
|
|
25
29
|
|
|
26
30
|
/* eslint-disable global-require */
|
|
27
31
|
var locales = {
|
|
@@ -451,7 +455,25 @@ var DAYJS_INPUT_FORMATS = {
|
|
|
451
455
|
SECONDS: 'L HH:mm:ss',
|
|
452
456
|
RANGE: 'L HH:mm'
|
|
453
457
|
};
|
|
458
|
+
var formats = [
|
|
459
|
+
// ISO Variations (Most common for APIs)
|
|
460
|
+
'YYYY-MM-DDTHH:mm:ssZ', 'YYYY-MM-DDTHH:mm:ss.SSSZ', 'YYYY-MM-DDTHH:mm:ss', 'YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD HH:mm',
|
|
461
|
+
// US / Common UI Variations
|
|
462
|
+
'MM/DD/YYYY HH:mm:ss', 'MM/DD/YYYY HH:mm', 'MM-DD-YYYY HH:mm:ss', 'MM-DD-YYYY HH:mm',
|
|
463
|
+
// 12-Hour Variations (If users can type AM/PM)
|
|
464
|
+
'MM/DD/YYYY hh:mm A', 'YYYY-MM-DD hh:mm A',
|
|
465
|
+
// Date Only Fallbacks
|
|
466
|
+
'YYYY-MM-DD', 'MM/DD/YYYY', 'MM-DD-YYYY', 'L' // Localized format (uses the loaded Day.js locale)
|
|
467
|
+
];
|
|
468
|
+
var detectDateTimeFormat = function detectDateTimeFormat(dateTimeString) {
|
|
469
|
+
if (!(dateTimeString !== null && dateTimeString !== void 0 && dateTimeString.trim())) return null;
|
|
470
|
+
return formats.find(function (format) {
|
|
471
|
+
return dayjs(dateTimeString, format, true).isValid();
|
|
472
|
+
});
|
|
473
|
+
};
|
|
454
474
|
var dayjs$1 = dayjs;
|
|
455
475
|
|
|
456
476
|
exports.DAYJS_INPUT_FORMATS = DAYJS_INPUT_FORMATS;
|
|
457
477
|
exports.default = dayjs$1;
|
|
478
|
+
exports.detectDateTimeFormat = detectDateTimeFormat;
|
|
479
|
+
exports.formats = formats;
|