See CHANGELOG
Clone this and run dotnet restore
to install all the dependencies.
.NET Core port of Query SEAD API
License: Other
See CHANGELOG
Clone this and run dotnet restore
to install all the dependencies.
The following must be done:
Curl statement to reproduce error:
curl 'http://address-to-dev-server/api/result/load' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://localhost:8080/' -H 'Origin: http://localhost:8080' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' -H 'Content-Type: application/json; charset=UTF-8' --data-binary '{"facetsConfig":{"requestId":8,"requestType":"populate","targetCode":"geochronology","triggerCode":"geochronology","facetConfigs":[{"facetCode":"geochronology","position":1,"picks":[{"pickType":2,"pickValue":370,"text":370},{"pickType":3,"pickValue":293666,"text":293666}],"textFilter":""}]},"resultConfig":{"requestId":8,"sessionId":"1","viewTypeId":"map","aggregateKeys":["site_level"]}}' --compressed
Error description
The dataCollection
is empty in the response JSON.
Expected behaviour
The dataCollection
attribute should contain all selected sites i.e. same behavior as for calls without selections.
The error occurs only for range-facets. The behavior is correct for discrete facets.
I data->dataCollection arrayen tom. I en request utan selections innehåller dataCollection de valda siterna, vilket är det förväntade resultatet även här.
Detta gäller endast range-facetter, med list-facetter fungerar det som väntat.
SEAD Query API fails to deserialize FacetsConfig when /load is called. The API expects a plain JSON string that can be serialized to "FacetsConfig", and fails when enclosed in outer JSON as member "FacetsConfig". This is a changes behavior in the API.
En "portal" är en viss version av visead som dels ger tillgång till en viss uppsättning filter samt även förändrar alla filters funktion genom att det data som visas i alla filter måste ha en koppling till en metod som är länkad till aktuell portal.
Exempel:
Om portal "Palaeoentomology" är vald och filter "Abundances" är aktiverat så ska alla poster i filtret ha en koppling till någon av metoderna "Palaeoentomology (method_id 3)" eller "Chironomid analysis (method id 6)". Alla poster av abundances som inte har en sådan koppling visas ej i filtret.
Vilka filter som är tillgängliga för en viss portal konfigureras client-side.
General
Palaeoentomology
Archaeobotany
Pollen
Geoarchaeology
Dendrochronology
Ceramic
(Isotopes) - Kommer senare
(Biomarkers) - Kommer senare
Move facet schema DDL and DML från SEAD Query API application to SEAD Change Control System.
Table metainformation.tbl_measured_values
is outdated. and contains errors. There also exist errors caused by non-existing analysis entities (e.g. measured_value_33
).
Under certain circumstances the SQL query generated for setups that have at least one discrete facet with multiple picks take a very long time to execute. The query plan seems to be dependent on the order of the inner joined tables. Also which is somewhat peculiar, the query executes much faster if the picks are explicitly cast to strings instead of integers (which also is the primary key). The query plan indicates that the execution order changes for related tables (at least when tbl_locations and tbl_site_locations).
The Query SEAD API uses a Redis server as temporary cache. The applications fails if the Redis server is unavaliable.
There is no logical reason (as we can deduce) for the use of left join when facets are compiled to SQL-queries. Currently inner joins are only used when there is a explicit criteria on a table. Since the facet system in essence uses inner joins as filter criteria, this rule is not logical and hence removed until otherwise proven necessary.
SEAD Query API DDL.
VSCODE REST config:
POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8
{
"facetsConfig":{
"requestId":2,
"requestType":"populate",
"targetCode":"tbl_denormalized_measured_values_33_0",
"triggerCode":"tbl_denormalized_measured_values_33_0",
"facetConfigs":[
{
"facetCode":"sites",
"position":1,
"picks":[
{
"pickType":1,
"pickValue":261,
"text":261
}
],
"textFilter":""
},
{
"facetCode":"tbl_denormalized_measured_values_33_0",
"position":2,
"picks":[
],
"textFilter":""
}
]
},
"resultConfig":{
"requestId":2,
"sessionId":"1",
"viewTypeId":"map",
"aggregateKeys":[
"site_level"
]
}
}
Timeline implementation requires a time span to be associated with each site. This information should exist in tbl_analysis_entity_ages, but this table is empty. What to do @visead ?
This request payload gives a 500:
{
"facetsConfig": {
"requestId": 1,
"requestType": "populate",
"targetCode": "sites",
"triggerCode": "sites",
"facetConfigs": [
{
"facetCode": "sites",
"position": 1,
"picks": [],
"textFilter": ""
}
]
},
"resultConfig": {
"requestId": 1,
"sessionId": "1",
"viewTypeId": "map",
"aggregateKeys": [ "site_level" ]
}
}
Facets can currently only be expressed using views and tables. This makes it very cumbersome to specify when the data has a logical division by some category (e.g. measured values are logically related to a specific method). This has previously been solved by dumping (duplicating) "denormalized" data into a wide table where each category values in a specific column.
A better approach would be to enable use of UDF as facet target tables, and with category(ies) as parameter.
Command fetch("https://seadserv.humlab.umu.se:8089/api/facets/load"
fails:
{
"credentials":"omit",
"headers": {
"accept":"application/json, text/javascript, */*; q=0.01",
"content-type":"application/json; charset=UTF-8",
"sec-fetch-mode":"cors"
},
"referrer":"http://localhost:8080/",
"referrerPolicy":"no-referrer-when-downgrade",
"body": "see-json-payload-below",
"method":"POST",
"mode":"cors"
};
{
"requestId":1,
"requestType":"populate",
"targetCode":"tbl_denormalized_measured_values_33_0",
"facetConfigs":[ {
"facetCode":"tbl_denormalized_measured_values_33_0",
"position":1,
"picks":[],
"textFilter":""
}]
}
REST:
POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8
{
"requestId": 1,
"requestType": "populate",
"targetCode": "sites",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"picks": [
{
"pickType": 2,
"pickValue": 100,
"text": 100
},
{
"pickType": 3,
"pickValue": 200,
"text": 200
}
],
"textFilter": ""
},
{
"facetCode": "sites",
"position": 2,
"picks": [],
"textFilter": ""
}
]
}
Folder needs to be created in Dockerfile.
Following request results in an internal server error (500)
fetch("https://seadserv.humlab.umu.se:8089/api/facets/load", {"credentials":"omit","headers":{"accept":"application/json, text/javascript, */*; q=0.01","content-type":"application/json; charset=UTF-8","sec-fetch-mode":"cors"},"referrer":"http://localhost:8080/","referrerPolicy":"no-referrer-when-downgrade","body":"{\"requestId\":1,\"requestType\":\"populate\",\"targetCode\":\"sites\",\"facetConfigs\":[{\"facetCode\":\"sites\",\"position\":1,\"picks\":[],\"textFilter\":\"\"}]}","method":"POST","mode":"cors"});
Internal server error on trying to load Country filter with 2 picks + LOI filter with picks
Example:
POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8
{"facetsConfig":{"requestId":3,"requestType":"populate","targetCode":"tbl_denormalized_measured_values_32","triggerCode":"tbl_denormalized_measured_values_32","facetConfigs":[{"facetCode":"country","position":1,"picks":[{"pickType":1,"pickValue":162,"text":162},{"pickType":1,"pickValue":205,"text":205}],"textFilter":""},{"facetCode":"tbl_denormalized_measured_values_32","position":2,"picks":[{"pickType":2,"pickValue":0.2,"text":0.2},{"pickType":3,"pickValue":8.2,"text":8.2}],"textFilter":""}]},"resultConfig":{"requestId":3,"sessionId":"1","viewTypeId":"tabular","aggregateKeys":["site_level"]}}
This is related to #35.
Svaret på en range-facet load ger inte hela det efterfrågade spannet.
The current implementation of measured value facets uses aggregated tables. There is no system in place that updates this data.
This example query returns a result where the biblio_author column is null. In sead_master_8 there is author information for this sample group.
SELECT tbl_sample_group_references.biblio_id,
tbl_sample_group_references.sample_group_reference_id,
tbl_sample_group_references.sample_group_id,
tbl_biblio.authors AS biblio_author,
tbl_biblio.bugs_reference AS biblio_bugs_reference,
tbl_biblio.doi AS biblio_doi,
tbl_biblio.isbn AS biblio_isbn,
tbl_biblio.notes AS biblio_notes,
tbl_biblio.title AS biblio_title,
tbl_biblio.year AS biblio_year,
tbl_biblio.full_reference AS biblio_full_reference,
tbl_biblio.url AS biblio_url
FROM public.tbl_sample_group_references
LEFT JOIN public.tbl_biblio ON tbl_sample_group_references.biblio_id = tbl_biblio.biblio_id
WHERE public.tbl_sample_group_references.sample_group_id = 1
When using the API for fetching filters via https://seadserv.humlab.umu.se:8089/api/facets only the facet group key/id is given, we also need a pretty-printed title for the group, similar to the DisplayTitle attribute given for the filter name in the link above.
Create and Deploy Docker image(s) that contains:
fetch("https://seadserv.humlab.umu.se:8089/api/facets/load", {"credentials":"omit","headers":{"accept":"application/json, text/javascript, /; q=0.01","content-type":"application/json; charset=UTF-8","sec-fetch-mode":"cors"},"referrer":"http://localhost:8080/viewstate/Jbmdf7aI","referrerPolicy":"no-referrer-when-downgrade","body":"{\"requestId\":1,\"requestType\":\"populate\",\"targetCode\":\"tbl_denormalized_measured_values_32\",\"facetConfigs\":[{\"facetCode\":\"tbl_denormalized_measured_values_32\",\"position\":1,\"picks\":[50, 100],"textFilter":""}]}","method":"POST","mode":"cors"});
Certain queries take long time to execute, even though result should be available in cache.
Cache hits/miss ratio needs to be investigated.
Also on: humlab-sead/sead_browser_client#13
REST-plugin config:
POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8
{
"facetsConfig":
{"requestId":4,"requestType":"populate","targetCode":"sample_groups","triggerCode":"sample_groups",
"facetConfigs":[{"facetCode":"sample_groups","position":1,"picks":[{"pickType":1,"pickValue":510,"text":510}],"textFilter":""}]},
"resultConfig":{"requestId":4,"sessionId":"1","viewTypeId":"map","aggregateKeys":["site_level"]}}
Would be good to have filter descriptions to make into tooltips when hovering over filters in the menu. This existed in the static JSON filter definition but not in the database and so these are lost when transitioning. The previously defined description (which may need review) can be found in the follow JSON:
[
{
"facetGroupKey":"space",
"displayTitle":"Space",
"items":[
{
"facetCode":"sample_groups",
"displayTitle":"Sample group",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [
"sites"
],
"description": "A collection of samples, usually defined by the excavator or collector",
"enabled": true
},
{
"facetCode":"sites",
"displayTitle":"Site",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "General name for the excavation or sampling location",
"enabled": true
},
{
"facetCode":"country",
"displayTitle":"Country",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "The name of the country, at the time of collection, in which the samples were collected",
"enabled": true
}
]
},
{
"facetGroupKey":"time",
"displayTitle":"Time",
"items":[
{
"facetCode":"geochronology",
"displayTitle":"Geochronology",
"facetGroupKey":"time",
"facetTypeKey":"range",
"aggregateType":"",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Sample ages as retrieved through absolute methods such as radiocarbon dating or other radiometric methods (in method based years before present - e.g. 14C years)",
"enabled": false
},
{
"facetId":11,
"facetCode":"relative_age_name",
"displayTitle":"Time periods",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Age of sample as defined by association with a (often regionally specific) cultural or geological period (in years before present)",
"enabled": true
}
]
},
{
"facetGroupKey":"ecology",
"displayTitle":"Ecology",
"items":[
{
"facetCode":"ecocode",
"displayTitle":"Ecological/cultural category",
"facetGroupKey":"ecology",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Ecological category (trait) or cultural relevance of organisms based on a classification system",
"enabled": true
},
{
"facetId":30,
"facetCode":"ecocode_system",
"displayTitle":"Eco code system",
"facetGroupKey":"ecology",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Ecological or cultural organism classification system (which groups items in the ecological/cultural category filter)",
"enabled": true
}
]
},
{
"facetGroupKey":"method",
"displayTitle":"Method",
"items":[
{
"facetCode":"tbl_denormalized_measured_values_33_0",
"displayTitle":"MS ",
"facetTypeKey":"range",
"aggregateType":"",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "",
"enabled": true
},
{
"facetCode":"tbl_denormalized_measured_values_33_82",
"displayTitle":"MS Heating 550",
"facetTypeKey":"range",
"aggregateType":"",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "",
"enabled": true
},
{
"facetCode":"tbl_denormalized_measured_values_32",
"displayTitle":"LOI",
"facetTypeKey":"range",
"aggregateType":"",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Loss of ignition",
"enabled": true
},
{
"facetCode":"tbl_denormalized_measured_values_37",
"displayTitle":"P°",
"facetTypeKey":"range",
"aggregateType":"",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "",
"enabled": true
}
]
},
{
"facetGroupKey":"taxonomy",
"displayTitle":"Taxonomy",
"items":[
{
"facetCode":"family",
"displayTitle":"Family",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Taxonomic family",
"enabled": true
},
{
"facetCode":"genus",
"displayTitle":"Genus",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Taxonomic genus (under family)",
"enabled": true
},
{
"facetCode":"species",
"displayTitle":"Taxa",
"facetTypeKey":"discrete",
"aggregateType":"sum",
"aggregateTitle":"sum of Abundance",
"dependencies": [],
"description": "Taxonomic species (under genus)",
"enabled": true
},
{
"facetCode":"species_author",
"displayTitle":"Authority",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Authority of the taxonomic name (not used for all species)",
"enabled": true
}
]
},
{
"facetGroupKey":"testing",
"displayTitle":"Testing",
"items":[
{
"facetCode":"dataset_master",
"displayTitle":"Master datasets",
"facetTypeKey":"discrete",
"aggregateType":"count",
"aggregateTitle":"Number of samples",
"dependencies": [],
"description": "Master datasets",
"enabled": true
}
]
}
]
In certain cases the target table of the facet is assigned an alias that belongs to a related table.
SEAD Query API log folder must be mounted on a host folder.
Container starts and seems to be working, but cause needs to be investigated.
When loading a range facet which has selections/picks, the full range of (the range without selections) needs to be hinted at to the client by including just the max & min values.
Like this:
facetObject.fullextent = [0, 2904]
Client can't render the slider properly without this information.
Ability to export data from SEAD as CSV using SuperSEAD
REST-plugin config:
POST https://seadserv.humlab.umu.se:8089/api/result/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8
{"facetsConfig":{"requestId":2,"requestType":"populate","targetCode":"country","triggerCode":"country","facetConfigs":[{"facetCode":"country","position":1,"picks":[{"pickType":1,"pickValue":64,"text":64}],"textFilter":""}]},"resultConfig":{"requestId":2,"sessionId":"1","viewTypeId":"map","aggregateKeys":["site_level"]}}
SEAD Query API uses .NET core default logging which is very rudimentary. Instead, a better framework (such as Serilog) should be added that improved the logging.
The base table of the target facet occurs twice in the output. This table should not be part of the route finding.
Service doesn't support the pre-flight OPTIONS requests being sent when XHR is performed, returning 404 for these.
When a request is made for data for the MS filter with picks set to 900 => 1200, one of the categories/spans returned is listed as 1034 => 1036 with a count of 5.
When requesting higher resolution data with the span 1030 => 1037, we get the categories 1034 => 1035 and 1035 => 1036 which each has a count of 5 observations.
Shouldn't the 1034 => 1036 category then have a total of 10 observations?
REST configs:
POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8
{
"requestId": 1,
"requestType": "populate",
"targetCode": "tbl_denormalized_measured_values_33_0",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"picks": [
{
"pickType": 2,
"pickValue": 900,
"text": 900
},
{
"pickType": 3,
"pickValue": 1200,
"text": 1200
}
],
"textFilter": ""
}
]
}
POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8
{
"requestId": 1,
"requestType": "populate",
"targetCode": "tbl_denormalized_measured_values_33_0",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"picks": [
{
"pickType": 2,
"pickValue": 1030,
"text": 1030
},
{
"pickType": 3,
"pickValue": 1037,
"text": 1037
}
],
"textFilter": ""
}
]
}
Typo in type cast causes syntax error in SQL.
Database (sead_master_8 on db1.humlab.umu.se) contains values up to 2981, but json result only contains values up to 2904.
Response json:
{
"facetsConfig": {
"requestId": "1",
"requestType": "populate",
"targetCode": "tbl_denormalized_measured_values_33_0",
"triggerCode": "",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"textFilter": "",
"picks": []
}
]
},
"items": [
{
"category": "0 => 24",
"displayName": "0 to 24",
"name": "0 to 24",
"count": 42153,
"extent": [
0,
24
]
},
{
"category": "24 => 48",
"displayName": "24 to 48",
"name": "24 to 48",
"count": 19340,
"extent": [
24,
48
]
},
{
"category": "48 => 72",
"displayName": "48 to 72",
"name": "48 to 72",
"count": 9360,
"extent": [
48,
72
]
},
{
"category": "72 => 96",
"displayName": "72 to 96",
"name": "72 to 96",
"count": 3415,
"extent": [
72,
96
]
},
{
"category": "96 => 120",
"displayName": "96 to 120",
"name": "96 to 120",
"count": 2498,
"extent": [
96,
120
]
},
{
"category": "120 => 144",
"displayName": "120 to 144",
"name": "120 to 144",
"count": 1995,
"extent": [
120,
144
]
},
{
"category": "144 => 168",
"displayName": "144 to 168",
"name": "144 to 168",
"count": 1474,
"extent": [
144,
168
]
},
{
"category": "168 => 192",
"displayName": "168 to 192",
"name": "168 to 192",
"count": 1195,
"extent": [
168,
192
]
},
{
"category": "192 => 216",
"displayName": "192 to 216",
"name": "192 to 216",
"count": 988,
"extent": [
192,
216
]
},
{
"category": "216 => 240",
"displayName": "216 to 240",
"name": "216 to 240",
"count": 811,
"extent": [
216,
240
]
},
{
"category": "240 => 264",
"displayName": "240 to 264",
"name": "240 to 264",
"count": 689,
"extent": [
240,
264
]
},
{
"category": "264 => 288",
"displayName": "264 to 288",
"name": "264 to 288",
"count": 703,
"extent": [
264,
288
]
},
{
"category": "288 => 312",
"displayName": "288 to 312",
"name": "288 to 312",
"count": 535,
"extent": [
288,
312
]
},
{
"category": "312 => 336",
"displayName": "312 to 336",
"name": "312 to 336",
"count": 508,
"extent": [
312,
336
]
},
{
"category": "336 => 360",
"displayName": "336 to 360",
"name": "336 to 360",
"count": 444,
"extent": [
336,
360
]
},
{
"category": "360 => 384",
"displayName": "360 to 384",
"name": "360 to 384",
"count": 402,
"extent": [
360,
384
]
},
{
"category": "384 => 408",
"displayName": "384 to 408",
"name": "384 to 408",
"count": 343,
"extent": [
384,
408
]
},
{
"category": "408 => 432",
"displayName": "408 to 432",
"name": "408 to 432",
"count": 257,
"extent": [
408,
432
]
},
{
"category": "432 => 456",
"displayName": "432 to 456",
"name": "432 to 456",
"count": 280,
"extent": [
432,
456
]
},
{
"category": "456 => 480",
"displayName": "456 to 480",
"name": "456 to 480",
"count": 205,
"extent": [
456,
480
]
},
{
"category": "480 => 504",
"displayName": "480 to 504",
"name": "480 to 504",
"count": 233,
"extent": [
480,
504
]
},
{
"category": "504 => 528",
"displayName": "504 to 528",
"name": "504 to 528",
"count": 174,
"extent": [
504,
528
]
},
{
"category": "528 => 552",
"displayName": "528 to 552",
"name": "528 to 552",
"count": 253,
"extent": [
528,
552
]
},
{
"category": "552 => 576",
"displayName": "552 to 576",
"name": "552 to 576",
"count": 214,
"extent": [
552,
576
]
},
{
"category": "576 => 600",
"displayName": "576 to 600",
"name": "576 to 600",
"count": 182,
"extent": [
576,
600
]
},
{
"category": "600 => 624",
"displayName": "600 to 624",
"name": "600 to 624",
"count": 134,
"extent": [
600,
624
]
},
{
"category": "624 => 648",
"displayName": "624 to 648",
"name": "624 to 648",
"count": 99,
"extent": [
624,
648
]
},
{
"category": "648 => 672",
"displayName": "648 to 672",
"name": "648 to 672",
"count": 84,
"extent": [
648,
672
]
},
{
"category": "672 => 696",
"displayName": "672 to 696",
"name": "672 to 696",
"count": 77,
"extent": [
672,
696
]
},
{
"category": "696 => 720",
"displayName": "696 to 720",
"name": "696 to 720",
"count": 37,
"extent": [
696,
720
]
},
{
"category": "720 => 744",
"displayName": "720 to 744",
"name": "720 to 744",
"count": 25,
"extent": [
720,
744
]
},
{
"category": "744 => 768",
"displayName": "744 to 768",
"name": "744 to 768",
"count": 26,
"extent": [
744,
768
]
},
{
"category": "768 => 792",
"displayName": "768 to 792",
"name": "768 to 792",
"count": 31,
"extent": [
768,
792
]
},
{
"category": "792 => 816",
"displayName": "792 to 816",
"name": "792 to 816",
"count": 24,
"extent": [
792,
816
]
},
{
"category": "816 => 840",
"displayName": "816 to 840",
"name": "816 to 840",
"count": 32,
"extent": [
816,
840
]
},
{
"category": "840 => 864",
"displayName": "840 to 864",
"name": "840 to 864",
"count": 31,
"extent": [
840,
864
]
},
{
"category": "864 => 888",
"displayName": "864 to 888",
"name": "864 to 888",
"count": 19,
"extent": [
864,
888
]
},
{
"category": "888 => 912",
"displayName": "888 to 912",
"name": "888 to 912",
"count": 10,
"extent": [
888,
912
]
},
{
"category": "912 => 936",
"displayName": "912 to 936",
"name": "912 to 936",
"count": 22,
"extent": [
912,
936
]
},
{
"category": "936 => 960",
"displayName": "936 to 960",
"name": "936 to 960",
"count": 11,
"extent": [
936,
960
]
},
{
"category": "960 => 984",
"displayName": "960 to 984",
"name": "960 to 984",
"count": 9,
"extent": [
960,
984
]
},
{
"category": "984 => 1008",
"displayName": "984 to 1008",
"name": "984 to 1008",
"count": 5,
"extent": [
984,
1008
]
},
{
"category": "1008 => 1032",
"displayName": "1008 to 1032",
"name": "1008 to 1032",
"count": 1,
"extent": [
1008,
1032
]
},
{
"category": "1032 => 1056",
"displayName": "1032 to 1056",
"name": "1032 to 1056",
"count": 8,
"extent": [
1032,
1056
]
},
{
"category": "1056 => 1080",
"displayName": "1056 to 1080",
"name": "1056 to 1080",
"count": 13,
"extent": [
1056,
1080
]
},
{
"category": "1080 => 1104",
"displayName": "1080 to 1104",
"name": "1080 to 1104",
"count": 6,
"extent": [
1080,
1104
]
},
{
"category": "1104 => 1128",
"displayName": "1104 to 1128",
"name": "1104 to 1128",
"count": 7,
"extent": [
1104,
1128
]
},
{
"category": "1128 => 1152",
"displayName": "1128 to 1152",
"name": "1128 to 1152",
"count": 5,
"extent": [
1128,
1152
]
},
{
"category": "1152 => 1176",
"displayName": "1152 to 1176",
"name": "1152 to 1176",
"count": 5,
"extent": [
1152,
1176
]
},
{
"category": "1176 => 1200",
"displayName": "1176 to 1200",
"name": "1176 to 1200",
"count": 3,
"extent": [
1176,
1200
]
},
{
"category": "1200 => 1224",
"displayName": "1200 to 1224",
"name": "1200 to 1224",
"count": 7,
"extent": [
1200,
1224
]
},
{
"category": "1224 => 1248",
"displayName": "1224 to 1248",
"name": "1224 to 1248",
"count": 2,
"extent": [
1224,
1248
]
},
{
"category": "1248 => 1272",
"displayName": "1248 to 1272",
"name": "1248 to 1272",
"count": 8,
"extent": [
1248,
1272
]
},
{
"category": "1272 => 1296",
"displayName": "1272 to 1296",
"name": "1272 to 1296",
"count": 10,
"extent": [
1272,
1296
]
},
{
"category": "1296 => 1320",
"displayName": "1296 to 1320",
"name": "1296 to 1320",
"count": 0,
"extent": [
1296,
1320
]
},
{
"category": "1320 => 1344",
"displayName": "1320 to 1344",
"name": "1320 to 1344",
"count": 0,
"extent": [
1320,
1344
]
},
{
"category": "1344 => 1368",
"displayName": "1344 to 1368",
"name": "1344 to 1368",
"count": 0,
"extent": [
1344,
1368
]
},
{
"category": "1368 => 1392",
"displayName": "1368 to 1392",
"name": "1368 to 1392",
"count": 8,
"extent": [
1368,
1392
]
},
{
"category": "1392 => 1416",
"displayName": "1392 to 1416",
"name": "1392 to 1416",
"count": 0,
"extent": [
1392,
1416
]
},
{
"category": "1416 => 1440",
"displayName": "1416 to 1440",
"name": "1416 to 1440",
"count": 0,
"extent": [
1416,
1440
]
},
{
"category": "1440 => 1464",
"displayName": "1440 to 1464",
"name": "1440 to 1464",
"count": 2,
"extent": [
1440,
1464
]
},
{
"category": "1464 => 1488",
"displayName": "1464 to 1488",
"name": "1464 to 1488",
"count": 3,
"extent": [
1464,
1488
]
},
{
"category": "1488 => 1512",
"displayName": "1488 to 1512",
"name": "1488 to 1512",
"count": 0,
"extent": [
1488,
1512
]
},
{
"category": "1512 => 1536",
"displayName": "1512 to 1536",
"name": "1512 to 1536",
"count": 0,
"extent": [
1512,
1536
]
},
{
"category": "1536 => 1560",
"displayName": "1536 to 1560",
"name": "1536 to 1560",
"count": 0,
"extent": [
1536,
1560
]
},
{
"category": "1560 => 1584",
"displayName": "1560 to 1584",
"name": "1560 to 1584",
"count": 2,
"extent": [
1560,
1584
]
},
{
"category": "1584 => 1608",
"displayName": "1584 to 1608",
"name": "1584 to 1608",
"count": 0,
"extent": [
1584,
1608
]
},
{
"category": "1608 => 1632",
"displayName": "1608 to 1632",
"name": "1608 to 1632",
"count": 0,
"extent": [
1608,
1632
]
},
{
"category": "1632 => 1656",
"displayName": "1632 to 1656",
"name": "1632 to 1656",
"count": 0,
"extent": [
1632,
1656
]
},
{
"category": "1656 => 1680",
"displayName": "1656 to 1680",
"name": "1656 to 1680",
"count": 0,
"extent": [
1656,
1680
]
},
{
"category": "1680 => 1704",
"displayName": "1680 to 1704",
"name": "1680 to 1704",
"count": 3,
"extent": [
1680,
1704
]
},
{
"category": "1704 => 1728",
"displayName": "1704 to 1728",
"name": "1704 to 1728",
"count": 0,
"extent": [
1704,
1728
]
},
{
"category": "1728 => 1752",
"displayName": "1728 to 1752",
"name": "1728 to 1752",
"count": 1,
"extent": [
1728,
1752
]
},
{
"category": "1752 => 1776",
"displayName": "1752 to 1776",
"name": "1752 to 1776",
"count": 5,
"extent": [
1752,
1776
]
},
{
"category": "1776 => 1800",
"displayName": "1776 to 1800",
"name": "1776 to 1800",
"count": 0,
"extent": [
1776,
1800
]
},
{
"category": "1800 => 1824",
"displayName": "1800 to 1824",
"name": "1800 to 1824",
"count": 0,
"extent": [
1800,
1824
]
},
{
"category": "1824 => 1848",
"displayName": "1824 to 1848",
"name": "1824 to 1848",
"count": 5,
"extent": [
1824,
1848
]
},
{
"category": "1848 => 1872",
"displayName": "1848 to 1872",
"name": "1848 to 1872",
"count": 0,
"extent": [
1848,
1872
]
},
{
"category": "1872 => 1896",
"displayName": "1872 to 1896",
"name": "1872 to 1896",
"count": 0,
"extent": [
1872,
1896
]
},
{
"category": "1896 => 1920",
"displayName": "1896 to 1920",
"name": "1896 to 1920",
"count": 2,
"extent": [
1896,
1920
]
},
{
"category": "1920 => 1944",
"displayName": "1920 to 1944",
"name": "1920 to 1944",
"count": 0,
"extent": [
1920,
1944
]
},
{
"category": "1944 => 1968",
"displayName": "1944 to 1968",
"name": "1944 to 1968",
"count": 0,
"extent": [
1944,
1968
]
},
{
"category": "1968 => 1992",
"displayName": "1968 to 1992",
"name": "1968 to 1992",
"count": 0,
"extent": [
1968,
1992
]
},
{
"category": "1992 => 2016",
"displayName": "1992 to 2016",
"name": "1992 to 2016",
"count": 0,
"extent": [
1992,
2016
]
},
{
"category": "2016 => 2040",
"displayName": "2016 to 2040",
"name": "2016 to 2040",
"count": 5,
"extent": [
2016,
2040
]
},
{
"category": "2040 => 2064",
"displayName": "2040 to 2064",
"name": "2040 to 2064",
"count": 0,
"extent": [
2040,
2064
]
},
{
"category": "2064 => 2088",
"displayName": "2064 to 2088",
"name": "2064 to 2088",
"count": 0,
"extent": [
2064,
2088
]
},
{
"category": "2088 => 2112",
"displayName": "2088 to 2112",
"name": "2088 to 2112",
"count": 0,
"extent": [
2088,
2112
]
},
{
"category": "2112 => 2136",
"displayName": "2112 to 2136",
"name": "2112 to 2136",
"count": 0,
"extent": [
2112,
2136
]
},
{
"category": "2136 => 2160",
"displayName": "2136 to 2160",
"name": "2136 to 2160",
"count": 0,
"extent": [
2136,
2160
]
},
{
"category": "2160 => 2184",
"displayName": "2160 to 2184",
"name": "2160 to 2184",
"count": 0,
"extent": [
2160,
2184
]
},
{
"category": "2184 => 2208",
"displayName": "2184 to 2208",
"name": "2184 to 2208",
"count": 0,
"extent": [
2184,
2208
]
},
{
"category": "2208 => 2232",
"displayName": "2208 to 2232",
"name": "2208 to 2232",
"count": 0,
"extent": [
2208,
2232
]
},
{
"category": "2232 => 2256",
"displayName": "2232 to 2256",
"name": "2232 to 2256",
"count": 0,
"extent": [
2232,
2256
]
},
{
"category": "2256 => 2280",
"displayName": "2256 to 2280",
"name": "2256 to 2280",
"count": 0,
"extent": [
2256,
2280
]
},
{
"category": "2280 => 2304",
"displayName": "2280 to 2304",
"name": "2280 to 2304",
"count": 0,
"extent": [
2280,
2304
]
},
{
"category": "2304 => 2328",
"displayName": "2304 to 2328",
"name": "2304 to 2328",
"count": 0,
"extent": [
2304,
2328
]
},
{
"category": "2328 => 2352",
"displayName": "2328 to 2352",
"name": "2328 to 2352",
"count": 0,
"extent": [
2328,
2352
]
},
{
"category": "2352 => 2376",
"displayName": "2352 to 2376",
"name": "2352 to 2376",
"count": 0,
"extent": [
2352,
2376
]
},
{
"category": "2376 => 2400",
"displayName": "2376 to 2400",
"name": "2376 to 2400",
"count": 0,
"extent": [
2376,
2400
]
},
{
"category": "2400 => 2424",
"displayName": "2400 to 2424",
"name": "2400 to 2424",
"count": 0,
"extent": [
2400,
2424
]
},
{
"category": "2424 => 2448",
"displayName": "2424 to 2448",
"name": "2424 to 2448",
"count": 0,
"extent": [
2424,
2448
]
},
{
"category": "2448 => 2472",
"displayName": "2448 to 2472",
"name": "2448 to 2472",
"count": 0,
"extent": [
2448,
2472
]
},
{
"category": "2472 => 2496",
"displayName": "2472 to 2496",
"name": "2472 to 2496",
"count": 0,
"extent": [
2472,
2496
]
},
{
"category": "2496 => 2520",
"displayName": "2496 to 2520",
"name": "2496 to 2520",
"count": 0,
"extent": [
2496,
2520
]
},
{
"category": "2520 => 2544",
"displayName": "2520 to 2544",
"name": "2520 to 2544",
"count": 0,
"extent": [
2520,
2544
]
},
{
"category": "2544 => 2568",
"displayName": "2544 to 2568",
"name": "2544 to 2568",
"count": 0,
"extent": [
2544,
2568
]
},
{
"category": "2568 => 2592",
"displayName": "2568 to 2592",
"name": "2568 to 2592",
"count": 0,
"extent": [
2568,
2592
]
},
{
"category": "2592 => 2616",
"displayName": "2592 to 2616",
"name": "2592 to 2616",
"count": 0,
"extent": [
2592,
2616
]
},
{
"category": "2616 => 2640",
"displayName": "2616 to 2640",
"name": "2616 to 2640",
"count": 0,
"extent": [
2616,
2640
]
},
{
"category": "2640 => 2664",
"displayName": "2640 to 2664",
"name": "2640 to 2664",
"count": 0,
"extent": [
2640,
2664
]
},
{
"category": "2664 => 2688",
"displayName": "2664 to 2688",
"name": "2664 to 2688",
"count": 0,
"extent": [
2664,
2688
]
},
{
"category": "2688 => 2712",
"displayName": "2688 to 2712",
"name": "2688 to 2712",
"count": 0,
"extent": [
2688,
2712
]
},
{
"category": "2712 => 2736",
"displayName": "2712 to 2736",
"name": "2712 to 2736",
"count": 0,
"extent": [
2712,
2736
]
},
{
"category": "2736 => 2760",
"displayName": "2736 to 2760",
"name": "2736 to 2760",
"count": 0,
"extent": [
2736,
2760
]
},
{
"category": "2760 => 2784",
"displayName": "2760 to 2784",
"name": "2760 to 2784",
"count": 0,
"extent": [
2760,
2784
]
},
{
"category": "2784 => 2808",
"displayName": "2784 to 2808",
"name": "2784 to 2808",
"count": 0,
"extent": [
2784,
2808
]
},
{
"category": "2808 => 2832",
"displayName": "2808 to 2832",
"name": "2808 to 2832",
"count": 0,
"extent": [
2808,
2832
]
},
{
"category": "2832 => 2856",
"displayName": "2832 to 2856",
"name": "2832 to 2856",
"count": 0,
"extent": [
2832,
2856
]
},
{
"category": "2856 => 2880",
"displayName": "2856 to 2880",
"name": "2856 to 2880",
"count": 0,
"extent": [
2856,
2880
]
},
{
"category": "2880 => 2904",
"displayName": "2880 to 2904",
"name": "2880 to 2904",
"count": 5,
"extent": [
2880,
2904
]
}
],
"distribution": {
"0 => 24": {
"extent": [
0,
24
],
"category": "0 => 24",
"count": 42153
},
"24 => 48": {
"extent": [
24,
48
],
"category": "24 => 48",
"count": 19340
},
"48 => 72": {
"extent": [
48,
72
],
"category": "48 => 72",
"count": 9360
},
"72 => 96": {
"extent": [
72,
96
],
"category": "72 => 96",
"count": 3415
},
"96 => 120": {
"extent": [
96,
120
],
"category": "96 => 120",
"count": 2498
},
"120 => 144": {
"extent": [
120,
144
],
"category": "120 => 144",
"count": 1995
},
"144 => 168": {
"extent": [
144,
168
],
"category": "144 => 168",
"count": 1474
},
"168 => 192": {
"extent": [
168,
192
],
"category": "168 => 192",
"count": 1195
},
"192 => 216": {
"extent": [
192,
216
],
"category": "192 => 216",
"count": 988
},
"216 => 240": {
"extent": [
216,
240
],
"category": "216 => 240",
"count": 811
},
"240 => 264": {
"extent": [
240,
264
],
"category": "240 => 264",
"count": 689
},
"264 => 288": {
"extent": [
264,
288
],
"category": "264 => 288",
"count": 703
},
"288 => 312": {
"extent": [
288,
312
],
"category": "288 => 312",
"count": 535
},
"312 => 336": {
"extent": [
312,
336
],
"category": "312 => 336",
"count": 508
},
"336 => 360": {
"extent": [
336,
360
],
"category": "336 => 360",
"count": 444
},
"360 => 384": {
"extent": [
360,
384
],
"category": "360 => 384",
"count": 402
},
"384 => 408": {
"extent": [
384,
408
],
"category": "384 => 408",
"count": 343
},
"408 => 432": {
"extent": [
408,
432
],
"category": "408 => 432",
"count": 257
},
"432 => 456": {
"extent": [
432,
456
],
"category": "432 => 456",
"count": 280
},
"456 => 480": {
"extent": [
456,
480
],
"category": "456 => 480",
"count": 205
},
"480 => 504": {
"extent": [
480,
504
],
"category": "480 => 504",
"count": 233
},
"504 => 528": {
"extent": [
504,
528
],
"category": "504 => 528",
"count": 174
},
"528 => 552": {
"extent": [
528,
552
],
"category": "528 => 552",
"count": 253
},
"552 => 576": {
"extent": [
552,
576
],
"category": "552 => 576",
"count": 214
},
"576 => 600": {
"extent": [
576,
600
],
"category": "576 => 600",
"count": 182
},
"600 => 624": {
"extent": [
600,
624
],
"category": "600 => 624",
"count": 134
},
"624 => 648": {
"extent": [
624,
648
],
"category": "624 => 648",
"count": 99
},
"648 => 672": {
"extent": [
648,
672
],
"category": "648 => 672",
"count": 84
},
"672 => 696": {
"extent": [
672,
696
],
"category": "672 => 696",
"count": 77
},
"696 => 720": {
"extent": [
696,
720
],
"category": "696 => 720",
"count": 37
},
"720 => 744": {
"extent": [
720,
744
],
"category": "720 => 744",
"count": 25
},
"744 => 768": {
"extent": [
744,
768
],
"category": "744 => 768",
"count": 26
},
"768 => 792": {
"extent": [
768,
792
],
"category": "768 => 792",
"count": 31
},
"792 => 816": {
"extent": [
792,
816
],
"category": "792 => 816",
"count": 24
},
"816 => 840": {
"extent": [
816,
840
],
"category": "816 => 840",
"count": 32
},
"840 => 864": {
"extent": [
840,
864
],
"category": "840 => 864",
"count": 31
},
"864 => 888": {
"extent": [
864,
888
],
"category": "864 => 888",
"count": 19
},
"888 => 912": {
"extent": [
888,
912
],
"category": "888 => 912",
"count": 10
},
"912 => 936": {
"extent": [
912,
936
],
"category": "912 => 936",
"count": 22
},
"936 => 960": {
"extent": [
936,
960
],
"category": "936 => 960",
"count": 11
},
"960 => 984": {
"extent": [
960,
984
],
"category": "960 => 984",
"count": 9
},
"984 => 1008": {
"extent": [
984,
1008
],
"category": "984 => 1008",
"count": 5
},
"1008 => 1032": {
"extent": [
1008,
1032
],
"category": "1008 => 1032",
"count": 1
},
"1032 => 1056": {
"extent": [
1032,
1056
],
"category": "1032 => 1056",
"count": 8
},
"1056 => 1080": {
"extent": [
1056,
1080
],
"category": "1056 => 1080",
"count": 13
},
"1080 => 1104": {
"extent": [
1080,
1104
],
"category": "1080 => 1104",
"count": 6
},
"1104 => 1128": {
"extent": [
1104,
1128
],
"category": "1104 => 1128",
"count": 7
},
"1128 => 1152": {
"extent": [
1128,
1152
],
"category": "1128 => 1152",
"count": 5
},
"1152 => 1176": {
"extent": [
1152,
1176
],
"category": "1152 => 1176",
"count": 5
},
"1176 => 1200": {
"extent": [
1176,
1200
],
"category": "1176 => 1200",
"count": 3
},
"1200 => 1224": {
"extent": [
1200,
1224
],
"category": "1200 => 1224",
"count": 7
},
"1224 => 1248": {
"extent": [
1224,
1248
],
"category": "1224 => 1248",
"count": 2
},
"1248 => 1272": {
"extent": [
1248,
1272
],
"category": "1248 => 1272",
"count": 8
},
"1272 => 1296": {
"extent": [
1272,
1296
],
"category": "1272 => 1296",
"count": 10
},
"1296 => 1320": {
"extent": [
1296,
1320
],
"category": "1296 => 1320",
"count": 0
},
"1320 => 1344": {
"extent": [
1320,
1344
],
"category": "1320 => 1344",
"count": 0
},
"1344 => 1368": {
"extent": [
1344,
1368
],
"category": "1344 => 1368",
"count": 0
},
"1368 => 1392": {
"extent": [
1368,
1392
],
"category": "1368 => 1392",
"count": 8
},
"1392 => 1416": {
"extent": [
1392,
1416
],
"category": "1392 => 1416",
"count": 0
},
"1416 => 1440": {
"extent": [
1416,
1440
],
"category": "1416 => 1440",
"count": 0
},
"1440 => 1464": {
"extent": [
1440,
1464
],
"category": "1440 => 1464",
"count": 2
},
"1464 => 1488": {
"extent": [
1464,
1488
],
"category": "1464 => 1488",
"count": 3
},
"1488 => 1512": {
"extent": [
1488,
1512
],
"category": "1488 => 1512",
"count": 0
},
"1512 => 1536": {
"extent": [
1512,
1536
],
"category": "1512 => 1536",
"count": 0
},
"1536 => 1560": {
"extent": [
1536,
1560
],
"category": "1536 => 1560",
"count": 0
},
"1560 => 1584": {
"extent": [
1560,
1584
],
"category": "1560 => 1584",
"count": 2
},
"1584 => 1608": {
"extent": [
1584,
1608
],
"category": "1584 => 1608",
"count": 0
},
"1608 => 1632": {
"extent": [
1608,
1632
],
"category": "1608 => 1632",
"count": 0
},
"1632 => 1656": {
"extent": [
1632,
1656
],
"category": "1632 => 1656",
"count": 0
},
"1656 => 1680": {
"extent": [
1656,
1680
],
"category": "1656 => 1680",
"count": 0
},
"1680 => 1704": {
"extent": [
1680,
1704
],
"category": "1680 => 1704",
"count": 3
},
"1704 => 1728": {
"extent": [
1704,
1728
],
"category": "1704 => 1728",
"count": 0
},
"1728 => 1752": {
"extent": [
1728,
1752
],
"category": "1728 => 1752",
"count": 1
},
"1752 => 1776": {
"extent": [
1752,
1776
],
"category": "1752 => 1776",
"count": 5
},
"1776 => 1800": {
"extent": [
1776,
1800
],
"category": "1776 => 1800",
"count": 0
},
"1800 => 1824": {
"extent": [
1800,
1824
],
"category": "1800 => 1824",
"count": 0
},
"1824 => 1848": {
"extent": [
1824,
1848
],
"category": "1824 => 1848",
"count": 5
},
"1848 => 1872": {
"extent": [
1848,
1872
],
"category": "1848 => 1872",
"count": 0
},
"1872 => 1896": {
"extent": [
1872,
1896
],
"category": "1872 => 1896",
"count": 0
},
"1896 => 1920": {
"extent": [
1896,
1920
],
"category": "1896 => 1920",
"count": 2
},
"1920 => 1944": {
"extent": [
1920,
1944
],
"category": "1920 => 1944",
"count": 0
},
"1944 => 1968": {
"extent": [
1944,
1968
],
"category": "1944 => 1968",
"count": 0
},
"1968 => 1992": {
"extent": [
1968,
1992
],
"category": "1968 => 1992",
"count": 0
},
"1992 => 2016": {
"extent": [
1992,
2016
],
"category": "1992 => 2016",
"count": 0
},
"2016 => 2040": {
"extent": [
2016,
2040
],
"category": "2016 => 2040",
"count": 5
},
"2040 => 2064": {
"extent": [
2040,
2064
],
"category": "2040 => 2064",
"count": 0
},
"2064 => 2088": {
"extent": [
2064,
2088
],
"category": "2064 => 2088",
"count": 0
},
"2088 => 2112": {
"extent": [
2088,
2112
],
"category": "2088 => 2112",
"count": 0
},
"2112 => 2136": {
"extent": [
2112,
2136
],
"category": "2112 => 2136",
"count": 0
},
"2136 => 2160": {
"extent": [
2136,
2160
],
"category": "2136 => 2160",
"count": 0
},
"2160 => 2184": {
"extent": [
2160,
2184
],
"category": "2160 => 2184",
"count": 0
},
"2184 => 2208": {
"extent": [
2184,
2208
],
"category": "2184 => 2208",
"count": 0
},
"2208 => 2232": {
"extent": [
2208,
2232
],
"category": "2208 => 2232",
"count": 0
},
"2232 => 2256": {
"extent": [
2232,
2256
],
"category": "2232 => 2256",
"count": 0
},
"2256 => 2280": {
"extent": [
2256,
2280
],
"category": "2256 => 2280",
"count": 0
},
"2280 => 2304": {
"extent": [
2280,
2304
],
"category": "2280 => 2304",
"count": 0
},
"2304 => 2328": {
"extent": [
2304,
2328
],
"category": "2304 => 2328",
"count": 0
},
"2328 => 2352": {
"extent": [
2328,
2352
],
"category": "2328 => 2352",
"count": 0
},
"2352 => 2376": {
"extent": [
2352,
2376
],
"category": "2352 => 2376",
"count": 0
},
"2376 => 2400": {
"extent": [
2376,
2400
],
"category": "2376 => 2400",
"count": 0
},
"2400 => 2424": {
"extent": [
2400,
2424
],
"category": "2400 => 2424",
"count": 0
},
"2424 => 2448": {
"extent": [
2424,
2448
],
"category": "2424 => 2448",
"count": 0
},
"2448 => 2472": {
"extent": [
2448,
2472
],
"category": "2448 => 2472",
"count": 0
},
"2472 => 2496": {
"extent": [
2472,
2496
],
"category": "2472 => 2496",
"count": 0
},
"2496 => 2520": {
"extent": [
2496,
2520
],
"category": "2496 => 2520",
"count": 0
},
"2520 => 2544": {
"extent": [
2520,
2544
],
"category": "2520 => 2544",
"count": 0
},
"2544 => 2568": {
"extent": [
2544,
2568
],
"category": "2544 => 2568",
"count": 0
},
"2568 => 2592": {
"extent": [
2568,
2592
],
"category": "2568 => 2592",
"count": 0
},
"2592 => 2616": {
"extent": [
2592,
2616
],
"category": "2592 => 2616",
"count": 0
},
"2616 => 2640": {
"extent": [
2616,
2640
],
"category": "2616 => 2640",
"count": 0
},
"2640 => 2664": {
"extent": [
2640,
2664
],
"category": "2640 => 2664",
"count": 0
},
"2664 => 2688": {
"extent": [
2664,
2688
],
"category": "2664 => 2688",
"count": 0
},
"2688 => 2712": {
"extent": [
2688,
2712
],
"category": "2688 => 2712",
"count": 0
},
"2712 => 2736": {
"extent": [
2712,
2736
],
"category": "2712 => 2736",
"count": 0
},
"2736 => 2760": {
"extent": [
2736,
2760
],
"category": "2736 => 2760",
"count": 0
},
"2760 => 2784": {
"extent": [
2760,
2784
],
"category": "2760 => 2784",
"count": 0
},
"2784 => 2808": {
"extent": [
2784,
2808
],
"category": "2784 => 2808",
"count": 0
},
"2808 => 2832": {
"extent": [
2808,
2832
],
"category": "2808 => 2832",
"count": 0
},
"2832 => 2856": {
"extent": [
2832,
2856
],
"category": "2832 => 2856",
"count": 0
},
"2856 => 2880": {
"extent": [
2856,
2880
],
"category": "2856 => 2880",
"count": 0
},
"2880 => 2904": {
"extent": [
2880,
2904
],
"category": "2880 => 2904",
"count": 5
}
},
"picks": {},
"countOfSelections": 0
}
The Query SEAD API currently uses an old version of the SEAD database located on Humlab's dataserver.
MS filter with selections fails by giving an internal server error.
REST:
POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8
{
"requestId": 1,
"requestType": "populate",
"targetCode": "tbl_denormalized_measured_values_33_0",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"picks": [100, 200],
"textFilter": ""
}
]
}
TriggerCode should be set to TargetCode if null.
Graph path start node occurs in destination nodes after find of routes is called.
Start node should be filtered out from list of destination nodes (or ignored).
Question: In the example below where the MS filter is loaded without any selections, the last 4 categories/data spans returned have a "count" of 0, why are these included? Should they be? Is it somehow significant to show that there is zero data here?
POST https://seadserv.humlab.umu.se:8089/api/facets/load
Sec-Fetch-Mode: cors
mode: cors
Accept: application/json, text/javascript, /; q=0.01
Content-Type: application/json; charset=UTF-8
{
"requestId": 1,
"requestType": "populate",
"targetCode": "tbl_denormalized_measured_values_33_0",
"facetConfigs": [
{
"facetCode": "tbl_denormalized_measured_values_33_0",
"position": 1,
"picks": [
],
"textFilter": ""
}
]
}
Add new sqitch change (or update existing).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.