|
@ -4,6 +4,8 @@ |
|
|
|
|
|
|
|
|
'use strict'; |
|
|
'use strict'; |
|
|
|
|
|
|
|
|
|
|
|
import { Upload } from 'upload'; |
|
|
|
|
|
|
|
|
import DtpLog from './dtp-log'; |
|
|
import DtpLog from './dtp-log'; |
|
|
import DtpSocket from './dtp-socket'; |
|
|
import DtpSocket from './dtp-socket'; |
|
|
import DtpDisplayEngine from './dtp-display-engine'; |
|
|
import DtpDisplayEngine from './dtp-display-engine'; |
|
@ -88,8 +90,45 @@ export default class DtpApp { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async submitFormWithProgress (event) { |
|
|
|
|
|
event.preventDefault(); |
|
|
|
|
|
event.stopPropagation(); |
|
|
|
|
|
|
|
|
|
|
|
const formElement = event.currentTarget || event.target; |
|
|
|
|
|
const form = new FormData(formElement); |
|
|
|
|
|
|
|
|
|
|
|
const progressDialog = document.querySelector(formElement.getAttribute('data-progress-dialog') || '#upload-progress-dialog'); |
|
|
|
|
|
const progressBar = document.querySelector(formElement.getAttribute('data-progress-element') || 'progress#upload-progress'); |
|
|
|
|
|
const progressPrompt = document.querySelector(formElement.getAttribute('data-progress-prompt') || '#upload-progress-prompt'); |
|
|
|
|
|
|
|
|
|
|
|
const upload = new Upload({ |
|
|
|
|
|
url: formElement.getAttribute('action'), |
|
|
|
|
|
form, |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
upload.on('progress', (progress) => { |
|
|
|
|
|
this.log.info('submitSemitism', 'upload progress', { progress }); |
|
|
|
|
|
progressBar.value = Math.round(progress * 100.0); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
progressDialog.removeAttribute('hidden'); |
|
|
|
|
|
const response = await upload.upload(); |
|
|
|
|
|
|
|
|
|
|
|
progressPrompt.textContent = 'Upload complete...'; |
|
|
|
|
|
this.log.info('submitSemitism', 'upload response', { response }); |
|
|
|
|
|
|
|
|
|
|
|
const json = JSON.parse(response.data); |
|
|
|
|
|
await this.processResponseJSON(json); |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
async processResponse (response) { |
|
|
async processResponse (response) { |
|
|
const json = await response.json(); |
|
|
const json = await response.json(); |
|
|
|
|
|
return this.processResponseJSON(json); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async processResponseJSON (json) { |
|
|
if (!json.success) { |
|
|
if (!json.success) { |
|
|
this.log.error('processResponse', json.message); |
|
|
this.log.error('processResponse', json.message); |
|
|
throw new Error(json.message); |
|
|
throw new Error(json.message); |
|
|