PageRenderTime 25ms CodeModel.GetById 34ms RepoModel.GetById 1ms app.codeStats 0ms

/app/assets/javascripts/core.coffee

https://gitlab.com/ideasfactorypl/damzam-panel-administracyjny
CoffeeScript | 323 lines | 255 code | 38 blank | 30 comment | 31 complexity | 9885ffcb1d7ce68640331d3b80878e16 MD5 | raw file
  1. $ ->
  2. #Fixed Menu
  3. #Functions
  4. #cookies for the sidebar collapse
  5. toggleSideBar = (_this) ->
  6. b = $('#sidebar-collapse')[0]
  7. w = $('#cl-wrapper')
  8. s = $('.cl-sidebar')
  9. if w.hasClass('sb-collapsed')
  10. $('.fa', b).addClass('fa-angle-left').removeClass 'fa-angle-right'
  11. w.removeClass 'sb-collapsed'
  12. $.cookie 'FLATDREAM_sidebar', 'open',
  13. expires: 365
  14. path: '/'
  15. else
  16. $('.fa', b).removeClass('fa-angle-left').addClass 'fa-angle-right'
  17. w.addClass 'sb-collapsed'
  18. $.cookie 'FLATDREAM_sidebar', 'closed',
  19. expires: 365
  20. path: '/'
  21. return
  22. updateHeight = ->
  23. `var height`
  24. `var height`
  25. `var height`
  26. if !$('#cl-wrapper').hasClass('fixed-menu')
  27. button = $('#cl-wrapper .collapse-button').outerHeight()
  28. navH = $('#head-nav').height()
  29. #var document = $(document).height();
  30. cont = $('#pcont').height()
  31. sidebar = if $(window).width() > 755 and $(window).width() < 963 then 0 else $('#cl-wrapper .menu-space .content').height()
  32. windowH = $(window).height()
  33. if sidebar < windowH and cont < windowH
  34. if $(window).width() > 755 and $(window).width() < 963
  35. height = windowH
  36. else
  37. height = windowH - button
  38. else if sidebar < cont and sidebar > windowH or sidebar < windowH and sidebar < cont
  39. height = cont + button
  40. else if sidebar > windowH and sidebar > cont
  41. height = sidebar + button
  42. $('#cl-wrapper .menu-space').css 'min-height', height
  43. else
  44. $('#cl-wrapper .nscroller').nanoScroller preventPageScrolling: true
  45. return
  46. update_height = ->
  47. button = $('#cl-wrapper .collapse-button')
  48. collapseH = button.outerHeight()
  49. navH = $('#head-nav').height()
  50. height = $(window).height() - (if button.is(':visible') then collapseH else 0)
  51. scroll.css 'height', height
  52. $('#cl-wrapper .nscroller').nanoScroller preventPageScrolling: true
  53. return
  54. showMenu = (_this, e) ->
  55. if ($('#cl-wrapper').hasClass('sb-collapsed') or $(window).width() > 755 and $(window).width() < 963) and $('ul', _this).length > 0
  56. $(_this).removeClass 'ocult'
  57. menu = $('ul', _this)
  58. if !$('.dropdown-header', _this).length
  59. head = '<li class="dropdown-header">' + $(_this).children().html() + '</li>'
  60. menu.prepend head
  61. tool.appendTo 'body'
  62. top = $(_this).offset().top + 8 - $(window).scrollTop()
  63. left = $(_this).width()
  64. tool.css
  65. 'top': top
  66. 'left': left + 8
  67. tool.html '<ul class="sub-menu">' + menu.html() + '</ul>'
  68. tool.show()
  69. menu.css 'top', top
  70. else
  71. tool.hide()
  72. return
  73. if $('#cl-wrapper').hasClass('fixed-menu')
  74. $('#head-nav').addClass 'navbar-fixed-top'
  75. ###VERTICAL MENU###
  76. $('.cl-vnavigation li ul').each ->
  77. $(this).parent().addClass 'parent'
  78. return
  79. $('.cl-vnavigation li ul li.active').each ->
  80. #If li.active is a sub-menu item open all its parents
  81. $(this).parents('.sub-menu').css 'display': 'block'
  82. $(this).parents('.parent').addClass 'open'
  83. return
  84. $('.cl-vnavigation li > a').on 'click', (e) ->
  85. if $(this).next().hasClass('sub-menu') == false
  86. return
  87. parent = $(this).parent().parent()
  88. parent.children('li.open').children('a').children('.arrow').removeClass 'open'
  89. parent.children('li.open').children('a').children('.arrow').removeClass 'active'
  90. parent.children('li.open').children('.sub-menu').slideUp 200
  91. parent.children('li').removeClass 'open'
  92. if $('#cl-wrapper').hasClass('sb-collapsed') == false
  93. sub = jQuery(this).next()
  94. if sub.is(':visible')
  95. jQuery('.arrow', jQuery(this)).removeClass 'open'
  96. jQuery(this).parent().removeClass 'active'
  97. sub.slideUp 200, ->
  98. handleSidebarAndContentHeight()
  99. return
  100. else
  101. jQuery('.arrow', jQuery(this)).addClass 'open'
  102. jQuery(this).parent().addClass 'open'
  103. sub.slideDown 200, ->
  104. handleSidebarAndContentHeight()
  105. return
  106. e.preventDefault()
  107. return
  108. #Auto close open menus in Condensed menu
  109. if $('#cl-wrapper').hasClass('sb-collapsed')
  110. elem = $('.cl-sidebar ul')
  111. elem.children('li.open').children('a').children('.arrow').removeClass 'open'
  112. elem.children('li.open').children('a').children('.arrow').removeClass 'active'
  113. elem.children('li.open').children('.sub-menu').slideUp 0
  114. elem.children('li').removeClass 'open'
  115. handleSidebarAndContentHeight = ->
  116. content = $('.page-content')
  117. sidebar = $('.cl-vnavigation')
  118. if !content.attr('data-height')
  119. content.attr 'data-height', content.height()
  120. if sidebar.height() > content.height()
  121. content.css 'min-height', sidebar.height() + 120
  122. else
  123. content.css 'min-height', content.attr('data-height')
  124. return
  125. ###Small devices toggle###
  126. $('.cl-toggle').click (e) ->
  127. ul = $('.cl-vnavigation')
  128. ul.slideToggle 300, 'swing', ->
  129. e.preventDefault()
  130. return
  131. ###Collapse sidebar###
  132. $('#sidebar-collapse').click ->
  133. toggleSideBar()
  134. return
  135. if $('#cl-wrapper').hasClass('fixed-menu')
  136. scroll = $('#cl-wrapper .menu-space')
  137. scroll.addClass 'nano nscroller'
  138. $(window).resize ->
  139. update_height()
  140. return
  141. update_height()
  142. $('#cl-wrapper .nscroller').nanoScroller preventPageScrolling: true
  143. ###SubMenu hover ###
  144. tool = $('<div id=\'sub-menu-nav\' style=\'position:fixed;z-index:9999;\'></div>')
  145. $('.cl-vnavigation li').hover ((e) ->
  146. showMenu this, e
  147. return
  148. ), (e) ->
  149. tool.removeClass 'over'
  150. setTimeout (->
  151. if !tool.hasClass('over') and !$('.cl-vnavigation li:hover').length > 0
  152. tool.hide()
  153. return
  154. ), 500
  155. return
  156. tool.hover ((e) ->
  157. $(this).addClass 'over'
  158. return
  159. ), ->
  160. $(this).removeClass 'over'
  161. tool.fadeOut 'fast'
  162. return
  163. $(document).click ->
  164. tool.hide()
  165. return
  166. $(document).on 'touchstart click', (e) ->
  167. tool.fadeOut 'fast'
  168. return
  169. tool.click (e) ->
  170. e.stopPropagation()
  171. return
  172. $('.cl-vnavigation li').click (e) ->
  173. if ($('#cl-wrapper').hasClass('sb-collapsed') or $(window).width() > 755 and $(window).width() < 963) and $('ul', this).length > 0 and !($(window).width() < 755)
  174. showMenu this, e
  175. e.stopPropagation()
  176. return
  177. ###Return to top###
  178. offset = 220
  179. duration = 500
  180. button = $('<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i></a>')
  181. button.appendTo 'body'
  182. jQuery(window).scroll ->
  183. if jQuery(this).scrollTop() > offset
  184. jQuery('.back-to-top').fadeIn duration
  185. else
  186. jQuery('.back-to-top').fadeOut duration
  187. return
  188. jQuery('.back-to-top').click (event) ->
  189. event.preventDefault()
  190. jQuery('html, body').animate { scrollTop: 0 }, duration
  191. false
  192. ###Side Chat###
  193. # $('.toggle-menu').jPushMenu()
  194. ###Datepicker UI###
  195. # $('.ui-datepicker').datepicker()
  196. ###Tooltips###
  197. $('.ttip, [data-toggle="tooltip"]').tooltip()
  198. ###Popover###
  199. $('[data-popover="popover"]').popover()
  200. ###NanoScroller###
  201. # $('.nscroller').nanoScroller()
  202. ###Bind plugins on hidden elements###
  203. ###Dropdown shown event###
  204. $('.dropdown').on 'shown.bs.dropdown', ->
  205. $('.nscroller').nanoScroller()
  206. return
  207. ###Tabs refresh hidden elements###
  208. $('.nav-tabs').on 'shown.bs.tab', (e) ->
  209. $('.nscroller').nanoScroller()
  210. return
  211. return
  212. $ ->
  213. addText = (input) ->
  214. message = input.val()
  215. chat = input.parents('#chat-box').find('.content .conversation')
  216. if message != ''
  217. input.val ''
  218. chat.append '<li class="text-right"><p>' + message + '</p></li>'
  219. $('#chat-box .nano .content').animate { scrollTop: $('#chat-box .nano .content .conversation').height() }, 1000
  220. return
  221. if $('body').hasClass('animated')
  222. $('#cl-wrapper').css
  223. opacity: 1
  224. 'margin-left': 0
  225. ###Porlets Actions###
  226. $('.minimize').click (e) ->
  227. h = $(this).parents('.header')
  228. c = h.next('.content')
  229. p = h.parent()
  230. c.slideToggle()
  231. p.toggleClass 'closed'
  232. e.preventDefault()
  233. return
  234. $('.refresh').click (e) ->
  235. h = $(this).parents('.header')
  236. p = h.parent()
  237. loading = $('<div class="loading"><i class="fa fa-refresh fa-spin"></i></div>')
  238. loading.appendTo p
  239. loading.fadeIn()
  240. setTimeout (->
  241. loading.fadeOut()
  242. return
  243. ), 1000
  244. e.preventDefault()
  245. return
  246. $('.close-down').click (e) ->
  247. h = $(this).parents('.header')
  248. p = h.parent()
  249. p.fadeOut ->
  250. $(this).remove()
  251. return
  252. e.preventDefault()
  253. return
  254. ###End of porlets actions###
  255. ###Chat###
  256. $('.side-chat .content .contacts li a').click (e) ->
  257. user = $('<span>' + $(this).html() + '</span>')
  258. user.find('i').remove()
  259. $('#chat-box').fadeIn()
  260. $('#chat-box .header span').html user.html()
  261. $('#chat-box .nano').nanoScroller()
  262. $('#chat-box .nano').nanoScroller scroll: 'top'
  263. e.preventDefault()
  264. return
  265. $('#chat-box .header .close').click (r) ->
  266. h = $(this).parents('.header')
  267. p = h.parent()
  268. p.fadeOut()
  269. r.preventDefault()
  270. return
  271. $('.chat-input .input-group button').click ->
  272. addText $(this).parents('.input-group').find('input')
  273. return
  274. $('.chat-input .input-group input').keypress (e) ->
  275. if e.which == 13
  276. addText $(this)
  277. return
  278. $(document).click ->
  279. $('#chat-box').fadeOut()
  280. return
  281. #Check cookie for menu collapse (ON DOCUMENT READY)
  282. # if $.cookie('FLATDREAM_sidebar') and $.cookie('FLATDREAM_sidebar') == 'closed'
  283. # $('#cl-wrapper').addClass 'sb-collapsed'
  284. # $('.fa', $('#sidebar-collapse')[0]).addClass('fa-angle-right').removeClass 'fa-angle-left'
  285. # return