UNPKG

kits-core

Version:
464 lines (412 loc) 13.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatNumberWithK = exports.capitalizingString = exports.formatCurrency = exports.removeLastCharacter = exports.formatPercent = exports.fillParamsToMessage = exports.hideLongText = exports.convertNormalTextToSnakeText = exports.getDefaultTextIfNull = exports.convertCamelCaseToNormalCase = exports.formatDateTimeForFileName = exports.formatDatetimeWithFormat = exports.calculate_age = exports.formatUTCDateTime = exports.formatUTCDate = exports.formatDateTimeFromDateTime = exports.formatDateTimeFromUnix = exports.formatDate = exports.getSequencerChar = exports.snakeCaseToCamelCase = exports.capitalize = exports.capitalizeFirstLetter = exports.getEndpointParamFromArray = exports.getEndpointParamFromObjectSameKey = exports.getEndpointParamFromObject = exports.isNumeric = exports.convertUrlParamToEndpoint = undefined; exports.formatNumber = formatNumber; var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _require = require('../configs/constant'), FORMAT_CONFIG = _require.FORMAT_CONFIG, INVALID_VALUE = _require.INVALID_VALUE; var SEPARATOR = ","; /** * * @param value * @returns {string} */ function formatNumber(value) { if (!value) return '0'; value = parseInt(value) ? parseInt(value) : 0; value = Number(value).valueOf().toString(); return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); } /** * Convert "/campaigns/:<paramName1>/:<paramName2>/config" to "/campaigns/<paramValue2>/<paramValue2>/config"; * @param url: the link endpoint api has param name variable * @param params: value list to replace for param name * @returns {string}: the endpoint api */ var convertUrlParamToEndpoint = exports.convertUrlParamToEndpoint = function convertUrlParamToEndpoint(url) { for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { params[_key - 1] = arguments[_key]; } if (!url) return ''; if (isNumeric(url)) return url; var i = 0; var pattern = /:(\w+)/gm; return url.replace(pattern, function (matched) { return matched.replace(matched, params[i++]); }); }; /** * * @param value * @returns {boolean} */ var isNumeric = exports.isNumeric = function isNumeric(value) { return (/^-?\d+$/.test(value) ); }; /** * Convert object to query and add it into url * @param dataParam: Object with key and value * @returns {string}: the endpoint api with param on url */ var getEndpointParamFromObject = exports.getEndpointParamFromObject = function getEndpointParamFromObject(dataParam) { var strUrl = '?'; var props = Object.keys(dataParam); props.forEach(function (keyItem) { strUrl += keyItem + '=' + dataParam[keyItem] + '&'; }); strUrl = strUrl.substring(0, strUrl.length - 1); return strUrl; }; /** * Convert object to query and add it into url * @param dataParam: Object with key and value * @param params * @returns {string}: the endpoint api with param on url */ var getEndpointParamFromObjectSameKey = exports.getEndpointParamFromObjectSameKey = function getEndpointParamFromObjectSameKey(dataParam) { for (var _len2 = arguments.length, params = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { params[_key2 - 1] = arguments[_key2]; } var separator = SEPARATOR; var strUrl = '?'; var props = Object.keys(dataParam); props.forEach(function (keyItem) { if (params.includes(keyItem)) { if (typeof dataParam[keyItem] === 'string') { var keyNameList = dataParam[keyItem].split(separator); keyNameList.forEach(function (v) { var itemFilter = keyItem + '=' + v + '&'; strUrl += itemFilter; }); } } else { strUrl += keyItem + '=' + dataParam[keyItem] + '&'; } }); strUrl = strUrl.substring(0, strUrl.length - 1); return strUrl; }; var getEndpointParamFromArray = exports.getEndpointParamFromArray = function getEndpointParamFromArray(array) { var strUrl = '?'; array.forEach(function (item) { var props = Object.keys(item); props.forEach(function (keyItem) { strUrl += keyItem + '=' + item[keyItem] + '&'; }); }); strUrl = strUrl.substring(0, strUrl.length - 1); return strUrl; }; /** * @s: string need capitalize * ex: jOhn -> John */ var capitalizeFirstLetter = exports.capitalizeFirstLetter = function capitalizeFirstLetter(s) { if (typeof s !== 'string') return ''; return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase(); }; /** * * @param s * @returns {string} */ var capitalize = exports.capitalize = function capitalize(s) { if (typeof s !== 'string') return ''; return s.trim().toLowerCase().replace(/\w\S*/g, function (w) { return w.replace(/^\w/, function (c) { return c.toUpperCase(); }); }); }; /** * String need to camel case * @param s * @returns {string} * ex: pro_case -> proCase */ var snakeCaseToCamelCase = exports.snakeCaseToCamelCase = function snakeCaseToCamelCase(s) { if (typeof s !== 'string') return ''; return s.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, function (m, chr) { return chr.toUpperCase(); }); }; var getSequencerChar = exports.getSequencerChar = function getSequencerChar(ind, size) { if (size === 1) return 'Lastly,'; if (size === 2) { if (ind === 0) return 'Firstly,'; if (ind === 1) return 'Lastly,'; } if (size === 3) { if (ind === 0) return 'Firstly,'; if (ind === 1) return 'Then,'; if (ind === 2) return 'Lastly,'; } if (size >= 3) { if (ind === 0) return 'Firstly,'; if (ind >= 1 && ind < size - 1) return 'Then,'; if (ind === size - 1) return 'Lastly,'; } if (!ind) { return 'Lastly,'; } // let arr = ["Firstly", "Secondly", "Thirdly", "Fourthly", "Then", "Lastly"] }; /** * * @param strDate * @returns {string} */ var formatDate = exports.formatDate = function formatDate(strDate) { if (INVALID_VALUE.includes(strDate)) return ''; var date = new Date(Number(strDate)); var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; return date.getDate() + ' ' + months[date.getMonth()] + ' ' + date.getFullYear(); }; /** * * @param unixTime * @param format * @returns {string} */ var formatDateTimeFromUnix = exports.formatDateTimeFromUnix = function formatDateTimeFromUnix(unixTime, format) { if (Number(unixTime) < 0) return "-"; if (unixTime === null || unixTime === undefined) return "-"; if (!unixTime) return "-"; return _moment2.default.unix(Number(unixTime)).format(format || FORMAT_CONFIG.DATE_FORMAT_TEXT); }; /** * * @param dateTime * @param format * @returns {string} */ var formatDateTimeFromDateTime = exports.formatDateTimeFromDateTime = function formatDateTimeFromDateTime(dateTime, format) { return (0, _moment2.default)(dateTime).format(format || FORMAT_CONFIG.DATE_FORMAT_TEXT); }; /** * * @param strDate * @param rangeDate * @returns {string} */ var formatUTCDate = exports.formatUTCDate = function formatUTCDate(strDate, rangeDate) { var formatStr = ''; switch (rangeDate) { case 'last_half_year': formatStr = 'MM/YYYY'; break; case 'today': case 'yesterday': formatStr = 'LTS'; break; default: formatStr = 'll'; break; } return _moment2.default.unix(Number(strDate)).format(formatStr); }; /** * * @param strDate * @param rangeDate * @returns {string} */ var formatUTCDateTime = exports.formatUTCDateTime = function formatUTCDateTime(strDate, rangeDate) { var formatStr = rangeDate === 'today' || rangeDate === 'yesterday' ? 'LTS' : 'LLLL'; return _moment2.default.unix(Number(strDate)).format(formatStr); }; /** * * @param dob * @returns {string} */ var calculate_age = exports.calculate_age = function calculate_age(dob) { if (!Number(dob)) return ''; var date = new Date(Number(dob) * 1000); var diff_ms = Date.now() - date.getTime(); var age_dt = new Date(diff_ms); var year = age_dt.getUTCFullYear() - 1970; var month = age_dt.getMonth(); var result = year + ' years'; if (month !== 0) result += ' ' + month + ' months'; return '(' + result + ')'; }; /** * * @param unixTimestamp * @param format * @returns {string|string[]} */ var formatDatetimeWithFormat = exports.formatDatetimeWithFormat = function formatDatetimeWithFormat(unixTimestamp, format) { if (!Number(unixTimestamp)) return 'N/A'; var date = new Date(Number(unixTimestamp) * 1000); switch (format) { case 'dow, mmm dd, yyyy': return date.toDateString().split(' ').map(function (el, ind) { return [1, 3].includes(ind) ? el + ' ' : el + ', '; }); case 'mmm dd, yyyy': return date.toDateString().split(' ').splice(1).map(function (el, ind) { return ind === 0 ? el + ', ' : el + ' '; }).join(''); case 'hh:mm:ss am/pm': return date.toLocaleTimeString(); case 'CASE3': default: } }; /** * * @param filename * @param format * @returns {*} */ var formatDateTimeForFileName = exports.formatDateTimeForFileName = function formatDateTimeForFileName(filename, format) { var dateNow = format ? (0, _moment2.default)().format(format) : 'YYYYMMDD_HH_mm_ss'; return filename + dateNow; }; /** * * @param camelCaseString * @returns {string|""} */ var convertCamelCaseToNormalCase = exports.convertCamelCaseToNormalCase = function convertCamelCaseToNormalCase(camelCaseString) { if (!camelCaseString) return ''; var result = camelCaseString.replace(/([A-Z])/g, ' $1'); var finalResult = result.charAt(0).toUpperCase() + result.slice(1); return finalResult && finalResult.toLowerCase(); }; /** * * @param value * @param defaultValue * @returns {*|string} */ var getDefaultTextIfNull = exports.getDefaultTextIfNull = function getDefaultTextIfNull(value, defaultValue) { var dataDefault = defaultValue || 'N/A'; return value || dataDefault; }; /** * * @param input * @returns {string} */ var convertNormalTextToSnakeText = exports.convertNormalTextToSnakeText = function convertNormalTextToSnakeText(input) { var regexPattern = /\s/g; input = input.trim(); input = input.toLowerCase(); input = input.replaceAll(regexPattern, '-'); return input; }; /** * * @param text * @param size * @returns {string|*} */ var hideLongText = exports.hideLongText = function hideLongText(text, size) { if (!text) return ''; if (typeof text !== 'string') return ''; if (text && text.length > size) { return text.substring(0, size) + '...'; } return text; }; /** * * @param message * @param params * @returns {*|void|string} */ var fillParamsToMessage = exports.fillParamsToMessage = function fillParamsToMessage(message) { for (var _len3 = arguments.length, params = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { params[_key3 - 1] = arguments[_key3]; } var i = 0; var pattern = /\/:(\w+)/gm; return message.replace(pattern, function (matched) { return matched.replace(matched, params[i++]); }); }; /** * * @param value * @param float * @returns {string} */ var formatPercent = exports.formatPercent = function formatPercent(value, float) { var number = Number(value) ? Number(value) : 0; return parseFloat('' + number).toFixed(float !== undefined && float !== null ? float : 2); }; /** * * @param string * @param character * @returns {string} */ var removeLastCharacter = exports.removeLastCharacter = function removeLastCharacter() { var string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var character = arguments[1]; var lastSlash = string.lastIndexOf(character); var start = string.substring(0, lastSlash); var end = string.substring(lastSlash + 1, string.length); return start + end; }; /** * * @param number * @returns {string} */ var formatCurrency = exports.formatCurrency = function formatCurrency(number) { return 'VND ' + ('' + number).replace(/\d{1,3}(?=(\d{3})+$)/g, function (s) { return s + ','; }); }; /** * * @param str * @returns {string} */ var capitalizingString = exports.capitalizingString = function capitalizingString(str) { var strResult = str; if (strResult.includes('_') || strResult.includes('-')) { strResult = strResult.replaceAll('_', ' '); strResult = strResult.replaceAll('-', ' '); } strResult = strResult.replace(/\w\S*/g, function (w) { return w.replace(/^\w/, function (c) { return c.toUpperCase(); }); }); return strResult; }; /** * * @param number * @returns {string} */ var formatNumberWithK = exports.formatNumberWithK = function formatNumberWithK(number) { number = Number(('' + number).replaceAll(',', '')); if (number / 1000000 > 1) return number / 1000000 + 'M'; if (number / 1000 > 1) return number / 1000 + 'K'; return '' + number; }; exports.default = { formatNumber: formatNumber, formatNumberWithK: formatNumberWithK, capitalize: capitalize, convertUrlParamToEndpoint: convertUrlParamToEndpoint, getEndpointParamFromObject: getEndpointParamFromObject, formatDate: formatDate, convertNormalTextToSnakeText: convertNormalTextToSnakeText, formatPercent: formatPercent, formatCurrency: formatCurrency, capitalizingString: capitalizingString, removeLastCharacter: removeLastCharacter };