index.coffee 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. document.head.insertAdjacentHTML('beforeend','<style type="text/tailwindcss">'+stylFns['app/pages/EventDetail/index.styl']+'</style>')
  2. module.exports =
  3. name: 'EventDetail'
  4. render: (new Function '_ctx', '_cache', renderFns['app/pages/EventDetail/index.pug'])()
  5. data: ->
  6. event: null
  7. loading: true
  8. categoryLabels:
  9. classical: 'Классическая музыка'
  10. folk: 'Фольклор'
  11. jazz: 'Джаз'
  12. pop: 'Поп-музыка'
  13. dance: 'Танцевальное шоу'
  14. mounted: ->
  15. @loadEvent()
  16. methods:
  17. loadEvent: ->
  18. eventId = @$route.params.id
  19. _.couchDBService.getEventById(eventId)
  20. .then (event) =>
  21. @event = event
  22. .catch (error) =>
  23. debug.log "Ошибка загрузки мероприятия: "+error
  24. @event = null
  25. .finally =>
  26. @loading = false
  27. getCategoryLabel: (category) ->
  28. @categoryLabels[category] || category
  29. getCategoryBadgeClass: (category) ->
  30. classes =
  31. classical: 'bg-blue-500'
  32. folk: 'bg-green-500'
  33. jazz: 'bg-purple-500'
  34. pop: 'bg-pink-500'
  35. dance: 'bg-orange-500'
  36. classes[category] || 'bg-gray-500'
  37. formatDateTime: (dateString, timeString) ->
  38. try
  39. date = new Date(dateString)
  40. options = {
  41. weekday: 'long',
  42. year: 'numeric',
  43. month: 'long',
  44. day: 'numeric'
  45. }
  46. formattedDate = date.toLocaleDateString('ru-RU', options)
  47. formattedDate + ", " + timeString
  48. catch
  49. dateString + ", " + timeString
  50. bookTickets: ->
  51. if @event?.availableTickets > 0
  52. _.openModal('SuccessModal', {
  53. title: 'Билет забронирован!'
  54. content: "Вы успешно забронировали билет на \""+@event.title+"\". Подробности отправлены на вашу почту."
  55. })
  56. else
  57. _.openModal('SuccessModal', {
  58. title: 'Билеты распроданы'
  59. content: 'К сожалению, все билеты на это мероприятие уже распроданы.'
  60. })