Last active
May 10, 2018 09:58
-
-
Save chy4egg/b83b74e84f1bb0da122fb75492a0a417 to your computer and use it in GitHub Desktop.
Data formatting methods (js) es6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const formatData = { | |
// Граммы переводит в килограммы | |
weight : function (weight) { | |
weight = parseFloat(weight); | |
let dimension = ''; | |
if (weight < 1000) { | |
dimension = ' г'; | |
} else { | |
dimension = ' кг'; | |
weight = (weight / 1000); | |
} | |
return (weight + dimension); | |
}, | |
/** | |
* Возвращает строку с числом + правильным окончанием числительного | |
* @param number | |
* @return {string} | |
*/ | |
age : function (number) { | |
let cases = [2, 0, 1, 1, 1, 2]; | |
let titles = ['год', 'года', 'лет']; | |
return number + " " + titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]]; | |
}, | |
/** | |
* Возвращает кол-во бонусов + окончание в правильном склонении | |
* @param number | |
* @return number + ending {string} | |
*/ | |
bonusEnding(number) { | |
let cases = [2, 0, 1, 1, 1, 2]; | |
let titles = ['бонус', 'бонуса', 'бонусов']; | |
return number + " " + titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]]; | |
}, | |
/** | |
* Возвращает кол-во чего угодно +окончание в правильном склонении | |
* @param number {Number} | |
* @param titles {Array} | |
* @return {string} | |
*/ | |
numberName : function (number, titles) { | |
let cases = [2, 0, 1, 1, 1, 2]; | |
return number + " " + titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]]; | |
}, | |
/** | |
* Возвращает кол-во чего угодно + окончание в правильном склонении (ES6 шаблонной строкой) | |
* @param number {number} | |
* @return value + ending {ES6 string template} | |
* @example numberNameTemplate(100, ['бонус', 'бонуса', 'бонусов']); - должен вернуть "100 бонусов" шаблонной строкой. | |
*/ | |
numberNameTemplate(number, titles) { | |
let cases = [2, 0, 1, 1, 1, 2]; | |
return `<span class="v-custom-field"> | |
<span class="v-custom-field__value">${number} </span> | |
<span class="v-custom-field__ending">${titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]]}</span> | |
</span>`; | |
}, | |
dateJsToStr(jsDate) { | |
return ((jsDate.getDate()<10) ? ("0" + jsDate.getDate()) : jsDate.getDate()) + '.' + ((jsDate.getMonth()+1) ? ("0" + jsDate.getMonth()) : jsDate.getMonth()) + '.' + jsDate.getFullYear(); | |
}, | |
// форматирования ценника (принимает число,возвращает форматированную строку) | |
// (123456789.12345).formatMoney(2, '.', ','); | |
price : function numberWithSpaces(x) { | |
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " "); | |
}, | |
formatPhone(phone) { | |
return phone.replace(/(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})/, "+$1 ($2) $3-$4-$5"); | |
} | |
}; | |
export default formatData; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment