Track HiveGrid Cloud planning reference
This commit is contained in:
1 parent
b3d5ea6764
commit
e341c5938a
5784 files changed
+1104929
-3
No files matched your search
@@ -0,0 +1,86 @@
|
||||
import numeral from "numeral";
|
||||
import { formatCurrency, formatNumber, formatPercent } from "~/locale/format";
|
||||
|
||||
export const defaultCurrencySymbol = "$";
|
||||
export const defaultCurrency = "USD";
|
||||
const legacyNumberLocale = "en-US";
|
||||
export type NumberFormatType = "integer" | "decimal" | "currency" | "percentage" | "rating";
|
||||
export const NumberFormats: { name: string; value: NumberFormatType; labelKey: string }[] = [
|
||||
{ name: "Integer", value: "integer", labelKey: "formats.number.integer" },
|
||||
{ name: "Decimal", value: "decimal", labelKey: "formats.number.decimal" },
|
||||
{ name: "Currency", value: "currency", labelKey: "formats.number.currency" },
|
||||
{ name: "Percent", value: "percentage", labelKey: "formats.number.percent" },
|
||||
{ name: "Rating", value: "rating", labelKey: "formats.number.rating" },
|
||||
];
|
||||
|
||||
const numberFormat = (value: number): string => {
|
||||
try {
|
||||
return formatNumber(value, legacyNumberLocale, { maximumFractionDigits: 0 });
|
||||
} catch (e) {
|
||||
return value?.toString();
|
||||
}
|
||||
};
|
||||
const decimalFormat = (value: number, decimalPlaces: number = 2): string => {
|
||||
try {
|
||||
return formatNumber(value, legacyNumberLocale, {
|
||||
minimumFractionDigits: decimalPlaces,
|
||||
maximumFractionDigits: decimalPlaces,
|
||||
});
|
||||
} catch (e) {
|
||||
return value?.toString();
|
||||
}
|
||||
};
|
||||
const intFormat = (value: number | string): string => {
|
||||
try {
|
||||
return formatNumber(Number(value), legacyNumberLocale, { maximumFractionDigits: 0 });
|
||||
} catch (e) {
|
||||
return value?.toString();
|
||||
}
|
||||
};
|
||||
const currencyFormat = (value: number, currency: string = defaultCurrency, decimalPlaces: number = 2, locale: string = legacyNumberLocale): string => {
|
||||
try {
|
||||
return formatCurrency(value, currency.toUpperCase(), locale, {
|
||||
minimumFractionDigits: decimalPlaces,
|
||||
maximumFractionDigits: decimalPlaces,
|
||||
});
|
||||
} catch (e) {
|
||||
return `${defaultCurrencySymbol}${decimalFormat(value, decimalPlaces)}`;
|
||||
}
|
||||
};
|
||||
const currencyFromCents = (cents: number, currency: string = defaultCurrency, decimalPlaces: number = 2, locale: string = legacyNumberLocale): string => {
|
||||
return currencyFormat(cents / 100, currency, decimalPlaces, locale);
|
||||
};
|
||||
const percentFormat = (value: number, decimalPlaces: number = 2, locale: string = legacyNumberLocale): string => {
|
||||
try {
|
||||
return formatPercent(value / 100, locale, {
|
||||
minimumFractionDigits: decimalPlaces,
|
||||
maximumFractionDigits: decimalPlaces,
|
||||
});
|
||||
} catch (e) {
|
||||
return `${decimalFormat(value, decimalPlaces)}%`;
|
||||
}
|
||||
};
|
||||
const pad = (num: number, size: number) => {
|
||||
const s = "000000000" + num;
|
||||
return s.substring(s.length - size);
|
||||
};
|
||||
const custom = (value: number, format: string): string => {
|
||||
try {
|
||||
return numeral(value).format(format);
|
||||
} catch (e) {
|
||||
return value?.toString();
|
||||
}
|
||||
};
|
||||
|
||||
export default {
|
||||
numberFormat,
|
||||
decimalFormat,
|
||||
intFormat,
|
||||
currencyFormat,
|
||||
currencyFromCents,
|
||||
percentFormat,
|
||||
pad,
|
||||
defaultCurrencySymbol,
|
||||
defaultCurrency,
|
||||
custom,
|
||||
};
|
||||
Reference in new issue
Block a user