function createPie ( data , year ) {
var charts = L . featureGroup ( ) ;
let features = data . features . filter ( f => {
return f . properties . YR == year ;
} ) ;
let newData = { } ;
let moreInfo = { } ;
features . forEach ( f => {
let latlng = f . geometry . coordinates ;
for ( property in f . properties ) {
const mapKey = fisheriesMap . get ( property ) ;
const infoKey = fisheriesInfo . get ( property ) ;
if ( mapKey ) {
newData [ mapKey ] = f . properties [ property ] ;
}
if ( infoKey ) {
moreInfo [ infoKey ] = f . properties [ property ] ;
}
}
var pieData = { values : Object . values ( newData ) , labels : Object . keys ( newData ) } ;
let chart = new PieChartMarker ( [ latlng [ 1 ] , latlng [ 0 ] ] , pieData , {
icon : L . divIcon ( { className : 'leaflet-pie-chart-marker' } ) ,
width : 60 ,
height : 60 ,
colors : [ '#ff0000' , '#00ff00' , '#0000ff' , '#ff00ff' ]
} ) ;
if ( Object . keys ( moreInfo ) . length !== 0 ) {
const popupContent = objectToTable ( moreInfo ) ;
console . debug ( 'more info fisheries: ' , moreInfo ) ;
chart . bindPopup ( popupContent , { maxHeight : 400 } ) . openPopup ( ) ;
}
charts . addLayer ( chart ) ;
} ) ;
return charts ;
}
function objectToTable ( obj ) {
let table = '<table><thead><tr><th>Species</th><th>Value</th></tr></thead><tbody>' ;
for ( let key in obj ) {
table += '<tr><td>' + key + '</td><td>' + obj [ key ] + '</td></tr>' ;
}
table += '</tbody></table>' ;
return table ;
}