| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import { ExecutionDialog } from './ExecutionDialog.js'
- class ExecutionButton extends window.HTMLElement {
- constructFromJson (json) {
- this.executionUuid = json
- this.appendChild(document.createElement('button'))
- this.isWaiting = true
- this.setAttribute('id', 'execution-' + json)
- this.btn = this.querySelector('button')
- this.btn.innerText = 'Executing...'
- this.btn.onclick = () => {
- this.show()
- }
- }
- show () {
- if (window.executionDialog === undefined) {
- window.executionDialog = new ExecutionDialog()
- }
- const executionStatusArgs = {
- executionUuid: this.executionUuid
- }
- window.executionDialog.constructFromJson(this.executionUuid)
- window.executionDialog.show()
- window.fetch(window.restBaseUrl + 'ExecutionStatus', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(executionStatusArgs)
- }).then((res) => {
- if (res.ok) {
- return res.json()
- } else {
- throw new Error(res.statusText)
- }
- }
- ).then((json) => {
- window.executionDialog.renderResult(json)
- }).catch(err => {
- window.executionDialog.renderError(err)
- })
- }
- onFinished (LogEntry) {
- if (LogEntry.timedOut) {
- this.onActionResult('action-timeout', 'Timed out')
- } else if (LogEntry.blocked) {
- this.onActionResult('action-blocked', 'Blocked!')
- } else if (LogEntry.exitCode !== 0) {
- this.onActionResult('action-nonzero-exit', 'Exit code ' + LogEntry.exitCode)
- } else {
- this.onActionResult('action-success', 'Success!')
- }
- }
- onActionResult (cssClass, temporaryStatusMessage) {
- this.temporaryStatusMessage = '[ ' + temporaryStatusMessage + ' ]'
- this.updateDom()
- this.btn.classList.add(cssClass)
- setTimeout(() => {
- this.btn.classList.remove(cssClass)
- }, 1000)
- }
- onActionError (err) {
- console.error('callback error', err)
- this.btn.disabled = false
- this.isWaiting = false
- this.updateDom()
- this.btn.classList.add('action-failed')
- setTimeout(() => {
- this.btn.classList.remove('action-failed')
- }, 1000)
- }
- updateDom () {
- if (this.temporaryStatusMessage != null) {
- this.btn.innerText = this.temporaryStatusMessage
- this.btn.classList.add('temporary-status-message')
- this.isWaiting = false
- this.disabled = false
- setTimeout(() => {
- this.temporaryStatusMessage = null
- this.btn.classList.remove('temporary-status-message')
- this.updateDom()
- }, 2000)
- } else if (this.isWaiting) {
- this.btn.innerText = 'Waiting...'
- } else {
- this.btn.innerText = 'Finished'
- }
- }
- }
- window.customElements.define('execution-button', ExecutionButton)
|