Lungo.Boot.Events.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. ###
  2. Initialize the automatic DOM UI events
  3. @namespace Lungo.Boot
  4. @class Events
  5. @author Javier Jimenez Villar <javi@tapquo.com> || @soyjavi
  6. @author Guillermo Pascual <pasku@tapquo.com> || @pasku1
  7. ###
  8. Lungo.Boot.Events = do(lng = Lungo) ->
  9. C = lng.Constants
  10. ATTRIBUTE = lng.Constants.ATTRIBUTE
  11. CLASS = lng.Constants.CLASS
  12. ELEMENT = lng.Constants.ELEMENT
  13. QUERY = lng.Constants.QUERY
  14. SELECTORS = INPUT_CHECKBOX: "input[type=range].checkbox"
  15. ###
  16. Initializes the automatic subscription events by markup of the project.
  17. @method init
  18. ###
  19. init = ->
  20. lng.dom(C.QUERY.SECTION_ROUTER).tap _onSection
  21. lng.dom(C.QUERY.ARTICLE_ROUTER).tap _onArticle
  22. lng.dom(C.QUERY.ASIDE_ROUTER).tap _onAside
  23. lng.dom(C.QUERY.MENU_ROUTER).tap _onMenu
  24. lng.dom(QUERY.MENU_HREF).tap _closeMenu
  25. lng.dom(QUERY.INPUT_CHECKBOX).tap _changeCheckboxValue
  26. _onSection = (event) ->
  27. event.preventDefault()
  28. el = lng.dom @
  29. if el.data "async"
  30. _onAsyncSection el.data("async"), el.data("view-section")
  31. else
  32. section_id = el.data "view-section"
  33. if section_id isnt "back" then lng.Router.section(section_id) else lng.Router.back()
  34. _onAsyncSection = (url, section_id) ->
  35. lng.Notification.show()
  36. lng.Resource.load url
  37. lng.Boot.Data.init "##{section_id}"
  38. link.removeAttribute("data-async") for link in lng.dom "[data-async='#{url}']"
  39. setTimeout (->
  40. lng.Router.section section_id
  41. do lng.Notification.hide
  42. ), lng.Constants.TRANSITION.DURATION * 2
  43. _onArticle = (event) ->
  44. event.preventDefault()
  45. el = lng.dom @
  46. lng.Router.article lng.Router.history(), el.data("view-article"), el
  47. lng.Aside.hide()
  48. _onAside = (event) ->
  49. event.preventDefault()
  50. lng.Aside.toggle()
  51. _onMenu = (event) ->
  52. event.preventDefault()
  53. menu_id = lng.dom(@).data("view-menu")
  54. lng.dom("[data-control=menu]##{menu_id}").toggleClass CLASS.SHOW
  55. _closeMenu = (event) ->
  56. event.preventDefault()
  57. el = lng.dom(this)
  58. parent = el.parent("[data-control=menu]").removeClass(CLASS.SHOW)
  59. lng.dom("[data-router=menu] > .icon").attr "class", "icon " + el.data("icon")
  60. _changeCheckboxValue = (event) ->
  61. event.preventDefault()
  62. el = lng.dom(this)
  63. current_value = (if el.val() > 0 then 0 else 1)
  64. el.toggleClass("active").attr "value", current_value
  65. init: init