updater.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var VERSION = require('./constants').VERSION
  2. var StatusUpdater = function (socket, titleElement, bannerElement, browsersElement) {
  3. var updateBrowsersInfo = function (browsers) {
  4. if (!browsersElement) {
  5. return
  6. }
  7. var items = []
  8. var status
  9. for (var i = 0; i < browsers.length; i++) {
  10. status = browsers[i].isReady ? 'idle' : 'executing'
  11. items.push('<li class="' + status + '">' + browsers[i].name + ' is ' + status + '</li>')
  12. }
  13. browsersElement.innerHTML = items.join('\n')
  14. }
  15. var updateBanner = function (status) {
  16. return function (param) {
  17. if (!titleElement || !bannerElement) {
  18. return
  19. }
  20. var paramStatus = param ? status.replace('$', param) : status
  21. titleElement.innerHTML = 'Karma v' + VERSION + ' - ' + paramStatus
  22. bannerElement.className = status === 'connected' ? 'online' : 'offline'
  23. }
  24. }
  25. socket.on('connect', updateBanner('connected'))
  26. socket.on('disconnect', updateBanner('disconnected'))
  27. socket.on('reconnecting', updateBanner('reconnecting in $ seconds...'))
  28. socket.on('reconnect', updateBanner('connected'))
  29. socket.on('reconnect_failed', updateBanner('failed to reconnect'))
  30. socket.on('info', updateBrowsersInfo)
  31. socket.on('disconnect', function () {
  32. updateBrowsersInfo([])
  33. })
  34. }
  35. module.exports = StatusUpdater