Merge branch 'master' of ssh://161.35.163.87:/home/django/rts
This commit is contained in:
Vendored
+2
-1
@@ -3,5 +3,6 @@
|
|||||||
"javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
|
"javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
|
||||||
"javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": false,
|
"javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": false,
|
||||||
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false,
|
"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false,
|
||||||
"javascript.format.enable": false
|
"javascript.format.enable": false,
|
||||||
|
"liveServer.settings.port": 5502
|
||||||
}
|
}
|
||||||
+70
-16
@@ -1,18 +1,67 @@
|
|||||||
html, body, div, span, applet, object, iframe,
|
html,
|
||||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
body,
|
||||||
a, abbr, acronym, address, big, cite, code,
|
div,
|
||||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
span,
|
||||||
small, strike, strong, sub, sup, tt, var,
|
applet,
|
||||||
dl, dt, dd, ol, ul, li,
|
object,
|
||||||
fieldset, form, label, legend,
|
iframe,
|
||||||
table, caption, tbody, tfoot, thead, tr, th, td {
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
p,
|
||||||
|
blockquote,
|
||||||
|
pre,
|
||||||
|
a,
|
||||||
|
abbr,
|
||||||
|
acronym,
|
||||||
|
address,
|
||||||
|
big,
|
||||||
|
cite,
|
||||||
|
code,
|
||||||
|
del,
|
||||||
|
dfn,
|
||||||
|
em,
|
||||||
|
font,
|
||||||
|
img,
|
||||||
|
ins,
|
||||||
|
kbd,
|
||||||
|
q,
|
||||||
|
s,
|
||||||
|
samp,
|
||||||
|
small,
|
||||||
|
strike,
|
||||||
|
strong,
|
||||||
|
sub,
|
||||||
|
sup,
|
||||||
|
tt,
|
||||||
|
var,
|
||||||
|
dl,
|
||||||
|
dt,
|
||||||
|
dd,
|
||||||
|
ol,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
fieldset,
|
||||||
|
form,
|
||||||
|
label,
|
||||||
|
legend,
|
||||||
|
table,
|
||||||
|
caption,
|
||||||
|
tbody,
|
||||||
|
tfoot,
|
||||||
|
thead,
|
||||||
|
tr,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: 0;
|
border: 0;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
font-weight: inherit;
|
font-weight: inherit;
|
||||||
font-style: inherit;
|
font-style: inherit;
|
||||||
font-size: 100%;
|
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
}
|
}
|
||||||
@@ -27,7 +76,8 @@ body {
|
|||||||
background: white;
|
background: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
ol, ul {
|
ol,
|
||||||
|
ul {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,17 +86,21 @@ table {
|
|||||||
border-spacing: 0;
|
border-spacing: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
caption, th, td {
|
caption,
|
||||||
|
th,
|
||||||
|
td {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote:before, blockquote:after,
|
blockquote:before,
|
||||||
q:before, q:after {
|
blockquote:after,
|
||||||
|
q:before,
|
||||||
|
q:after {
|
||||||
content: "";
|
content: "";
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote, q {
|
blockquote,
|
||||||
quotes: "" "";
|
q {
|
||||||
|
quotes: """";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+226
-135
@@ -17,7 +17,6 @@
|
|||||||
appearance: none;
|
appearance: none;
|
||||||
font-family: "Noto Sans", sans-serif !important;
|
font-family: "Noto Sans", sans-serif !important;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-size: 1.6rem;
|
|
||||||
text-rendering: optimizeLegibility;
|
text-rendering: optimizeLegibility;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
@@ -49,7 +48,12 @@ html {
|
|||||||
font-size: 62.5%;
|
font-size: 62.5%;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body, input:not([type=text]), button, select, option {
|
html,
|
||||||
|
body,
|
||||||
|
input:not([type=text]),
|
||||||
|
button,
|
||||||
|
select,
|
||||||
|
option {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
@@ -57,11 +61,18 @@ html, body, input:not([type=text]), button, select, option {
|
|||||||
-o-user-select: none;
|
-o-user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body, input, button, select, option, textarea {
|
html,
|
||||||
vertical-align:top;
|
body,
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
select,
|
||||||
|
option,
|
||||||
|
textarea {
|
||||||
|
vertical-align: top;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: black; /*#1d3850;*/
|
color: black;
|
||||||
|
/*#1d3850;*/
|
||||||
/*font-family: 'Noto Sans', sans-serif;*/
|
/*font-family: 'Noto Sans', sans-serif;*/
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
@@ -72,7 +83,11 @@ body {
|
|||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
input, button, select, option, textarea {
|
input,
|
||||||
|
button,
|
||||||
|
select,
|
||||||
|
option,
|
||||||
|
textarea {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
padding: 0.4rem 0.8rem;
|
padding: 0.4rem 0.8rem;
|
||||||
@@ -529,7 +544,7 @@ img {
|
|||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
background-color: rgba(0,0,0,0.4);
|
background-color: rgba(0, 0, 0, 0.4);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,7 +621,7 @@ img {
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background-color: rgba(0,0,0,0.9);
|
background-color: rgba(0, 0, 0, 0.9);
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: lightgray;
|
color: lightgray;
|
||||||
@@ -652,7 +667,8 @@ img {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.close:before, .close:after {
|
.close:before,
|
||||||
|
.close:after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
content: ' ';
|
content: ' ';
|
||||||
@@ -796,7 +812,7 @@ select option:disabled {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.feedback {
|
.feedback {
|
||||||
padding-top: 0.8rem;
|
padding-top: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#options-panel {
|
#options-panel {
|
||||||
@@ -816,43 +832,60 @@ select option:disabled {
|
|||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packet-button {
|
|
||||||
display:inline-block;
|
.login-button {
|
||||||
padding:0.35em 1.2em;
|
display: inline-block;
|
||||||
border:0.1em solid #FFFFFF;
|
padding: 0.35em 1.2em;
|
||||||
margin:0 0.3em 0.3em 0;
|
border: 0.1em solid purple;
|
||||||
border-radius:0.12em;
|
margin: 0 0.3em 0.3em 0;
|
||||||
|
border-radius: 0.12em;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
text-decoration:none;
|
text-decoration: none;
|
||||||
font-family:'Roboto',sans-serif;
|
font-family: 'Roboto', sans-serif;
|
||||||
font-weight:300;
|
font-weight: 300;
|
||||||
color:#FFFFFF;
|
color: rgb(201, 0, 201);
|
||||||
text-align:center;
|
text-align: center;
|
||||||
|
transition: all 0.2s;
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.packet-button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.35em 1.2em;
|
||||||
|
border: 0.1em solid #FFFFFF;
|
||||||
|
margin: 0 0.3em 0.3em 0;
|
||||||
|
border-radius: 0.12em;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-decoration: none;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
font-weight: 300;
|
||||||
|
color: #FFFFFF;
|
||||||
|
text-align: center;
|
||||||
transition: all 0.2s;
|
transition: all 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packet-button.cached:after{
|
.packet-button.cached:after {
|
||||||
content: "cached";
|
content: "cached";
|
||||||
width: 12px;
|
width: 12px;
|
||||||
height: 12px;
|
height: 12px;
|
||||||
color: gray;
|
color: gray;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
position:relative;
|
position: relative;
|
||||||
transform: translate(15px, 5.5px) rotate(270deg);
|
transform: translate(15px, 5.5px) rotate(270deg);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
right: 0;
|
right: 0;
|
||||||
font-size: 8px;
|
font-size: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packet-button.out-of-date{
|
.packet-button.out-of-date {
|
||||||
color: darkslategray
|
color: darkslategray
|
||||||
}
|
}
|
||||||
|
|
||||||
.save-button {
|
.save-button {
|
||||||
display:inline-block;
|
display: inline-block;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
color:#FFFFFF;
|
color: #FFFFFF;
|
||||||
border-bottom:2px solid transparent;
|
border-bottom: 2px solid transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.save-button a {
|
.save-button a {
|
||||||
@@ -861,27 +894,27 @@ select option:disabled {
|
|||||||
|
|
||||||
.save-button:hover {
|
.save-button:hover {
|
||||||
color: #311B92;
|
color: #311B92;
|
||||||
border-bottom:2px solid #311B92;
|
border-bottom: 2px solid #311B92;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packet-button:hover{
|
.packet-button:hover {
|
||||||
color:lightblue;
|
color: lightblue;
|
||||||
border-color:blue;
|
border-color: blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.progress-block {
|
.progress-block {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
}
|
}
|
||||||
|
|
||||||
#timer {
|
#timer {
|
||||||
/* left: 50%; */
|
/* left: 50%; */
|
||||||
margin: auto;
|
margin: auto;
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
opacity: 25%;
|
opacity: 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#timer:hover:before {
|
#timer:hover:before {
|
||||||
@@ -889,69 +922,97 @@ select option:disabled {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.sk-cube-grid {
|
.sk-cube-grid {
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube {
|
.sk-cube-grid .sk-cube {
|
||||||
width: 33%;
|
width: 33%;
|
||||||
height: 33%;
|
height: 33%;
|
||||||
background-color: #4527A0;
|
background-color: #4527A0;
|
||||||
float: left;
|
float: left;
|
||||||
-webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
|
-webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
|
||||||
animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
|
animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube1 {
|
.sk-cube-grid .sk-cube1 {
|
||||||
-webkit-animation-delay: 0.2s;
|
-webkit-animation-delay: 0.2s;
|
||||||
animation-delay: 0.2s; }
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube2 {
|
.sk-cube-grid .sk-cube2 {
|
||||||
-webkit-animation-delay: 0.3s;
|
-webkit-animation-delay: 0.3s;
|
||||||
animation-delay: 0.3s; }
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube3 {
|
.sk-cube-grid .sk-cube3 {
|
||||||
-webkit-animation-delay: 0.4s;
|
-webkit-animation-delay: 0.4s;
|
||||||
animation-delay: 0.4s; }
|
animation-delay: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube4 {
|
.sk-cube-grid .sk-cube4 {
|
||||||
-webkit-animation-delay: 0.1s;
|
-webkit-animation-delay: 0.1s;
|
||||||
animation-delay: 0.1s; }
|
animation-delay: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube5 {
|
.sk-cube-grid .sk-cube5 {
|
||||||
-webkit-animation-delay: 0.2s;
|
-webkit-animation-delay: 0.2s;
|
||||||
animation-delay: 0.2s; }
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube6 {
|
.sk-cube-grid .sk-cube6 {
|
||||||
-webkit-animation-delay: 0.3s;
|
-webkit-animation-delay: 0.3s;
|
||||||
animation-delay: 0.3s; }
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube7 {
|
.sk-cube-grid .sk-cube7 {
|
||||||
-webkit-animation-delay: 0s;
|
-webkit-animation-delay: 0s;
|
||||||
animation-delay: 0s; }
|
animation-delay: 0s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube8 {
|
.sk-cube-grid .sk-cube8 {
|
||||||
-webkit-animation-delay: 0.1s;
|
-webkit-animation-delay: 0.1s;
|
||||||
animation-delay: 0.1s; }
|
animation-delay: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
.sk-cube-grid .sk-cube9 {
|
.sk-cube-grid .sk-cube9 {
|
||||||
-webkit-animation-delay: 0.2s;
|
-webkit-animation-delay: 0.2s;
|
||||||
animation-delay: 0.2s; }
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
@-webkit-keyframes sk-cubeGridScaleDelay {
|
@-webkit-keyframes sk-cubeGridScaleDelay {
|
||||||
0%, 70%, 100% {
|
|
||||||
-webkit-transform: scale3D(1, 1, 1);
|
0%,
|
||||||
transform: scale3D(1, 1, 1);
|
70%,
|
||||||
} 35% {
|
100% {
|
||||||
-webkit-transform: scale3D(0, 0, 1);
|
-webkit-transform: scale3D(1, 1, 1);
|
||||||
transform: scale3D(0, 0, 1);
|
transform: scale3D(1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
35% {
|
||||||
|
-webkit-transform: scale3D(0, 0, 1);
|
||||||
|
transform: scale3D(0, 0, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes sk-cubeGridScaleDelay {
|
@keyframes sk-cubeGridScaleDelay {
|
||||||
0%, 70%, 100% {
|
|
||||||
-webkit-transform: scale3D(1, 1, 1);
|
0%,
|
||||||
transform: scale3D(1, 1, 1);
|
70%,
|
||||||
} 35% {
|
100% {
|
||||||
-webkit-transform: scale3D(0, 0, 1);
|
-webkit-transform: scale3D(1, 1, 1);
|
||||||
transform: scale3D(0, 0, 1);
|
transform: scale3D(1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
35% {
|
||||||
|
-webkit-transform: scale3D(0, 0, 1);
|
||||||
|
transform: scale3D(0, 0, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.displayblock {
|
.displayblock {
|
||||||
display: block
|
display: block
|
||||||
}
|
}
|
||||||
|
|
||||||
.review-list-header {
|
.review-list-header {
|
||||||
@@ -971,30 +1032,30 @@ display: block
|
|||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
opacity: 50%;
|
opacity: 50%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#resume-exam-button {
|
#resume-exam-button {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, -50%);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pause-text {
|
#pause-text {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
/* left: 50%; */
|
/* left: 50%; */
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
top: 20%;
|
top: 20%;
|
||||||
font-size: xxx-large;
|
font-size: xxx-large;
|
||||||
transform: translate(0%, 20%);
|
transform: translate(0%, 20%);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pause-time-remaining {
|
#pause-time-remaining {
|
||||||
width: auto;
|
width: auto;
|
||||||
font-size: large;
|
font-size: large;
|
||||||
/* position: fixed; */
|
/* position: fixed; */
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.packet-database-options {
|
.packet-database-options {
|
||||||
@@ -1048,36 +1109,40 @@ display: block
|
|||||||
|
|
||||||
|
|
||||||
.lds-ripple {
|
.lds-ripple {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lds-ripple div {
|
.lds-ripple div {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border: 4px solid #4527A0;
|
border: 4px solid #4527A0;
|
||||||
opacity: 1;
|
|
||||||
border-radius: 50%;
|
|
||||||
animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
|
|
||||||
}
|
|
||||||
.lds-ripple div:nth-child(2) {
|
|
||||||
animation-delay: -0.5s;
|
|
||||||
}
|
|
||||||
@keyframes lds-ripple {
|
|
||||||
0% {
|
|
||||||
top: 36px;
|
|
||||||
left: 36px;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
border-radius: 50%;
|
||||||
100% {
|
animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
|
||||||
top: 0px;
|
}
|
||||||
left: 0px;
|
|
||||||
width: 72px;
|
.lds-ripple div:nth-child(2) {
|
||||||
height: 72px;
|
animation-delay: -0.5s;
|
||||||
opacity: 0;
|
}
|
||||||
}
|
|
||||||
|
@keyframes lds-ripple {
|
||||||
|
0% {
|
||||||
|
top: 36px;
|
||||||
|
left: 36px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 72px;
|
||||||
|
height: 72px;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#submit-error-overlay {
|
#submit-error-overlay {
|
||||||
@@ -1095,4 +1160,30 @@ display: block
|
|||||||
|
|
||||||
.cache-out-of-date {
|
.cache-out-of-date {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.user-text {
|
||||||
|
color: darkslateblue;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inactive::before {
|
||||||
|
content: "inactive";
|
||||||
|
transform: rotate(45deg);
|
||||||
|
color: red;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 900;
|
||||||
|
border: 0.25rem solid red;
|
||||||
|
display: inline-block;
|
||||||
|
/* padding: 0.25rem 1rem; */
|
||||||
|
text-transform: uppercase;
|
||||||
|
border-radius: 1rem;
|
||||||
|
font-family: 'Courier';
|
||||||
|
/* mix-blend-mode: multiply; */
|
||||||
|
opacity: 30%;
|
||||||
|
margin-left: -2em;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invalid-login {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
+44
-29
@@ -19,8 +19,8 @@
|
|||||||
<div class="nav-bar">
|
<div class="nav-bar">
|
||||||
<button id="review-button" class="navigation nav-right"><b>☰</b></button>
|
<button id="review-button" class="navigation nav-right"><b>☰</b></button>
|
||||||
<button id="nav-submit-button" class="submit-button navigation nav-right"><b>submit</b></button>
|
<button id="nav-submit-button" class="submit-button navigation nav-right"><b>submit</b></button>
|
||||||
<button id="options-button" class="navigation nav-right"
|
<!--<button id="options-button" class="navigation nav-right"
|
||||||
title="click to load new packet or manage saved answers">options</button>
|
title="click to load new packet or manage saved answers">options</button>-->
|
||||||
<button id="review-overlay-button" class="navigation nav-right"
|
<button id="review-overlay-button" class="navigation nav-right"
|
||||||
title="click to finish exam and review answers">review</button>
|
title="click to finish exam and review answers">review</button>
|
||||||
<button id="fullscreen-overlay-button" class="navigation nav-right"
|
<button id="fullscreen-overlay-button" class="navigation nav-right"
|
||||||
@@ -63,9 +63,20 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="options-panel" class="fullscreen-overlay">
|
<div id="options-panel" class="fullscreen-overlay">
|
||||||
<h1>RTS</h1>
|
<h1>RTS</h1>
|
||||||
|
<input type='button' id='btn-candidate-login' class="login-button" value='Enter candidate details'><span
|
||||||
|
id="candidate-details"></span>
|
||||||
<!-- <a href="#" id="overlay-close" class="close"></a> -->
|
<!-- <a href="#" id="overlay-close" class="close"></a> -->
|
||||||
|
<div id="user" class="user-text"></div>
|
||||||
<div id="packets">
|
<div id="packets">
|
||||||
<p>Available Packets (click to load):</p>
|
<p>Click buttons below to load an exam / packet</p>
|
||||||
|
<span class="exam-wrapper hidden">
|
||||||
|
<h2>Available Exams:</h2>
|
||||||
|
<span id="exam-list">
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<h2>Available Packets:</h2>
|
||||||
<span id="packet-list">
|
<span id="packet-list">
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -74,28 +85,28 @@
|
|||||||
<div id="storage-details">
|
<div id="storage-details">
|
||||||
</div>
|
</div>
|
||||||
<div id="cache-details">
|
<div id="cache-details">
|
||||||
<details>
|
<details>
|
||||||
<summary></summary>
|
<summary></summary>
|
||||||
<ul>
|
<ul>
|
||||||
</ul>
|
</ul>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
<details>
|
<details>
|
||||||
<summary>Options</summary>
|
<summary>Options</summary>
|
||||||
<div id="database-buttons">
|
<div id="database-buttons">
|
||||||
<input type='button' id='btn-delete-answer-databases' value='Delete local answers'>
|
<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-delete-cached-questions' value='Delete cached questions'>
|
||||||
</div>
|
</div>
|
||||||
<div id="local-fileloader">
|
<div id="local-fileloader">
|
||||||
<form id="jsonFile" name="jsonFile" enctype="multipart/form-data" method="post">
|
<form id="jsonFile" name="jsonFile" enctype="multipart/form-data" method="post">
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<h2>Load local question set</h2>
|
<h2>Load local question set</h2>
|
||||||
<input type='file' id='fileinput'>
|
<input type='file' id='fileinput'>
|
||||||
<input type='button' id='btn-local-file-load' value='Load'>
|
<input type='button' id='btn-local-file-load' value='Load'>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
<div id="review-overlay" class="fullscreen-overlay">
|
<div id="review-overlay" class="fullscreen-overlay">
|
||||||
@@ -137,7 +148,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="exam-candidate-number" class="dialog-text hidden">
|
<div id="exam-candidate-number" class="dialog-text hidden">
|
||||||
Check your below candidate number is correct.
|
Check your below candidate number is correct.
|
||||||
<input type='number' size=10 id='candidate-number2'></input>
|
<input type='number' size=10 id='candidate-number2' disabled></input>
|
||||||
</div>
|
</div>
|
||||||
<button class="start-packet-button navigation dialog-yes">Start</button>
|
<button class="start-packet-button navigation dialog-yes">Start</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -152,12 +163,13 @@
|
|||||||
<button id="dialog-submit-button" class="submit-button navigation dialog-review hidden"><b>submit</b></button>
|
<button id="dialog-submit-button" class="submit-button navigation dialog-review hidden"><b>submit</b></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="login-dialog" class="dialog modal">
|
<div id="login-dialog" class="dialog modal noclose">
|
||||||
<h3 class="dialog-title">Select exam</h3>
|
<h3 class="dialog-title">Enter Details</h3>
|
||||||
<div class="dialog-text">
|
<div class="dialog-text">
|
||||||
Candidate number: <input type="text" id="candidate-number" name="candidate" required size="10">
|
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>
|
</div>
|
||||||
<button id="start-exam-button" class="navigation dialog-yes">Start</button>
|
<button id="login-button" class="navigation dialog-yes">Login</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="loading" class="fullscreen-overlay">
|
<div id="loading" class="fullscreen-overlay">
|
||||||
@@ -179,7 +191,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="question-loading" class="fullscreen-overlay-transparent">
|
<div id="question-loading" class="fullscreen-overlay-transparent">
|
||||||
<div class="progress-block">
|
<div class="progress-block">
|
||||||
<div class="lds-ripple"><div></div><div></div></div>
|
<div class="lds-ripple">
|
||||||
|
<div></div>
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -202,7 +217,7 @@
|
|||||||
<script src="lib/dicomParser.min.js"></script>
|
<script src="lib/dicomParser.min.js"></script>
|
||||||
<script src="lib/cornerstoneMath.min.js"></script>
|
<script src="lib/cornerstoneMath.min.js"></script>
|
||||||
<!-- <script src="lib/cornerstoneTools.min.js"></script> -->
|
<!-- <script src="lib/cornerstoneTools.min.js"></script> -->
|
||||||
<script src="https://www.unpkg.com/cornerstone-tools@5.1.3/dist/cornerstoneTools.js"></script>
|
<script src="https://www.unpkg.com/cornerstone-tools@5.2.0/dist/cornerstoneTools.js"></script>
|
||||||
<script src="lib/cornerstoneWebImageLoader.min.js"></script>
|
<script src="lib/cornerstoneWebImageLoader.min.js"></script>
|
||||||
<script src="lib/cornerstoneWADOImageLoader.js"></script>
|
<script src="lib/cornerstoneWADOImageLoader.js"></script>
|
||||||
<script src="lib/cornerstone-base64-image-loader.umd.js"></script>
|
<script src="lib/cornerstone-base64-image-loader.umd.js"></script>
|
||||||
|
|||||||
+25
-19
@@ -8,6 +8,8 @@ export function submitAnswers(exam_details, db, config) {
|
|||||||
.then((a) => {
|
.then((a) => {
|
||||||
let json = {
|
let json = {
|
||||||
eid: exam_details.eid,
|
eid: exam_details.eid,
|
||||||
|
cid: exam_details.cid,
|
||||||
|
start_time: exam_details.start_time,
|
||||||
answers: JSON.stringify(a),
|
answers: JSON.stringify(a),
|
||||||
};
|
};
|
||||||
postAnswers(json, config, exam_details);
|
postAnswers(json, config, exam_details);
|
||||||
@@ -25,10 +27,10 @@ export function submitAnswers(exam_details, db, config) {
|
|||||||
export function getJsonAnswers(exam_details, db) {
|
export function getJsonAnswers(exam_details, db) {
|
||||||
console.log(exam_details)
|
console.log(exam_details)
|
||||||
console.log({
|
console.log({
|
||||||
aid: exam_details.aid,
|
aid: exam_details.aid,
|
||||||
cid: exam_details.cid,
|
cid: exam_details.cid,
|
||||||
eid: exam_details.eid,
|
eid: exam_details.eid,
|
||||||
})
|
})
|
||||||
return db.answers
|
return db.answers
|
||||||
.where({
|
.where({
|
||||||
aid: exam_details.aid,
|
aid: exam_details.aid,
|
||||||
@@ -56,7 +58,7 @@ export function postAnswers(ans, config, exam_details) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
$( document ).trigger( "saveSessionEvent", [ true ] );
|
$(document).trigger("saveSessionEvent", [true]);
|
||||||
if (config.exam_results_url != "") {
|
if (config.exam_results_url != "") {
|
||||||
let url = config.exam_results_url;
|
let url = config.exam_results_url;
|
||||||
|
|
||||||
@@ -70,8 +72,7 @@ export function postAnswers(ans, config, exam_details) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
$("#options-panel").show();
|
$("#options-panel").show();
|
||||||
} else {
|
} else {}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
alert(`${data.question_count} answers sucessfully submitted.`);
|
alert(`${data.question_count} answers sucessfully submitted.`);
|
||||||
}
|
}
|
||||||
@@ -114,10 +115,10 @@ function submissionError(data, answer_json, exam_details) {
|
|||||||
exam_details.question_order.forEach((i, j) => {
|
exam_details.question_order.forEach((i, j) => {
|
||||||
console.log(i, answer_map)
|
console.log(i, answer_map)
|
||||||
if (i in answer_map) {
|
if (i in answer_map) {
|
||||||
console.log("YES", i, answer_map)
|
console.log("YES", i, answer_map)
|
||||||
let ans_array = answer_map[i];
|
let ans_array = answer_map[i];
|
||||||
ans_array.forEach((x, y) => {
|
ans_array.forEach((x, y) => {
|
||||||
$(html).append(`<li><b>Question ${j+1}.${y}:</b> ${x.ans}</li>`);
|
$(html).append(`<li><b>Question ${j+1}.${y}:</b> ${x.ans}</li>`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,10 +146,7 @@ export function getQuestion(url, question_number, question_total) {
|
|||||||
return $.ajax({
|
return $.ajax({
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
url: url,
|
url: url,
|
||||||
progress: function (e) {
|
progress: function(e) {
|
||||||
$("#progress").html(
|
|
||||||
`Downloading question [${question_number}/${question_total}]<br/>This file is compressed (no size available)`
|
|
||||||
);
|
|
||||||
if (e.lengthComputable) {
|
if (e.lengthComputable) {
|
||||||
var completedPercentage = Math.round((e.loaded * 100) / e.total);
|
var completedPercentage = Math.round((e.loaded * 100) / e.total);
|
||||||
|
|
||||||
@@ -157,6 +155,10 @@ export function getQuestion(url, question_number, question_total) {
|
|||||||
e.total
|
e.total
|
||||||
)}`
|
)}`
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
$("#progress").html(
|
||||||
|
`Downloading question [${question_number}/${question_total}]<br/>This file is compressed (downloaded ${helper.humanFileSize(e.loaded)})`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: (jqXHR, textStatus, errorThrown) => {
|
error: (jqXHR, textStatus, errorThrown) => {
|
||||||
@@ -170,14 +172,18 @@ export function getQuestion(url, question_number, question_total) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function postSavedAnswer(type, qid, answer, e, db_object, db) {
|
export function postSavedAnswer(type, qid, answer, e, db_object, db) {
|
||||||
console.log("post", type, qid, answer, e)
|
console.log("post", type, qid, answer, e)
|
||||||
return $.ajax({
|
return $.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: config.question_answer_submit_url,
|
url: config.question_answer_submit_url,
|
||||||
data: JSON.stringify({ qid: `${type}/${qid}`, answer: answer, status: 2 }),
|
data: JSON.stringify({
|
||||||
|
qid: `${type}/${qid}`,
|
||||||
|
answer: answer,
|
||||||
|
status: 2
|
||||||
|
}),
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function(data){
|
success: function(data) {
|
||||||
db_object.submitted = true;
|
db_object.submitted = true;
|
||||||
db.user_answers.put(db_object);
|
db.user_answers.put(db_object);
|
||||||
e.target.remove()
|
e.target.remove()
|
||||||
@@ -185,7 +191,7 @@ return $.ajax({
|
|||||||
|
|
||||||
},
|
},
|
||||||
error: function(errMsg) {
|
error: function(errMsg) {
|
||||||
alert(errMsg);
|
alert(errMsg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
+575
-361
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user