|
@@ -24,58 +24,59 @@ class App extends Spine.Controller
|
|
|
|
|
|
constructor: ->
|
|
constructor: ->
|
|
super
|
|
super
|
|
|
|
+ @appStarted = false
|
|
@mainNav = new MainNav
|
|
@mainNav = new MainNav
|
|
@append @mainNav
|
|
@append @mainNav
|
|
@initApp()
|
|
@initApp()
|
|
|
|
|
|
initApp: =>
|
|
initApp: =>
|
|
- @setupSession()
|
|
|
|
-
|
|
|
|
@mainStack = new MainStack
|
|
@mainStack = new MainStack
|
|
@helpUI = new HelpUI
|
|
@helpUI = new HelpUI
|
|
|
|
+ @append @mainStack, @helpUI
|
|
Spine.Route.setup()
|
|
Spine.Route.setup()
|
|
- @navigate('/')
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ @setupSession()
|
|
@hookPanelsToNav()
|
|
@hookPanelsToNav()
|
|
@setupOnlineOffline()
|
|
@setupOnlineOffline()
|
|
@doOtherStuff()
|
|
@doOtherStuff()
|
|
|
|
|
|
setupSession: ->
|
|
setupSession: ->
|
|
session.on 'change', @checkRole
|
|
session.on 'change', @checkRole
|
|
- $(window).on 'focus', @getSessionInfo
|
|
|
|
- # @mainNav.bind 'beforeChange', @getSessionInfo
|
|
|
|
@getSessionInfo()
|
|
@getSessionInfo()
|
|
|
|
|
|
getSessionInfo: =>
|
|
getSessionInfo: =>
|
|
session.info (err, info) =>
|
|
session.info (err, info) =>
|
|
- if info
|
|
|
|
|
|
+ if not info
|
|
|
|
+ # try again in 5 seconds
|
|
|
|
+ @mainNav.offline.show()
|
|
|
|
+ @delay @getSessionInfo, 5000
|
|
|
|
+ else
|
|
@mainNav.offline.hide()
|
|
@mainNav.offline.hide()
|
|
@checkRole info.userCtx
|
|
@checkRole info.userCtx
|
|
- else
|
|
|
|
- @mainNav.offline.show()
|
|
|
|
|
|
|
|
checkRole: (userCtx) =>
|
|
checkRole: (userCtx) =>
|
|
- if 'manager' in userCtx.roles
|
|
|
|
|
|
+ if userCtx?.roles and 'manager' in userCtx.roles
|
|
@mainNav.hideLogin()
|
|
@mainNav.hideLogin()
|
|
- @startApp() unless @appStarted
|
|
|
|
- @loadData() unless @dataLoaded
|
|
|
|
@mainNav.greetUser(userCtx.name)
|
|
@mainNav.greetUser(userCtx.name)
|
|
|
|
+ @startApp()
|
|
|
|
+ @mainStack.el.css('visibility', 'visible')
|
|
|
|
+ @helpUI.el.css('visibility', 'visible')
|
|
else
|
|
else
|
|
@mainNav.showLogin()
|
|
@mainNav.showLogin()
|
|
- @unloadData() if @dataLoaded
|
|
|
|
- @endApp() if @appStarted
|
|
|
|
|
|
+ @endApp()
|
|
|
|
+ @mainStack.el.css('visibility', 'hidden')
|
|
|
|
+ @helpUI.el.css('visibility', 'hidden')
|
|
|
|
|
|
startApp: =>
|
|
startApp: =>
|
|
- @loadData() unless @dataLoaded
|
|
|
|
unless @appStarted
|
|
unless @appStarted
|
|
- @append @mainStack, @helpUI
|
|
|
|
|
|
+ @loadData()
|
|
@navigate('/')
|
|
@navigate('/')
|
|
@appStarted = true
|
|
@appStarted = true
|
|
|
|
|
|
endApp: =>
|
|
endApp: =>
|
|
if @appStarted
|
|
if @appStarted
|
|
- @mainStack.el.remove()
|
|
|
|
- @helpUI.el.remove()
|
|
|
|
|
|
+ @unloadData()
|
|
|
|
+ @mainStack.filterBox.reset()
|
|
@appStarted = false
|
|
@appStarted = false
|
|
|
|
|
|
loadData: =>
|
|
loadData: =>
|
|
@@ -110,16 +111,13 @@ class App extends Spine.Controller
|
|
setupOnlineOffline: ->
|
|
setupOnlineOffline: ->
|
|
if not navigator.onLine
|
|
if not navigator.onLine
|
|
@mainNav.offline.show()
|
|
@mainNav.offline.show()
|
|
- Spine.trigger 'app:offline'
|
|
|
|
|
|
|
|
$(window).on 'offline', =>
|
|
$(window).on 'offline', =>
|
|
@mainNav.offline.show()
|
|
@mainNav.offline.show()
|
|
- Spine.trigger 'app:offline'
|
|
|
|
|
|
|
|
$(window).on 'online', =>
|
|
$(window).on 'online', =>
|
|
@mainNav.offline.hide()
|
|
@mainNav.offline.hide()
|
|
- @getSessionInfo()
|
|
|
|
- Spine.trigger 'app:online'
|
|
|
|
|
|
+ @delay @getSessionInfo, 5000
|
|
|
|
|
|
doOtherStuff: ->
|
|
doOtherStuff: ->
|
|
# Use the fastclick module for touch devices.
|
|
# Use the fastclick module for touch devices.
|