kits-core
Version:
Kits core module
464 lines (412 loc) • 13.5 kB
JavaScript
;
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
};