Files
rts/index.html
T

458 lines
17 KiB
HTML

<!doctype html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en"
class="no-touch"
lang="en"
>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
/>
<meta
name="viewport"
content="initial-scale=1.0, maximum-scale=1.0, width=device-width, height=device-height"
/>
<link type="text/css" rel="stylesheet" href="lib/jquery.modal.min.css" />
<link type="text/css" rel="stylesheet" href="lib/cornerstone.min.css" />
<link type="text/css" rel="stylesheet" href="css/main.css" />
<title>RTS</title>
</head>
<body>
<div id="content">
<div class="content-panel">
<div class="nav-bar">
<button id="btn-review" class="navigation nav-right">
<b></b><br />OVERVIEW
</button>
<button
id="btn-submit-nav"
class="submit-button navigation nav-right"
>
<b>FINISH</b>
</button>
<button
id="btn-review-overlay"
class="navigation nav-right"
title="click to finish exam and review answers"
>
REVIEW
</button>
<button
id="btn-fullscreen-overlay"
class="navigation nav-right"
title="click to toggle fullscreen"
>
FULLSCREEN
</button>
<div class="app-name nav-left">RTS</div>
<div id="sync-status" class="nav-left"></div>
<div id="timer" title="click to pause"></div>
<div class="exam-name" title="currently loaded packet"></div>
<button
class="navigation nav-left"
disabled="disabled"
data-nav="previous"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-arrow-left-short"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5"
/>
</svg>
<br />
<span>PREVIOUS</span>
</button>
<button class="navigation nav-left" data-nav="next">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-arrow-right-short"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8"
/>
</svg>
<br />
<span>NEXT</span>
</button>
</div>
<div class="main-panel">
<div class="question-list-panel" style="display: block"></div>
<div class="exam-panel">
<div class="exam-content-panel">
<div class="question">
<div class="title"><span style="font-weight: 700">1</span></div>
<div class="stem">
<div id="thumbnails"></div>
</div>
<div class="thumbs"></div>
</div>
<div class="answers">
<div class="answer-title">Answer</div>
<div class="answer-panel"></div>
</div>
</div>
</div>
</div>
<div
class="logout-background"
role="dialog"
aria-modal="true"
aria-labelledby="finish-title"
>
<div class="finish-header">
<div class="login-risr-box">
<img
class="login-risr-logo"
draggable="false"
alt="Logo"
src="risr-assess-on-dark.png"
/>
</div>
</div>
<div class="logout-panel finish-dialog" id="finish-dialog-panel">
<div class="logout-title" id="finish-title">Ready to finish?</div>
<div class="logout-error info">
<p>
<strong
>Answers are submitted automatically. You can complete the
exam by clicking below.</strong
>
</p>
<p class="unanswered-line">
You have <span id="unanswered-count">0</span> unanswered
questions
</p>
</div>
<div class="logout-text">
Click “Submit exam” before closing the tab or window
</div>
<div class="logout-buttons">
<button class="logout-button danger" id="button-logout">
Submit exam
</button>
<button class="logout-button primary" id="button-continue">
Continue exam
</button>
</div>
</div>
</div>
<div id="options-panel" class="fullscreen-overlay">
<h1>RTS</h1>
<span id="user-details">
<span id="candidate-info">
<span id="candidate-details"></span>
</span>
<span id="user-actions">
<input
type="button"
id="btn-candidate-login"
class="login-button"
value="Enter candidate details"
onclick="void 0"
/>
<input
type="button"
id="btn-user-login"
class="login-button"
value="User log in"
/>
</span>
<!-- <a href="#" id="overlay-close" class="close"></a> -->
<div id="user" class="user-text"></div>
</span>
<div id="packets">
<div class="global-refresh-container">
<span id="load-exam-packet-instructions">
<span>Click buttons below to load an exam / packet</span>
</span>
<button
id="btn-refresh-all"
class="refresh-button"
title="Refresh all exams and packets"
>
Refresh All
</button>
</div>
<span class="exam-wrapper">
<h2>Exams:</h2>
<span id="exam-list"></span>
</span>
<span class="packet-wrapper">
<h2>
Packets:
<button
id="btn-refresh-packets"
class="refresh-button"
title="Refresh packets"
>
Refresh
</button>
</h2>
<span id="packet-list"></span>
</span>
</div>
<div id="options-link"></div>
<div id="storage-details" style="font-family: sans-serif; font-size: 13px; color: #aaa; margin: 15px 0 10px 0; padding-left: 5px;"></div>
<div id="cache-details">
<details class="cache-details-box">
<summary>Cached Exams / Questions</summary>
<ul style="margin: 10px 0 0 15px; padding: 0; font-size: 13px; color: #ccc;"></ul>
</details>
</div>
<details class="options-details">
<summary>Options</summary>
<div id="database-buttons" class="database-btn-group">
<input
type="button"
id="btn-delete-answer-databases"
value="Delete local answers"
/>
<input
type="button"
id="btn-delete-cached-questions"
value="Delete cached questions"
/>
<input
type="button"
id="btn-reset-local"
value="Clear all local data"
/>
<details style="width: 100%; margin-top: 10px; font-size: 12px; border: 1px solid #444; border-radius: 4px; padding: 10px; background: #111; font-family: sans-serif;">
<summary style="cursor: pointer; font-weight: bold; color: #aaa; outline: none; user-select: none;">Manual Reset Instructions</summary>
<div style="margin-top: 8px; color: #bbb; line-height: 1.5;">
<p style="margin: 0 0 8px 0;">If the automatic reset parameter fails, perform a manual reset in your browser:</p>
<ol style="margin: 0; padding-left: 18px;">
<li style="margin-bottom: 4px;">Open Developer Tools by pressing <strong>F12</strong> or <strong>Ctrl+Shift+I</strong> (Cmd+Option+I on Mac).</li>
<li style="margin-bottom: 4px;">Navigate to the <strong>Application</strong> tab (Chrome/Edge) or <strong>Storage</strong> tab (Firefox).</li>
<li style="margin-bottom: 4px;">Locate storage items and select <strong>Clear Site Data</strong> or delete entries under <em>IndexedDB</em>, <em>Local Storage</em>, and <em>Session Storage</em>.</li>
<li>Reload the page.</li>
</ol>
</div>
</details>
</div>
<div id="local-fileloader" class="local-loader-field">
<form
id="jsonFile"
name="jsonFile"
enctype="multipart/form-data"
method="post"
>
<fieldset style="border: none; padding: 0; margin: 0;">
<h2>Load local question set</h2>
<input type="file" id="fileinput" />
<input type="button" id="btn-local-file-load" value="Load" />
</fieldset>
</form>
</div>
<p style="margin: 15px 0;">
<button id="btn-view-local-answers" class="view-answers-btn">
View local saved answers
</button>
</p>
<div id="logging-controls" style="margin-top: 15px; border-top: 1px solid #333; padding-top: 15px; font-family: sans-serif; font-size: 13px;">
<label for="select-log-level" style="font-weight: bold; color: #ccc;">Logging Level:</label>
<select id="select-log-level" style="background:#222; color:#fff; border:1px solid #555; padding: 4px 8px; border-radius: 4px; font-size: 13px; margin-left: 5px; cursor: pointer; outline: none;">
<option value="silent">Disabled (Silent)</option>
<option value="error">Error</option>
<option value="warn">Warn</option>
<option value="info">Info</option>
<option value="debug">Debug</option>
</select>
</div>
</details>
</div>
<div id="review-overlay" class="fullscreen-overlay">
<a href="#" id="review-overlay-close" class="close"></a>
<div id="review-score"></div>
<div id="exam-stats">
<p>Performance breakdown:</p>
Unanswered questions: <span id="unanswered-number"></span><br />
Answered normal: <span id="normal-number"></span><br />
Answered abnormal: <span id="abnormal-number"></span><br />
<br />
Undercall: <span id="undercall-number"></span><br />
Overcall: <span id="overcall-number"></span><br />
Incorrect call: <span id="incorrectcall-number"></span><br />
</div>
<ul id="review-answer-list"></ul>
<table id="review-answer-table"></table>
</div>
</div>
</div>
<div id="finish-dialog" class="dialog modal">
<h3 class="dialog-title">Finish exam and review?</h3>
<div class="dialog-text">
<button id="finish-exam" class="navigation dialog-yes">
Finish and review
</button>
<button id="finish-cancel" class="navigation dialog-cancel">
Continue exam
</button>
</div>
</div>
<div id="start-dialog" class="dialog modal">
<h3 class="dialog-title">Start <span class="exam-name"></span></h3>
<div class="packet-database-options">
<input
type="button"
id="btn-delete-current"
value="Reset current packet answers"
/><br />
<input
type="button"
id="btn-delete-current-saved-answers"
value="Reset current packet saved answers"
/>
</div>
<div class="dialog-text">
Click to start exam.
<p>
You will have
<input type="number" size="2" class="exam-time" /> minutes.
</p>
</div>
<div id="exam-candidate-number" class="dialog-text hidden">
Check your below candidate number / user is correct.
<input type="text" size="10" id="candidate-number2" disabled />
</div>
<button class="start-packet-button navigation dialog-yes">Start</button>
</div>
<div id="time-up-dialog" class="dialog modal">
<h3 class="dialog-title">Time ended</h3>
<div class="dialog-text">
Allocated time has ended. You can review or continue.
</div>
<button id="btn-time-up-review" class="navigation dialog-review">
Review
</button>
<button id="time-up-continue-button" class="navigation dialog-yes">
Continue
</button>
<button
id="dialog-submit-button"
class="submit-button navigation dialog-review hidden"
>
<b>submit</b>
</button>
</div>
<div id="login-dialog" class="dialog modal noclose">
<h3 class="dialog-title">Enter Details</h3>
<div class="dialog-text">
Candidate number:
<input
type="number"
id="candidate-number"
name="candidate"
required
size="10"
/><br />
Passcode:
<input
type="text"
id="passcode"
name="passcode"
required
size="10"
/><br />
</div>
<button id="btn-login" class="navigation dialog-yes">Login</button>
</div>
<div id="resume-dialog" class="dialog modal noclose">
<h3 class="dialog-title">Resume Session?</h3>
<div class="dialog-text">
<p id="resume-text">Choose a previous session to continue, or start a new one:</p>
<div id="resume-sessions-list" style="margin: 15px 0; max-height: 200px; overflow-y: auto;">
<!-- Session options list -->
</div>
</div>
<div class="dialog-buttons" style="display: flex; gap: 10px; justify-content: flex-end; margin-top: 15px;">
<button id="btn-resume-start-new" class="navigation dialog-no" style="margin: 0;">Start New</button>
<button id="btn-resume-continue" class="navigation dialog-yes" style="margin: 0;" disabled>Continue</button>
</div>
</div>
<div id="loading" class="fullscreen-overlay">
<div class="progress-block">
<div id="progress"></div>
<div class="sk-cube-grid full">
<div class="sk-cube sk-cube1"></div>
<div class="sk-cube sk-cube2"></div>
<div class="sk-cube sk-cube3"></div>
<div class="sk-cube sk-cube4"></div>
<div class="sk-cube sk-cube5"></div>
<div class="sk-cube sk-cube6"></div>
<div class="sk-cube sk-cube7"></div>
<div class="sk-cube sk-cube8"></div>
<div class="sk-cube sk-cube9"></div>
</div>
</div>
</div>
<div id="question-loading" class="fullscreen-overlay-transparent">
<div class="progress-block">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
</div>
<div id="pause" class="fullscreen-overlay"></div>
<div id="packet-history" class="fullscreen-overlay"></div>
<script src="https://browser.sentry-cdn.com/8.48.0/bundle.min.js" crossorigin="anonymous"></script>
<div id="database-error" class="fullscreen-overlay"></div>
<script
src="https://js-de.sentry-cdn.com/017b4494d7038e3e789fe38378b53fb2.min.js"
crossorigin="anonymous"
></script>
<script src="lib/loglevel.min.js"></script>
<script src="lib/uuidv4.min.js" type="module"></script>
<script src="lib/jquery-3.4.1.min.js" type="text/javascript"></script>
<script src="lib/jq-ajax-progress.min.js" type="text/javascript"></script>
<script src="lib/easytimer.min.js" type="module"></script>
<script src="lib/hammer.js"></script>
<script src="lib/cornerstone.js"></script>
<script src="lib/dicomParser.min.js"></script>
<script src="lib/cornerstoneMath.min.js"></script>
<!-- <script src="lib/cornerstoneTools.min.js"></script> -->
<script src="lib/cornerstoneTools.js"></script>
<script src="lib/cornerstoneWebImageLoader.min.js"></script>
<script src="lib/cornerstoneWADOImageLoader.js"></script>
<script src="lib/cornerstone-base64-image-loader.umd.js"></script>
<script src="lib/dexie.js"></script>
<script src="lib/jquery.modal.min.js"></script>
<!-- <script src="packets/rr1" defer="defer"></script> -->
<script src="js/main.js" defer="defer" type="module"></script>
<script src="lib/notify.min.js" type="text/javascript"></script>
<script></script>
</body>
</html>