| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- class app.views.OfflinePage extends app.View
- @className: '_static'
- @events:
- click: 'onClick'
- change: 'onChange'
- deactivate: ->
- if super
- @empty()
- return
- render: ->
- if app.cookieBlocked
- @html @tmpl('offlineError', 'cookie_blocked')
- return
- app.docs.getInstallStatuses (statuses) =>
- return unless @activated
- if statuses is false
- @html @tmpl('offlineError', app.db.reason, app.db.error)
- else
- html = ''
- html += @renderDoc(doc, statuses[doc.slug]) for doc in app.docs.all()
- @html @tmpl('offlinePage', html)
- @refreshLinks()
- return
- return
- renderDoc: (doc, status) ->
- app.templates.render('offlineDoc', doc, status)
- getTitle: ->
- 'Offline'
- refreshLinks: ->
- for action in ['install', 'update', 'uninstall']
- @find("[data-action-all='#{action}']").classList[if @find("[data-action='#{action}']") then 'add' else 'remove']('_show')
- return
- docByEl: (el) ->
- el = el.parentNode until slug = el.getAttribute('data-slug')
- app.docs.findBy('slug', slug)
- docEl: (doc) ->
- @find("[data-slug='#{doc.slug}']")
- onRoute: (context) ->
- @render()
- return
- onClick: (event) =>
- el = $.eventTarget(event)
- if action = el.getAttribute('data-action')
- doc = @docByEl(el)
- action = 'install' if action is 'update'
- doc[action](@onInstallSuccess.bind(@, doc), @onInstallError.bind(@, doc), @onInstallProgress.bind(@, doc))
- el.parentNode.innerHTML = "#{el.textContent.replace(/e$/, '')}ing…"
- else if action = el.getAttribute('data-action-all') || el.parentElement.getAttribute('data-action-all')
- return unless action isnt 'uninstall' or window.confirm('Uninstall all docs?')
- app.db.migrate()
- $.click(el) for el in @findAll("[data-action='#{action}']")
- return
- onInstallSuccess: (doc) ->
- return unless @activated
- doc.getInstallStatus (status) =>
- return unless @activated
- if el = @docEl(doc)
- el.outerHTML = @renderDoc(doc, status)
- $.highlight el, className: '_highlight'
- @refreshLinks()
- return
- return
- onInstallError: (doc) ->
- return unless @activated
- if el = @docEl(doc)
- el.lastElementChild.textContent = 'Error'
- return
- onInstallProgress: (doc, event) ->
- return unless @activated and event.lengthComputable
- if el = @docEl(doc)
- percentage = Math.round event.loaded * 100 / event.total
- el.lastElementChild.textContent = el.lastElementChild.textContent.replace(/(\s.+)?$/, " (#{percentage}%)")
- return
- onChange: (event) ->
- if event.target.name is 'autoUpdate'
- app.settings.set 'manualUpdate', !event.target.checked
- return
|