275 lines
5.7 KiB
JavaScript
275 lines
5.7 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.getAmPm = exports.findSimilarTime = exports.isTimeInStep = exports.getTimeUnits = exports.getFixValue = exports.time = void 0;
|
||
|
const date_fns_1 = require("date-fns"); //
|
||
|
const _utils_1 = require("../../_utils");
|
||
|
exports.time = {
|
||
|
amHours: [
|
||
|
'00',
|
||
|
'01',
|
||
|
'02',
|
||
|
'03',
|
||
|
'04',
|
||
|
'05',
|
||
|
'06',
|
||
|
'07',
|
||
|
'08',
|
||
|
'09',
|
||
|
'10',
|
||
|
'11'
|
||
|
],
|
||
|
pmHours: [
|
||
|
'12',
|
||
|
'01',
|
||
|
'02',
|
||
|
'03',
|
||
|
'04',
|
||
|
'05',
|
||
|
'06',
|
||
|
'07',
|
||
|
'08',
|
||
|
'09',
|
||
|
'10',
|
||
|
'11'
|
||
|
],
|
||
|
hours: [
|
||
|
'00',
|
||
|
'01',
|
||
|
'02',
|
||
|
'03',
|
||
|
'04',
|
||
|
'05',
|
||
|
'06',
|
||
|
'07',
|
||
|
'08',
|
||
|
'09',
|
||
|
'10',
|
||
|
'11',
|
||
|
'12',
|
||
|
'13',
|
||
|
'14',
|
||
|
'15',
|
||
|
'16',
|
||
|
'17',
|
||
|
'18',
|
||
|
'19',
|
||
|
'20',
|
||
|
'21',
|
||
|
'22',
|
||
|
'23'
|
||
|
],
|
||
|
minutes: [
|
||
|
'00',
|
||
|
'01',
|
||
|
'02',
|
||
|
'03',
|
||
|
'04',
|
||
|
'05',
|
||
|
'06',
|
||
|
'07',
|
||
|
'08',
|
||
|
'09',
|
||
|
'10',
|
||
|
'11',
|
||
|
'12',
|
||
|
'13',
|
||
|
'14',
|
||
|
'15',
|
||
|
'16',
|
||
|
'17',
|
||
|
'18',
|
||
|
'19',
|
||
|
'20',
|
||
|
'21',
|
||
|
'22',
|
||
|
'23',
|
||
|
'24',
|
||
|
'25',
|
||
|
'26',
|
||
|
'27',
|
||
|
'28',
|
||
|
'29',
|
||
|
'30',
|
||
|
'31',
|
||
|
'32',
|
||
|
'33',
|
||
|
'34',
|
||
|
'35',
|
||
|
'36',
|
||
|
'37',
|
||
|
'38',
|
||
|
'39',
|
||
|
'40',
|
||
|
'41',
|
||
|
'42',
|
||
|
'43',
|
||
|
'44',
|
||
|
'45',
|
||
|
'46',
|
||
|
'47',
|
||
|
'48',
|
||
|
'49',
|
||
|
'50',
|
||
|
'51',
|
||
|
'52',
|
||
|
'53',
|
||
|
'54',
|
||
|
'55',
|
||
|
'56',
|
||
|
'57',
|
||
|
'58',
|
||
|
'59'
|
||
|
],
|
||
|
seconds: [
|
||
|
'00',
|
||
|
'01',
|
||
|
'02',
|
||
|
'03',
|
||
|
'04',
|
||
|
'05',
|
||
|
'06',
|
||
|
'07',
|
||
|
'08',
|
||
|
'09',
|
||
|
'10',
|
||
|
'11',
|
||
|
'12',
|
||
|
'13',
|
||
|
'14',
|
||
|
'15',
|
||
|
'16',
|
||
|
'17',
|
||
|
'18',
|
||
|
'19',
|
||
|
'20',
|
||
|
'21',
|
||
|
'22',
|
||
|
'23',
|
||
|
'24',
|
||
|
'25',
|
||
|
'26',
|
||
|
'27',
|
||
|
'28',
|
||
|
'29',
|
||
|
'30',
|
||
|
'31',
|
||
|
'32',
|
||
|
'33',
|
||
|
'34',
|
||
|
'35',
|
||
|
'36',
|
||
|
'37',
|
||
|
'38',
|
||
|
'39',
|
||
|
'40',
|
||
|
'41',
|
||
|
'42',
|
||
|
'43',
|
||
|
'44',
|
||
|
'45',
|
||
|
'46',
|
||
|
'47',
|
||
|
'48',
|
||
|
'49',
|
||
|
'50',
|
||
|
'51',
|
||
|
'52',
|
||
|
'53',
|
||
|
'54',
|
||
|
'55',
|
||
|
'56',
|
||
|
'57',
|
||
|
'58',
|
||
|
'59'
|
||
|
],
|
||
|
period: ['AM', 'PM']
|
||
|
};
|
||
|
function getFixValue(value) {
|
||
|
return `00${value}`.slice(-2);
|
||
|
}
|
||
|
exports.getFixValue = getFixValue;
|
||
|
// TODO: refactor the logic, it's somehow a patch logic
|
||
|
function getTimeUnits(defaultValue, stepOrList, isHourWithAmPm) {
|
||
|
if (Array.isArray(stepOrList)) {
|
||
|
return (isHourWithAmPm === 'am'
|
||
|
? stepOrList.filter((v) => v < 12)
|
||
|
: isHourWithAmPm === 'pm'
|
||
|
? stepOrList.filter((v) => v >= 12).map((v) => (v === 12 ? 12 : v - 12))
|
||
|
: stepOrList).map((v) => getFixValue(v));
|
||
|
}
|
||
|
else if (typeof stepOrList === 'number') {
|
||
|
if (isHourWithAmPm === 'am') {
|
||
|
return defaultValue.filter((hour) => {
|
||
|
const hourAsNumber = Number(hour);
|
||
|
return hourAsNumber < 12 && hourAsNumber % stepOrList === 0;
|
||
|
});
|
||
|
}
|
||
|
else if (isHourWithAmPm === 'pm') {
|
||
|
return defaultValue
|
||
|
.filter((hour) => {
|
||
|
const hourAsNumber = Number(hour);
|
||
|
return hourAsNumber >= 12 && hourAsNumber % stepOrList === 0;
|
||
|
})
|
||
|
.map((hour) => {
|
||
|
const hourAsNumber = Number(hour);
|
||
|
return getFixValue(hourAsNumber === 12 ? 12 : hourAsNumber - 12);
|
||
|
});
|
||
|
}
|
||
|
return defaultValue.filter((hour) => {
|
||
|
return Number(hour) % stepOrList === 0;
|
||
|
});
|
||
|
}
|
||
|
else {
|
||
|
return isHourWithAmPm === 'am'
|
||
|
? defaultValue.filter((hour) => Number(hour) < 12)
|
||
|
: isHourWithAmPm === 'pm'
|
||
|
? defaultValue
|
||
|
.map((hour) => Number(hour))
|
||
|
.filter((hour) => Number(hour) >= 12)
|
||
|
.map((v) => getFixValue(v === 12 ? 12 : v - 12))
|
||
|
: defaultValue;
|
||
|
}
|
||
|
}
|
||
|
exports.getTimeUnits = getTimeUnits;
|
||
|
function isTimeInStep(value, type, stepOrList) {
|
||
|
if (!stepOrList) {
|
||
|
return true;
|
||
|
}
|
||
|
else if (typeof stepOrList === 'number') {
|
||
|
return value % stepOrList === 0;
|
||
|
}
|
||
|
else {
|
||
|
return stepOrList.includes(value);
|
||
|
}
|
||
|
}
|
||
|
exports.isTimeInStep = isTimeInStep;
|
||
|
function findSimilarTime(value, type, stepOrList) {
|
||
|
const list = getTimeUnits(exports.time[type], stepOrList).map(Number);
|
||
|
let lowerBound, upperBound;
|
||
|
for (let i = 0; i < list.length; ++i) {
|
||
|
const v = list[i];
|
||
|
if (v === value)
|
||
|
return v;
|
||
|
else if (v > value) {
|
||
|
upperBound = v;
|
||
|
break;
|
||
|
}
|
||
|
lowerBound = v;
|
||
|
}
|
||
|
if (lowerBound === undefined) {
|
||
|
if (!upperBound) {
|
||
|
(0, _utils_1.throwError)('time-picker', "Please set 'hours' or 'minutes' or 'seconds' props");
|
||
|
}
|
||
|
return upperBound;
|
||
|
}
|
||
|
if (upperBound === undefined) {
|
||
|
return lowerBound;
|
||
|
}
|
||
|
return upperBound - value > value - lowerBound ? lowerBound : upperBound;
|
||
|
}
|
||
|
exports.findSimilarTime = findSimilarTime;
|
||
|
function getAmPm(value) {
|
||
|
return (0, date_fns_1.getHours)(value) < 12 ? 'am' : 'pm';
|
||
|
}
|
||
|
exports.getAmPm = getAmPm;
|