71 lines
3.1 KiB
JavaScript
71 lines
3.1 KiB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
import { createIsAfterIgnoreDatePart } from './time-utils';
|
|
import { mergeDateAndTime, getTodayDate } from './date-utils';
|
|
export var SECTION_TYPE_GRANULARITY = {
|
|
year: 1,
|
|
month: 2,
|
|
day: 3,
|
|
hours: 4,
|
|
minutes: 5,
|
|
seconds: 6,
|
|
milliseconds: 7
|
|
};
|
|
export var getSectionTypeGranularity = function getSectionTypeGranularity(sections) {
|
|
return Math.max.apply(Math, _toConsumableArray(sections.map(function (section) {
|
|
var _SECTION_TYPE_GRANULA;
|
|
return (_SECTION_TYPE_GRANULA = SECTION_TYPE_GRANULARITY[section.type]) != null ? _SECTION_TYPE_GRANULA : 1;
|
|
})));
|
|
};
|
|
export var getViewsGranularity = function getViewsGranularity(views) {
|
|
return Math.max.apply(Math, _toConsumableArray(views.map(function (view) {
|
|
var _SECTION_TYPE_GRANULA2;
|
|
return (_SECTION_TYPE_GRANULA2 = SECTION_TYPE_GRANULARITY[view]) != null ? _SECTION_TYPE_GRANULA2 : 1;
|
|
})));
|
|
};
|
|
var roundDate = function roundDate(utils, granularity, date) {
|
|
if (granularity === SECTION_TYPE_GRANULARITY.year) {
|
|
return utils.startOfYear(date);
|
|
}
|
|
if (granularity === SECTION_TYPE_GRANULARITY.month) {
|
|
return utils.startOfMonth(date);
|
|
}
|
|
if (granularity === SECTION_TYPE_GRANULARITY.day) {
|
|
return utils.startOfDay(date);
|
|
}
|
|
|
|
// We don't have startOfHour / startOfMinute / startOfSecond
|
|
var roundedDate = date;
|
|
if (granularity < SECTION_TYPE_GRANULARITY.minutes) {
|
|
roundedDate = utils.setMinutes(roundedDate, 0);
|
|
}
|
|
if (granularity < SECTION_TYPE_GRANULARITY.seconds) {
|
|
roundedDate = utils.setSeconds(roundedDate, 0);
|
|
}
|
|
if (granularity < SECTION_TYPE_GRANULARITY.milliseconds) {
|
|
roundedDate = utils.setMilliseconds(roundedDate, 0);
|
|
}
|
|
return roundedDate;
|
|
};
|
|
export var getDefaultReferenceDate = function getDefaultReferenceDate(_ref) {
|
|
var _props$disableIgnorin;
|
|
var props = _ref.props,
|
|
utils = _ref.utils,
|
|
granularity = _ref.granularity,
|
|
timezone = _ref.timezone,
|
|
inGetTodayDate = _ref.getTodayDate;
|
|
var referenceDate = inGetTodayDate ? inGetTodayDate() : roundDate(utils, granularity, getTodayDate(utils, timezone));
|
|
if (props.minDate != null && utils.isAfterDay(props.minDate, referenceDate)) {
|
|
referenceDate = roundDate(utils, granularity, props.minDate);
|
|
}
|
|
if (props.maxDate != null && utils.isBeforeDay(props.maxDate, referenceDate)) {
|
|
referenceDate = roundDate(utils, granularity, props.maxDate);
|
|
}
|
|
var isAfter = createIsAfterIgnoreDatePart((_props$disableIgnorin = props.disableIgnoringDatePartForTimeValidation) != null ? _props$disableIgnorin : false, utils);
|
|
if (props.minTime != null && isAfter(props.minTime, referenceDate)) {
|
|
referenceDate = roundDate(utils, granularity, props.disableIgnoringDatePartForTimeValidation ? props.minTime : mergeDateAndTime(utils, referenceDate, props.minTime));
|
|
}
|
|
if (props.maxTime != null && isAfter(referenceDate, props.maxTime)) {
|
|
referenceDate = roundDate(utils, granularity, props.disableIgnoringDatePartForTimeValidation ? props.maxTime : mergeDateAndTime(utils, referenceDate, props.maxTime));
|
|
}
|
|
return referenceDate;
|
|
}; |