mirror of https://github.com/freeCodeCamp/devdocs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.0 KiB
84 lines
2.0 KiB
class app.views.Document extends app.View
|
|
@el: document
|
|
|
|
@events:
|
|
visibilitychange: 'onVisibilityChange'
|
|
|
|
@shortcuts:
|
|
help: 'onHelp'
|
|
preferences: 'onPreferences'
|
|
escape: 'onEscape'
|
|
superLeft: 'onBack'
|
|
superRight: 'onForward'
|
|
|
|
@routes:
|
|
after: 'afterRoute'
|
|
|
|
init: ->
|
|
@addSubview @menu = new app.views.Menu,
|
|
@addSubview @sidebar = new app.views.Sidebar
|
|
@addSubview @resizer = new app.views.Resizer if app.views.Resizer.isSupported()
|
|
@addSubview @content = new app.views.Content
|
|
@addSubview @path = new app.views.Path unless app.isSingleDoc() or app.isMobile()
|
|
@settings = new app.views.Settings unless app.isSingleDoc()
|
|
|
|
$.on document.body, 'click', @onClick
|
|
|
|
@activate()
|
|
return
|
|
|
|
setTitle: (title) ->
|
|
@el.title = if title then "DevDocs — #{title}" else 'DevDocs API Documentation'
|
|
|
|
afterRoute: (route) =>
|
|
if route is 'settings'
|
|
@settings?.activate()
|
|
else
|
|
@settings?.deactivate()
|
|
return
|
|
|
|
onVisibilityChange: =>
|
|
return unless @el.visibilityState is 'visible'
|
|
@delay ->
|
|
location.reload() if app.isMobile() isnt app.views.Mobile.detect()
|
|
return
|
|
, 300
|
|
return
|
|
|
|
onHelp: ->
|
|
app.router.show '/help#shortcuts'
|
|
return
|
|
|
|
onPreferences: ->
|
|
app.router.show '/settings'
|
|
return
|
|
|
|
onEscape: ->
|
|
path = if !app.isSingleDoc() or location.pathname is app.doc.fullPath()
|
|
'/'
|
|
else
|
|
app.doc.fullPath()
|
|
|
|
app.router.show(path)
|
|
return
|
|
|
|
onBack: ->
|
|
history.back()
|
|
return
|
|
|
|
onForward: ->
|
|
history.forward()
|
|
return
|
|
|
|
onClick: (event) ->
|
|
target = $.eventTarget(event)
|
|
return unless target.hasAttribute('data-behavior')
|
|
$.stopEvent(event)
|
|
switch target.getAttribute('data-behavior')
|
|
when 'back' then history.back()
|
|
when 'reload' then window.location.reload()
|
|
when 'reboot' then window.location = '/'
|
|
when 'hard-reload' then app.reload()
|
|
when 'reset' then app.reset() if confirm('Are you sure you want to reset DevDocs?')
|
|
return
|