ExecutionDialog.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // This ExecutionDialog is NOT a custom HTML element, but rather just picks up
  2. // the <dialog /> element out of index.html and just re-uses that - as only
  3. // one dialog can be shown at a time.
  4. export class ExecutionDialog {
  5. constructFromJson (json) {
  6. this.executionUuid = json
  7. this.dlg = document.querySelector('dialog#executionResults')
  8. this.domIcon = this.dlg.querySelector('.icon')
  9. this.domTitle = this.dlg.querySelector('.title')
  10. this.domStdout = this.dlg.querySelector('.stdout')
  11. this.domStderr = this.dlg.querySelector('.stderr')
  12. this.domDatetimeStarted = this.dlg.querySelector('.datetimeStarted')
  13. this.domDatetimeFinished = this.dlg.querySelector('.datetimeFinished')
  14. this.domExitCode = this.dlg.querySelector('.exitCode')
  15. this.domStatus = this.dlg.querySelector('.status')
  16. }
  17. show () {
  18. this.dlg.showModal()
  19. }
  20. renderResult (res) {
  21. this.executionUuid = res.logEntry.executionUuid
  22. if (res.logEntry.executionFinished) {
  23. this.domStatus.innerText = 'Completed'
  24. this.domDatetimeFinished.innerText = res.logEntry.datetimeFinished
  25. if (res.logEntry.blocked) {
  26. this.domStatus.innerText = 'Blocked'
  27. }
  28. if (res.logEntry.timedOut) {
  29. this.domExitCode.innerText = 'Timed out'
  30. this.domStatus.innerText = 'Timed out'
  31. } else {
  32. this.domExitCode.innerText = res.logEntry.exitCode
  33. }
  34. } else {
  35. this.domDatetimeFinished.innerText = 'Still running...'
  36. this.domExitCode.innerText = 'Still running...'
  37. this.domStatus.innerText = 'Still running...'
  38. }
  39. this.domIcon.innerHTML = res.logEntry.actionIcon
  40. this.domTitle.innerText = res.logEntry.actionTitle
  41. this.domStdout.innerText = res.logEntry.stdout
  42. if (res.logEntry.stderr === '') {
  43. this.domStderr.parentElement.hidden = true
  44. this.domStderr.innerText = res.logEntry.stderr
  45. } else {
  46. this.domStderr.parentElement.hidden = false
  47. this.domStderr.innerText = res.logEntry.stderr
  48. }
  49. this.domDatetimeStarted.innerText = res.logEntry.datetimeStarted
  50. }
  51. renderError (err) {
  52. this.dlg.querySelector('pre').innerText = JSON.stringify(err)
  53. }
  54. }