@kalisio/kdk 2.3.0 → 2.3.2
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/core/client/components/chart/KTimeSeriesChart.vue +27 -22
- package/core/client/components/collection/KCardSection.vue +3 -2
- package/core/client/components/form/KForm.vue +1 -1
- package/core/client/components/layout/KWindow.vue +13 -18
- package/core/client/components/time/KRelativeTimeRanges.vue +15 -0
- package/core/client/i18n/core_en.json +3 -0
- package/core/client/i18n/core_fr.json +7 -4
- package/core/client/utils/utils.data.js +3 -3
- package/package.json +2 -2
- package/test/api/core/test-log-2024-04-22.log +84 -0
- package/test/api/core/{test-log-2024-06-06.log → test-log-2024-04-23.log} +3 -3
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/core/api/application.js.html +0 -1870
- package/coverage/core/api/authentication.js.html +0 -742
- package/coverage/core/api/db.js.html +0 -778
- package/coverage/core/api/hooks/hooks.authentication.js.html +0 -313
- package/coverage/core/api/hooks/hooks.authorisations.js.html +0 -1243
- package/coverage/core/api/hooks/hooks.groups.js.html +0 -229
- package/coverage/core/api/hooks/hooks.logger.js.html +0 -163
- package/coverage/core/api/hooks/hooks.model.js.html +0 -955
- package/coverage/core/api/hooks/hooks.organisations.js.html +0 -541
- package/coverage/core/api/hooks/hooks.push.js.html +0 -253
- package/coverage/core/api/hooks/hooks.query.js.html +0 -862
- package/coverage/core/api/hooks/hooks.schemas.js.html +0 -304
- package/coverage/core/api/hooks/hooks.service.js.html +0 -319
- package/coverage/core/api/hooks/hooks.storage.js.html +0 -193
- package/coverage/core/api/hooks/hooks.users.js.html +0 -868
- package/coverage/core/api/hooks/index.html +0 -296
- package/coverage/core/api/hooks/index.js.html +0 -121
- package/coverage/core/api/index.html +0 -191
- package/coverage/core/api/index.js.html +0 -148
- package/coverage/core/api/marshall.js.html +0 -448
- package/coverage/core/api/models/groups.model.mongodb.js.html +0 -109
- package/coverage/core/api/models/index.html +0 -161
- package/coverage/core/api/models/organisations.model.mongodb.js.html +0 -94
- package/coverage/core/api/models/tags.model.mongodb.js.html +0 -115
- package/coverage/core/api/models/users.model.mongodb.js.html +0 -115
- package/coverage/core/api/services/account/account.hooks.js.html +0 -208
- package/coverage/core/api/services/account/account.service.js.html +0 -436
- package/coverage/core/api/services/account/index.html +0 -131
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +0 -502
- package/coverage/core/api/services/authorisations/index.html +0 -131
- package/coverage/core/api/services/databases/databases.hooks.js.html +0 -193
- package/coverage/core/api/services/databases/databases.service.js.html +0 -100
- package/coverage/core/api/services/databases/index.html +0 -131
- package/coverage/core/api/services/groups/groups.hooks.js.html +0 -178
- package/coverage/core/api/services/groups/index.html +0 -116
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +0 -184
- package/coverage/core/api/services/import-export/import-export.service.js.html +0 -118
- package/coverage/core/api/services/import-export/index.html +0 -131
- package/coverage/core/api/services/index.html +0 -116
- package/coverage/core/api/services/index.js.html +0 -499
- package/coverage/core/api/services/mailer/index.html +0 -131
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +0 -190
- package/coverage/core/api/services/mailer/mailer.service.js.html +0 -118
- package/coverage/core/api/services/organisations/index.html +0 -131
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +0 -178
- package/coverage/core/api/services/organisations/organisations.service.js.html +0 -343
- package/coverage/core/api/services/push/index.html +0 -131
- package/coverage/core/api/services/push/push.hooks.js.html +0 -190
- package/coverage/core/api/services/push/push.service.js.html +0 -121
- package/coverage/core/api/services/storage/index.html +0 -131
- package/coverage/core/api/services/storage/storage.hooks.js.html +0 -190
- package/coverage/core/api/services/storage/storage.service.js.html +0 -172
- package/coverage/core/api/services/tags/index.html +0 -116
- package/coverage/core/api/services/tags/tags.hooks.js.html +0 -178
- package/coverage/core/api/services/users/index.html +0 -116
- package/coverage/core/api/services/users/users.hooks.js.html +0 -307
- package/coverage/core/api/utils.js.html +0 -118
- package/coverage/core/common/errors.js.html +0 -88
- package/coverage/core/common/index.html +0 -176
- package/coverage/core/common/index.js.html +0 -115
- package/coverage/core/common/permissions.js.html +0 -1048
- package/coverage/core/common/schema.js.html +0 -190
- package/coverage/core/common/utils.js.html +0 -220
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -491
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/core/api/application.js.html +0 -1870
- package/coverage/lcov-report/core/api/authentication.js.html +0 -742
- package/coverage/lcov-report/core/api/db.js.html +0 -778
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +0 -313
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +0 -1243
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +0 -229
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +0 -163
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +0 -955
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +0 -541
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +0 -253
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +0 -862
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +0 -304
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +0 -319
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +0 -193
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +0 -868
- package/coverage/lcov-report/core/api/hooks/index.html +0 -296
- package/coverage/lcov-report/core/api/hooks/index.js.html +0 -121
- package/coverage/lcov-report/core/api/index.html +0 -191
- package/coverage/lcov-report/core/api/index.js.html +0 -148
- package/coverage/lcov-report/core/api/marshall.js.html +0 -448
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +0 -109
- package/coverage/lcov-report/core/api/models/index.html +0 -161
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +0 -94
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +0 -115
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +0 -115
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +0 -208
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +0 -436
- package/coverage/lcov-report/core/api/services/account/index.html +0 -131
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +0 -502
- package/coverage/lcov-report/core/api/services/authorisations/index.html +0 -131
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +0 -193
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +0 -100
- package/coverage/lcov-report/core/api/services/databases/index.html +0 -131
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +0 -178
- package/coverage/lcov-report/core/api/services/groups/index.html +0 -116
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +0 -184
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +0 -118
- package/coverage/lcov-report/core/api/services/import-export/index.html +0 -131
- package/coverage/lcov-report/core/api/services/index.html +0 -116
- package/coverage/lcov-report/core/api/services/index.js.html +0 -499
- package/coverage/lcov-report/core/api/services/mailer/index.html +0 -131
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +0 -118
- package/coverage/lcov-report/core/api/services/organisations/index.html +0 -131
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +0 -178
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +0 -343
- package/coverage/lcov-report/core/api/services/push/index.html +0 -131
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +0 -121
- package/coverage/lcov-report/core/api/services/storage/index.html +0 -131
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +0 -190
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +0 -172
- package/coverage/lcov-report/core/api/services/tags/index.html +0 -116
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +0 -178
- package/coverage/lcov-report/core/api/services/users/index.html +0 -116
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +0 -307
- package/coverage/lcov-report/core/api/utils.js.html +0 -118
- package/coverage/lcov-report/core/common/errors.js.html +0 -88
- package/coverage/lcov-report/core/common/index.html +0 -176
- package/coverage/lcov-report/core/common/index.js.html +0 -115
- package/coverage/lcov-report/core/common/permissions.js.html +0 -1048
- package/coverage/lcov-report/core/common/schema.js.html +0 -190
- package/coverage/lcov-report/core/common/utils.js.html +0 -220
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -491
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +0 -457
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +0 -397
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +0 -1309
- package/coverage/lcov-report/map/api/hooks/index.html +0 -161
- package/coverage/lcov-report/map/api/hooks/index.js.html +0 -94
- package/coverage/lcov-report/map/api/index.html +0 -131
- package/coverage/lcov-report/map/api/index.js.html +0 -139
- package/coverage/lcov-report/map/api/marshall.js.html +0 -178
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +0 -106
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +0 -127
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +0 -196
- package/coverage/lcov-report/map/api/models/index.html +0 -161
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +0 -109
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +0 -274
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +0 -610
- package/coverage/lcov-report/map/api/services/alerts/index.html +0 -131
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +0 -316
- package/coverage/lcov-report/map/api/services/catalog/index.html +0 -116
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +0 -1510
- package/coverage/lcov-report/map/api/services/daptiles/index.html +0 -116
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +0 -241
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +0 -241
- package/coverage/lcov-report/map/api/services/features/index.html +0 -131
- package/coverage/lcov-report/map/api/services/index.html +0 -116
- package/coverage/lcov-report/map/api/services/index.js.html +0 -817
- package/coverage/lcov-report/map/api/services/projects/index.html +0 -116
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +0 -439
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +0 -466
- package/coverage/lcov-report/map/common/errors.js.html +0 -94
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +0 -541
- package/coverage/lcov-report/map/common/grid.js.html +0 -1612
- package/coverage/lcov-report/map/common/index.html +0 -371
- package/coverage/lcov-report/map/common/index.js.html +0 -172
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +0 -556
- package/coverage/lcov-report/map/common/moment-utils.js.html +0 -157
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +0 -868
- package/coverage/lcov-report/map/common/opendap-utils.js.html +0 -826
- package/coverage/lcov-report/map/common/permissions.js.html +0 -124
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +0 -418
- package/coverage/lcov-report/map/common/tms-utils.js.html +0 -274
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +0 -364
- package/coverage/lcov-report/map/common/wcs-utils.js.html +0 -586
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +0 -1033
- package/coverage/lcov-report/map/common/wfs-utils.js.html +0 -574
- package/coverage/lcov-report/map/common/wms-utils.js.html +0 -451
- package/coverage/lcov-report/map/common/wmts-utils.js.html +0 -547
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -11128
- package/coverage/map/api/hooks/hooks.catalog.js.html +0 -457
- package/coverage/map/api/hooks/hooks.features.js.html +0 -397
- package/coverage/map/api/hooks/hooks.query.js.html +0 -1309
- package/coverage/map/api/hooks/index.html +0 -161
- package/coverage/map/api/hooks/index.js.html +0 -94
- package/coverage/map/api/index.html +0 -131
- package/coverage/map/api/index.js.html +0 -139
- package/coverage/map/api/marshall.js.html +0 -178
- package/coverage/map/api/models/alerts.model.mongodb.js.html +0 -106
- package/coverage/map/api/models/catalog.model.mongodb.js.html +0 -127
- package/coverage/map/api/models/features.model.mongodb.js.html +0 -196
- package/coverage/map/api/models/index.html +0 -161
- package/coverage/map/api/models/projects.model.mongodb.js.html +0 -109
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +0 -274
- package/coverage/map/api/services/alerts/alerts.service.js.html +0 -610
- package/coverage/map/api/services/alerts/index.html +0 -131
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +0 -316
- package/coverage/map/api/services/catalog/index.html +0 -116
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +0 -1510
- package/coverage/map/api/services/daptiles/index.html +0 -116
- package/coverage/map/api/services/features/features.hooks.js.html +0 -241
- package/coverage/map/api/services/features/features.service.js.html +0 -241
- package/coverage/map/api/services/features/index.html +0 -131
- package/coverage/map/api/services/index.html +0 -116
- package/coverage/map/api/services/index.js.html +0 -817
- package/coverage/map/api/services/projects/index.html +0 -116
- package/coverage/map/api/services/projects/projects.hooks.js.html +0 -439
- package/coverage/map/common/dynamic-grid-source.js.html +0 -466
- package/coverage/map/common/errors.js.html +0 -94
- package/coverage/map/common/geotiff-grid-source.js.html +0 -541
- package/coverage/map/common/grid.js.html +0 -1612
- package/coverage/map/common/index.html +0 -371
- package/coverage/map/common/index.js.html +0 -172
- package/coverage/map/common/meteo-model-grid-source.js.html +0 -556
- package/coverage/map/common/moment-utils.js.html +0 -157
- package/coverage/map/common/opendap-grid-source.js.html +0 -868
- package/coverage/map/common/opendap-utils.js.html +0 -826
- package/coverage/map/common/permissions.js.html +0 -124
- package/coverage/map/common/time-based-grid-source.js.html +0 -418
- package/coverage/map/common/tms-utils.js.html +0 -274
- package/coverage/map/common/wcs-grid-source.js.html +0 -364
- package/coverage/map/common/wcs-utils.js.html +0 -586
- package/coverage/map/common/weacast-grid-source.js.html +0 -1033
- package/coverage/map/common/wfs-utils.js.html +0 -574
- package/coverage/map/common/wms-utils.js.html +0 -451
- package/coverage/map/common/wmts-utils.js.html +0 -547
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/coverage/tmp/coverage-137435-1719398750767-0.json +0 -1
- package/coverage/tmp/coverage-137447-1719398750752-0.json +0 -1
- package/coverage/tmp/coverage-137458-1719398750740-0.json +0 -1
- package/coverage/tmp/coverage-137470-1719398750728-0.json +0 -1
- package/coverage/tmp/coverage-137477-1719398750691-0.json +0 -1
- package/test/api/core/test-log-2023-12-19.log +0 -7
- package/test/api/core/test-log-2024-01-04.log +0 -14
- package/test/api/core/test-log-2024-05-14.log +0 -6
- package/test/api/core/test-log-2024-06-26.log +0 -25
- package/test/api/map/test-log-2023-11-24.log +0 -121
- package/test/api/map/test-log-2023-12-12.log +0 -29
- package/test/api/map/test-log-2023-12-13.log +0 -5
- package/test/api/map/test-log-2024-01-04.log +0 -2
- package/test/api/map/test-log-2024-01-11.log +0 -1
- package/test/api/map/test-log-2024-01-25.log +0 -19
- package/test/api/map/test-log-2024-06-06.log +0 -39
|
@@ -1,868 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for map/common/opendap-grid-source.js</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">map/common</a> opendap-grid-source.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/261</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/1</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/1</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/261</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</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>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
328
|
-
<span class="cline-any cline-no"> </span>
|
|
329
|
-
<span class="cline-any cline-no"> </span>
|
|
330
|
-
<span class="cline-any cline-no"> </span>
|
|
331
|
-
<span class="cline-any cline-no"> </span>
|
|
332
|
-
<span class="cline-any cline-no"> </span>
|
|
333
|
-
<span class="cline-any cline-no"> </span>
|
|
334
|
-
<span class="cline-any cline-no"> </span>
|
|
335
|
-
<span class="cline-any cline-no"> </span>
|
|
336
|
-
<span class="cline-any cline-no"> </span>
|
|
337
|
-
<span class="cline-any cline-no"> </span>
|
|
338
|
-
<span class="cline-any cline-no"> </span>
|
|
339
|
-
<span class="cline-any cline-no"> </span>
|
|
340
|
-
<span class="cline-any cline-no"> </span>
|
|
341
|
-
<span class="cline-any cline-no"> </span>
|
|
342
|
-
<span class="cline-any cline-no"> </span>
|
|
343
|
-
<span class="cline-any cline-no"> </span>
|
|
344
|
-
<span class="cline-any cline-no"> </span>
|
|
345
|
-
<span class="cline-any cline-no"> </span>
|
|
346
|
-
<span class="cline-any cline-no"> </span>
|
|
347
|
-
<span class="cline-any cline-no"> </span>
|
|
348
|
-
<span class="cline-any cline-no"> </span>
|
|
349
|
-
<span class="cline-any cline-no"> </span>
|
|
350
|
-
<span class="cline-any cline-no"> </span>
|
|
351
|
-
<span class="cline-any cline-no"> </span>
|
|
352
|
-
<span class="cline-any cline-no"> </span>
|
|
353
|
-
<span class="cline-any cline-no"> </span>
|
|
354
|
-
<span class="cline-any cline-no"> </span>
|
|
355
|
-
<span class="cline-any cline-no"> </span>
|
|
356
|
-
<span class="cline-any cline-no"> </span>
|
|
357
|
-
<span class="cline-any cline-no"> </span>
|
|
358
|
-
<span class="cline-any cline-no"> </span>
|
|
359
|
-
<span class="cline-any cline-no"> </span>
|
|
360
|
-
<span class="cline-any cline-no"> </span>
|
|
361
|
-
<span class="cline-any cline-no"> </span>
|
|
362
|
-
<span class="cline-any cline-no"> </span>
|
|
363
|
-
<span class="cline-any cline-no"> </span>
|
|
364
|
-
<span class="cline-any cline-no"> </span>
|
|
365
|
-
<span class="cline-any cline-no"> </span>
|
|
366
|
-
<span class="cline-any cline-no"> </span>
|
|
367
|
-
<span class="cline-any cline-no"> </span>
|
|
368
|
-
<span class="cline-any cline-no"> </span>
|
|
369
|
-
<span class="cline-any cline-no"> </span>
|
|
370
|
-
<span class="cline-any cline-no"> </span>
|
|
371
|
-
<span class="cline-any cline-no"> </span>
|
|
372
|
-
<span class="cline-any cline-no"> </span>
|
|
373
|
-
<span class="cline-any cline-no"> </span>
|
|
374
|
-
<span class="cline-any cline-no"> </span>
|
|
375
|
-
<span class="cline-any cline-no"> </span>
|
|
376
|
-
<span class="cline-any cline-no"> </span>
|
|
377
|
-
<span class="cline-any cline-no"> </span>
|
|
378
|
-
<span class="cline-any cline-no"> </span>
|
|
379
|
-
<span class="cline-any cline-no"> </span>
|
|
380
|
-
<span class="cline-any cline-no"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
|
-
<span class="cline-any cline-no"> </span>
|
|
383
|
-
<span class="cline-any cline-no"> </span>
|
|
384
|
-
<span class="cline-any cline-no"> </span>
|
|
385
|
-
<span class="cline-any cline-no"> </span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
388
|
-
<span class="cline-any cline-no"> </span>
|
|
389
|
-
<span class="cline-any cline-no"> </span>
|
|
390
|
-
<span class="cline-any cline-no"> </span>
|
|
391
|
-
<span class="cline-any cline-no"> </span>
|
|
392
|
-
<span class="cline-any cline-no"> </span>
|
|
393
|
-
<span class="cline-any cline-no"> </span>
|
|
394
|
-
<span class="cline-any cline-no"> </span>
|
|
395
|
-
<span class="cline-any cline-no"> </span>
|
|
396
|
-
<span class="cline-any cline-no"> </span>
|
|
397
|
-
<span class="cline-any cline-no"> </span>
|
|
398
|
-
<span class="cline-any cline-no"> </span>
|
|
399
|
-
<span class="cline-any cline-no"> </span>
|
|
400
|
-
<span class="cline-any cline-no"> </span>
|
|
401
|
-
<span class="cline-any cline-no"> </span>
|
|
402
|
-
<span class="cline-any cline-no"> </span>
|
|
403
|
-
<span class="cline-any cline-no"> </span>
|
|
404
|
-
<span class="cline-any cline-no"> </span>
|
|
405
|
-
<span class="cline-any cline-no"> </span>
|
|
406
|
-
<span class="cline-any cline-no"> </span>
|
|
407
|
-
<span class="cline-any cline-no"> </span>
|
|
408
|
-
<span class="cline-any cline-no"> </span>
|
|
409
|
-
<span class="cline-any cline-no"> </span>
|
|
410
|
-
<span class="cline-any cline-no"> </span>
|
|
411
|
-
<span class="cline-any cline-no"> </span>
|
|
412
|
-
<span class="cline-any cline-no"> </span>
|
|
413
|
-
<span class="cline-any cline-no"> </span>
|
|
414
|
-
<span class="cline-any cline-no"> </span>
|
|
415
|
-
<span class="cline-any cline-no"> </span>
|
|
416
|
-
<span class="cline-any cline-no"> </span>
|
|
417
|
-
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-no"> </span>
|
|
420
|
-
<span class="cline-any cline-no"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-no"> </span>
|
|
423
|
-
<span class="cline-any cline-no"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-no"> </span>
|
|
427
|
-
<span class="cline-any cline-no"> </span>
|
|
428
|
-
<span class="cline-any cline-no"> </span>
|
|
429
|
-
<span class="cline-any cline-no"> </span>
|
|
430
|
-
<span class="cline-any cline-no"> </span>
|
|
431
|
-
<span class="cline-any cline-no"> </span>
|
|
432
|
-
<span class="cline-any cline-no"> </span>
|
|
433
|
-
<span class="cline-any cline-no"> </span>
|
|
434
|
-
<span class="cline-any cline-no"> </span>
|
|
435
|
-
<span class="cline-any cline-no"> </span>
|
|
436
|
-
<span class="cline-any cline-no"> </span>
|
|
437
|
-
<span class="cline-any cline-no"> </span>
|
|
438
|
-
<span class="cline-any cline-no"> </span>
|
|
439
|
-
<span class="cline-any cline-no"> </span>
|
|
440
|
-
<span class="cline-any cline-no"> </span>
|
|
441
|
-
<span class="cline-any cline-no"> </span>
|
|
442
|
-
<span class="cline-any cline-no"> </span>
|
|
443
|
-
<span class="cline-any cline-no"> </span>
|
|
444
|
-
<span class="cline-any cline-no"> </span>
|
|
445
|
-
<span class="cline-any cline-no"> </span>
|
|
446
|
-
<span class="cline-any cline-no"> </span>
|
|
447
|
-
<span class="cline-any cline-no"> </span>
|
|
448
|
-
<span class="cline-any cline-no"> </span>
|
|
449
|
-
<span class="cline-any cline-no"> </span>
|
|
450
|
-
<span class="cline-any cline-no"> </span>
|
|
451
|
-
<span class="cline-any cline-no"> </span>
|
|
452
|
-
<span class="cline-any cline-no"> </span>
|
|
453
|
-
<span class="cline-any cline-no"> </span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-no"> </span>
|
|
456
|
-
<span class="cline-any cline-no"> </span>
|
|
457
|
-
<span class="cline-any cline-no"> </span>
|
|
458
|
-
<span class="cline-any cline-no"> </span>
|
|
459
|
-
<span class="cline-any cline-no"> </span>
|
|
460
|
-
<span class="cline-any cline-no"> </span>
|
|
461
|
-
<span class="cline-any cline-no"> </span>
|
|
462
|
-
<span class="cline-any cline-no"> </span>
|
|
463
|
-
<span class="cline-any cline-no"> </span>
|
|
464
|
-
<span class="cline-any cline-no"> </span>
|
|
465
|
-
<span class="cline-any cline-no"> </span>
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
467
|
-
<span class="cline-any cline-no"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-no"> </span>
|
|
470
|
-
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-no"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
|
-
<span class="cline-any cline-no"> </span>
|
|
474
|
-
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-no"> </span>
|
|
476
|
-
<span class="cline-any cline-no"> </span>
|
|
477
|
-
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-no"> </span>
|
|
479
|
-
<span class="cline-any cline-no"> </span>
|
|
480
|
-
<span class="cline-any cline-no"> </span>
|
|
481
|
-
<span class="cline-any cline-no"> </span>
|
|
482
|
-
<span class="cline-any cline-no"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-no"> </span>
|
|
485
|
-
<span class="cline-any cline-no"> </span>
|
|
486
|
-
<span class="cline-any cline-no"> </span>
|
|
487
|
-
<span class="cline-any cline-no"> </span>
|
|
488
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
-
<span class="cline-any cline-no"> </span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-no"> </span>
|
|
496
|
-
<span class="cline-any cline-no"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-no"> </span>
|
|
501
|
-
<span class="cline-any cline-no"> </span>
|
|
502
|
-
<span class="cline-any cline-no"> </span>
|
|
503
|
-
<span class="cline-any cline-no"> </span>
|
|
504
|
-
<span class="cline-any cline-no"> </span>
|
|
505
|
-
<span class="cline-any cline-no"> </span>
|
|
506
|
-
<span class="cline-any cline-no"> </span>
|
|
507
|
-
<span class="cline-any cline-no"> </span>
|
|
508
|
-
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-no"> </span>
|
|
510
|
-
<span class="cline-any cline-no"> </span>
|
|
511
|
-
<span class="cline-any cline-no"> </span>
|
|
512
|
-
<span class="cline-any cline-no"> </span>
|
|
513
|
-
<span class="cline-any cline-no"> </span>
|
|
514
|
-
<span class="cline-any cline-no"> </span>
|
|
515
|
-
<span class="cline-any cline-no"> </span>
|
|
516
|
-
<span class="cline-any cline-no"> </span>
|
|
517
|
-
<span class="cline-any cline-no"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-no"> </span>
|
|
520
|
-
<span class="cline-any cline-no"> </span>
|
|
521
|
-
<span class="cline-any cline-no"> </span>
|
|
522
|
-
<span class="cline-any cline-no"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-no"> </span>
|
|
527
|
-
<span class="cline-any cline-no"> </span>
|
|
528
|
-
<span class="cline-any cline-no"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-no"> </span>
|
|
531
|
-
<span class="cline-any cline-no"> </span>
|
|
532
|
-
<span class="cline-any cline-no"> </span>
|
|
533
|
-
<span class="cline-any cline-no"> </span>
|
|
534
|
-
<span class="cline-any cline-no"> </span>
|
|
535
|
-
<span class="cline-any cline-no"> </span>
|
|
536
|
-
<span class="cline-any cline-no"> </span>
|
|
537
|
-
<span class="cline-any cline-no"> </span>
|
|
538
|
-
<span class="cline-any cline-no"> </span>
|
|
539
|
-
<span class="cline-any cline-no"> </span>
|
|
540
|
-
<span class="cline-any cline-no"> </span>
|
|
541
|
-
<span class="cline-any cline-no"> </span>
|
|
542
|
-
<span class="cline-any cline-no"> </span>
|
|
543
|
-
<span class="cline-any cline-no"> </span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
|
-
<span class="cline-any cline-no"> </span>
|
|
546
|
-
<span class="cline-any cline-no"> </span>
|
|
547
|
-
<span class="cline-any cline-no"> </span>
|
|
548
|
-
<span class="cline-any cline-no"> </span>
|
|
549
|
-
<span class="cline-any cline-no"> </span>
|
|
550
|
-
<span class="cline-any cline-no"> </span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-no"> </span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-no"> </span>
|
|
556
|
-
<span class="cline-any cline-no"> </span>
|
|
557
|
-
<span class="cline-any cline-no"> </span>
|
|
558
|
-
<span class="cline-any cline-no"> </span>
|
|
559
|
-
<span class="cline-any cline-no"> </span>
|
|
560
|
-
<span class="cline-any cline-no"> </span>
|
|
561
|
-
<span class="cline-any cline-no"> </span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
|
-
<span class="cline-any cline-no"> </span>
|
|
564
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-no"> </span>
|
|
567
|
-
<span class="cline-any cline-no"> </span>
|
|
568
|
-
<span class="cline-any cline-no"> </span>
|
|
569
|
-
<span class="cline-any cline-no"> </span>
|
|
570
|
-
<span class="cline-any cline-no"> </span>
|
|
571
|
-
<span class="cline-any cline-no"> </span>
|
|
572
|
-
<span class="cline-any cline-no"> </span>
|
|
573
|
-
<span class="cline-any cline-no"> </span>
|
|
574
|
-
<span class="cline-any cline-no"> </span>
|
|
575
|
-
<span class="cline-any cline-no"> </span>
|
|
576
|
-
<span class="cline-any cline-no"> </span>
|
|
577
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
-
<span class="cline-any cline-no"> </span>
|
|
579
|
-
<span class="cline-any cline-no"> </span>
|
|
580
|
-
<span class="cline-any cline-no"> </span>
|
|
581
|
-
<span class="cline-any cline-no"> </span>
|
|
582
|
-
<span class="cline-any cline-no"> </span>
|
|
583
|
-
<span class="cline-any cline-no"> </span>
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
585
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
-
<span class="cline-any cline-no"> </span>
|
|
587
|
-
<span class="cline-any cline-no"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >import _ from 'lodash'</span></span></span>
|
|
589
|
-
<span class="cstat-no" title="statement not covered" >import { unitConverters, SortOrder, GridSource, Grid2D } from './grid.js'</span>
|
|
590
|
-
<span class="cstat-no" title="statement not covered" >import * as dap from './opendap-utils.js'</span>
|
|
591
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
592
|
-
<span class="cstat-no" title="statement not covered" >// https://opendap.github.io/documentation/UserGuideComprehensive.html#Constraint_Expressions</span>
|
|
593
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
594
|
-
<span class="cstat-no" title="statement not covered" >// only assumes grid variable is a regular grid w.r.t lat/lon</span>
|
|
595
|
-
<span class="cstat-no" title="statement not covered" >export class OpenDapGridSource extends GridSource {</span>
|
|
596
|
-
<span class="cstat-no" title="statement not covered" > static getKey () {</span>
|
|
597
|
-
<span class="cstat-no" title="statement not covered" > return 'opendap'</span>
|
|
598
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
599
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
600
|
-
<span class="cstat-no" title="statement not covered" > constructor (options) {</span>
|
|
601
|
-
<span class="cstat-no" title="statement not covered" > super(options)</span>
|
|
602
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
603
|
-
<span class="cstat-no" title="statement not covered" > this.usable = false</span>
|
|
604
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
605
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
606
|
-
<span class="cstat-no" title="statement not covered" > getBBox () {</span>
|
|
607
|
-
<span class="cstat-no" title="statement not covered" > return this.usable ? [this.minMaxLat[0], this.minMaxLon[0], this.minMaxLat[1], this.minMaxLon[1]] : null</span>
|
|
608
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
609
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
610
|
-
<span class="cstat-no" title="statement not covered" > getDataBounds () {</span>
|
|
611
|
-
<span class="cstat-no" title="statement not covered" > return this.usable ? this.minMaxVal : null</span>
|
|
612
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
613
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
614
|
-
<span class="cstat-no" title="statement not covered" > async setup (config) {</span>
|
|
615
|
-
<span class="cstat-no" title="statement not covered" > this.usable = false</span>
|
|
616
|
-
<span class="cstat-no" title="statement not covered" > ++this.sourceKey</span>
|
|
617
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
618
|
-
<span class="cstat-no" title="statement not covered" > this.descriptor = null</span>
|
|
619
|
-
<span class="cstat-no" title="statement not covered" > this.indices = null</span>
|
|
620
|
-
<span class="cstat-no" title="statement not covered" > this.latCount = 0</span>
|
|
621
|
-
<span class="cstat-no" title="statement not covered" > this.latIndex = 0</span>
|
|
622
|
-
<span class="cstat-no" title="statement not covered" > this.lonCount = 0</span>
|
|
623
|
-
<span class="cstat-no" title="statement not covered" > this.lonIndex = 0</span>
|
|
624
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
625
|
-
<span class="cstat-no" title="statement not covered" > this.minMaxLat = null</span>
|
|
626
|
-
<span class="cstat-no" title="statement not covered" > this.minMaxLon = null</span>
|
|
627
|
-
<span class="cstat-no" title="statement not covered" > this.minMaxVal = null</span>
|
|
628
|
-
<span class="cstat-no" title="statement not covered" > this.latStep = 0</span>
|
|
629
|
-
<span class="cstat-no" title="statement not covered" > this.lonStep = 0</span>
|
|
630
|
-
<span class="cstat-no" title="statement not covered" > this.latSortOrder = SortOrder.ASCENDING</span>
|
|
631
|
-
<span class="cstat-no" title="statement not covered" > this.lonSortOrder = SortOrder.ASCENDING</span>
|
|
632
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
633
|
-
<span class="cstat-no" title="statement not covered" > this.canUseGrid2D = false</span>
|
|
634
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
635
|
-
<span class="cstat-no" title="statement not covered" > this.config = config</span>
|
|
636
|
-
<span class="cstat-no" title="statement not covered" > this.converter = unitConverters[this.config.converter]</span>
|
|
637
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
638
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
639
|
-
<span class="cstat-no" title="statement not covered" > this.descriptor = await dap.fetchDescriptor(this.config.url)</span>
|
|
640
|
-
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
641
|
-
<span class="cstat-no" title="statement not covered" > // fetching may fail, in this case the source</span>
|
|
642
|
-
<span class="cstat-no" title="statement not covered" > // will remain in unusable state</span>
|
|
643
|
-
<span class="cstat-no" title="statement not covered" > this.descriptor = null</span>
|
|
644
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Failed fetching opendap descriptor from ${this.config.url}`)</span>
|
|
645
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
646
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
647
|
-
<span class="cstat-no" title="statement not covered" > if (this.descriptor) {</span>
|
|
648
|
-
<span class="cstat-no" title="statement not covered" > const varIsGrid = dap.variableIsGrid(this.descriptor, this.config.variable)</span>
|
|
649
|
-
<span class="cstat-no" title="statement not covered" > const latIsArray = dap.variableIsArray(this.descriptor, this.config.latitude)</span>
|
|
650
|
-
<span class="cstat-no" title="statement not covered" > const lonIsArray = dap.variableIsArray(this.descriptor, this.config.longitude)</span>
|
|
651
|
-
<span class="cstat-no" title="statement not covered" > if (varIsGrid && latIsArray && lonIsArray) {</span>
|
|
652
|
-
<span class="cstat-no" title="statement not covered" > this.latIndex = dap.getGridDimensionIndex(this.descriptor, this.config.variable, this.config.latitude)</span>
|
|
653
|
-
<span class="cstat-no" title="statement not covered" > this.latCount = dap.getGridDimensionLength(this.descriptor, this.config.variable, this.latIndex)</span>
|
|
654
|
-
<span class="cstat-no" title="statement not covered" > this.lonIndex = dap.getGridDimensionIndex(this.descriptor, this.config.variable, this.config.longitude)</span>
|
|
655
|
-
<span class="cstat-no" title="statement not covered" > this.lonCount = dap.getGridDimensionLength(this.descriptor, this.config.variable, this.lonIndex)</span>
|
|
656
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
657
|
-
<span class="cstat-no" title="statement not covered" > // build grid indexing array</span>
|
|
658
|
-
<span class="cstat-no" title="statement not covered" > const dimensions = await this.getDimensionsAsIndices()</span>
|
|
659
|
-
<span class="cstat-no" title="statement not covered" > dimensions[this.config.latitude] = `0:${this.latCount - 1}`</span>
|
|
660
|
-
<span class="cstat-no" title="statement not covered" > dimensions[this.config.longitude] = `0:${this.lonCount - 1}`</span>
|
|
661
|
-
<span class="cstat-no" title="statement not covered" > this.indices = dap.makeGridIndices(this.descriptor, this.config.variable, dimensions)</span>
|
|
662
|
-
<span class="cstat-no" title="statement not covered" > if (this.indices.length !== 0) {</span>
|
|
663
|
-
<span class="cstat-no" title="statement not covered" > // if lat and lon dimensions are the last in the query, we can</span>
|
|
664
|
-
<span class="cstat-no" title="statement not covered" > // use a Grid2D directly (cheaper on cpu)</span>
|
|
665
|
-
<span class="cstat-no" title="statement not covered" > const last = this.indices.length - 1</span>
|
|
666
|
-
<span class="cstat-no" title="statement not covered" > if ((this.latIndex === last && this.lonIndex === (last - 1)) ||</span>
|
|
667
|
-
<span class="cstat-no" title="statement not covered" > (this.latIndex === (last - 1) && this.lonIndex === last)) {</span>
|
|
668
|
-
<span class="cstat-no" title="statement not covered" > this.canUseGrid2D = true</span>
|
|
669
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
670
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
671
|
-
<span class="cstat-no" title="statement not covered" > // TODO: store metadata somewhere instead of requesting the whole variable</span>
|
|
672
|
-
<span class="cstat-no" title="statement not covered" > await this.computeMetaDataFromData()</span>
|
|
673
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
674
|
-
<span class="cstat-no" title="statement not covered" > // flag source as usable</span>
|
|
675
|
-
<span class="cstat-no" title="statement not covered" > this.usable = true</span>
|
|
676
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
677
|
-
<span class="cstat-no" title="statement not covered" > console.log("Couldn't create index array for grid")</span>
|
|
678
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
679
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
680
|
-
<span class="cstat-no" title="statement not covered" > if (!varIsGrid) console.log(`${this.config.variable} is not a grid variable!`)</span>
|
|
681
|
-
<span class="cstat-no" title="statement not covered" > if (!latIsArray) console.log(`${this.config.latitude} is expected to be an array variable!`)</span>
|
|
682
|
-
<span class="cstat-no" title="statement not covered" > if (!lonIsArray) console.log(`${this.config.longitude} is expected to be an array variable!`)</span>
|
|
683
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
684
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
685
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
686
|
-
<span class="cstat-no" title="statement not covered" > this.dataChanged()</span>
|
|
687
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
688
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" > async fetch (abort, bbox, resolution) {</span>
|
|
690
|
-
<span class="cstat-no" title="statement not covered" > if (!this.usable) { return null }</span>
|
|
691
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
692
|
-
<span class="cstat-no" title="statement not covered" > const query = this.makeQuery(bbox, resolution)</span>
|
|
693
|
-
<span class="cstat-no" title="statement not covered" > if (!query) { return null }</span>
|
|
694
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
695
|
-
<span class="cstat-no" title="statement not covered" > const sourceKey = this.sourceKey</span>
|
|
696
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
697
|
-
<span class="cstat-no" title="statement not covered" > const data = await dap.fetchData(query, abort)</span>
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > const req = data[this.config.variable]</span>
|
|
699
|
-
<span class="cstat-no" title="statement not covered" > const valData = req[0]</span>
|
|
700
|
-
<span class="cstat-no" title="statement not covered" > const latData = req[this.latIndex + 1]</span>
|
|
701
|
-
<span class="cstat-no" title="statement not covered" > const lonData = req[this.lonIndex + 1]</span>
|
|
702
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
703
|
-
<span class="cstat-no" title="statement not covered" > const lat0 = latData[0]</span>
|
|
704
|
-
<span class="cstat-no" title="statement not covered" > const lat1 = latData[latData.length - 1]</span>
|
|
705
|
-
<span class="cstat-no" title="statement not covered" > let lon0 = lonData[0]</span>
|
|
706
|
-
<span class="cstat-no" title="statement not covered" > let lon1 = lonData[lonData.length - 1]</span>
|
|
707
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
708
|
-
<span class="cstat-no" title="statement not covered" > // normalize bounds</span>
|
|
709
|
-
<span class="cstat-no" title="statement not covered" > if (lon0 > 180.0) lon0 -= 360.0</span>
|
|
710
|
-
<span class="cstat-no" title="statement not covered" > if (lon1 > 180.0) lon1 -= 360.0</span>
|
|
711
|
-
<span class="cstat-no" title="statement not covered" > const databbox = [Math.min(lat0, lat1), Math.min(lon0, lon1), Math.max(lat0, lat1), Math.max(lon0, lon1)]</span>
|
|
712
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
713
|
-
<span class="cstat-no" title="statement not covered" > if (this.canUseGrid2D) {</span>
|
|
714
|
-
<span class="cstat-no" title="statement not covered" > const indices = this.indices.slice(0, this.indices.length - 2)</span>
|
|
715
|
-
<span class="cstat-no" title="statement not covered" > indices.fill(0)</span>
|
|
716
|
-
<span class="cstat-no" title="statement not covered" > const subgrid = dap.getGridValue(valData, indices)</span>
|
|
717
|
-
<span class="cstat-no" title="statement not covered" > return new Grid2D(</span>
|
|
718
|
-
<span class="cstat-no" title="statement not covered" > sourceKey,</span>
|
|
719
|
-
<span class="cstat-no" title="statement not covered" > databbox, [latData.length, lonData.length],</span>
|
|
720
|
-
<span class="cstat-no" title="statement not covered" > subgrid, this.latIndex < this.lonIndex, this.latSortOrder, this.lonSortOrder,</span>
|
|
721
|
-
<span class="cstat-no" title="statement not covered" > this.nodata, this.converter)</span>
|
|
722
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
723
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
724
|
-
<span class="cstat-no" title="statement not covered" > return new dap.OpenDAPGrid(</span>
|
|
725
|
-
<span class="cstat-no" title="statement not covered" > sourceKey,</span>
|
|
726
|
-
<span class="cstat-no" title="statement not covered" > databbox, [latData.length, lonData.length],</span>
|
|
727
|
-
<span class="cstat-no" title="statement not covered" > valData, this.indices, this.latIndex, this.lonIndex,</span>
|
|
728
|
-
<span class="cstat-no" title="statement not covered" > this.latSortOrder, this.lonSortOrder,</span>
|
|
729
|
-
<span class="cstat-no" title="statement not covered" > this.nodata, this.converter)</span>
|
|
730
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
731
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
732
|
-
<span class="cstat-no" title="statement not covered" > makeQuery (bbox, resolution) {</span>
|
|
733
|
-
<span class="cstat-no" title="statement not covered" > const reqMinLat = bbox[0]</span>
|
|
734
|
-
<span class="cstat-no" title="statement not covered" > const reqMinLon = bbox[1]</span>
|
|
735
|
-
<span class="cstat-no" title="statement not covered" > const reqMaxLat = bbox[2]</span>
|
|
736
|
-
<span class="cstat-no" title="statement not covered" > const reqMaxLon = bbox[3]</span>
|
|
737
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
738
|
-
<span class="cstat-no" title="statement not covered" > // compute coordinates indices (assume lat/lon both ascending)</span>
|
|
739
|
-
<span class="cstat-no" title="statement not covered" > let iMinLat = Math.floor((reqMinLat - this.minMaxLat[0]) / this.latStep)</span>
|
|
740
|
-
<span class="cstat-no" title="statement not covered" > let iMinLon = Math.floor((reqMinLon - this.minMaxLon[0]) / this.lonStep)</span>
|
|
741
|
-
<span class="cstat-no" title="statement not covered" > let iMaxLat = Math.ceil((reqMaxLat - this.minMaxLat[0]) / this.latStep)</span>
|
|
742
|
-
<span class="cstat-no" title="statement not covered" > let iMaxLon = Math.ceil((reqMaxLon - this.minMaxLon[0]) / this.lonStep)</span>
|
|
743
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
744
|
-
<span class="cstat-no" title="statement not covered" > // clamp indices</span>
|
|
745
|
-
<span class="cstat-no" title="statement not covered" > iMinLat = Math.min(Math.max(iMinLat, 0), this.latCount - 1)</span>
|
|
746
|
-
<span class="cstat-no" title="statement not covered" > iMinLon = Math.min(Math.max(iMinLon, 0), this.lonCount - 1)</span>
|
|
747
|
-
<span class="cstat-no" title="statement not covered" > iMaxLat = Math.min(Math.max(iMaxLat, 0), this.latCount - 1)</span>
|
|
748
|
-
<span class="cstat-no" title="statement not covered" > iMaxLon = Math.min(Math.max(iMaxLon, 0), this.lonCount - 1)</span>
|
|
749
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
750
|
-
<span class="cstat-no" title="statement not covered" > if (this.latSortOrder === SortOrder.DESCENDING) {</span>
|
|
751
|
-
<span class="cstat-no" title="statement not covered" > const tmp = iMinLat</span>
|
|
752
|
-
<span class="cstat-no" title="statement not covered" > iMinLat = this.latCount - 1 - iMaxLat</span>
|
|
753
|
-
<span class="cstat-no" title="statement not covered" > iMaxLat = this.latCount - 1 - tmp</span>
|
|
754
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
755
|
-
<span class="cstat-no" title="statement not covered" > if (this.lonSortOrder === SortOrder.DESCENDING) {</span>
|
|
756
|
-
<span class="cstat-no" title="statement not covered" > const tmp = iMinLon</span>
|
|
757
|
-
<span class="cstat-no" title="statement not covered" > iMinLon = this.lonCount - 1 - iMaxLon</span>
|
|
758
|
-
<span class="cstat-no" title="statement not covered" > iMaxLon = this.lonCount - 1 - tmp</span>
|
|
759
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
760
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
761
|
-
<span class="cstat-no" title="statement not covered" > // compute ideal stride according to requested resolution</span>
|
|
762
|
-
<span class="cstat-no" title="statement not covered" > const strideLat = Math.max(1, Math.floor(resolution[0] / this.latStep))</span>
|
|
763
|
-
<span class="cstat-no" title="statement not covered" > const strideLon = Math.max(1, Math.floor(resolution[1] / this.lonStep))</span>
|
|
764
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
765
|
-
<span class="cstat-no" title="statement not covered" > // eventually adjust iMLax{Lat,Lon} when using a stride != 1</span>
|
|
766
|
-
<span class="cstat-no" title="statement not covered" > // this ensure we'll get our initial iMin/iMax range no matter</span>
|
|
767
|
-
<span class="cstat-no" title="statement not covered" > // what the stride is</span>
|
|
768
|
-
<span class="cstat-no" title="statement not covered" > if (strideLat > 1) {</span>
|
|
769
|
-
<span class="cstat-no" title="statement not covered" > iMaxLat = Math.min(this.latCount - 1, iMaxLat + strideLat)</span>
|
|
770
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
771
|
-
<span class="cstat-no" title="statement not covered" > if (strideLon > 1) {</span>
|
|
772
|
-
<span class="cstat-no" title="statement not covered" > iMaxLon = Math.min(this.lonCount - 1, iMaxLon + strideLon)</span>
|
|
773
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
774
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
775
|
-
<span class="cstat-no" title="statement not covered" > // These are indices to index in the opendap variable grid, we're filling the</span>
|
|
776
|
-
<span class="cstat-no" title="statement not covered" > // latitude/longitude indices with correct values to cover the requested</span>
|
|
777
|
-
<span class="cstat-no" title="statement not covered" > // bounding box with the requested resolution</span>
|
|
778
|
-
<span class="cstat-no" title="statement not covered" > const indices = [...this.indices]</span>
|
|
779
|
-
<span class="cstat-no" title="statement not covered" > indices[this.latIndex] = `${iMinLat}:${strideLat}:${iMaxLat}`</span>
|
|
780
|
-
<span class="cstat-no" title="statement not covered" > indices[this.lonIndex] = `${iMinLon}:${strideLon}:${iMaxLon}`</span>
|
|
781
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
782
|
-
<span class="cstat-no" title="statement not covered" > const conf = {}</span>
|
|
783
|
-
<span class="cstat-no" title="statement not covered" > conf[this.config.variable] = indices.join('][')</span>
|
|
784
|
-
<span class="cstat-no" title="statement not covered" > return dap.makeQuery(this.config.url, conf)</span>
|
|
785
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
786
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
787
|
-
<span class="cstat-no" title="statement not covered" > async computeMetaDataFromData () {</span>
|
|
788
|
-
<span class="cstat-no" title="statement not covered" > // Query first and last latitude and longitude</span>
|
|
789
|
-
<span class="cstat-no" title="statement not covered" > const query = {}</span>
|
|
790
|
-
<span class="cstat-no" title="statement not covered" > query[this.config.latitude] = `0:${this.latCount - 1}:${this.latCount - 1}`</span>
|
|
791
|
-
<span class="cstat-no" title="statement not covered" > query[this.config.longitude] = `0:${this.lonCount - 1}:${this.lonCount - 1}`</span>
|
|
792
|
-
<span class="cstat-no" title="statement not covered" > const url = dap.makeQuery(this.config.url, query)</span>
|
|
793
|
-
<span class="cstat-no" title="statement not covered" > const res = await dap.fetchData(url)</span>
|
|
794
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
795
|
-
<span class="cstat-no" title="statement not covered" > const latData = res[this.config.latitude]</span>
|
|
796
|
-
<span class="cstat-no" title="statement not covered" > const lonData = res[this.config.longitude]</span>
|
|
797
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
798
|
-
<span class="cstat-no" title="statement not covered" > const lat0 = latData[0]</span>
|
|
799
|
-
<span class="cstat-no" title="statement not covered" > const lat1 = latData[latData.length - 1]</span>
|
|
800
|
-
<span class="cstat-no" title="statement not covered" > this.minMaxLat = [Math.min(lat0, lat1), Math.max(lat0, lat1)]</span>
|
|
801
|
-
<span class="cstat-no" title="statement not covered" > const lon0 = lonData[0] > 180.0 ? lonData[0] - 360.0 : lonData[0]</span>
|
|
802
|
-
<span class="cstat-no" title="statement not covered" > const lon1 = lonData[lonData.length - 1] > 180.0 ? lonData[lonData.length - 1] - 360.0 : lonData[lonData.length - 1]</span>
|
|
803
|
-
<span class="cstat-no" title="statement not covered" > this.minMaxLon = [Math.min(lon0, lon1), Math.max(lon0, lon1)]</span>
|
|
804
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
805
|
-
<span class="cstat-no" title="statement not covered" > // grid resolution</span>
|
|
806
|
-
<span class="cstat-no" title="statement not covered" > this.latStep = (this.minMaxLat[1] - this.minMaxLat[0]) / (this.latCount - 1)</span>
|
|
807
|
-
<span class="cstat-no" title="statement not covered" > this.lonStep = (this.minMaxLon[1] - this.minMaxLon[0]) / (this.lonCount - 1)</span>
|
|
808
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
809
|
-
<span class="cstat-no" title="statement not covered" > // deduce whether lat/lon dimensions are store in ascending or descending order</span>
|
|
810
|
-
<span class="cstat-no" title="statement not covered" > this.latSortOrder = lat0 < lat1 ? SortOrder.ASCENDING : SortOrder.DESCENDING</span>
|
|
811
|
-
<span class="cstat-no" title="statement not covered" > this.lonSortOrder = lon0 < lon1 ? SortOrder.ASCENDING : SortOrder.DESCENDING</span>
|
|
812
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
813
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
814
|
-
<span class="cstat-no" title="statement not covered" > async getDimensionsAsIndices () {</span>
|
|
815
|
-
<span class="cstat-no" title="statement not covered" > // config.dimensionsAsIndices contains indices</span>
|
|
816
|
-
<span class="cstat-no" title="statement not covered" > // config.dimensionsAsValues contains dimension values for which we</span>
|
|
817
|
-
<span class="cstat-no" title="statement not covered" > // need to lookup actual index</span>
|
|
818
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
819
|
-
<span class="cstat-no" title="statement not covered" > const dimensions = {}</span>
|
|
820
|
-
<span class="cstat-no" title="statement not covered" > if (this.config.dimensionsAsIndices) {</span>
|
|
821
|
-
<span class="cstat-no" title="statement not covered" > Object.assign(dimensions, this.config.dimensionsAsIndices)</span>
|
|
822
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
823
|
-
<span class="cstat-no" title="statement not covered" > if (this.config.dimensionsAsValues) {</span>
|
|
824
|
-
<span class="cstat-no" title="statement not covered" > // build a request to query the values for each dimension for which we have a value</span>
|
|
825
|
-
<span class="cstat-no" title="statement not covered" > // const requested = _.keys(this.config.dimensionsAsValues)</span>
|
|
826
|
-
<span class="cstat-no" title="statement not covered" > const variables = _.keys(this.config.dimensionsAsValues)</span>
|
|
827
|
-
<span class="cstat-no" title="statement not covered" > const query = dap.makeQuery(this.config.url, variables)</span>
|
|
828
|
-
<span class="cstat-no" title="statement not covered" > const data = await dap.fetchData(query, null)</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" > // lookup corresponding indices</span>
|
|
830
|
-
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < variables.length; ++i) {</span>
|
|
831
|
-
<span class="cstat-no" title="statement not covered" > const varValues = data[variables[i]]</span>
|
|
832
|
-
<span class="cstat-no" title="statement not covered" > const varValue = this.config.dimensionsAsValues[variables[i]]</span>
|
|
833
|
-
<span class="cstat-no" title="statement not covered" > let valueIndex = -1</span>
|
|
834
|
-
<span class="cstat-no" title="statement not covered" > for (let j = 0; j < varValues.length && valueIndex === -1; ++j) {</span>
|
|
835
|
-
<span class="cstat-no" title="statement not covered" > if (varValues[j] === varValue) { valueIndex = j }</span>
|
|
836
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
837
|
-
<span class="cstat-no" title="statement not covered" > if (valueIndex === -1) {</span>
|
|
838
|
-
<span class="cstat-no" title="statement not covered" > // value not found :(</span>
|
|
839
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`Failed looking up value '${varValue}' for dimension named '${variables[i]}'`)</span>
|
|
840
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
841
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
842
|
-
<span class="cstat-no" title="statement not covered" > dimensions[variables[i]] = valueIndex</span>
|
|
843
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
844
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
845
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
846
|
-
<span class="cstat-no" title="statement not covered" > return dimensions</span>
|
|
847
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
848
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
849
|
-
</pre></td></tr></table></pre>
|
|
850
|
-
|
|
851
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
852
|
-
</div><!-- /wrapper -->
|
|
853
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
854
|
-
Code coverage generated by
|
|
855
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
856
|
-
at 2024-06-26T10:45:51.147Z
|
|
857
|
-
</div>
|
|
858
|
-
<script src="../../prettify.js"></script>
|
|
859
|
-
<script>
|
|
860
|
-
window.onload = function () {
|
|
861
|
-
prettyPrint();
|
|
862
|
-
};
|
|
863
|
-
</script>
|
|
864
|
-
<script src="../../sorter.js"></script>
|
|
865
|
-
<script src="../../block-navigation.js"></script>
|
|
866
|
-
</body>
|
|
867
|
-
</html>
|
|
868
|
-
|