utils.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. export function formatDate(string: string) {
  2. const locale = useNuxtApp().$i18n.locale
  3. const date = new Date(string).toLocaleDateString(unref(locale))
  4. return date
  5. }
  6. /**
  7. * Format minutes into hours and mins
  8. */
  9. export function formatTime(minutes: number) {
  10. // seconds
  11. const seconds = minutes * 60
  12. let secondsLeft = seconds
  13. // hours
  14. const hours = Math.floor(secondsLeft / 3600)
  15. secondsLeft = secondsLeft % 3600
  16. // mins
  17. const mins = Math.floor(secondsLeft / 60)
  18. secondsLeft = secondsLeft % 60
  19. return `${hours ? `${hours}h` : ''} ${mins}min`
  20. }
  21. export function numberWithCommas(number: number) {
  22. return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
  23. }
  24. export function useSingleton<T>() {
  25. const key = Symbol('singleton')
  26. return [
  27. function provide(v: T) {
  28. const vm = getCurrentInstance()
  29. vm?.appContext.app.provide(key, v)
  30. },
  31. function use(fallback?: T) {
  32. return inject(key, fallback) as T
  33. },
  34. ] as const
  35. }
  36. export const { format: formatVote } = Intl.NumberFormat('en-GB', { notation: 'compact', maximumFractionDigits: 1 })