@budibase/server 1.0.159 → 1.0.162
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.
- package/builder/assets/{index.fd63ba67.js → index.54fa98bf.js} +4 -4
- package/builder/index.html +1 -1
- package/coverage/clover.xml +96 -88
- package/coverage/coverage-final.json +2 -2
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +24 -24
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +14 -8
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +111 -48
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +19 -19
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +164 -148
- package/dist/api/controllers/view/utils.js +4 -2
- package/dist/api/controllers/view/viewBuilder.js +22 -8
- package/dist/package.json +5 -5
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/api/controllers/view/tests/__snapshots__/viewBuilder.spec.js.snap +58 -1
- package/src/api/controllers/view/tests/viewBuilder.spec.js +18 -0
- package/src/api/controllers/view/utils.js +4 -2
- package/src/api/controllers/view/viewBuilder.js +32 -11
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">92.5% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>37/40</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">86.11% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>31/36</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>5/5</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">92.5% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>37/40</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -225,7 +225,28 @@
|
|
|
225
225
|
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
226
|
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
227
|
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">42x</span>
|
|
229
250
|
<span class="cline-any cline-neutral"> </span>
|
|
230
251
|
<span class="cline-any cline-neutral"> </span>
|
|
231
252
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -238,7 +259,13 @@
|
|
|
238
259
|
<span class="cline-any cline-neutral"> </span>
|
|
239
260
|
<span class="cline-any cline-neutral"> </span>
|
|
240
261
|
<span class="cline-any cline-yes">42x</span>
|
|
241
|
-
<span class="cline-any cline-
|
|
262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-yes">42x</span>
|
|
268
|
+
<span class="cline-any cline-yes">7x</span>
|
|
242
269
|
<span class="cline-any cline-neutral"> </span>
|
|
243
270
|
<span class="cline-any cline-neutral"> </span>
|
|
244
271
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -296,34 +323,34 @@
|
|
|
296
323
|
<span class="cline-any cline-neutral"> </span>
|
|
297
324
|
<span class="cline-any cline-neutral"> </span>
|
|
298
325
|
<span class="cline-any cline-neutral"> </span>
|
|
299
|
-
<span class="cline-any cline-yes">
|
|
326
|
+
<span class="cline-any cline-yes">19x</span>
|
|
300
327
|
<span class="cline-any cline-neutral"> </span>
|
|
301
|
-
<span class="cline-any cline-yes">
|
|
302
|
-
<span class="cline-any cline-yes">
|
|
303
|
-
<span class="cline-any cline-yes">
|
|
328
|
+
<span class="cline-any cline-yes">19x</span>
|
|
329
|
+
<span class="cline-any cline-yes">19x</span>
|
|
330
|
+
<span class="cline-any cline-yes">10x</span>
|
|
304
331
|
<span class="cline-any cline-yes">1x</span>
|
|
305
332
|
<span class="cline-any cline-neutral"> </span>
|
|
306
333
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
334
|
+
<span class="cline-any cline-yes">10x</span>
|
|
308
335
|
<span class="cline-any cline-no"> </span>
|
|
309
336
|
<span class="cline-any cline-neutral"> </span>
|
|
310
337
|
<span class="cline-any cline-neutral"> </span>
|
|
311
|
-
<span class="cline-any cline-yes">
|
|
312
|
-
<span class="cline-any cline-no"> </span>
|
|
313
|
-
<span class="cline-any cline-yes">2x</span>
|
|
338
|
+
<span class="cline-any cline-yes">10x</span>
|
|
314
339
|
<span class="cline-any cline-no"> </span>
|
|
340
|
+
<span class="cline-any cline-yes">10x</span>
|
|
341
|
+
<span class="cline-any cline-yes">7x</span>
|
|
315
342
|
<span class="cline-any cline-neutral"> </span>
|
|
316
343
|
<span class="cline-any cline-neutral"> </span>
|
|
317
|
-
<span class="cline-any cline-yes">
|
|
344
|
+
<span class="cline-any cline-yes">3x</span>
|
|
318
345
|
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-yes">
|
|
346
|
+
<span class="cline-any cline-yes">3x</span>
|
|
320
347
|
<span class="cline-any cline-neutral"> </span>
|
|
321
348
|
<span class="cline-any cline-neutral"> </span>
|
|
322
349
|
<span class="cline-any cline-neutral"> </span>
|
|
323
|
-
<span class="cline-any cline-yes">
|
|
350
|
+
<span class="cline-any cline-yes">10x</span>
|
|
324
351
|
<span class="cline-any cline-neutral"> </span>
|
|
325
352
|
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-yes">
|
|
353
|
+
<span class="cline-any cline-yes">19x</span>
|
|
327
354
|
<span class="cline-any cline-neutral"> </span>
|
|
328
355
|
<span class="cline-any cline-neutral"> </span>
|
|
329
356
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -333,7 +360,7 @@
|
|
|
333
360
|
<span class="cline-any cline-neutral"> </span>
|
|
334
361
|
<span class="cline-any cline-neutral"> </span>
|
|
335
362
|
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-yes">
|
|
363
|
+
<span class="cline-any cline-yes">12x</span>
|
|
337
364
|
<span class="cline-any cline-neutral"> </span>
|
|
338
365
|
<span class="cline-any cline-neutral"> </span>
|
|
339
366
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -349,26 +376,41 @@
|
|
|
349
376
|
<span class="cline-any cline-neutral"> </span>
|
|
350
377
|
<span class="cline-any cline-neutral"> </span>
|
|
351
378
|
<span class="cline-any cline-neutral"> </span>
|
|
352
|
-
<span class="cline-any cline-yes">
|
|
379
|
+
<span class="cline-any cline-yes">12x</span>
|
|
353
380
|
<span class="cline-any cline-no"> </span>
|
|
354
381
|
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-yes">11x</span>
|
|
356
|
-
<span class="cline-any cline-yes">11x</span>
|
|
357
382
|
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-yes">
|
|
383
|
+
<span class="cline-any cline-yes">12x</span>
|
|
384
|
+
<span class="cline-any cline-yes">12x</span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-yes">12x</span>
|
|
387
|
+
<span class="cline-any cline-yes">7x</span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
391
|
+
<span class="cline-any cline-yes">7x</span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
394
|
+
<span class="cline-any cline-yes">1x</span>
|
|
395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
397
|
+
<span class="cline-any cline-yes">7x</span>
|
|
359
398
|
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-yes">11x</span>
|
|
361
399
|
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-yes">11x</span>
|
|
363
400
|
<span class="cline-any cline-neutral"> </span>
|
|
364
|
-
<span class="cline-any cline-yes">11x</span>
|
|
365
|
-
<span class="cline-any cline-yes">6x</span>
|
|
366
401
|
<span class="cline-any cline-neutral"> </span>
|
|
367
402
|
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-yes">12x</span>
|
|
404
|
+
<span class="cline-any cline-yes">12x</span>
|
|
368
405
|
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-yes">12x</span>
|
|
407
|
+
<span class="cline-any cline-yes">12x</span>
|
|
408
|
+
<span class="cline-any cline-yes">12x</span>
|
|
369
409
|
<span class="cline-any cline-neutral"> </span>
|
|
370
410
|
<span class="cline-any cline-neutral"> </span>
|
|
371
|
-
<span class="cline-any cline-yes">
|
|
411
|
+
<span class="cline-any cline-yes">12x</span>
|
|
412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-yes">12x</span>
|
|
372
414
|
<span class="cline-any cline-neutral"> </span>
|
|
373
415
|
<span class="cline-any cline-neutral"> </span>
|
|
374
416
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -399,8 +441,14 @@
|
|
|
399
441
|
OR: "||",
|
|
400
442
|
}
|
|
401
443
|
|
|
402
|
-
const
|
|
403
|
-
|
|
444
|
+
const CONDITIONS = {
|
|
445
|
+
EMPTY: "EMPTY",
|
|
446
|
+
NOT_EMPTY: "NOT_EMPTY",
|
|
447
|
+
CONTAINS: "CONTAINS",
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
const isEmptyExpression = key => {
|
|
451
|
+
return `(
|
|
404
452
|
doc["${key}"] === undefined ||
|
|
405
453
|
doc["${key}"] === null ||
|
|
406
454
|
doc["${key}"] === "" ||
|
|
@@ -466,17 +514,17 @@ function parseFilterExpression(filters) {
|
|
|
466
514
|
expression.push(TOKEN_MAP[filter.conjunction])
|
|
467
515
|
}
|
|
468
516
|
|
|
469
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (filter.condition ===
|
|
517
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (filter.condition === CONDITIONS.CONTAINS) {
|
|
470
518
|
<span class="cstat-no" title="statement not covered" > expression.push(</span>
|
|
471
519
|
`doc["${filter.key}"].${TOKEN_MAP[filter.condition]}("${filter.value}")`
|
|
472
520
|
)
|
|
473
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (filter.condition ===
|
|
521
|
+
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (filter.condition === CONDITIONS.EMPTY) {
|
|
474
522
|
<span class="cstat-no" title="statement not covered" > expression.push(isEmptyExpression(filter.key))</span>
|
|
475
|
-
} else
|
|
476
|
-
|
|
523
|
+
} else if (filter.condition === CONDITIONS.NOT_EMPTY) {
|
|
524
|
+
expression.push(`!${isEmptyExpression(filter.key)}`)
|
|
477
525
|
} else {
|
|
478
526
|
const value =
|
|
479
|
-
typeof filter.value == "string" ? `"${filter.value}"` :
|
|
527
|
+
typeof filter.value == "string" ? `"${filter.value}"` : filter.value
|
|
480
528
|
|
|
481
529
|
expression.push(
|
|
482
530
|
`doc["${filter.key}"] ${TOKEN_MAP[filter.condition]} ${value}`
|
|
@@ -514,21 +562,36 @@ function viewTemplate({ field, tableId, groupBy, filters = [], calculation }) {
|
|
|
514
562
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (filters && filters.length > 0 && filters[0].conjunction) {
|
|
515
563
|
<span class="cstat-no" title="statement not covered" > delete filters[0].conjunction</span>
|
|
516
564
|
}
|
|
517
|
-
const parsedFilters = parseFilterExpression(filters)
|
|
518
|
-
const filterExpression = parsedFilters ? `&& (${parsedFilters})` : ""
|
|
519
|
-
|
|
520
|
-
const emitExpression = parseEmitExpression(field, groupBy)
|
|
521
|
-
|
|
522
|
-
const reduction = field && calculation ? { reduce: `_${calculation}` } : {}
|
|
523
565
|
|
|
524
|
-
let schema = null
|
|
566
|
+
let schema = null,
|
|
567
|
+
statFilter = null
|
|
525
568
|
|
|
526
569
|
if (calculation) {
|
|
527
570
|
schema = {
|
|
528
571
|
...(groupBy ? GROUP_PROPERTY : FIELD_PROPERTY),
|
|
529
572
|
...SCHEMA_MAP[calculation],
|
|
530
573
|
}
|
|
574
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (
|
|
575
|
+
!filters.find(
|
|
576
|
+
filter =>
|
|
577
|
+
filter.key === field && <span class="branch-1 cbranch-no" title="branch not covered" >filter.condition === CONDITIONS.NOT_EMPTY</span>
|
|
578
|
+
)
|
|
579
|
+
) {
|
|
580
|
+
statFilter = parseFilterExpression([
|
|
581
|
+
{ key: field, condition: CONDITIONS.NOT_EMPTY },
|
|
582
|
+
])
|
|
583
|
+
}
|
|
531
584
|
}
|
|
585
|
+
|
|
586
|
+
const parsedFilters = parseFilterExpression(filters)
|
|
587
|
+
const filterExpression = parsedFilters ? `&& (${parsedFilters})` : ""
|
|
588
|
+
|
|
589
|
+
const emitExpression = parseEmitExpression(field, groupBy)
|
|
590
|
+
const tableExpression = `doc.tableId === "${tableId}"`
|
|
591
|
+
const coreExpression = statFilter
|
|
592
|
+
? `(${tableExpression} && ${statFilter})`
|
|
593
|
+
: tableExpression
|
|
594
|
+
const reduction = field && calculation ? { reduce: `_${calculation}` } : {}
|
|
532
595
|
|
|
533
596
|
return {
|
|
534
597
|
meta: {
|
|
@@ -540,7 +603,7 @@ function viewTemplate({ field, tableId, groupBy, filters = [], calculation }) {
|
|
|
540
603
|
calculation,
|
|
541
604
|
},
|
|
542
605
|
map: `function (doc) {
|
|
543
|
-
if (
|
|
606
|
+
if (${coreExpression} ${filterExpression}) {
|
|
544
607
|
${emitExpression}
|
|
545
608
|
}
|
|
546
609
|
}`,
|
|
@@ -556,7 +619,7 @@ module.exports = viewTemplate
|
|
|
556
619
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
557
620
|
Code coverage generated by
|
|
558
621
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
559
|
-
at
|
|
622
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
560
623
|
</div>
|
|
561
624
|
<script src="../../../prettify.js"></script>
|
|
562
625
|
<script>
|
|
@@ -409,7 +409,7 @@ exports.trigger = async ctx => {
|
|
|
409
409
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
410
410
|
Code coverage generated by
|
|
411
411
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
412
|
-
at
|
|
412
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
413
413
|
</div>
|
|
414
414
|
<script src="../../prettify.js"></script>
|
|
415
415
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at
|
|
104
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -349,7 +349,7 @@ module.exports = router
|
|
|
349
349
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
350
350
|
Code coverage generated by
|
|
351
351
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
352
|
-
at
|
|
352
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
353
353
|
</div>
|
|
354
354
|
<script src="../prettify.js"></script>
|
|
355
355
|
<script>
|
|
@@ -100,7 +100,7 @@ module.exports = router
|
|
|
100
100
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
101
101
|
Code coverage generated by
|
|
102
102
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
103
|
-
at
|
|
103
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
104
104
|
</div>
|
|
105
105
|
<script src="../../prettify.js"></script>
|
|
106
106
|
<script>
|
|
@@ -106,7 +106,7 @@ module.exports = router
|
|
|
106
106
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
107
107
|
Code coverage generated by
|
|
108
108
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
109
|
-
at
|
|
109
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
110
110
|
</div>
|
|
111
111
|
<script src="../../prettify.js"></script>
|
|
112
112
|
<script>
|
|
@@ -94,7 +94,7 @@ module.exports = router
|
|
|
94
94
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
95
95
|
Code coverage generated by
|
|
96
96
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
97
|
-
at
|
|
97
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
98
98
|
</div>
|
|
99
99
|
<script src="../../prettify.js"></script>
|
|
100
100
|
<script>
|
|
@@ -295,7 +295,7 @@ module.exports = router
|
|
|
295
295
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
296
296
|
Code coverage generated by
|
|
297
297
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
298
|
-
at
|
|
298
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
299
299
|
</div>
|
|
300
300
|
<script src="../../prettify.js"></script>
|
|
301
301
|
<script>
|
|
@@ -100,7 +100,7 @@ module.exports = router
|
|
|
100
100
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
101
101
|
Code coverage generated by
|
|
102
102
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
103
|
-
at
|
|
103
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
104
104
|
</div>
|
|
105
105
|
<script src="../../prettify.js"></script>
|
|
106
106
|
<script>
|
|
@@ -112,7 +112,7 @@ module.exports = router
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at
|
|
115
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
116
116
|
</div>
|
|
117
117
|
<script src="../../prettify.js"></script>
|
|
118
118
|
<script>
|
|
@@ -112,7 +112,7 @@ module.exports = router
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at
|
|
115
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
116
116
|
</div>
|
|
117
117
|
<script src="../../prettify.js"></script>
|
|
118
118
|
<script>
|
|
@@ -223,7 +223,7 @@ module.exports = router
|
|
|
223
223
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
224
224
|
Code coverage generated by
|
|
225
225
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
226
|
-
at
|
|
226
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
227
227
|
</div>
|
|
228
228
|
<script src="../../prettify.js"></script>
|
|
229
229
|
<script>
|
|
@@ -121,7 +121,7 @@ module.exports = router
|
|
|
121
121
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
122
122
|
Code coverage generated by
|
|
123
123
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
124
|
-
at
|
|
124
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
125
125
|
</div>
|
|
126
126
|
<script src="../../prettify.js"></script>
|
|
127
127
|
<script>
|
|
@@ -148,7 +148,7 @@ module.exports = router
|
|
|
148
148
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
149
149
|
Code coverage generated by
|
|
150
150
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
151
|
-
at
|
|
151
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
152
152
|
</div>
|
|
153
153
|
<script src="../../prettify.js"></script>
|
|
154
154
|
<script>
|
|
@@ -461,7 +461,7 @@
|
|
|
461
461
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
462
462
|
Code coverage generated by
|
|
463
463
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
464
|
-
at
|
|
464
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
465
465
|
</div>
|
|
466
466
|
<script src="../../prettify.js"></script>
|
|
467
467
|
<script>
|
|
@@ -106,7 +106,7 @@ module.exports = router
|
|
|
106
106
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
107
107
|
Code coverage generated by
|
|
108
108
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
109
|
-
at
|
|
109
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
110
110
|
</div>
|
|
111
111
|
<script src="../../prettify.js"></script>
|
|
112
112
|
<script>
|
|
@@ -118,7 +118,7 @@ module.exports = router
|
|
|
118
118
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
119
119
|
Code coverage generated by
|
|
120
120
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
121
|
-
at
|
|
121
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
122
122
|
</div>
|
|
123
123
|
<script src="../../prettify.js"></script>
|
|
124
124
|
<script>
|
|
@@ -184,7 +184,7 @@ module.exports = router
|
|
|
184
184
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
185
185
|
Code coverage generated by
|
|
186
186
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
187
|
-
at
|
|
187
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
188
188
|
</div>
|
|
189
189
|
<script src="../../prettify.js"></script>
|
|
190
190
|
<script>
|
|
@@ -112,7 +112,7 @@ module.exports = router
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at
|
|
115
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
116
116
|
</div>
|
|
117
117
|
<script src="../../prettify.js"></script>
|
|
118
118
|
<script>
|
|
@@ -169,7 +169,7 @@ module.exports = router
|
|
|
169
169
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
170
170
|
Code coverage generated by
|
|
171
171
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
172
|
-
at
|
|
172
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
173
173
|
</div>
|
|
174
174
|
<script src="../../prettify.js"></script>
|
|
175
175
|
<script>
|
|
@@ -262,7 +262,7 @@ module.exports = router
|
|
|
262
262
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
263
263
|
Code coverage generated by
|
|
264
264
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
265
|
-
at
|
|
265
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
266
266
|
</div>
|
|
267
267
|
<script src="../../prettify.js"></script>
|
|
268
268
|
<script>
|
|
@@ -115,7 +115,7 @@ module.exports = router
|
|
|
115
115
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
116
116
|
Code coverage generated by
|
|
117
117
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
118
|
-
at
|
|
118
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
119
119
|
</div>
|
|
120
120
|
<script src="../../prettify.js"></script>
|
|
121
121
|
<script>
|
|
@@ -112,7 +112,7 @@ module.exports = router
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at
|
|
115
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
116
116
|
</div>
|
|
117
117
|
<script src="../../prettify.js"></script>
|
|
118
118
|
<script>
|
|
@@ -124,7 +124,7 @@ module.exports = router
|
|
|
124
124
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
125
125
|
Code coverage generated by
|
|
126
126
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
127
|
-
at
|
|
127
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
128
128
|
</div>
|
|
129
129
|
<script src="../../prettify.js"></script>
|
|
130
130
|
<script>
|
|
@@ -100,7 +100,7 @@ const router = <span class="cstat-no" title="statement not covered" >Router()</s
|
|
|
100
100
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
101
101
|
Code coverage generated by
|
|
102
102
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
103
|
-
at
|
|
103
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
104
104
|
</div>
|
|
105
105
|
<script src="../../prettify.js"></script>
|
|
106
106
|
<script>
|
|
@@ -658,7 +658,7 @@ module.exports = router
|
|
|
658
658
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
659
659
|
Code coverage generated by
|
|
660
660
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
661
|
-
at
|
|
661
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
662
662
|
</div>
|
|
663
663
|
<script src="../../prettify.js"></script>
|
|
664
664
|
<script>
|
|
@@ -118,7 +118,7 @@ module.exports = router
|
|
|
118
118
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
119
119
|
Code coverage generated by
|
|
120
120
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
121
|
-
at
|
|
121
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
122
122
|
</div>
|
|
123
123
|
<script src="../../prettify.js"></script>
|
|
124
124
|
<script>
|
|
@@ -229,7 +229,7 @@ module.exports = router
|
|
|
229
229
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
230
230
|
Code coverage generated by
|
|
231
231
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
232
|
-
at
|
|
232
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
233
233
|
</div>
|
|
234
234
|
<script src="../../prettify.js"></script>
|
|
235
235
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at
|
|
104
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -724,7 +724,7 @@ exports.applicationValidator = () => {
|
|
|
724
724
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
725
725
|
Code coverage generated by
|
|
726
726
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
727
|
-
at
|
|
727
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
728
728
|
</div>
|
|
729
729
|
<script src="../../../prettify.js"></script>
|
|
730
730
|
<script>
|
|
@@ -163,7 +163,7 @@ module.exports = router
|
|
|
163
163
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
164
164
|
Code coverage generated by
|
|
165
165
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
166
|
-
at
|
|
166
|
+
at Mon May 16 2022 16:48:23 GMT+0000 (Coordinated Universal Time)
|
|
167
167
|
</div>
|
|
168
168
|
<script src="../../prettify.js"></script>
|
|
169
169
|
<script>
|