Use url
/ query
or featureSet
(with overrides)
{}
definition
Let's build this chart
npm install --save @esri/cedar
yarn add @esri/cedar
<!-- load the amCharts base library -->
<script src="https://www.amcharts.com/lib/3/amcharts.js"></script>
<!-- for bar, line, and area charts -->
<script src="https://www.amcharts.com/lib/3/serial.js"></script>
<!-- optionally load calcite theme -->
<script src="https://unpkg.com/@esri/cedar/dist/umd/themes/amCharts/calcite.js"></script>
<!-- load cedar -->
<script src="https://unpkg.com/@esri/cedar"></script>
var definition = {};
type
, datasets
, series
type
definition.type = 'bar';
'bar'
, 'line'
, 'scatter'
, 'pie'
specification: {...}
datasets
definition.datatsets = [{
url: "https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_States_Generalized/FeatureServer/0",
query: { orderByFields: "POPULATION DESC" }
}]
series
definition.series = [
{
category: {field:"STATE_NAME",label:"US State"},
value: {field:"POPULATION",label:"Population"}
}
]
import { Chart } from '@esri/cedar';
// create a new cedar chart at a specified element
const myChart = new Chart('elementId', definition)
// create a new cedar chart at a specified element
var myChart = new cedar.Chart('elementId', definition)
// execute query and render chart
cedarChart.show()
See the complete Chart API
data
definition.datatsets = [{
data: { features: graphics }
}]
Expects a FeatureSet
graphics.sort(function(a, b) {
return b.attributes.POPULATION - a.attributes.POPULATION;
});
url
with aggregate query
definition.datasets: [{
url: "https://services.arcgis.com/bkrWlSKcjUDFDtgw/arcgis/rest/services/It's_a_Tornado_Map/FeatureServer/0",
query: {
groupByFieldsForStatistics: "state",
outStatistics: [{
statisticType: "sum",
onStatisticField: "injuries",
outStatisticFieldName: "injuries_SUM"
}]
}
}]
Accepts any valid query parameters
data
and re-render()
// Query the features on the client using FeatureLayerView.queryFeatures
return featureLayerView.queryFeatures(query).then(function(results) {
chart.datasets('tracts').data = results;
chart.render();
}
definition.overrides = {
categoryAxis: {
labelRotation: -45
},
legend: {
enabled: true
}
}
Accepts any amCharts config parameters
definition.overrides = {
categoryAxis: {
labelRotation: -45
}
}
definition.legend = {
visible: true
}
"domains": {
"sheltstat": {
"type": "codedValue",
"name": "ShelterCode",
"description": "Shelter Codes",
"codedValues": [
{
"name": "Open",
"code": 1
},
{
"name": "Closed",
"code": 2
},
{
"name": "Full",
"code": 3
}
]
}
}
(a.k.a attribute lists)
Can be used in any Ember application
// TODO: