@procraft/widget-order
Version:
Order widget for landing
106 lines (92 loc) • 2.41 kB
text/typescript
import moment, { Moment } from 'moment'
type DateTime = Moment | Date | string
export const roundByStep = (v: number, s = 1.0) => {
const inv = 1.0 / s
return Math.round(v * inv) / inv
}
export const roundStd = (num: number, decimalPlaces: number) => {
const p = Math.pow(10, decimalPlaces)
const e = Number.EPSILON * num * p
return Math.round(num * p + e) / p
}
export const getCurrencyPrefix = (currency: string) => {
switch (currency) {
case 'USD':
return '$'
default:
return ''
}
}
export const getCurrencySuffix = (currency: string) => {
switch (currency) {
case 'RUB':
return ' ₽'
case 'USD':
return ''
case 'KZT':
return ' ₸'
case 'UAH':
return ' ₴'
default:
return `\u202F${currency}`
}
}
export type DateOptionalTimeReplacement = '00:00' | '23:59'
export function isNowYear(dateMoment: DateTime | null): boolean {
if (dateMoment) {
dateMoment = moment(dateMoment)
return moment().year() === dateMoment.year()
} else {
return false
}
}
/**
* Returns date in format like "September 11" or "11 Сентября"
*/
export function formatDate(dateMoment: DateTime | null): string {
if (dateMoment) {
dateMoment = moment(dateMoment)
if (!isNowYear(dateMoment)) {
return dateMoment.format('D MMMM YYYY')
} else {
return dateMoment.format('D MMMM')
}
} else {
return ''
}
}
export function hasTime(
dateMoment: Moment,
optionalTimeReplacement: DateOptionalTimeReplacement = '00:00'
): boolean {
if (optionalTimeReplacement == '23:59') {
return !(dateMoment.hours() === 23 && dateMoment.minutes() === 59)
} else {
return dateMoment.hours() * 60 + dateMoment.minutes() > 0
}
}
export function formatTimeHoursMinutes(dateMoment: DateTime | null): string {
if (dateMoment) {
return moment(dateMoment).format('HH:mm')
} else {
return ''
}
}
export function formatDateOptionalTime(
dateMoment: DateTime | null,
separator = ' в ',
optionalTimeReplacement: DateOptionalTimeReplacement = '00:00'
): string {
if (dateMoment) {
const timestamp = moment(dateMoment)
if (hasTime(timestamp, optionalTimeReplacement)) {
return `${formatDate(timestamp)}${separator}${formatTimeHoursMinutes(
timestamp
)}`
} else {
return formatDate(timestamp)
}
} else {
return ''
}
}