From eb3932df2e7d487fa9ad998ad315866be548c76e Mon Sep 17 00:00:00 2001 From: Burak Hancerli <burak.hancerli@qt.io> Date: Wed, 10 Jul 2024 14:20:30 +0200 Subject: [PATCH] add: visible feedback on failure --- .DS_Store | Bin 6148 -> 0 bytes src/designviewer.cpp | 12 ------------ src/main.cpp | 6 +++++- www/index.html | 11 +++++++++++ www/scripts/script.js | 43 +++++++++++++++++++++++++++++------------- 5 files changed, 46 insertions(+), 26 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5aed9600d587d53ebcb8f12cc133b1d5f55441e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKL2uJA6n<_ymNJ2QVA6zy6p3pYWsFIPOV+gqB)BXH4uDFsR3mB{cS*V+Rg-## z|G;11$}i!+aDwmIu0+ytWfStN?9Z{^=lA?Yv1=j{{dx3=s6#{!3S;Xgs!NQ=xvW{k z^e|8G9M2PZ5+*XlGf!yEDqt13-U{%y+oBVSQKH)Sdx){!U&_=XZqpIHq<|(grWau3 zRG{pl{zOHM`>n>^0A~vCh$dA}aj)iim(DQb8O>Er6EMc$#dJz3S{Xe+rV?|_P;*bp zS=8qIQk%0)$26ov8X*56GM?7gDt@jpG8I=Mj|>r!Lp4U@w8m&6OL$hj5R>TZ9~w5P z<X_E;)w;whEc2P!Prrw=B+iRo?}unKTN^hvolR%UdGCLerC$WaJnskDTYh>aWfHF1 zLHIfzm!r;|BbgRKoQ^X^h@&xF-o1&_NS1v$PorFMeLdi`o%X1+vsfHF+3&i0j}I=o z?&9fQuj}rkebIKd?>~HYJenlaRDMS0FoFGF*)4-B;5T8`eC}syB2(6F<-PK<cohnm zx8Q7DMQ|I_Dqt13)(Y_c;G!^k2A3Mu)`3c00e~%ZD??lT^#{7#0rU(mHKGS5G!>|+ z!dx+gxj6_;$GB(wml`#lgo=!LOk`nhD8gJkgsa?1cp7bO6|f3a6=>?m4xj(Szu*6> zB>Q9)unPQF3W(OgAM~*#bGEK6j?Y>b<pT;E`z<vp3Mz9Ps|Fv%J1EL9=5hn*8C+^a R56u1%P%_xcD)3Jg_zi}Owg><K diff --git a/src/designviewer.cpp b/src/designviewer.cpp index 228ed44..faf4364 100644 --- a/src/designviewer.cpp +++ b/src/designviewer.cpp @@ -46,18 +46,6 @@ #include <QtGui/private/qzipreader_p.h> #endif -std::function<void(char *, size_t, char *)> g_setFileDataCallback; -extern "C" EMSCRIPTEN_KEEPALIVE void qt_callSetFileData(char *content, - size_t contentSize, - char *fileName) -{ - if (g_setFileDataCallback == nullptr) - return; - - g_setFileDataCallback(content, contentSize, fileName); - g_setFileDataCallback = nullptr; -} - DesignViewer::DesignViewer() { qDebug() << "DesignViewer constructor"; diff --git a/src/main.cpp b/src/main.cpp index 541e4e2..4d8e4f9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,11 +27,13 @@ #include <QSurfaceFormat> #include <QtQuick3D/QQuick3D> +#include <emscripten.h> + #include "designviewer.h" void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { - QString logPrefix, logSuffix, newLog; + QString logPrefix, logSuffix, newLog, jsCode; FILE *logFile = stdout; QByteArray localMsg = msg.toLocal8Bit(); @@ -52,6 +54,8 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt case QtCriticalMsg: logPrefix = QStringLiteral("Critical: "); logFile = stderr; + jsCode = QStringLiteral("logError('%1');").arg(localMsg.constData()); + emscripten_run_script(jsCode.toStdString().c_str()); break; case QtFatalMsg: logPrefix = QStringLiteral("Fatal: "); diff --git a/www/index.html b/www/index.html index 87e83e1..ea7a1ad 100644 --- a/www/index.html +++ b/www/index.html @@ -66,6 +66,8 @@ <div id="title">Qt Design Viewer</div> <div id="subtitle" class="subtitleclass"></div> <div id="qtstatus"></div> + <div id="qterrormessages"></div> + <div id="qtbugreport"></div> <noscript >JavaScript is disabled. Please enable JavaScript to use this application.</noscript @@ -164,6 +166,15 @@ </p> <p id="versioninfo_main">Version: 1.0.0</p> </div> + + <div id="err_user_feedback"> + <span + class="closebtn" + onclick="this.parentElement.style.display='none';" + >×</span + > + <div id="err_user_feedback_text"></div> + </div> <script src="qtdesignviewer.js"></script> <script src="scripts/script.js" type="text/javascript"></script> <script src="qtloader.js" type="text/javascript"></script> diff --git a/www/scripts/script.js b/www/scripts/script.js index 5ebe816..dd45283 100644 --- a/www/scripts/script.js +++ b/www/scripts/script.js @@ -65,11 +65,35 @@ window.addEventListener( ); function logError(error) { - console.error(error); - console.error(error.stack); + const spinner = document.querySelector("#qtspinner"); + const container = document.querySelector('#qtcontainer'); const status = document.querySelector('#qtstatus'); - status.innerHTML = 'An error occurred while running the project.<br><br>Error Message:<br>' + error + ' <br><br>Please check the logs for more information.<br>Reloading in 10 seconds.'; - setTimeout(() => location.reload(), 10000); + const error_message = document.querySelector('#qterrormessages'); + const bugreport = document.querySelector('#qtbugreport'); + + container.style.display = 'none'; + spinner.style.display = 'block'; + status.style.display = 'block'; + error_message.style.display = 'block'; + bugreport.style.display = 'block'; + + status.innerHTML = 'An error occurred while running the project. Please check the console logs for more information.<br><br>Critical Error Message(s):<br>'; + + var bugreport_text; + + if (error instanceof Error) { // Assume it's a JS error + console.log(error.stack); + error_message.innerHTML += error.message + '<br>'; + } else { // Assume it's a string + console.log(error); + error_message.innerHTML += error + '<br>'; + } + bugreport_text = error_message.innerHTML + + const reportLink = document.createElement('a'); + reportLink.href = 'https://bugreports.qt.io/secure/CreateIssueDetails!init.jspa?pid=11740&issuetype=1&components=24729&versions=20809&summary=Design+Viewer+Crash&description=' + encodeURIComponent('Error:\n' + bugreport_text); + + bugreport.innerHTML = '<br><br>You can easily report this issue at <a href="' + reportLink.href + '">Qt Bug Reports.</a>'; } function handleFileSelection(event) { @@ -243,21 +267,14 @@ async function loadProjector() { }, onExit: exitData => { console.log("onExit: " + exitData.code + " " + exitData.text); - status.innerHTML = 'Application exit'; if (exitData.code === 0) { status.innerHTML += ' with success.'; return; } - status.innerHTML += ' with an error.'; - status.innerHTML += '<br><br>Exit code:<br>' + exitData.code; - status.innerHTML += '<br><br>Exit message:<br>' + exitData.text; - - const reportLink = document.createElement('a'); - reportLink.href = 'https://bugreports.qt.io/secure/CreateIssueDetails!init.jspa?pid=11740&issuetype=1&components=24729&versions=20809&summary=Design+Viewer+Crash&description=' + encodeURIComponent('Exit code:\n' + exitData.code + '\n\nExit message:\n' + exitData.text); - - status.innerHTML += '<br><br>You can report this issue at <a href="' + reportLink.href + '">Qt Bug Reports.</a>'; + console.error("Exit code: " + exitData.code); + console.error("Exit data: " + JSON.stringify(exitData)); }, entryFunction: window.createQtAppInstance, containerElements: [container] -- GitLab