@3cr/viewer-browser 0.0.61 → 0.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/components.d.ts +0 -1
  2. package/coverage/3cr-viewer-browser/index.html +5 -5
  3. package/coverage/3cr-viewer-browser/index.ts.html +14 -26
  4. package/coverage/3cr-viewer-browser/src/App.vue.html +51 -48
  5. package/coverage/3cr-viewer-browser/src/components/WebGL3DR.vue.html +1 -1
  6. package/coverage/3cr-viewer-browser/src/components/icons/index.html +1 -1
  7. package/coverage/3cr-viewer-browser/src/components/icons/liver.vue.html +1 -1
  8. package/coverage/3cr-viewer-browser/src/components/index.html +1 -1
  9. package/coverage/3cr-viewer-browser/src/components/loading/LoadingSpinner.vue.html +82 -16
  10. package/coverage/3cr-viewer-browser/src/components/loading/index.html +5 -5
  11. package/coverage/3cr-viewer-browser/src/components/modal/MftpWebGL3DRModal.vue.html +238 -1123
  12. package/coverage/3cr-viewer-browser/src/components/modal/index.html +19 -19
  13. package/coverage/3cr-viewer-browser/src/components/selectors/ValueSelector.vue.html +47 -20
  14. package/coverage/3cr-viewer-browser/src/components/selectors/index.html +7 -7
  15. package/coverage/3cr-viewer-browser/src/components/sliders/DoubleSliderSelector.vue.html +62 -20
  16. package/coverage/3cr-viewer-browser/src/components/sliders/VerticalSliderSelector.vue.html +16 -7
  17. package/coverage/3cr-viewer-browser/src/components/sliders/index.html +10 -10
  18. package/coverage/3cr-viewer-browser/src/dataLayer/iconData.ts.html +118 -0
  19. package/coverage/3cr-viewer-browser/src/dataLayer/index.html +146 -0
  20. package/coverage/3cr-viewer-browser/src/dataLayer/payloadHandler.ts.html +352 -0
  21. package/coverage/3cr-viewer-browser/src/dataLayer/scanState.ts.html +628 -0
  22. package/coverage/3cr-viewer-browser/src/helpers/index.html +1 -1
  23. package/coverage/3cr-viewer-browser/src/helpers/layoutOverlayStyle.ts.html +1 -1
  24. package/coverage/3cr-viewer-browser/src/helpers/modelHelper.ts.html +105 -105
  25. package/coverage/3cr-viewer-browser/src/helpers/utils.ts.html +3 -3
  26. package/coverage/3cr-viewer-browser/src/index.html +5 -5
  27. package/coverage/3cr-viewer-browser/src/main.ts.html +1 -1
  28. package/coverage/3cr-viewer-browser/src/models/LoadViewerOptions.ts.html +166 -0
  29. package/coverage/3cr-viewer-browser/src/models/index.html +116 -0
  30. package/coverage/3cr-viewer-browser/src/notifications/index.html +116 -0
  31. package/coverage/3cr-viewer-browser/src/notifications/notification.ts.html +229 -0
  32. package/coverage/3cr-viewer-browser/src/plugins/index.html +5 -5
  33. package/coverage/3cr-viewer-browser/src/plugins/index.ts.html +14 -8
  34. package/coverage/3cr-viewer-browser/src/plugins/vuetify.ts.html +1 -1
  35. package/coverage/index.html +78 -33
  36. package/dist/Viewer3CR.js +12 -12
  37. package/dist/Viewer3CR.mjs +10004 -9916
  38. package/dist/Viewer3CR.umd.js +12 -12
  39. package/index.ts +7 -42
  40. package/package.json +2 -1
  41. package/src/App.vue +6 -2
  42. package/src/components/modal/MftpWebGL3DRModal.vue +137 -452
  43. package/src/components/modal/__tests__/mftp-webgl-3dr-modal.spec.ts +114 -83
  44. package/src/components/selectors/ValueSelector.vue +4 -0
  45. package/src/components/selectors/__tests__/value-selector.spec.ts +18 -0
  46. package/src/components/sliders/DoubleSliderSelector.vue +10 -4
  47. package/src/components/sliders/__tests__/double-slider-selector.spec.ts +32 -0
  48. package/src/dataLayer/__tests__/payload-handler.spec.ts +98 -0
  49. package/src/dataLayer/iconData.ts +11 -0
  50. package/src/dataLayer/payloadHandler.ts +89 -0
  51. package/src/dataLayer/scanState.ts +181 -0
  52. package/src/demo/DemoPatientModal.vue +59 -0
  53. package/src/demo/options.ts +93 -0
  54. package/src/models/Callbacks.ts +2 -0
  55. package/src/models/LoadViewerOptions.ts +27 -0
  56. package/src/models/LoadViewerPayload.ts +8 -0
  57. package/src/notifications/notification.ts +48 -0
  58. package/vitest.config.mts +1 -0
  59. /package/src/{components/modal → demo}/DemoModal.vue +0 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.91% </span>
26
+ <span class="strong">99.9% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>1292/1347</span>
28
+ <span class='fraction'>1051/1052</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">99.36% </span>
33
+ <span class="strong">98.82% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>156/157</span>
35
+ <span class='fraction'>84/85</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">97.87% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>46/47</span>
42
+ <span class='fraction'>47/47</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">95.91% </span>
47
+ <span class="strong">99.9% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>1292/1347</span>
49
+ <span class='fraction'>1051/1052</span>
50
50
  </div>
51
51
 
52
52
 
@@ -1115,302 +1115,7 @@
1115
1115
  <a name='L1050'></a><a href='#L1050'>1050</a>
1116
1116
  <a name='L1051'></a><a href='#L1051'>1051</a>
1117
1117
  <a name='L1052'></a><a href='#L1052'>1052</a>
1118
- <a name='L1053'></a><a href='#L1053'>1053</a>
1119
- <a name='L1054'></a><a href='#L1054'>1054</a>
1120
- <a name='L1055'></a><a href='#L1055'>1055</a>
1121
- <a name='L1056'></a><a href='#L1056'>1056</a>
1122
- <a name='L1057'></a><a href='#L1057'>1057</a>
1123
- <a name='L1058'></a><a href='#L1058'>1058</a>
1124
- <a name='L1059'></a><a href='#L1059'>1059</a>
1125
- <a name='L1060'></a><a href='#L1060'>1060</a>
1126
- <a name='L1061'></a><a href='#L1061'>1061</a>
1127
- <a name='L1062'></a><a href='#L1062'>1062</a>
1128
- <a name='L1063'></a><a href='#L1063'>1063</a>
1129
- <a name='L1064'></a><a href='#L1064'>1064</a>
1130
- <a name='L1065'></a><a href='#L1065'>1065</a>
1131
- <a name='L1066'></a><a href='#L1066'>1066</a>
1132
- <a name='L1067'></a><a href='#L1067'>1067</a>
1133
- <a name='L1068'></a><a href='#L1068'>1068</a>
1134
- <a name='L1069'></a><a href='#L1069'>1069</a>
1135
- <a name='L1070'></a><a href='#L1070'>1070</a>
1136
- <a name='L1071'></a><a href='#L1071'>1071</a>
1137
- <a name='L1072'></a><a href='#L1072'>1072</a>
1138
- <a name='L1073'></a><a href='#L1073'>1073</a>
1139
- <a name='L1074'></a><a href='#L1074'>1074</a>
1140
- <a name='L1075'></a><a href='#L1075'>1075</a>
1141
- <a name='L1076'></a><a href='#L1076'>1076</a>
1142
- <a name='L1077'></a><a href='#L1077'>1077</a>
1143
- <a name='L1078'></a><a href='#L1078'>1078</a>
1144
- <a name='L1079'></a><a href='#L1079'>1079</a>
1145
- <a name='L1080'></a><a href='#L1080'>1080</a>
1146
- <a name='L1081'></a><a href='#L1081'>1081</a>
1147
- <a name='L1082'></a><a href='#L1082'>1082</a>
1148
- <a name='L1083'></a><a href='#L1083'>1083</a>
1149
- <a name='L1084'></a><a href='#L1084'>1084</a>
1150
- <a name='L1085'></a><a href='#L1085'>1085</a>
1151
- <a name='L1086'></a><a href='#L1086'>1086</a>
1152
- <a name='L1087'></a><a href='#L1087'>1087</a>
1153
- <a name='L1088'></a><a href='#L1088'>1088</a>
1154
- <a name='L1089'></a><a href='#L1089'>1089</a>
1155
- <a name='L1090'></a><a href='#L1090'>1090</a>
1156
- <a name='L1091'></a><a href='#L1091'>1091</a>
1157
- <a name='L1092'></a><a href='#L1092'>1092</a>
1158
- <a name='L1093'></a><a href='#L1093'>1093</a>
1159
- <a name='L1094'></a><a href='#L1094'>1094</a>
1160
- <a name='L1095'></a><a href='#L1095'>1095</a>
1161
- <a name='L1096'></a><a href='#L1096'>1096</a>
1162
- <a name='L1097'></a><a href='#L1097'>1097</a>
1163
- <a name='L1098'></a><a href='#L1098'>1098</a>
1164
- <a name='L1099'></a><a href='#L1099'>1099</a>
1165
- <a name='L1100'></a><a href='#L1100'>1100</a>
1166
- <a name='L1101'></a><a href='#L1101'>1101</a>
1167
- <a name='L1102'></a><a href='#L1102'>1102</a>
1168
- <a name='L1103'></a><a href='#L1103'>1103</a>
1169
- <a name='L1104'></a><a href='#L1104'>1104</a>
1170
- <a name='L1105'></a><a href='#L1105'>1105</a>
1171
- <a name='L1106'></a><a href='#L1106'>1106</a>
1172
- <a name='L1107'></a><a href='#L1107'>1107</a>
1173
- <a name='L1108'></a><a href='#L1108'>1108</a>
1174
- <a name='L1109'></a><a href='#L1109'>1109</a>
1175
- <a name='L1110'></a><a href='#L1110'>1110</a>
1176
- <a name='L1111'></a><a href='#L1111'>1111</a>
1177
- <a name='L1112'></a><a href='#L1112'>1112</a>
1178
- <a name='L1113'></a><a href='#L1113'>1113</a>
1179
- <a name='L1114'></a><a href='#L1114'>1114</a>
1180
- <a name='L1115'></a><a href='#L1115'>1115</a>
1181
- <a name='L1116'></a><a href='#L1116'>1116</a>
1182
- <a name='L1117'></a><a href='#L1117'>1117</a>
1183
- <a name='L1118'></a><a href='#L1118'>1118</a>
1184
- <a name='L1119'></a><a href='#L1119'>1119</a>
1185
- <a name='L1120'></a><a href='#L1120'>1120</a>
1186
- <a name='L1121'></a><a href='#L1121'>1121</a>
1187
- <a name='L1122'></a><a href='#L1122'>1122</a>
1188
- <a name='L1123'></a><a href='#L1123'>1123</a>
1189
- <a name='L1124'></a><a href='#L1124'>1124</a>
1190
- <a name='L1125'></a><a href='#L1125'>1125</a>
1191
- <a name='L1126'></a><a href='#L1126'>1126</a>
1192
- <a name='L1127'></a><a href='#L1127'>1127</a>
1193
- <a name='L1128'></a><a href='#L1128'>1128</a>
1194
- <a name='L1129'></a><a href='#L1129'>1129</a>
1195
- <a name='L1130'></a><a href='#L1130'>1130</a>
1196
- <a name='L1131'></a><a href='#L1131'>1131</a>
1197
- <a name='L1132'></a><a href='#L1132'>1132</a>
1198
- <a name='L1133'></a><a href='#L1133'>1133</a>
1199
- <a name='L1134'></a><a href='#L1134'>1134</a>
1200
- <a name='L1135'></a><a href='#L1135'>1135</a>
1201
- <a name='L1136'></a><a href='#L1136'>1136</a>
1202
- <a name='L1137'></a><a href='#L1137'>1137</a>
1203
- <a name='L1138'></a><a href='#L1138'>1138</a>
1204
- <a name='L1139'></a><a href='#L1139'>1139</a>
1205
- <a name='L1140'></a><a href='#L1140'>1140</a>
1206
- <a name='L1141'></a><a href='#L1141'>1141</a>
1207
- <a name='L1142'></a><a href='#L1142'>1142</a>
1208
- <a name='L1143'></a><a href='#L1143'>1143</a>
1209
- <a name='L1144'></a><a href='#L1144'>1144</a>
1210
- <a name='L1145'></a><a href='#L1145'>1145</a>
1211
- <a name='L1146'></a><a href='#L1146'>1146</a>
1212
- <a name='L1147'></a><a href='#L1147'>1147</a>
1213
- <a name='L1148'></a><a href='#L1148'>1148</a>
1214
- <a name='L1149'></a><a href='#L1149'>1149</a>
1215
- <a name='L1150'></a><a href='#L1150'>1150</a>
1216
- <a name='L1151'></a><a href='#L1151'>1151</a>
1217
- <a name='L1152'></a><a href='#L1152'>1152</a>
1218
- <a name='L1153'></a><a href='#L1153'>1153</a>
1219
- <a name='L1154'></a><a href='#L1154'>1154</a>
1220
- <a name='L1155'></a><a href='#L1155'>1155</a>
1221
- <a name='L1156'></a><a href='#L1156'>1156</a>
1222
- <a name='L1157'></a><a href='#L1157'>1157</a>
1223
- <a name='L1158'></a><a href='#L1158'>1158</a>
1224
- <a name='L1159'></a><a href='#L1159'>1159</a>
1225
- <a name='L1160'></a><a href='#L1160'>1160</a>
1226
- <a name='L1161'></a><a href='#L1161'>1161</a>
1227
- <a name='L1162'></a><a href='#L1162'>1162</a>
1228
- <a name='L1163'></a><a href='#L1163'>1163</a>
1229
- <a name='L1164'></a><a href='#L1164'>1164</a>
1230
- <a name='L1165'></a><a href='#L1165'>1165</a>
1231
- <a name='L1166'></a><a href='#L1166'>1166</a>
1232
- <a name='L1167'></a><a href='#L1167'>1167</a>
1233
- <a name='L1168'></a><a href='#L1168'>1168</a>
1234
- <a name='L1169'></a><a href='#L1169'>1169</a>
1235
- <a name='L1170'></a><a href='#L1170'>1170</a>
1236
- <a name='L1171'></a><a href='#L1171'>1171</a>
1237
- <a name='L1172'></a><a href='#L1172'>1172</a>
1238
- <a name='L1173'></a><a href='#L1173'>1173</a>
1239
- <a name='L1174'></a><a href='#L1174'>1174</a>
1240
- <a name='L1175'></a><a href='#L1175'>1175</a>
1241
- <a name='L1176'></a><a href='#L1176'>1176</a>
1242
- <a name='L1177'></a><a href='#L1177'>1177</a>
1243
- <a name='L1178'></a><a href='#L1178'>1178</a>
1244
- <a name='L1179'></a><a href='#L1179'>1179</a>
1245
- <a name='L1180'></a><a href='#L1180'>1180</a>
1246
- <a name='L1181'></a><a href='#L1181'>1181</a>
1247
- <a name='L1182'></a><a href='#L1182'>1182</a>
1248
- <a name='L1183'></a><a href='#L1183'>1183</a>
1249
- <a name='L1184'></a><a href='#L1184'>1184</a>
1250
- <a name='L1185'></a><a href='#L1185'>1185</a>
1251
- <a name='L1186'></a><a href='#L1186'>1186</a>
1252
- <a name='L1187'></a><a href='#L1187'>1187</a>
1253
- <a name='L1188'></a><a href='#L1188'>1188</a>
1254
- <a name='L1189'></a><a href='#L1189'>1189</a>
1255
- <a name='L1190'></a><a href='#L1190'>1190</a>
1256
- <a name='L1191'></a><a href='#L1191'>1191</a>
1257
- <a name='L1192'></a><a href='#L1192'>1192</a>
1258
- <a name='L1193'></a><a href='#L1193'>1193</a>
1259
- <a name='L1194'></a><a href='#L1194'>1194</a>
1260
- <a name='L1195'></a><a href='#L1195'>1195</a>
1261
- <a name='L1196'></a><a href='#L1196'>1196</a>
1262
- <a name='L1197'></a><a href='#L1197'>1197</a>
1263
- <a name='L1198'></a><a href='#L1198'>1198</a>
1264
- <a name='L1199'></a><a href='#L1199'>1199</a>
1265
- <a name='L1200'></a><a href='#L1200'>1200</a>
1266
- <a name='L1201'></a><a href='#L1201'>1201</a>
1267
- <a name='L1202'></a><a href='#L1202'>1202</a>
1268
- <a name='L1203'></a><a href='#L1203'>1203</a>
1269
- <a name='L1204'></a><a href='#L1204'>1204</a>
1270
- <a name='L1205'></a><a href='#L1205'>1205</a>
1271
- <a name='L1206'></a><a href='#L1206'>1206</a>
1272
- <a name='L1207'></a><a href='#L1207'>1207</a>
1273
- <a name='L1208'></a><a href='#L1208'>1208</a>
1274
- <a name='L1209'></a><a href='#L1209'>1209</a>
1275
- <a name='L1210'></a><a href='#L1210'>1210</a>
1276
- <a name='L1211'></a><a href='#L1211'>1211</a>
1277
- <a name='L1212'></a><a href='#L1212'>1212</a>
1278
- <a name='L1213'></a><a href='#L1213'>1213</a>
1279
- <a name='L1214'></a><a href='#L1214'>1214</a>
1280
- <a name='L1215'></a><a href='#L1215'>1215</a>
1281
- <a name='L1216'></a><a href='#L1216'>1216</a>
1282
- <a name='L1217'></a><a href='#L1217'>1217</a>
1283
- <a name='L1218'></a><a href='#L1218'>1218</a>
1284
- <a name='L1219'></a><a href='#L1219'>1219</a>
1285
- <a name='L1220'></a><a href='#L1220'>1220</a>
1286
- <a name='L1221'></a><a href='#L1221'>1221</a>
1287
- <a name='L1222'></a><a href='#L1222'>1222</a>
1288
- <a name='L1223'></a><a href='#L1223'>1223</a>
1289
- <a name='L1224'></a><a href='#L1224'>1224</a>
1290
- <a name='L1225'></a><a href='#L1225'>1225</a>
1291
- <a name='L1226'></a><a href='#L1226'>1226</a>
1292
- <a name='L1227'></a><a href='#L1227'>1227</a>
1293
- <a name='L1228'></a><a href='#L1228'>1228</a>
1294
- <a name='L1229'></a><a href='#L1229'>1229</a>
1295
- <a name='L1230'></a><a href='#L1230'>1230</a>
1296
- <a name='L1231'></a><a href='#L1231'>1231</a>
1297
- <a name='L1232'></a><a href='#L1232'>1232</a>
1298
- <a name='L1233'></a><a href='#L1233'>1233</a>
1299
- <a name='L1234'></a><a href='#L1234'>1234</a>
1300
- <a name='L1235'></a><a href='#L1235'>1235</a>
1301
- <a name='L1236'></a><a href='#L1236'>1236</a>
1302
- <a name='L1237'></a><a href='#L1237'>1237</a>
1303
- <a name='L1238'></a><a href='#L1238'>1238</a>
1304
- <a name='L1239'></a><a href='#L1239'>1239</a>
1305
- <a name='L1240'></a><a href='#L1240'>1240</a>
1306
- <a name='L1241'></a><a href='#L1241'>1241</a>
1307
- <a name='L1242'></a><a href='#L1242'>1242</a>
1308
- <a name='L1243'></a><a href='#L1243'>1243</a>
1309
- <a name='L1244'></a><a href='#L1244'>1244</a>
1310
- <a name='L1245'></a><a href='#L1245'>1245</a>
1311
- <a name='L1246'></a><a href='#L1246'>1246</a>
1312
- <a name='L1247'></a><a href='#L1247'>1247</a>
1313
- <a name='L1248'></a><a href='#L1248'>1248</a>
1314
- <a name='L1249'></a><a href='#L1249'>1249</a>
1315
- <a name='L1250'></a><a href='#L1250'>1250</a>
1316
- <a name='L1251'></a><a href='#L1251'>1251</a>
1317
- <a name='L1252'></a><a href='#L1252'>1252</a>
1318
- <a name='L1253'></a><a href='#L1253'>1253</a>
1319
- <a name='L1254'></a><a href='#L1254'>1254</a>
1320
- <a name='L1255'></a><a href='#L1255'>1255</a>
1321
- <a name='L1256'></a><a href='#L1256'>1256</a>
1322
- <a name='L1257'></a><a href='#L1257'>1257</a>
1323
- <a name='L1258'></a><a href='#L1258'>1258</a>
1324
- <a name='L1259'></a><a href='#L1259'>1259</a>
1325
- <a name='L1260'></a><a href='#L1260'>1260</a>
1326
- <a name='L1261'></a><a href='#L1261'>1261</a>
1327
- <a name='L1262'></a><a href='#L1262'>1262</a>
1328
- <a name='L1263'></a><a href='#L1263'>1263</a>
1329
- <a name='L1264'></a><a href='#L1264'>1264</a>
1330
- <a name='L1265'></a><a href='#L1265'>1265</a>
1331
- <a name='L1266'></a><a href='#L1266'>1266</a>
1332
- <a name='L1267'></a><a href='#L1267'>1267</a>
1333
- <a name='L1268'></a><a href='#L1268'>1268</a>
1334
- <a name='L1269'></a><a href='#L1269'>1269</a>
1335
- <a name='L1270'></a><a href='#L1270'>1270</a>
1336
- <a name='L1271'></a><a href='#L1271'>1271</a>
1337
- <a name='L1272'></a><a href='#L1272'>1272</a>
1338
- <a name='L1273'></a><a href='#L1273'>1273</a>
1339
- <a name='L1274'></a><a href='#L1274'>1274</a>
1340
- <a name='L1275'></a><a href='#L1275'>1275</a>
1341
- <a name='L1276'></a><a href='#L1276'>1276</a>
1342
- <a name='L1277'></a><a href='#L1277'>1277</a>
1343
- <a name='L1278'></a><a href='#L1278'>1278</a>
1344
- <a name='L1279'></a><a href='#L1279'>1279</a>
1345
- <a name='L1280'></a><a href='#L1280'>1280</a>
1346
- <a name='L1281'></a><a href='#L1281'>1281</a>
1347
- <a name='L1282'></a><a href='#L1282'>1282</a>
1348
- <a name='L1283'></a><a href='#L1283'>1283</a>
1349
- <a name='L1284'></a><a href='#L1284'>1284</a>
1350
- <a name='L1285'></a><a href='#L1285'>1285</a>
1351
- <a name='L1286'></a><a href='#L1286'>1286</a>
1352
- <a name='L1287'></a><a href='#L1287'>1287</a>
1353
- <a name='L1288'></a><a href='#L1288'>1288</a>
1354
- <a name='L1289'></a><a href='#L1289'>1289</a>
1355
- <a name='L1290'></a><a href='#L1290'>1290</a>
1356
- <a name='L1291'></a><a href='#L1291'>1291</a>
1357
- <a name='L1292'></a><a href='#L1292'>1292</a>
1358
- <a name='L1293'></a><a href='#L1293'>1293</a>
1359
- <a name='L1294'></a><a href='#L1294'>1294</a>
1360
- <a name='L1295'></a><a href='#L1295'>1295</a>
1361
- <a name='L1296'></a><a href='#L1296'>1296</a>
1362
- <a name='L1297'></a><a href='#L1297'>1297</a>
1363
- <a name='L1298'></a><a href='#L1298'>1298</a>
1364
- <a name='L1299'></a><a href='#L1299'>1299</a>
1365
- <a name='L1300'></a><a href='#L1300'>1300</a>
1366
- <a name='L1301'></a><a href='#L1301'>1301</a>
1367
- <a name='L1302'></a><a href='#L1302'>1302</a>
1368
- <a name='L1303'></a><a href='#L1303'>1303</a>
1369
- <a name='L1304'></a><a href='#L1304'>1304</a>
1370
- <a name='L1305'></a><a href='#L1305'>1305</a>
1371
- <a name='L1306'></a><a href='#L1306'>1306</a>
1372
- <a name='L1307'></a><a href='#L1307'>1307</a>
1373
- <a name='L1308'></a><a href='#L1308'>1308</a>
1374
- <a name='L1309'></a><a href='#L1309'>1309</a>
1375
- <a name='L1310'></a><a href='#L1310'>1310</a>
1376
- <a name='L1311'></a><a href='#L1311'>1311</a>
1377
- <a name='L1312'></a><a href='#L1312'>1312</a>
1378
- <a name='L1313'></a><a href='#L1313'>1313</a>
1379
- <a name='L1314'></a><a href='#L1314'>1314</a>
1380
- <a name='L1315'></a><a href='#L1315'>1315</a>
1381
- <a name='L1316'></a><a href='#L1316'>1316</a>
1382
- <a name='L1317'></a><a href='#L1317'>1317</a>
1383
- <a name='L1318'></a><a href='#L1318'>1318</a>
1384
- <a name='L1319'></a><a href='#L1319'>1319</a>
1385
- <a name='L1320'></a><a href='#L1320'>1320</a>
1386
- <a name='L1321'></a><a href='#L1321'>1321</a>
1387
- <a name='L1322'></a><a href='#L1322'>1322</a>
1388
- <a name='L1323'></a><a href='#L1323'>1323</a>
1389
- <a name='L1324'></a><a href='#L1324'>1324</a>
1390
- <a name='L1325'></a><a href='#L1325'>1325</a>
1391
- <a name='L1326'></a><a href='#L1326'>1326</a>
1392
- <a name='L1327'></a><a href='#L1327'>1327</a>
1393
- <a name='L1328'></a><a href='#L1328'>1328</a>
1394
- <a name='L1329'></a><a href='#L1329'>1329</a>
1395
- <a name='L1330'></a><a href='#L1330'>1330</a>
1396
- <a name='L1331'></a><a href='#L1331'>1331</a>
1397
- <a name='L1332'></a><a href='#L1332'>1332</a>
1398
- <a name='L1333'></a><a href='#L1333'>1333</a>
1399
- <a name='L1334'></a><a href='#L1334'>1334</a>
1400
- <a name='L1335'></a><a href='#L1335'>1335</a>
1401
- <a name='L1336'></a><a href='#L1336'>1336</a>
1402
- <a name='L1337'></a><a href='#L1337'>1337</a>
1403
- <a name='L1338'></a><a href='#L1338'>1338</a>
1404
- <a name='L1339'></a><a href='#L1339'>1339</a>
1405
- <a name='L1340'></a><a href='#L1340'>1340</a>
1406
- <a name='L1341'></a><a href='#L1341'>1341</a>
1407
- <a name='L1342'></a><a href='#L1342'>1342</a>
1408
- <a name='L1343'></a><a href='#L1343'>1343</a>
1409
- <a name='L1344'></a><a href='#L1344'>1344</a>
1410
- <a name='L1345'></a><a href='#L1345'>1345</a>
1411
- <a name='L1346'></a><a href='#L1346'>1346</a>
1412
- <a name='L1347'></a><a href='#L1347'>1347</a>
1413
- <a name='L1348'></a><a href='#L1348'>1348</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1118
+ <a name='L1053'></a><a href='#L1053'>1053</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1414
1119
  <span class="cline-any cline-yes">1x</span>
1415
1120
  <span class="cline-any cline-yes">1x</span>
1416
1121
  <span class="cline-any cline-yes">1x</span>
@@ -2157,6 +1862,16 @@
2157
1862
  <span class="cline-any cline-yes">1x</span>
2158
1863
  <span class="cline-any cline-yes">1x</span>
2159
1864
  <span class="cline-any cline-yes">1x</span>
1865
+ <span class="cline-any cline-yes">5x</span>
1866
+ <span class="cline-any cline-yes">5x</span>
1867
+ <span class="cline-any cline-no">&nbsp;</span>
1868
+ <span class="cline-any cline-yes">5x</span>
1869
+ <span class="cline-any cline-yes">5x</span>
1870
+ <span class="cline-any cline-yes">5x</span>
1871
+ <span class="cline-any cline-yes">5x</span>
1872
+ <span class="cline-any cline-yes">5x</span>
1873
+ <span class="cline-any cline-yes">5x</span>
1874
+ <span class="cline-any cline-yes">5x</span>
2160
1875
  <span class="cline-any cline-yes">1x</span>
2161
1876
  <span class="cline-any cline-yes">1x</span>
2162
1877
  <span class="cline-any cline-yes">1x</span>
@@ -2202,11 +1917,6 @@
2202
1917
  <span class="cline-any cline-yes">1x</span>
2203
1918
  <span class="cline-any cline-yes">1x</span>
2204
1919
  <span class="cline-any cline-yes">1x</span>
2205
- <span class="cline-any cline-yes">2x</span>
2206
- <span class="cline-any cline-yes">2x</span>
2207
- <span class="cline-any cline-yes">2x</span>
2208
- <span class="cline-any cline-yes">2x</span>
2209
- <span class="cline-any cline-yes">2x</span>
2210
1920
  <span class="cline-any cline-yes">1x</span>
2211
1921
  <span class="cline-any cline-yes">1x</span>
2212
1922
  <span class="cline-any cline-yes">1x</span>
@@ -2214,11 +1924,6 @@
2214
1924
  <span class="cline-any cline-yes">1x</span>
2215
1925
  <span class="cline-any cline-yes">1x</span>
2216
1926
  <span class="cline-any cline-yes">1x</span>
2217
- <span class="cline-any cline-yes">2x</span>
2218
- <span class="cline-any cline-yes">2x</span>
2219
- <span class="cline-any cline-yes">2x</span>
2220
- <span class="cline-any cline-yes">2x</span>
2221
- <span class="cline-any cline-yes">2x</span>
2222
1927
  <span class="cline-any cline-yes">1x</span>
2223
1928
  <span class="cline-any cline-yes">1x</span>
2224
1929
  <span class="cline-any cline-yes">1x</span>
@@ -2226,11 +1931,6 @@
2226
1931
  <span class="cline-any cline-yes">1x</span>
2227
1932
  <span class="cline-any cline-yes">1x</span>
2228
1933
  <span class="cline-any cline-yes">1x</span>
2229
- <span class="cline-any cline-yes">2x</span>
2230
- <span class="cline-any cline-yes">2x</span>
2231
- <span class="cline-any cline-yes">2x</span>
2232
- <span class="cline-any cline-yes">2x</span>
2233
- <span class="cline-any cline-yes">2x</span>
2234
1934
  <span class="cline-any cline-yes">1x</span>
2235
1935
  <span class="cline-any cline-yes">1x</span>
2236
1936
  <span class="cline-any cline-yes">1x</span>
@@ -2238,31 +1938,21 @@
2238
1938
  <span class="cline-any cline-yes">1x</span>
2239
1939
  <span class="cline-any cline-yes">1x</span>
2240
1940
  <span class="cline-any cline-yes">1x</span>
2241
- <span class="cline-any cline-yes">2x</span>
2242
- <span class="cline-any cline-yes">2x</span>
2243
- <span class="cline-any cline-yes">2x</span>
2244
- <span class="cline-any cline-yes">2x</span>
2245
- <span class="cline-any cline-yes">2x</span>
2246
- <span class="cline-any cline-yes">1x</span>
2247
- <span class="cline-any cline-yes">1x</span>
2248
- <span class="cline-any cline-yes">1x</span>
2249
- <span class="cline-any cline-yes">1x</span>
2250
- <span class="cline-any cline-yes">1x</span>
2251
1941
  <span class="cline-any cline-yes">1x</span>
2252
1942
  <span class="cline-any cline-yes">1x</span>
2253
1943
  <span class="cline-any cline-yes">1x</span>
2254
- <span class="cline-any cline-yes">2x</span>
2255
- <span class="cline-any cline-yes">2x</span>
2256
- <span class="cline-any cline-yes">2x</span>
2257
- <span class="cline-any cline-yes">2x</span>
2258
- <span class="cline-any cline-yes">2x</span>
2259
- <span class="cline-any cline-yes">1x</span>
2260
- <span class="cline-any cline-yes">1x</span>
2261
1944
  <span class="cline-any cline-yes">1x</span>
2262
1945
  <span class="cline-any cline-yes">1x</span>
2263
1946
  <span class="cline-any cline-yes">1x</span>
2264
1947
  <span class="cline-any cline-yes">1x</span>
2265
1948
  <span class="cline-any cline-yes">1x</span>
1949
+ <span class="cline-any cline-yes">1104x</span>
1950
+ <span class="cline-any cline-yes">1104x</span>
1951
+ <span class="cline-any cline-yes">1104x</span>
1952
+ <span class="cline-any cline-yes">1401x</span>
1953
+ <span class="cline-any cline-yes">1401x</span>
1954
+ <span class="cline-any cline-yes">1104x</span>
1955
+ <span class="cline-any cline-yes">1104x</span>
2266
1956
  <span class="cline-any cline-yes">1x</span>
2267
1957
  <span class="cline-any cline-yes">1x</span>
2268
1958
  <span class="cline-any cline-yes">1x</span>
@@ -2271,97 +1961,38 @@
2271
1961
  <span class="cline-any cline-yes">1x</span>
2272
1962
  <span class="cline-any cline-yes">1x</span>
2273
1963
  <span class="cline-any cline-yes">1x</span>
1964
+ <span class="cline-any cline-yes">972x</span>
2274
1965
  <span class="cline-any cline-yes">1x</span>
1966
+ <span class="cline-any cline-yes">972x</span>
2275
1967
  <span class="cline-any cline-yes">1x</span>
1968
+ <span class="cline-any cline-yes">972x</span>
2276
1969
  <span class="cline-any cline-yes">1x</span>
1970
+ <span class="cline-any cline-yes">972x</span>
2277
1971
  <span class="cline-any cline-yes">1x</span>
2278
1972
  <span class="cline-any cline-yes">1x</span>
2279
1973
  <span class="cline-any cline-yes">1x</span>
2280
- <span class="cline-any cline-yes">1x</span>
2281
- <span class="cline-any cline-yes">1x</span>
2282
- <span class="cline-any cline-yes">1x</span>
2283
- <span class="cline-any cline-yes">1x</span>
2284
- <span class="cline-any cline-yes">1x</span>
2285
- <span class="cline-any cline-yes">1x</span>
2286
- <span class="cline-any cline-yes">1x</span>
2287
- <span class="cline-any cline-yes">5x</span>
2288
- <span class="cline-any cline-yes">5x</span>
2289
- <span class="cline-any cline-yes">1x</span>
2290
- <span class="cline-any cline-yes">1x</span>
2291
- <span class="cline-any cline-yes">1x</span>
2292
- <span class="cline-any cline-yes">1x</span>
2293
- <span class="cline-any cline-yes">5x</span>
2294
- <span class="cline-any cline-yes">5x</span>
2295
- <span class="cline-any cline-yes">1x</span>
2296
- <span class="cline-any cline-yes">1x</span>
2297
- <span class="cline-any cline-yes">1x</span>
1974
+ <span class="cline-any cline-yes">276x</span>
1975
+ <span class="cline-any cline-yes">276x</span>
1976
+ <span class="cline-any cline-yes">276x</span>
1977
+ <span class="cline-any cline-yes">206x</span>
1978
+ <span class="cline-any cline-yes">206x</span>
1979
+ <span class="cline-any cline-yes">206x</span>
1980
+ <span class="cline-any cline-yes">206x</span>
1981
+ <span class="cline-any cline-yes">206x</span>
1982
+ <span class="cline-any cline-yes">276x</span>
1983
+ <span class="cline-any cline-yes">276x</span>
2298
1984
  <span class="cline-any cline-yes">1x</span>
2299
1985
  <span class="cline-any cline-yes">2x</span>
2300
1986
  <span class="cline-any cline-yes">2x</span>
2301
1987
  <span class="cline-any cline-yes">1x</span>
2302
1988
  <span class="cline-any cline-yes">1x</span>
2303
- <span class="cline-any cline-yes">1x</span>
2304
- <span class="cline-any cline-yes">1x</span>
2305
1989
  <span class="cline-any cline-yes">2x</span>
2306
1990
  <span class="cline-any cline-yes">2x</span>
2307
- <span class="cline-any cline-yes">1x</span>
2308
- <span class="cline-any cline-yes">1x</span>
2309
- <span class="cline-any cline-yes">1x</span>
2310
- <span class="cline-any cline-yes">1x</span>
2311
- <span class="cline-any cline-yes">1x</span>
2312
- <span class="cline-any cline-yes">1x</span>
2313
- <span class="cline-any cline-yes">1x</span>
2314
- <span class="cline-any cline-yes">1x</span>
2315
- <span class="cline-any cline-yes">1x</span>
2316
- <span class="cline-any cline-yes">1x</span>
2317
- <span class="cline-any cline-yes">1x</span>
2318
- <span class="cline-any cline-yes">1x</span>
2319
- <span class="cline-any cline-yes">1x</span>
2320
- <span class="cline-any cline-yes">1x</span>
2321
- <span class="cline-any cline-yes">1x</span>
2322
- <span class="cline-any cline-yes">1x</span>
2323
- <span class="cline-any cline-yes">1x</span>
2324
- <span class="cline-any cline-yes">1x</span>
2325
- <span class="cline-any cline-yes">1x</span>
2326
- <span class="cline-any cline-yes">1x</span>
2327
- <span class="cline-any cline-yes">1x</span>
2328
- <span class="cline-any cline-yes">1x</span>
2329
- <span class="cline-any cline-yes">1x</span>
2330
- <span class="cline-any cline-yes">1x</span>
2331
- <span class="cline-any cline-yes">1x</span>
2332
- <span class="cline-any cline-yes">1x</span>
2333
- <span class="cline-any cline-yes">1x</span>
2334
- <span class="cline-any cline-yes">1x</span>
2335
- <span class="cline-any cline-yes">1x</span>
2336
- <span class="cline-any cline-yes">1x</span>
2337
- <span class="cline-any cline-yes">1x</span>
2338
- <span class="cline-any cline-yes">1x</span>
2339
- <span class="cline-any cline-yes">1x</span>
2340
- <span class="cline-any cline-yes">1x</span>
2341
- <span class="cline-any cline-yes">1x</span>
2342
- <span class="cline-any cline-yes">1x</span>
2343
- <span class="cline-any cline-yes">1x</span>
2344
- <span class="cline-any cline-yes">1x</span>
2345
- <span class="cline-any cline-yes">1x</span>
2346
- <span class="cline-any cline-yes">1x</span>
2347
- <span class="cline-any cline-yes">1x</span>
2348
- <span class="cline-any cline-yes">1x</span>
2349
- <span class="cline-any cline-yes">1x</span>
2350
- <span class="cline-any cline-yes">1x</span>
2351
- <span class="cline-any cline-yes">1x</span>
2352
- <span class="cline-any cline-yes">1x</span>
2353
- <span class="cline-any cline-yes">1x</span>
2354
- <span class="cline-any cline-yes">1x</span>
2355
- <span class="cline-any cline-yes">1x</span>
2356
- <span class="cline-any cline-yes">1x</span>
2357
- <span class="cline-any cline-yes">1x</span>
2358
- <span class="cline-any cline-yes">1x</span>
2359
1991
  <span class="cline-any cline-yes">2x</span>
2360
1992
  <span class="cline-any cline-yes">2x</span>
2361
- <span class="cline-any cline-yes">1x</span>
2362
- <span class="cline-any cline-yes">1x</span>
2363
- <span class="cline-any cline-yes">1x</span>
2364
- <span class="cline-any cline-yes">1x</span>
1993
+ <span class="cline-any cline-yes">2x</span>
1994
+ <span class="cline-any cline-yes">8x</span>
1995
+ <span class="cline-any cline-yes">6x</span>
2365
1996
  <span class="cline-any cline-yes">2x</span>
2366
1997
  <span class="cline-any cline-yes">2x</span>
2367
1998
  <span class="cline-any cline-yes">1x</span>
@@ -2377,121 +2008,42 @@
2377
2008
  <span class="cline-any cline-yes">1x</span>
2378
2009
  <span class="cline-any cline-yes">1x</span>
2379
2010
  <span class="cline-any cline-yes">1x</span>
2380
- <span class="cline-any cline-yes">1x</span>
2381
- <span class="cline-any cline-yes">1x</span>
2382
- <span class="cline-any cline-yes">1x</span>
2383
- <span class="cline-any cline-yes">1x</span>
2384
- <span class="cline-any cline-yes">1x</span>
2385
- <span class="cline-any cline-yes">1x</span>
2386
- <span class="cline-any cline-yes">1x</span>
2387
- <span class="cline-any cline-yes">9x</span>
2388
- <span class="cline-any cline-yes">9x</span>
2389
- <span class="cline-any cline-yes">9x</span>
2390
- <span class="cline-any cline-yes">9x</span>
2391
- <span class="cline-any cline-yes">9x</span>
2392
- <span class="cline-any cline-yes">9x</span>
2393
- <span class="cline-any cline-yes">9x</span>
2394
- <span class="cline-any cline-yes">9x</span>
2395
- <span class="cline-any cline-yes">9x</span>
2396
- <span class="cline-any cline-yes">1x</span>
2397
- <span class="cline-any cline-yes">9x</span>
2398
- <span class="cline-any cline-yes">1x</span>
2399
- <span class="cline-any cline-yes">1x</span>
2400
- <span class="cline-any cline-yes">1x</span>
2401
- <span class="cline-any cline-yes">1x</span>
2402
- <span class="cline-any cline-yes">1x</span>
2403
- <span class="cline-any cline-yes">1x</span>
2404
- <span class="cline-any cline-yes">1x</span>
2405
- <span class="cline-any cline-yes">1x</span>
2406
- <span class="cline-any cline-yes">1x</span>
2407
- <span class="cline-any cline-yes">1x</span>
2408
- <span class="cline-any cline-yes">1x</span>
2409
- <span class="cline-any cline-yes">2x</span>
2410
- <span class="cline-any cline-yes">2x</span>
2411
- <span class="cline-any cline-yes">1x</span>
2412
- <span class="cline-any cline-yes">1x</span>
2413
2011
  <span class="cline-any cline-yes">2x</span>
2414
2012
  <span class="cline-any cline-yes">2x</span>
2415
2013
  <span class="cline-any cline-yes">2x</span>
2416
2014
  <span class="cline-any cline-yes">2x</span>
2417
2015
  <span class="cline-any cline-yes">2x</span>
2418
- <span class="cline-any cline-yes">8x</span>
2419
- <span class="cline-any cline-yes">6x</span>
2420
2016
  <span class="cline-any cline-yes">2x</span>
2421
2017
  <span class="cline-any cline-yes">2x</span>
2422
2018
  <span class="cline-any cline-yes">1x</span>
2423
2019
  <span class="cline-any cline-yes">1x</span>
2424
2020
  <span class="cline-any cline-yes">1x</span>
2425
2021
  <span class="cline-any cline-yes">1x</span>
2426
- <span class="cline-any cline-yes">5x</span>
2427
- <span class="cline-any cline-yes">5x</span>
2428
- <span class="cline-any cline-yes">4x</span>
2429
- <span class="cline-any cline-yes">5x</span>
2430
- <span class="cline-any cline-yes">27x</span>
2431
- <span class="cline-any cline-yes">27x</span>
2432
- <span class="cline-any cline-yes">26x</span>
2433
- <span class="cline-any cline-yes">27x</span>
2434
2022
  <span class="cline-any cline-yes">1x</span>
2435
2023
  <span class="cline-any cline-yes">1x</span>
2436
2024
  <span class="cline-any cline-yes">1x</span>
2437
- <span class="cline-any cline-yes">1x</span>
2438
- <span class="cline-any cline-yes">1x</span>
2439
- <span class="cline-any cline-yes">3x</span>
2440
- <span class="cline-any cline-yes">3x</span>
2441
- <span class="cline-any cline-yes">2x</span>
2442
- <span class="cline-any cline-yes">2x</span>
2443
2025
  <span class="cline-any cline-yes">2x</span>
2444
2026
  <span class="cline-any cline-yes">1x</span>
2445
2027
  <span class="cline-any cline-yes">1x</span>
2446
- <span class="cline-any cline-yes">3x</span>
2447
- <span class="cline-any cline-yes">47x</span>
2448
- <span class="cline-any cline-yes">47x</span>
2449
- <span class="cline-any cline-yes">47x</span>
2450
- <span class="cline-any cline-yes">47x</span>
2451
- <span class="cline-any cline-yes">47x</span>
2452
- <span class="cline-any cline-yes">47x</span>
2453
- <span class="cline-any cline-yes">47x</span>
2454
- <span class="cline-any cline-yes">47x</span>
2455
- <span class="cline-any cline-yes">47x</span>
2456
- <span class="cline-any cline-yes">47x</span>
2457
- <span class="cline-any cline-yes">47x</span>
2458
- <span class="cline-any cline-yes">47x</span>
2459
- <span class="cline-any cline-yes">47x</span>
2460
- <span class="cline-any cline-yes">47x</span>
2461
2028
  <span class="cline-any cline-yes">1x</span>
2462
2029
  <span class="cline-any cline-yes">1x</span>
2463
2030
  <span class="cline-any cline-yes">1x</span>
2464
2031
  <span class="cline-any cline-yes">1x</span>
2465
- <span class="cline-any cline-yes">1x</span>
2466
- <span class="cline-any cline-yes">3x</span>
2467
- <span class="cline-any cline-yes">3x</span>
2468
- <span class="cline-any cline-yes">3x</span>
2469
- <span class="cline-any cline-yes">2x</span>
2470
- <span class="cline-any cline-yes">2x</span>
2471
- <span class="cline-any cline-yes">2x</span>
2472
2032
  <span class="cline-any cline-yes">2x</span>
2473
2033
  <span class="cline-any cline-yes">2x</span>
2474
2034
  <span class="cline-any cline-yes">2x</span>
2475
2035
  <span class="cline-any cline-yes">2x</span>
2476
2036
  <span class="cline-any cline-yes">1x</span>
2037
+ <span class="cline-any cline-yes">1x</span>
2038
+ <span class="cline-any cline-yes">1x</span>
2039
+ <span class="cline-any cline-yes">1x</span>
2477
2040
  <span class="cline-any cline-yes">2x</span>
2478
2041
  <span class="cline-any cline-yes">2x</span>
2479
2042
  <span class="cline-any cline-yes">2x</span>
2480
2043
  <span class="cline-any cline-yes">1x</span>
2481
2044
  <span class="cline-any cline-yes">1x</span>
2482
2045
  <span class="cline-any cline-yes">2x</span>
2483
- <span class="cline-any cline-yes">26x</span>
2484
- <span class="cline-any cline-yes">26x</span>
2485
- <span class="cline-any cline-yes">26x</span>
2486
- <span class="cline-any cline-yes">26x</span>
2487
- <span class="cline-any cline-yes">26x</span>
2488
- <span class="cline-any cline-yes">26x</span>
2489
- <span class="cline-any cline-yes">4x</span>
2490
- <span class="cline-any cline-yes">4x</span>
2491
- <span class="cline-any cline-yes">4x</span>
2492
- <span class="cline-any cline-yes">4x</span>
2493
- <span class="cline-any cline-yes">4x</span>
2494
- <span class="cline-any cline-yes">4x</span>
2046
+ <span class="cline-any cline-yes">1x</span>
2495
2047
  <span class="cline-any cline-yes">4x</span>
2496
2048
  <span class="cline-any cline-yes">4x</span>
2497
2049
  <span class="cline-any cline-yes">4x</span>
@@ -2502,14 +2054,6 @@
2502
2054
  <span class="cline-any cline-yes">4x</span>
2503
2055
  <span class="cline-any cline-yes">4x</span>
2504
2056
  <span class="cline-any cline-yes">4x</span>
2505
- <span class="cline-any cline-yes">1x</span>
2506
- <span class="cline-any cline-yes">1x</span>
2507
- <span class="cline-any cline-yes">1x</span>
2508
- <span class="cline-any cline-yes">1x</span>
2509
- <span class="cline-any cline-yes">1x</span>
2510
- <span class="cline-any cline-yes">1x</span>
2511
- <span class="cline-any cline-yes">1x</span>
2512
- <span class="cline-any cline-yes">1x</span>
2513
2057
  <span class="cline-any cline-yes">5x</span>
2514
2058
  <span class="cline-any cline-yes">5x</span>
2515
2059
  <span class="cline-any cline-yes">4x</span>
@@ -2520,157 +2064,23 @@
2520
2064
  <span class="cline-any cline-yes">4x</span>
2521
2065
  <span class="cline-any cline-yes">4x</span>
2522
2066
  <span class="cline-any cline-yes">4x</span>
2523
- <span class="cline-any cline-yes">4x</span>
2524
- <span class="cline-any cline-yes">4x</span>
2525
- <span class="cline-any cline-yes">4x</span>
2526
- <span class="cline-any cline-yes">4x</span>
2527
- <span class="cline-any cline-yes">4x</span>
2528
- <span class="cline-any cline-yes">4x</span>
2529
- <span class="cline-any cline-yes">4x</span>
2530
- <span class="cline-any cline-yes">4x</span>
2531
- <span class="cline-any cline-yes">4x</span>
2532
- <span class="cline-any cline-yes">4x</span>
2533
- <span class="cline-any cline-yes">4x</span>
2534
- <span class="cline-any cline-yes">4x</span>
2535
- <span class="cline-any cline-yes">4x</span>
2536
- <span class="cline-any cline-yes">4x</span>
2537
- <span class="cline-any cline-yes">4x</span>
2538
- <span class="cline-any cline-yes">5x</span>
2539
- <span class="cline-any cline-no">&nbsp;</span>
2540
- <span class="cline-any cline-no">&nbsp;</span>
2541
- <span class="cline-any cline-no">&nbsp;</span>
2542
- <span class="cline-any cline-no">&nbsp;</span>
2543
- <span class="cline-any cline-no">&nbsp;</span>
2544
- <span class="cline-any cline-no">&nbsp;</span>
2545
- <span class="cline-any cline-no">&nbsp;</span>
2546
- <span class="cline-any cline-no">&nbsp;</span>
2547
- <span class="cline-any cline-no">&nbsp;</span>
2548
- <span class="cline-any cline-no">&nbsp;</span>
2549
- <span class="cline-any cline-no">&nbsp;</span>
2550
- <span class="cline-any cline-no">&nbsp;</span>
2551
- <span class="cline-any cline-no">&nbsp;</span>
2552
- <span class="cline-any cline-no">&nbsp;</span>
2553
- <span class="cline-any cline-no">&nbsp;</span>
2554
- <span class="cline-any cline-no">&nbsp;</span>
2555
- <span class="cline-any cline-no">&nbsp;</span>
2556
- <span class="cline-any cline-no">&nbsp;</span>
2557
- <span class="cline-any cline-no">&nbsp;</span>
2558
- <span class="cline-any cline-no">&nbsp;</span>
2559
- <span class="cline-any cline-no">&nbsp;</span>
2560
- <span class="cline-any cline-no">&nbsp;</span>
2561
- <span class="cline-any cline-no">&nbsp;</span>
2562
- <span class="cline-any cline-no">&nbsp;</span>
2563
- <span class="cline-any cline-no">&nbsp;</span>
2564
- <span class="cline-any cline-no">&nbsp;</span>
2565
- <span class="cline-any cline-no">&nbsp;</span>
2566
- <span class="cline-any cline-no">&nbsp;</span>
2567
- <span class="cline-any cline-no">&nbsp;</span>
2568
- <span class="cline-any cline-no">&nbsp;</span>
2569
- <span class="cline-any cline-no">&nbsp;</span>
2570
- <span class="cline-any cline-no">&nbsp;</span>
2571
- <span class="cline-any cline-no">&nbsp;</span>
2572
- <span class="cline-any cline-no">&nbsp;</span>
2573
- <span class="cline-any cline-no">&nbsp;</span>
2574
- <span class="cline-any cline-no">&nbsp;</span>
2575
- <span class="cline-any cline-no">&nbsp;</span>
2576
- <span class="cline-any cline-no">&nbsp;</span>
2577
- <span class="cline-any cline-no">&nbsp;</span>
2578
- <span class="cline-any cline-no">&nbsp;</span>
2579
- <span class="cline-any cline-no">&nbsp;</span>
2580
- <span class="cline-any cline-no">&nbsp;</span>
2581
- <span class="cline-any cline-no">&nbsp;</span>
2582
2067
  <span class="cline-any cline-yes">5x</span>
2583
- <span class="cline-any cline-yes">5x</span>
2584
- <span class="cline-any cline-yes">5x</span>
2585
- <span class="cline-any cline-no">&nbsp;</span>
2586
- <span class="cline-any cline-no">&nbsp;</span>
2587
- <span class="cline-any cline-no">&nbsp;</span>
2588
- <span class="cline-any cline-no">&nbsp;</span>
2589
- <span class="cline-any cline-no">&nbsp;</span>
2590
- <span class="cline-any cline-no">&nbsp;</span>
2591
- <span class="cline-any cline-no">&nbsp;</span>
2592
- <span class="cline-any cline-no">&nbsp;</span>
2593
- <span class="cline-any cline-no">&nbsp;</span>
2594
- <span class="cline-any cline-no">&nbsp;</span>
2595
- <span class="cline-any cline-no">&nbsp;</span>
2596
- <span class="cline-any cline-no">&nbsp;</span>
2597
- <span class="cline-any cline-yes">1x</span>
2598
- <span class="cline-any cline-yes">1x</span>
2599
- <span class="cline-any cline-yes">1x</span>
2600
- <span class="cline-any cline-yes">1x</span>
2601
- <span class="cline-any cline-yes">1x</span>
2602
- <span class="cline-any cline-yes">1x</span>
2603
- <span class="cline-any cline-yes">1x</span>
2604
- <span class="cline-any cline-yes">1x</span>
2605
- <span class="cline-any cline-yes">1x</span>
2606
- <span class="cline-any cline-yes">1x</span>
2607
- <span class="cline-any cline-yes">1x</span>
2608
- <span class="cline-any cline-yes">1x</span>
2609
- <span class="cline-any cline-yes">1x</span>
2610
- <span class="cline-any cline-yes">1x</span>
2611
- <span class="cline-any cline-yes">1x</span>
2612
- <span class="cline-any cline-yes">1x</span>
2613
- <span class="cline-any cline-yes">1x</span>
2614
- <span class="cline-any cline-yes">1x</span>
2615
- <span class="cline-any cline-yes">2x</span>
2616
- <span class="cline-any cline-yes">2x</span>
2617
- <span class="cline-any cline-yes">1x</span>
2618
- <span class="cline-any cline-yes">1x</span>
2619
- <span class="cline-any cline-yes">1x</span>
2620
2068
  <span class="cline-any cline-yes">1x</span>
2621
- <span class="cline-any cline-yes">1x</span>
2622
- <span class="cline-any cline-yes">2x</span>
2623
- <span class="cline-any cline-yes">1x</span>
2624
- <span class="cline-any cline-yes">1x</span>
2625
- <span class="cline-any cline-yes">2x</span>
2626
- <span class="cline-any cline-yes">2x</span>
2627
- <span class="cline-any cline-yes">1x</span>
2628
- <span class="cline-any cline-yes">1x</span>
2629
- <span class="cline-any cline-yes">1x</span>
2630
- <span class="cline-any cline-yes">1x</span>
2631
- <span class="cline-any cline-yes">2x</span>
2632
- <span class="cline-any cline-yes">1x</span>
2633
- <span class="cline-any cline-yes">1x</span>
2634
- <span class="cline-any cline-yes">4x</span>
2635
- <span class="cline-any cline-yes">4x</span>
2636
- <span class="cline-any cline-yes">3x</span>
2637
- <span class="cline-any cline-yes">3x</span>
2638
- <span class="cline-any cline-yes">2x</span>
2639
- <span class="cline-any cline-yes">2x</span>
2640
- <span class="cline-any cline-yes">2x</span>
2641
- <span class="cline-any cline-yes">2x</span>
2642
- <span class="cline-any cline-yes">1x</span>
2643
- <span class="cline-any cline-yes">1x</span>
2644
- <span class="cline-any cline-yes">1x</span>
2645
- <span class="cline-any cline-yes">3x</span>
2646
- <span class="cline-any cline-yes">2x</span>
2647
- <span class="cline-any cline-yes">2x</span>
2648
- <span class="cline-any cline-yes">3x</span>
2649
- <span class="cline-any cline-yes">2x</span>
2650
- <span class="cline-any cline-yes">4x</span>
2651
- <span class="cline-any cline-yes">33x</span>
2652
- <span class="cline-any cline-yes">33x</span>
2653
- <span class="cline-any cline-yes">33x</span>
2654
- <span class="cline-any cline-yes">1x</span>
2655
- <span class="cline-any cline-yes">7x</span>
2656
- <span class="cline-any cline-yes">7x</span>
2657
- <span class="cline-any cline-yes">7x</span>
2658
- <span class="cline-any cline-yes">7x</span>
2659
- <span class="cline-any cline-yes">7x</span>
2660
- <span class="cline-any cline-yes">7x</span>
2069
+ <span class="cline-any cline-yes">8x</span>
2070
+ <span class="cline-any cline-yes">8x</span>
2071
+ <span class="cline-any cline-yes">8x</span>
2072
+ <span class="cline-any cline-yes">8x</span>
2073
+ <span class="cline-any cline-yes">8x</span>
2074
+ <span class="cline-any cline-yes">8x</span>
2661
2075
  <span class="cline-any cline-yes">1x</span>
2662
2076
  <span class="cline-any cline-yes">1x</span>
2663
- <span class="cline-any cline-yes">7x</span>
2077
+ <span class="cline-any cline-yes">8x</span>
2664
2078
  <span class="cline-any cline-yes">5x</span>
2665
2079
  <span class="cline-any cline-yes">5x</span>
2666
- <span class="cline-any cline-yes">7x</span>
2667
- <span class="cline-any cline-yes">1x</span>
2668
- <span class="cline-any cline-yes">1x</span>
2669
- <span class="cline-any cline-yes">7x</span>
2670
- <span class="cline-any cline-yes">1x</span>
2671
- <span class="cline-any cline-yes">1x</span>
2672
- <span class="cline-any cline-yes">1x</span>
2673
- <span class="cline-any cline-yes">1x</span>
2080
+ <span class="cline-any cline-yes">8x</span>
2081
+ <span class="cline-any cline-yes">2x</span>
2082
+ <span class="cline-any cline-yes">2x</span>
2083
+ <span class="cline-any cline-yes">8x</span>
2674
2084
  <span class="cline-any cline-yes">1x</span>
2675
2085
  <span class="cline-any cline-yes">1x</span>
2676
2086
  <span class="cline-any cline-yes">1x</span>
@@ -2759,6 +2169,8 @@
2759
2169
  <span class="cline-any cline-yes">1x</span>
2760
2170
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;!-- /* c8 ignore start */ --&gt;
2761
2171
  &lt;template&gt;
2172
+ &lt;DemoModal v-model:modal="m_demo" /&gt;
2173
+ &lt;DemoPatientModal v-model:modal="m_demoPatient" :is-modal-open="value" /&gt;
2762
2174
  &lt;v-dialog
2763
2175
  id="cr-viewer"
2764
2176
  class="pa-0 ma-0 overflow-y-auto overflow-x-hidden"
@@ -2770,7 +2182,7 @@
2770
2182
  @input="alterValue"
2771
2183
  &gt;
2772
2184
  &lt;v-dialog
2773
- v-model="m_closeDialog"
2185
+ v-model:model-value="m_closeDialog"
2774
2186
  id="close-dialog-prompt"
2775
2187
  data-test="closemodal"
2776
2188
  &gt;
@@ -2818,41 +2230,36 @@
2818
2230
  &lt;/template&gt;
2819
2231
  &lt;v-card class=""&gt;
2820
2232
  &lt;v-list&gt;
2821
- &lt;v-list-item disabled&gt;
2233
+ &lt;v-list-item @click="executeOption('OnLoadNewDicomSeries')"&gt;
2822
2234
  &lt;template v-slot:prepend&gt;
2823
2235
  &lt;v-icon&gt; upload &lt;/v-icon&gt;
2824
2236
  &lt;/template&gt;
2825
- &lt;v-list-item-title
2826
- &gt;Load New DICOM Series&amp;nbsp;&lt;v-chip x-small color="success"
2827
- &gt;Coming Soon&lt;/v-chip
2828
- &gt;&lt;/v-list-item-title
2829
- &gt;
2237
+ &lt;v-list-item-title&gt;Load New DICOM Series&lt;/v-list-item-title&gt;
2238
+ &lt;/v-list-item&gt;
2239
+ &lt;v-list-item @click="executeOption('OnDownloadDicomSeries')"&gt;
2240
+ &lt;template v-slot:prepend&gt;
2241
+ &lt;v-icon&gt; download &lt;/v-icon&gt;
2242
+ &lt;/template&gt;
2243
+ &lt;v-list-item-title&gt;Download DICOM Series&lt;/v-list-item-title&gt;
2830
2244
  &lt;/v-list-item&gt;
2831
- &lt;!-- &lt;v-list-item @click="downloadDcm"&gt;--&gt;
2832
- &lt;!-- &lt;v-list-item-icon&gt;&lt;v-icon&gt; download &lt;/v-icon&gt;&lt;/v-list-item-icon&gt;--&gt;
2833
- &lt;!-- &lt;v-list-item-title&gt;Download DICOM Series&lt;/v-list-item-title&gt;--&gt;
2834
- &lt;!-- &lt;/v-list-item&gt;--&gt;
2835
- &lt;v-list-item disabled&gt;
2245
+ &lt;v-list-item @click="executeOption('OnLoadSavedSession')"&gt;
2836
2246
  &lt;template v-slot:prepend&gt;
2837
2247
  &lt;v-icon&gt; sync &lt;/v-icon&gt;
2838
2248
  &lt;/template&gt;
2839
- &lt;v-list-item-title
2840
- &gt;Load Saved Session&amp;nbsp;&lt;v-chip x-small color="success"
2841
- &gt;Coming Soon&lt;/v-chip
2842
- &gt;&lt;/v-list-item-title
2843
- &gt;
2249
+ &lt;v-list-item-title&gt; Load Saved Session &lt;/v-list-item-title&gt;
2844
2250
  &lt;/v-list-item&gt;
2845
- &lt;v-list-item disabled&gt;
2251
+ &lt;v-list-item @click="executeOption('OnShare')"&gt;
2846
2252
  &lt;template v-slot:prepend&gt;
2847
2253
  &lt;v-icon&gt; share &lt;/v-icon&gt;
2848
2254
  &lt;/template&gt;
2849
- &lt;v-list-item-title
2850
- &gt;Share&amp;nbsp;&lt;v-chip x-small color="success"
2851
- &gt;Coming Soon&lt;/v-chip
2852
- &gt;&lt;/v-list-item-title
2853
- &gt;
2255
+ &lt;v-list-item-title&gt;Share&lt;/v-list-item-title&gt;
2854
2256
  &lt;/v-list-item&gt;
2855
- &lt;v-list-item @click="alterValue(false)"&gt;
2257
+ &lt;v-list-item
2258
+ @click="
2259
+ executeOption('OnClosePopup');
2260
+ alterValue(false);
2261
+ "
2262
+ &gt;
2856
2263
  &lt;template v-slot:prepend&gt;
2857
2264
  &lt;v-icon&gt; close &lt;/v-icon&gt;
2858
2265
  &lt;/template&gt;
@@ -2923,7 +2330,11 @@
2923
2330
  &lt;/v-menu&gt;
2924
2331
  &nbsp;
2925
2332
  &lt;v-spacer /&gt;
2926
- &lt;div class="font-weight-bold"&gt;Not for Diagnostic Use&lt;/div&gt;
2333
+ &lt;div class="font-weight-bold"&gt;
2334
+ &lt;span v-if="isDemo" class="text-capitalize"
2335
+ &gt;[3DICOM {{ demoType }} Demo]&amp;nbsp;&lt;/span
2336
+ &gt;Not for Diagnostic Use
2337
+ &lt;/div&gt;
2927
2338
  &lt;v-spacer /&gt;
2928
2339
  &lt;v-btn
2929
2340
  class="ma-1 mr-0 pa-1"
@@ -3087,7 +2498,7 @@
3087
2498
  /&gt;
3088
2499
  &lt;v-card-actions class="py-3"&gt;
3089
2500
  &lt;v-select
3090
- :value="getCurrentGreyscalePreset()"
2501
+ :value="currentGreyscalePreset"
3091
2502
  :items="initialScanState.GreyscalePresets"
3092
2503
  label="Greyscale Preset"
3093
2504
  item-text="Name"
@@ -3249,8 +2660,12 @@
3249
2660
  color="transparent"
3250
2661
  :icon="true"
3251
2662
  @click="
3252
- viewSelection('vs_05');
3253
- viewSelection('vs_06');
2663
+ payloadHandler.viewSelection(
2664
+ ViewSelectionActions.vs06
2665
+ );
2666
+ payloadHandler.viewSelection(
2667
+ ViewSelectionActions.vs05
2668
+ );
3254
2669
  "
3255
2670
  &gt;&lt;v-icon color="white"&gt;home&lt;/v-icon&gt;&lt;/v-btn
3256
2671
  &gt;
@@ -3348,7 +2763,7 @@
3348
2763
  &lt;v-btn
3349
2764
  color="primary"
3350
2765
  @click="
3351
- rotateByDeg(
2766
+ payloadHandler.rotateByDeg(
3352
2767
  getCurrentActiveView(layout),
3353
2768
  rotationDeg
3354
2769
  )
@@ -3393,10 +2808,7 @@
3393
2808
  &lt;/div&gt;
3394
2809
  &nbsp;
3395
2810
  &lt;LoadingSpinner v-if="!instanceLoaded" /&gt;
3396
- &lt;LoadingSpinner
3397
- v-if="scanLoading"
3398
- text="Rendering your scan in &lt;span class='sub-type'&gt;3DICOM&lt;/span&gt;"
3399
- /&gt;
2811
+ &lt;LoadingSpinner v-if="scanLoading" text="Rendering your scan in 3D" /&gt;
3400
2812
  &lt;v-textarea
3401
2813
  v-if="stateOverlay"
3402
2814
  style="
@@ -3428,27 +2840,55 @@ import VerticalSliderSelector from "@/components/sliders/VerticalSliderSelector.
3428
2840
  import { generateDivStyleForLayout } from "@/helpers/layoutOverlayStyle";
3429
2841
  &nbsp;
3430
2842
  import {
3431
- inflateInitialScanState,
3432
- inflateScanState,
3433
- } from "@/helpers/modelHelper";
3434
- import {
3435
- SlidersActions,
3436
- PresetsActions,
3437
- ScanMovementActions,
3438
- ScanOrientationActions,
3439
2843
  FileManagementActions,
3440
2844
  FrontEndInterfaces,
3441
- AnchorPoint,
3442
- ColourPresetData,
3443
- CurrentScanState,
3444
- InitialScanState,
3445
2845
  PositionData,
2846
+ PresetsActions,
2847
+ ScanMovementActions,
3446
2848
  ScanView,
2849
+ SlidersActions,
2850
+ ViewSelectionActions,
3447
2851
  } from "@3cr/types-ts";
2852
+ import { defineEmits, nextTick, ref, unref, watch, WatchSource } from "vue";
3448
2853
  &nbsp;
3449
- import { toNumber } from "@/helpers/utils";
3450
- import { computed, ref, unref, watch, defineEmits, nextTick } from "vue";
3451
- import { LoadViewerPayload } from "../../../index";
2854
+ import {
2855
+ checkIsDemo,
2856
+ demoType,
2857
+ executeDemoOption,
2858
+ isDemo,
2859
+ m_demo,
2860
+ m_demoPatient,
2861
+ } from "@/demo/options";
2862
+ import { handleNotification } from "@/notifications/notification";
2863
+ import DemoPatientModal from "@/demo/DemoPatientModal.vue";
2864
+ import DemoModal from "@/demo/DemoModal.vue";
2865
+ import { LoadViewerPayload } from "@/models/LoadViewerPayload";
2866
+ import {
2867
+ defaultLoadViewerOptions,
2868
+ LoadViewerOptions,
2869
+ } from "@/models/LoadViewerOptions";
2870
+ import { PayloadHandler, sendPayload } from "@/dataLayer/payloadHandler";
2871
+ import {
2872
+ cMinMax,
2873
+ cSlider,
2874
+ currentColourPreset,
2875
+ currentGreyscalePreset,
2876
+ huMinMax,
2877
+ initialScanState,
2878
+ isLayout1x3,
2879
+ isLayout2x2,
2880
+ scanState,
2881
+ setInitialScanStateFromPayload,
2882
+ setScanStateFromPayload,
2883
+ sMinMax,
2884
+ sSlider,
2885
+ thresholdSlider,
2886
+ tMinMax,
2887
+ transactionStarted,
2888
+ tSlider,
2889
+ windowSlider,
2890
+ } from "@/dataLayer/scanState";
2891
+ import { getIconForPreset } from "@/dataLayer/iconData";
3452
2892
  &nbsp;
3453
2893
  const emit = defineEmits&lt;{
3454
2894
  instanceLoaded: [void];
@@ -3457,6 +2897,7 @@ const emit = defineEmits&lt;{
3457
2897
  &nbsp;
3458
2898
  export interface Props {
3459
2899
  payload?: LoadViewerPayload;
2900
+ options?: LoadViewerOptions;
3460
2901
  }
3461
2902
  &nbsp;
3462
2903
  const props = withDefaults(defineProps&lt;Props&gt;(), {
@@ -3467,8 +2908,23 @@ const props = withDefaults(defineProps&lt;Props&gt;(), {
3467
2908
  Key: "OWjSMiL/ewUV1V6fGybhKcTyiysTPsIMp2DjdVoOUGI=",
3468
2909
  },
3469
2910
  }),
2911
+ options: () =&gt; defaultLoadViewerOptions,
3470
2912
  });
3471
2913
  &nbsp;
2914
+ const web_gl = ref&lt;typeof WebGL3DR | null&gt;(null);
2915
+ const payloadHandler = new PayloadHandler(web_gl);
2916
+ &nbsp;
2917
+ function executeOption(key: keyof LoadViewerOptions) {
2918
+ if (unref(isDemo)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2919
+ <span class="cstat-no" title="statement not covered" > executeDemoOption(key);</span>
2920
+ } else {
2921
+ const functionToExecute = unref(props.options)[key];
2922
+ if (functionToExecute !== undefined) {
2923
+ functionToExecute();
2924
+ }
2925
+ }
2926
+ }
2927
+ &nbsp;
3472
2928
  const emptyPayload = { Version: "1.1.0" };
3473
2929
  &nbsp;
3474
2930
  const value = ref&lt;boolean&gt;(false);
@@ -3476,9 +2932,6 @@ const drawer = ref&lt;boolean&gt;(true);
3476
2932
  const drawerCollapsed = ref&lt;boolean&gt;(true);
3477
2933
  const scanLoading = ref&lt;boolean&gt;(true);
3478
2934
  const instanceLoaded = ref&lt;boolean&gt;(true);
3479
- const scanState = ref&lt;CurrentScanState&gt;(inflateScanState());
3480
- const initialScanState = ref&lt;InitialScanState&gt;(inflateInitialScanState());
3481
- const currentColourPreset = ref&lt;ColourPresetData | undefined&gt;(undefined);
3482
2935
  const openPanels = ref&lt;number&gt;(0);
3483
2936
  const previousLayout = ref&lt;string&gt;("lo_02");
3484
2937
  const footerItems = ref([
@@ -3487,30 +2940,27 @@ const footerItems = ref([
3487
2940
  icon: "refresh",
3488
2941
  color: "red",
3489
2942
  click: async () =&gt; {
3490
- console.log("Reset Scan");
3491
- await viewSelection("vs_05");
3492
- await viewSelection("vs_06");
2943
+ await payloadHandler.viewSelection(ViewSelectionActions.vs05);
2944
+ await payloadHandler.viewSelection(ViewSelectionActions.vs06);
3493
2945
  },
3494
2946
  },
3495
2947
  {
3496
2948
  text: "Send to 3rd Party",
3497
2949
  icon: "send",
3498
2950
  color: "blue",
3499
- click: async () =&gt; alterValue(false),
2951
+ click: async () =&gt; executeOption("OnSendTo3rdParty"),
3500
2952
  },
3501
2953
  {
3502
2954
  text: "Share to Mobile / VR",
3503
2955
  icon: "share",
3504
2956
  color: "yellow",
3505
- click: async () =&gt; alterValue(false),
2957
+ click: async () =&gt; executeOption("OnShareToMobile"),
3506
2958
  },
3507
2959
  {
3508
2960
  text: "Screenshot View",
3509
2961
  icon: "screenshot_region",
3510
2962
  color: "green",
3511
- click: async () =&gt; {
3512
- await snap();
3513
- },
2963
+ click: async () =&gt; executeOption("OnScreenshot"),
3514
2964
  },
3515
2965
  ]);
3516
2966
  &nbsp;
@@ -3521,238 +2971,69 @@ const miniMenu = ref([
3521
2971
  tooltip:
3522
2972
  "Tissue Density - Change the view of density within the scan, allowing you to see through a certain density of particles",
3523
2973
  },
3524
- // { icon: 'display_settings', text: 'Display', tooltip: 'Display - Alter the view of the current scan' },
3525
2974
  ]);
3526
2975
  &nbsp;
3527
- const huMinMax = ref({
3528
- min: -999999,
3529
- max: 999999,
3530
- });
3531
- &nbsp;
3532
- const tMinMax = ref({
3533
- min: 0,
3534
- max: 999999,
3535
- });
3536
- const sMinMax = ref({
3537
- min: 0,
3538
- max: 999999,
3539
- });
3540
- const cMinMax = ref({
3541
- min: 0,
3542
- max: 999999,
3543
- });
3544
2976
  const rotationDeg = ref&lt;number&gt;(0);
3545
- const scanStateIncoming = ref&lt;string&gt;("");
3546
- const transactionStarted = ref&lt;boolean&gt;(false);
3547
2977
  const stateOverlay = ref&lt;boolean&gt;(false);
3548
2978
  const m_closeDialog = ref&lt;boolean&gt;(false);
3549
2979
  &nbsp;
3550
- const windowSlider = computed({
3551
- get() {
3552
- return [
3553
- unref(scanState).Display.WindowLower,
3554
- unref(scanState).Display.WindowUpper,
3555
- ];
3556
- },
3557
- set(value: Array&lt;number&gt;) {
3558
- scanState.value.Display.WindowLower = value[0];
3559
- scanState.value.Display.WindowUpper = value[1];
3560
- },
3561
- });
3562
- const thresholdSlider = computed({
3563
- get() {
3564
- return [
3565
- Math.trunc(unref(scanState).Display.ThresholdLower),
3566
- Math.trunc(unref(scanState).Display.ThresholdUpper),
3567
- ];
3568
- },
3569
- set(value: Array&lt;number&gt;) {
3570
- scanState.value.Display.ThresholdLower = value[0];
3571
- scanState.value.Display.ThresholdUpper = value[1];
3572
- },
3573
- });
3574
- const tSlider = computed({
3575
- get() {
3576
- return [
3577
- Math.trunc(unref(scanState).Slice.TransverseLower),
3578
- Math.trunc(unref(scanState).Slice.TransverseUpper),
3579
- ];
3580
- },
3581
- set(value: Array&lt;number&gt;) {
3582
- scanState.value.Slice.TransverseLower = value[0];
3583
- scanState.value.Slice.TransverseLower = value[1];
3584
- },
3585
- });
3586
- const sSlider = computed({
3587
- get() {
3588
- return [
3589
- Math.trunc(unref(scanState).Slice.SagittalLower),
3590
- Math.trunc(unref(scanState).Slice.SagittalUpper),
3591
- ];
3592
- },
3593
- set(value: Array&lt;number&gt;) {
3594
- scanState.value.Slice.SagittalLower = value[0];
3595
- scanState.value.Slice.SagittalUpper = value[1];
3596
- },
3597
- });
2980
+ type WatchSlidersType = { [key in SlidersActions]: WatchSource&lt;number&gt; };
2981
+ const watchSliders: WatchSlidersType = {
2982
+ [SlidersActions.sl01]: () =&gt; scanState.value.Display.Brightness,
2983
+ [SlidersActions.sl02]: () =&gt; scanState.value.Display.Contrast,
2984
+ [SlidersActions.sl03]: () =&gt; scanState.value.Display.Opacity,
2985
+ [SlidersActions.sl04]: () =&gt; scanState.value.Display.WindowLower,
2986
+ [SlidersActions.sl05]: () =&gt; scanState.value.Display.WindowUpper,
2987
+ [SlidersActions.sl06]: () =&gt; scanState.value.Display.ThresholdLower,
2988
+ [SlidersActions.sl07]: () =&gt; scanState.value.Display.ThresholdUpper,
2989
+ [SlidersActions.sl08]: () =&gt; scanState.value.Slice.TransverseLower,
2990
+ [SlidersActions.sl09]: () =&gt; scanState.value.Orientations.Transverse.Slice,
2991
+ [SlidersActions.sl10]: () =&gt; scanState.value.Slice.TransverseUpper,
2992
+ [SlidersActions.sl11]: () =&gt; scanState.value.Slice.SagittalLower,
2993
+ [SlidersActions.sl12]: () =&gt; scanState.value.Orientations.Sagittal.Slice,
2994
+ [SlidersActions.sl13]: () =&gt; scanState.value.Slice.SagittalUpper,
2995
+ [SlidersActions.sl14]: () =&gt; scanState.value.Slice.CoronalLower,
2996
+ [SlidersActions.sl15]: () =&gt; scanState.value.Orientations.Coronal.Slice,
2997
+ [SlidersActions.sl16]: () =&gt; scanState.value.Slice.CoronalUpper,
2998
+ };
3598
2999
  &nbsp;
3599
- const cSlider = computed({
3600
- get() {
3601
- return [
3602
- Math.trunc(unref(scanState).Slice.CoronalLower),
3603
- Math.trunc(unref(scanState).Slice.CoronalUpper),
3604
- ];
3605
- },
3606
- set(value: Array&lt;number&gt;) {
3607
- scanState.value.Slice.CoronalLower = value[0];
3608
- scanState.value.Slice.CoronalUpper = value[1];
3609
- },
3610
- });
3611
- const web_gl = ref&lt;typeof WebGL3DR | null&gt;(null);
3000
+ for (const slider of Object.keys(watchSliders)) {
3001
+ watch(
3002
+ watchSliders[slider as keyof WatchSlidersType],
3003
+ async (value: number) =&gt; {
3004
+ await payloadHandler.sliderHandler(slider as SlidersActions, value);
3005
+ }
3006
+ );
3007
+ }
3612
3008
  &nbsp;
3613
- watch(
3614
- () =&gt; scanState.value.Display.Brightness,
3615
- async (value: number) =&gt; {
3616
- await sliderHandler(SlidersActions.sl01, value);
3617
- }
3618
- );
3619
- watch(
3620
- () =&gt; scanState.value.Display.Contrast,
3621
- async (value: number) =&gt; {
3622
- await sliderHandler(SlidersActions.sl02, value);
3623
- }
3624
- );
3625
- watch(
3626
- () =&gt; scanState.value.Display.Opacity,
3627
- async (value: number) =&gt; {
3628
- await sliderHandler(SlidersActions.sl03, value);
3629
- }
3630
- );
3631
- watch(
3632
- () =&gt; scanState.value.Display.WindowLower,
3633
- async (value: number) =&gt; {
3634
- await sliderHandler(SlidersActions.sl04, value);
3635
- }
3636
- );
3637
- watch(
3638
- () =&gt; scanState.value.Display.WindowUpper,
3639
- async (value: number) =&gt; {
3640
- await sliderHandler(SlidersActions.sl05, value);
3641
- }
3642
- );
3643
- watch(
3644
- () =&gt; scanState.value.Display.ThresholdLower,
3645
- async (value: number) =&gt; {
3646
- await sliderHandler(SlidersActions.sl06, value);
3647
- }
3648
- );
3649
- watch(
3650
- () =&gt; scanState.value.Display.ThresholdUpper,
3651
- async (value: number) =&gt; {
3652
- await sliderHandler(SlidersActions.sl07, value);
3653
- }
3654
- );
3655
- watch(
3656
- () =&gt; scanState.value.Slice.TransverseLower,
3657
- async (value: number) =&gt; {
3658
- await sliderHandler(SlidersActions.sl08, value);
3659
- }
3660
- );
3661
- watch(
3662
- () =&gt; scanState.value.Orientations.Transverse.Slice,
3663
- async (value: number) =&gt; {
3664
- await sliderHandler(SlidersActions.sl09, value);
3665
- }
3666
- );
3667
- watch(
3668
- () =&gt; scanState.value.Slice.TransverseUpper,
3669
- async (value: number) =&gt; {
3670
- await sliderHandler(SlidersActions.sl10, value);
3671
- }
3672
- );
3673
- watch(
3674
- () =&gt; scanState.value.Slice.SagittalLower,
3675
- async (value: number) =&gt; {
3676
- await sliderHandler(SlidersActions.sl11, value);
3677
- }
3678
- );
3679
- watch(
3680
- () =&gt; scanState.value.Orientations.Sagittal.Slice,
3681
- async (value: number) =&gt; {
3682
- await sliderHandler(SlidersActions.sl12, value);
3683
- }
3684
- );
3685
- watch(
3686
- () =&gt; scanState.value.Slice.SagittalUpper,
3687
- async (value: number) =&gt; {
3688
- await sliderHandler(SlidersActions.sl13, value);
3689
- }
3690
- );
3691
- watch(
3692
- () =&gt; scanState.value.Slice.CoronalLower,
3693
- async (value: number) =&gt; {
3694
- await sliderHandler(SlidersActions.sl14, value);
3695
- }
3696
- );
3697
- watch(
3698
- () =&gt; scanState.value.Orientations.Coronal.Slice,
3699
- async (value: number) =&gt; {
3700
- await sliderHandler(SlidersActions.sl15, value);
3701
- }
3702
- );
3703
- watch(
3704
- () =&gt; scanState.value.Slice.CoronalUpper,
3705
- async (value: number) =&gt; {
3706
- await sliderHandler(SlidersActions.sl16, value);
3707
- }
3708
- );
3709
- watch(
3710
- () =&gt; scanState.value.InteractionSettings.PanSensivitity,
3711
- async (value: number) =&gt; {
3712
- await scanMovementHandler(ScanMovementActions.sm05, value);
3713
- }
3714
- );
3715
- watch(
3716
- () =&gt; scanState.value.InteractionSettings.ZoomSensitivity,
3717
- async (value: number) =&gt; {
3718
- await scanMovementHandler(ScanMovementActions.sm08, value);
3719
- }
3720
- );
3721
- watch(
3722
- () =&gt; scanState.value.InteractionSettings.RotateSensitivity,
3723
- async (value: number) =&gt; {
3724
- await scanMovementHandler(ScanMovementActions.sm10, value);
3725
- }
3726
- );
3727
- watch(
3728
- () =&gt; scanState.value.InteractionSettings.CameraRotateSensitivity,
3729
- async (value: number) =&gt; {
3730
- await scanMovementHandler(ScanMovementActions.sm12, value);
3731
- }
3732
- );
3009
+ type WatchScanMovementType = {
3010
+ [key in ScanMovementActions]: WatchSource&lt;number&gt;;
3011
+ };
3733
3012
  &nbsp;
3734
- function getIconForPreset(presetName: string): string | undefined {
3735
- if (presetName === "Bone") return "fa:fas fa-bone";
3736
- if (presetName === "Brain") return "fa:fas fa-brain";
3737
- if (presetName === "Liver") return "custom:liver_icon";
3738
- if (presetName === "Lungs") return "fa:fas fa-lungs";
3739
- if (presetName === "Muscle") return "custom:muscle_icon";
3740
- if (presetName === "Temporal Bones") return "custom:temporal_bones_icon";
3741
- if (presetName === "Soft Tissue") return "custom:torso_icon";
3742
- if (presetName === "Skin") return "custom:skin_icon";
3743
- return undefined;
3744
- }
3745
- async function rotateByDeg(view: ScanView, deg: number) {
3746
- await sendPayload(
3747
- FrontEndInterfaces.scan_orientation,
3748
- ScanOrientationActions.so01,
3749
- {
3750
- Version: "0.0.1",
3751
- View: view,
3752
- Angle: deg,
3013
+ //@ts-ignore
3014
+ const watchScanMovement: WatchScanMovementType = {
3015
+ [ScanMovementActions.sm05]: () =&gt;
3016
+ scanState.value.InteractionSettings.PanSensivitity,
3017
+ [ScanMovementActions.sm08]: () =&gt;
3018
+ scanState.value.InteractionSettings.ZoomSensitivity,
3019
+ [ScanMovementActions.sm10]: () =&gt;
3020
+ scanState.value.InteractionSettings.RotateSensitivity,
3021
+ [ScanMovementActions.sm12]: () =&gt;
3022
+ scanState.value.InteractionSettings.CameraRotateSensitivity,
3023
+ };
3024
+ &nbsp;
3025
+ for (const scanMovement of Object.keys(watchScanMovement)) {
3026
+ watch(
3027
+ watchScanMovement[scanMovement as keyof typeof watchScanMovement],
3028
+ async (value: number) =&gt; {
3029
+ await payloadHandler.scanMovementHandler(
3030
+ scanMovement as ScanMovementActions,
3031
+ value
3032
+ );
3753
3033
  }
3754
3034
  );
3755
3035
  }
3036
+ &nbsp;
3756
3037
  function getCurrentActiveView(position: PositionData): ScanView {
3757
3038
  return unref(scanState).Layout.PositionData.length !== 1
3758
3039
  ? position.DefaultView
@@ -3768,235 +3049,73 @@ function getViewName(index: number) {
3768
3049
  }
3769
3050
  async function fullscreenLayout(view: ScanView) {
3770
3051
  await layouts("lo_01");
3771
- await viewSelection(`vs_0${view + 1}`);
3772
- }
3773
- async function scanMovementHandler(action: string, value: number) {
3774
- if (unref(transactionStarted)) return;
3775
- await scanMovement(action, value);
3776
- }
3777
- async function sliderHandler(action: string, value: number) {
3778
- if (unref(transactionStarted)) return;
3779
- await slider(action, value);
3052
+ await payloadHandler.viewSelection(`vs_0${view + 1}` as ViewSelectionActions);
3780
3053
  }
3054
+ // async function scanMovementHandler(action: string, value: number) {
3055
+ // if (unref(transactionStarted)) return;
3056
+ // await scanMovement(action, value);
3057
+ // }
3058
+ // async function sliderHandler(action: string, value: number) {
3059
+ // if (unref(transactionStarted)) return;
3060
+ // await slider(action, value);
3061
+ // }
3781
3062
  &nbsp;
3782
3063
  function closeModal() {
3783
3064
  m_closeDialog.value = false;
3784
3065
  value.value = false;
3066
+ executeOption("OnExitViewer");
3785
3067
  }
3786
3068
  function alterValue(val: boolean) {
3787
3069
  if (!val) {
3788
3070
  m_closeDialog.value = true;
3789
3071
  return;
3072
+ } else {
3073
+ checkIsDemo(props.payload);
3790
3074
  }
3791
3075
  &nbsp;
3792
3076
  value.value = val;
3793
3077
  }
3794
- async function sendPayload(
3795
- interfaceType: string,
3796
- actionType: string,
3797
- message: any
3798
- ) {
3799
- await unref(web_gl)?.sendPayload(
3800
- JSON.stringify({
3801
- Version: "0.0.1",
3802
- Interface: interfaceType,
3803
- Action: actionType,
3804
- Message: JSON.stringify(message),
3805
- })
3806
- );
3807
- }
3808
3078
  async function load() {
3809
3079
  instanceLoaded.value = true;
3810
3080
  scanLoading.value = true;
3811
- await sendPayload("file_management", "fm_01", props.payload);
3812
- }
3813
- async function viewSelection(action: string) {
3814
- await sendPayload(FrontEndInterfaces.view_selection, action, emptyPayload);
3081
+ await sendPayload(web_gl, "file_management", "fm_01", props.payload);
3815
3082
  }
3083
+ &nbsp;
3816
3084
  async function layouts(action: string) {
3817
3085
  if (action !== "lo_01") previousLayout.value = action;
3818
- await sendPayload(FrontEndInterfaces.layout, action, emptyPayload);
3086
+ await sendPayload(web_gl, FrontEndInterfaces.layout, action, emptyPayload);
3819
3087
  }
3820
3088
  async function snap() {
3821
3089
  emit("snap");
3822
3090
  }
3823
3091
  &nbsp;
3824
3092
  async function setPreset(action: PresetsActions, preset: any) {
3825
- await sendPayload("presets", action, preset);
3093
+ await sendPayload(web_gl, "presets", action, preset);
3826
3094
  if (action === PresetsActions.pr02) {
3827
3095
  currentColourPreset.value = preset;
3828
3096
  }
3829
3097
  }
3830
- async function slider(action: string, value: number) {
3831
- await sendPayload("sliders", action, {
3832
- Version: "0.0.1",
3833
- Value: toNumber(value),
3834
- });
3835
- }
3836
- async function scanMovement(action: string, value: number) {
3837
- await sendPayload(FrontEndInterfaces.scan_movement, action, {
3838
- Version: "0.0.1",
3839
- Value: toNumber(value),
3840
- });
3841
- }
3098
+ &nbsp;
3842
3099
  async function hoverOverCanvas(isHovering: boolean) {
3843
- await sendPayload("interactivity", "in_01", {
3100
+ await sendPayload(web_gl, "interactivity", "in_01", {
3844
3101
  Version: "0.0.1",
3845
3102
  Value: isHovering,
3846
3103
  });
3847
- await sendPayload("interactivity", "in_02", {
3104
+ await sendPayload(web_gl, "interactivity", "in_02", {
3848
3105
  Version: "0.0.1",
3849
3106
  Value: isHovering,
3850
3107
  });
3851
3108
  }
3852
- async function i_scanState(_: string, message: string) {
3853
- transactionStarted.value = true;
3854
- scanStateIncoming.value = JSON.stringify(JSON.parse(message), null, 2);
3855
- &nbsp;
3856
- setScanState(message);
3857
- await nextTick();
3858
- transactionStarted.value = false;
3859
- }
3860
3109
  async function i_fileManagement(action: string, message: string) {
3861
- if (action !== FileManagementActions.fm02) return;
3862
- transactionStarted.value = true;
3863
- &nbsp;
3864
- scanStateIncoming.value = JSON.stringify(JSON.parse(message), null, 2);
3865
- const obj = JSON.parse(unref(scanStateIncoming)) as InitialScanState;
3866
- &nbsp;
3867
- setScanState(JSON.stringify(obj.DefaultDisplaySettings, null, 2));
3868
- initialScanState.value = obj;
3869
- huMinMax.value.max = obj.HuUpper;
3870
- huMinMax.value.min = obj.HuLower;
3871
- sMinMax.value.max = obj.XSlices;
3872
- cMinMax.value.max = obj.YSlices;
3873
- tMinMax.value.max = obj.ZSlices;
3874
- currentColourPreset.value = obj.ColourPresets[0];
3875
- &nbsp;
3876
- await nextTick();
3877
- transactionStarted.value = false;
3878
- scanLoading.value = false;
3879
- drawerCollapsed.value = false;
3880
- await hoverOverCanvas(false);
3110
+ if (action === FileManagementActions.fm02) {
3111
+ await setInitialScanStateFromPayload(action, message);
3881
3112
  &nbsp;
3882
- if (
3883
- props.payload.Url ===
3884
- "https://webgl-3dr.singular.health/test_scans/01440d4e-8b04-4b90-bb2c-698535ce16d6/CHEST.3vxl"
3885
- ) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
3886
- <span class="cstat-no" title="statement not covered" > await hoverOverCanvas(true);</span>
3887
- <span class="cstat-no" title="statement not covered" > setTimeout(async () =&gt; {</span>
3888
- <span class="cstat-no" title="statement not covered" > const volume = document.querySelector(`[data-box-internal='0']`);</span>
3889
- <span class="cstat-no" title="statement not covered" > const container = document.querySelector(`#unity-canvas`);</span>
3890
- <span class="cstat-no" title="statement not covered" ></span>
3891
- <span class="cstat-no" title="statement not covered" > var box = volume.getBoundingClientRect(),</span>
3892
- <span class="cstat-no" title="statement not covered" > coordX = box.left + (box.right - box.left) / 2,</span>
3893
- <span class="cstat-no" title="statement not covered" > coordY = box.top + (box.bottom - box.top) / 2;</span>
3894
- <span class="cstat-no" title="statement not covered" ></span>
3895
- <span class="cstat-no" title="statement not covered" > simulateMouseEvent(volume, "mouseover", coordX, coordY);</span>
3896
- <span class="cstat-no" title="statement not covered" > volume.addEventListener("mouseover", console.log);</span>
3897
- <span class="cstat-no" title="statement not covered" > volume.addEventListener("wheel", console.log);</span>
3898
- <span class="cstat-no" title="statement not covered" > // container.addEventListener("mouseover", console.log);</span>
3899
- <span class="cstat-no" title="statement not covered" ></span>
3900
- <span class="cstat-no" title="statement not covered" > const evt = new WheelEvent("wheel", {</span>
3901
- <span class="cstat-no" title="statement not covered" > isTrusted: true,</span>
3902
- <span class="cstat-no" title="statement not covered" > deltaY: -250,</span>
3903
- <span class="cstat-no" title="statement not covered" > bubbles: true,</span>
3904
- <span class="cstat-no" title="statement not covered" > view: window,</span>
3905
- <span class="cstat-no" title="statement not covered" > offsetX: 397,</span>
3906
- <span class="cstat-no" title="statement not covered" > offsetY: 172,</span>
3907
- <span class="cstat-no" title="statement not covered" > // wheelDelta: 144,</span>
3908
- <span class="cstat-no" title="statement not covered" > // wheelDeltaY: 144,</span>
3909
- <span class="cstat-no" title="statement not covered" > });</span>
3910
- <span class="cstat-no" title="statement not covered" > // volume.dispatchEvent(</span>
3911
- <span class="cstat-no" title="statement not covered" > // new MouseEvent("mouseover", {</span>
3912
- <span class="cstat-no" title="statement not covered" > // clientX: coordX,</span>
3913
- <span class="cstat-no" title="statement not covered" > // clientY: coordY,</span>
3914
- <span class="cstat-no" title="statement not covered" > // bubbles: true,</span>
3915
- <span class="cstat-no" title="statement not covered" > // })</span>
3916
- <span class="cstat-no" title="statement not covered" > // );</span>
3917
- <span class="cstat-no" title="statement not covered" > volume.dispatchEvent(evt);</span>
3918
- <span class="cstat-no" title="statement not covered" ></span>
3919
- <span class="cstat-no" title="statement not covered" > await hoverOverCanvas(false);</span>
3920
- <span class="cstat-no" title="statement not covered" > }, 500);</span>
3921
- <span class="cstat-no" title="statement not covered" ></span>
3922
- <span class="cstat-no" title="statement not covered" > // await sendPayload(</span>
3923
- <span class="cstat-no" title="statement not covered" > // FrontEndInterfaces.scan_movement,</span>
3924
- <span class="cstat-no" title="statement not covered" > // ScanMovementActions.sm05,</span>
3925
- <span class="cstat-no" title="statement not covered" > // emptyPayload</span>
3926
- <span class="cstat-no" title="statement not covered" > // );</span>
3927
- <span class="cstat-no" title="statement not covered" > // TODO: call zooming</span>
3928
- <span class="cstat-no" title="statement not covered" > }</span>
3929
- &nbsp;
3930
- // document.addEventListener("mousemove", console.log);
3931
- }
3932
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function simulateMouseEvent(element, eventName, coordX, coordY) {</span></span>
3933
- <span class="cstat-no" title="statement not covered" > element.dispatchEvent(</span>
3934
- <span class="cstat-no" title="statement not covered" > new MouseEvent(eventName, {</span>
3935
- <span class="cstat-no" title="statement not covered" > view: window,</span>
3936
- <span class="cstat-no" title="statement not covered" > bubbles: true,</span>
3937
- <span class="cstat-no" title="statement not covered" > cancelable: true,</span>
3938
- <span class="cstat-no" title="statement not covered" > clientX: coordX,</span>
3939
- <span class="cstat-no" title="statement not covered" > clientY: coordY,</span>
3940
- <span class="cstat-no" title="statement not covered" > button: 0,</span>
3941
- <span class="cstat-no" title="statement not covered" > })</span>
3942
- <span class="cstat-no" title="statement not covered" > );</span>
3943
- <span class="cstat-no" title="statement not covered" >}</span>
3944
- &nbsp;
3945
- async function i_notifications(action: string, message: string) {
3946
- // const obj = JSON.parse(message);
3947
- // console.log(obj);
3948
- //{\"Version\":\"1.0.0\",\"Interface\":\"interactivity\",\"Action\":\"in_01\",\"Code\":\"0000\",\"Description\":\"\"}"
3949
- // if (obj.Description) {
3950
- // if (action === NotificationActions.no01) {
3951
- // await NotificationService.Instantiate().notificationSuccess(obj.Description);
3952
- // }
3953
- // if (action === NotificationActions.no02) {
3954
- // await NotificationService.Instantiate().notificationError(obj.Description);
3955
- // }
3956
- // if (action === NotificationActions.no03) {
3957
- // await NotificationService.Instantiate().notificationWarning(obj.Description);
3958
- // }
3959
- // }
3960
- }
3961
- const isLayout2x2 = computed(() =&gt; {
3962
- return (
3963
- unref(scanState).Layout.PositionData.length &gt; 1 &amp;&amp;
3964
- unref(scanState).Layout.PositionData[0].Anchor === AnchorPoint.TOP_LEFT &amp;&amp;
3965
- unref(scanState).Layout.PositionData[1].Anchor === AnchorPoint.TOP_RIGHT &amp;&amp;
3966
- unref(scanState).Layout.PositionData[2].Anchor ===
3967
- AnchorPoint.BOTTOM_LEFT &amp;&amp;
3968
- unref(scanState).Layout.PositionData[3].Anchor === AnchorPoint.BOTTOM_RIGHT
3969
- );
3970
- });
3971
- const isLayout1x3 = computed(() =&gt; {
3972
- return (
3973
- unref(scanState).Layout.PositionData.length &gt; 1 &amp;&amp;
3974
- unref(scanState).Layout.PositionData[0].Anchor === AnchorPoint.CENTER &amp;&amp;
3975
- unref(scanState).Layout.PositionData[1].Anchor === AnchorPoint.TOP_RIGHT &amp;&amp;
3976
- unref(scanState).Layout.PositionData[2].Anchor === AnchorPoint.RIGHT &amp;&amp;
3977
- unref(scanState).Layout.PositionData[3].Anchor === AnchorPoint.BOTTOM_RIGHT
3978
- );
3979
- });
3980
- &nbsp;
3981
- function getCurrentGreyscalePreset() {
3982
- for (const preset of unref(initialScanState).GreyscalePresets) {
3983
- if (
3984
- (unref(scanState).Display.WindowLower === preset.Lower ||
3985
- (preset.Lower &lt; unref(initialScanState).HuLower &amp;&amp;
3986
- unref(scanState).Display.WindowLower ===
3987
- unref(initialScanState).HuLower)) &amp;&amp;
3988
- (unref(scanState).Display.WindowUpper === preset.Upper ||
3989
- (preset.Upper &gt; unref(initialScanState).HuUpper &amp;&amp;
3990
- unref(scanState).Display.WindowUpper ===
3991
- unref(initialScanState).HuUpper))
3992
- ) {
3993
- return preset.Name;
3994
- }
3113
+ await nextTick();
3114
+ transactionStarted.value = false;
3115
+ scanLoading.value = false;
3116
+ drawerCollapsed.value = false;
3117
+ await hoverOverCanvas(false);
3995
3118
  }
3996
- return undefined;
3997
- }
3998
- function setScanState(message: string) {
3999
- scanState.value = JSON.parse(message) as CurrentScanState;
4000
3119
  }
4001
3120
  &nbsp;
4002
3121
  function handleOnPayload(
@@ -4005,13 +3124,13 @@ function handleOnPayload(
4005
3124
  message: string
4006
3125
  ) {
4007
3126
  if (interfaceSet === FrontEndInterfaces.scan_state) {
4008
- i_scanState(actionSet, message);
3127
+ setScanStateFromPayload(actionSet, message);
4009
3128
  }
4010
3129
  if (interfaceSet === FrontEndInterfaces.file_management) {
4011
3130
  i_fileManagement(actionSet, message);
4012
3131
  }
4013
3132
  if (interfaceSet === FrontEndInterfaces.notifications) {
4014
- i_notifications(actionSet, message);
3133
+ handleNotification(actionSet, message);
4015
3134
  }
4016
3135
  }
4017
3136
  &nbsp;
@@ -4019,7 +3138,6 @@ defineExpose({
4019
3138
  alterValue,
4020
3139
  load,
4021
3140
  handleOnPayload,
4022
- setScanState,
4023
3141
  sendPayload,
4024
3142
  getIconForPreset,
4025
3143
  cSlider,
@@ -4027,16 +3145,13 @@ defineExpose({
4027
3145
  tSlider,
4028
3146
  thresholdSlider,
4029
3147
  windowSlider,
4030
- isLayout2x2,
4031
- isLayout1x3,
4032
3148
  m_closeDialog,
4033
- getCurrentGreyscalePreset,
4034
3149
  closeModal,
4035
3150
  snap,
4036
3151
  scanState,
4037
3152
  initialScanState,
4038
3153
  footerItems,
4039
- rotateByDeg,
3154
+ // rotateByDeg,
4040
3155
  getCurrentActiveView,
4041
3156
  getViewName,
4042
3157
  fullscreenLayout,
@@ -4111,7 +3226,7 @@ defineExpose({
4111
3226
  <div class='footer quiet pad2 space-top1 center small'>
4112
3227
  Code coverage generated by
4113
3228
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
4114
- at 2024-04-09T22:46:57.006Z
3229
+ at 2024-04-10T05:32:35.256Z
4115
3230
  </div>
4116
3231
  <script src="../../../../prettify.js"></script>
4117
3232
  <script>