refactor: migrate helper functions mixin
This commit is contained in:
parent
6494354a6d
commit
5b5c027ea6
2 changed files with 61 additions and 57 deletions
61
src/helpers.ts
Normal file
61
src/helpers.ts
Normal file
|
@ -0,0 +1,61 @@
|
|||
const getClientLocale = (): string => {
|
||||
return navigator.languages.length > 0 ? navigator.languages[0] : "en-US";
|
||||
};
|
||||
|
||||
const getAge = (dateOfBirth: Date): number => {
|
||||
const today = new Date();
|
||||
|
||||
const thisYear = today.getFullYear();
|
||||
const thisMonth = today.getMonth();
|
||||
const thisDay = today.getDate();
|
||||
|
||||
const dobYear = dateOfBirth.getFullYear();
|
||||
const dobMonth = dateOfBirth.getMonth();
|
||||
const dobDay = dateOfBirth.getDate();
|
||||
|
||||
let age = thisYear - dobYear;
|
||||
|
||||
if (thisMonth < dobMonth) age--;
|
||||
if (thisMonth === dobMonth && thisDay < dobDay) age--;
|
||||
|
||||
return age;
|
||||
};
|
||||
|
||||
const toImperial = (cm: number): string => {
|
||||
const realFeet = (cm * 0.3937) / 12;
|
||||
const feet = Math.floor(realFeet);
|
||||
const inches = Math.round((realFeet - feet) * 12);
|
||||
|
||||
return `${feet}'${inches}"`;
|
||||
};
|
||||
|
||||
const toInch = (cm: number): string => {
|
||||
return `${Math.round(cm / 2.45)} in`;
|
||||
};
|
||||
|
||||
const toLbs = (kg: number): number => {
|
||||
const nearExact = kg / 0.45359237;
|
||||
const lbs = Math.floor(nearExact);
|
||||
|
||||
return lbs;
|
||||
};
|
||||
|
||||
const toFahrenheit = (celsius: number): number => {
|
||||
return celsius * 1.8 + 32;
|
||||
};
|
||||
|
||||
const dateFormat = new Intl.DateTimeFormat(getClientLocale(), {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "2-digit",
|
||||
});
|
||||
|
||||
export {
|
||||
getClientLocale,
|
||||
getAge,
|
||||
toImperial,
|
||||
toInch,
|
||||
toLbs,
|
||||
toFahrenheit,
|
||||
dateFormat,
|
||||
};
|
|
@ -1,57 +0,0 @@
|
|||
export default {
|
||||
methods: {
|
||||
getClientLocale() {
|
||||
if (navigator.language) {
|
||||
return navigator.languages[0];
|
||||
} else if (navigator.userLanguage) {
|
||||
return navigator.userLanguage; // IE < 11
|
||||
} else if (navigator.browserLanguage) {
|
||||
return navigator.userLanguage;
|
||||
} else if (navigator.systemLanguage) {
|
||||
return navigator.systemLanguage;
|
||||
}
|
||||
},
|
||||
|
||||
getAge(dateOfBirth) {
|
||||
const today = new Date();
|
||||
|
||||
const thisYear = today.getFullYear();
|
||||
const thisMonth = today.getMonth();
|
||||
const thisDay = today.getDate();
|
||||
|
||||
const dobYear = dateOfBirth.getFullYear();
|
||||
const dobMonth = dateOfBirth.getMonth();
|
||||
const dobDay = dateOfBirth.getDate();
|
||||
|
||||
let age = thisYear - dobYear;
|
||||
|
||||
if (thisMonth < dobMonth) age--;
|
||||
if (thisMonth === dobMonth && thisDay < dobDay) age--;
|
||||
|
||||
return age;
|
||||
},
|
||||
|
||||
toImperial(cm) {
|
||||
const realFeet = (cm * 0.3937) / 12;
|
||||
const feet = Math.floor(realFeet);
|
||||
const inches = Math.round((realFeet - feet) * 12);
|
||||
|
||||
return `${feet}'${inches}"`;
|
||||
},
|
||||
|
||||
toInch(cm) {
|
||||
return `${Math.round(cm / 2.45)} in`;
|
||||
},
|
||||
|
||||
toLbs(kg) {
|
||||
const nearExact = kg / 0.45359237;
|
||||
const lbs = Math.floor(nearExact);
|
||||
|
||||
return lbs;
|
||||
},
|
||||
|
||||
toFahrenheit(celsius) {
|
||||
return celsius * 1.8 + 32;
|
||||
},
|
||||
},
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue