UNPKG

funda-ui

Version:

React components using pure Bootstrap 5+ which does not contain any external style and script libraries.

167 lines (156 loc) 6.06 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["RPB"] = factory(); else root["RPB"] = factory(); })(this, () => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ // The require scope /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "convertTimeToMin": () => (/* binding */ convertTimeToMin), /* harmony export */ "getMinutesBetweenDates": () => (/* binding */ getMinutesBetweenDates), /* harmony export */ "getMinutesBetweenTime": () => (/* binding */ getMinutesBetweenTime), /* harmony export */ "getTimeslots": () => (/* binding */ getTimeslots) /* harmony export */ }); /** * Get timeslots from starting and ending time * @param {string} startTime - start time in format "HH:mm" * @param {string} endTime - end time in format "HH:mm" * @param {number} timeInterval - time interval in minutes * @param {boolean} formatRange - if true returns ranges like "10:00 - 11:00", if false returns single times like "10:00" * @returns {string[]} Array of time slots * @example console.log(getTimeslots("10:00", "14:00", 60, true)); //['10:00 - 11:00', '11:00 - 12:00', '12:00 - 13:00', '13:00 - 14:00'] console.log(getTimeslots("10:00", "14:00", 60)); // ['10:00', '11:00', '12:00', '13:00'] console.log(getTimeslots("08:00:00", "08:02:00", 0.4)); // ['08:00:00', '08:00:24', '08:00:48', '08:01:12', '08:01:36', '08:02:00'] */ function getTimeslots(startTime, endTime, timeInterval) { var formatRange = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; // Parse time string to seconds var parseTime = function parseTime(s) { var c = s.split(":").map(Number); // Support HH:mm or HH:mm:ss return c[0] * 3600 + c[1] * 60 + (c[2] || 0); }; // Pad with zeros var pad = function pad(str, max) { str = str.toString(); return str.length < max ? pad("0" + str, max) : str; }; // Convert seconds to HH:mm:ss var convertTime = function convertTime(secs) { var hour = Math.floor(secs / 3600); var min = Math.floor(secs % 3600 / 60); var sec = secs % 60; return pad(hour, 2) + ":" + pad(min, 2) + ":" + pad(sec, 2); }; // Calculate time slots var calculateTimeSlot = function calculateTimeSlot(_startTime, _endTime, _timeInterval) { var timeSlots = []; var currentTime = _startTime; while (currentTime <= _endTime) { if (formatRange) { var t = convertTime(currentTime) + ' - ' + convertTime(Math.min(currentTime + _timeInterval, _endTime)); timeSlots.push(t); } else { timeSlots.push(convertTime(currentTime)); } currentTime += _timeInterval; } return timeSlots; }; var inputStartTime = parseTime(startTime); var inputEndTime = parseTime(endTime); // If timeInterval is not an integer, treat as minutes with decimals, convert to seconds var isDecimal = !Number.isInteger(timeInterval); var intervalInSeconds = isDecimal ? Math.round(timeInterval * 60) : timeInterval * 60; return calculateTimeSlot(inputStartTime, inputEndTime, intervalInSeconds); } /** * Get minutes between two dates * @param {Date} startDate - start date * @param {Date} endDate - ebd date * @returns Number */ function getMinutesBetweenDates(startDate, endDate) { var diff = endDate.getTime() - startDate.getTime(); return diff / 60000; } /** * Get minutes between two time * @param {String} startTime - start time * @param {String} endTime - ebd time * @returns Number */ function getMinutesBetweenTime(startTime, endTime) { var pad = function pad(num) { return ("0" + num).slice(-2); }; var s = startTime.split(":"), sMin = +s[1] + s[0] * 60, e = endTime.split(":"), eMin = +e[1] + e[0] * 60, diff = eMin - sMin; if (diff < 0) { sMin -= 12 * 60; diff = eMin - sMin; } var h = Math.floor(diff / 60), m = diff % 60; return "" + pad(h) + ":" + pad(m); } /** * Convert HH:MM:SS into minute * @param {String} timeStr - time string * @returns Number */ function convertTimeToMin(timeStr) { var _time = timeStr.split(':').length === 3 ? "".concat(timeStr) : "".concat(timeStr, ":00"); var res = _time.split(':'); // split it at the colons // Hours are worth 60 minutes. var minutes = +res[0] * 60 + +res[1]; return minutes; } /******/ return __webpack_exports__; /******/ })() ; });