Appearance
Filter nodes
This example shows how to filter nodes in the graph. It uses the addNodeFilter API to filter out companies which did not raise more than 300 million USD.
ts
import Ogma, { NodeFilter } from '@linkurious/ogma';
interface ND {
categories: string[];
properties: {
funding_total: number;
};
}
interface ED {}
const ogma = new Ogma<ND, ED>({
container: 'graph-container'
});
let filter: NodeFilter<ND, ED>;
const graph = await Ogma.parse.jsonFromUrl<ND, ED>('solarCity.json');
await ogma.setGraph(graph);
await ogma.view.locateGraph();
// Show nodes of category COMPANY with funding total >= 300 millions
// and hide nodes with smaller funding total.
setTimeout(() => {
filter = ogma.transformations.addNodeFilter(n => {
return (
n.getData('categories') &&
n.getData('categories').includes('COMPANY') &&
n.getData('properties.funding_total') > 300000000
);
});
filter.whenApplied().then(() => {
console.log('Filter done!');
});
}, 1500);
// Clear the previously created filter
// filter.destroy();
(
document.getElementById('toggle-filter') as HTMLButtonElement
).addEventListener('click', evt => {
evt.preventDefault();
filter.toggle();
});
html
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css"
rel="stylesheet"
/>
<link type="text/css" rel="stylesheet" href="styles.css" />
</head>
<body>
<!-- we force the loading of the font awesome -->
<i class="fa fa-camera-retro fa-1x" style="color: rgba(0, 0, 0, 0)"></i>
<div id="graph-container"></div>
<button id="toggle-filter">Toggle filter</button>
<script type="module" src="index.ts"></script>
</body>
</html>
css
#graph-container {
top: 0;
bottom: 0;
left: 0;
right: 0;
position: absolute;
margin: 0;
overflow: hidden;
}
#toggle-filter {
border-radius: 4px;
padding: 5px;
background-color: #fff;
border: 1px solid #ccc;
position: absolute;
top: 2em;
right: 2em;
}
json
{
"nodes": [
{
"id": 8666,
"data": {
"properties": {
"name": "Elon Musk",
"permalink": "/person/elon-musk",
"url": "http://www.crunchbase.com/person/elon-musk",
"picture": "img/musk.jpg"
},
"categories": [
"INVESTOR"
]
},
"attributes": {
"x": 25.858288814166933,
"y": -7.103984513542148,
"text": "Elon Musk",
"radius": 3,
"icon": {
"font": "Font Awesome 5 Free",
"content": "",
"color": "#fff",
"style": "bold"
}
}
},
{
"id": 6870,
"data": {
"properties": {
"name": "SolarCity",
"permalink": "/organization/solarcity",
"founded_at": "01/01/2006",
"first_funding_at": "15/09/2006",
"market": " Construction ",
"founded_quarter": "2006-Q1",
"founded_year": 2006,
"state": "CA",
"url": "http://www.crunchbase.com/organization/solarcity",
"country": "USA",
"homepage_url": "http://www.solarcity.com",
"logo": "http://www.crunchbase.com/organization/solarcity/primary-image/raw",
"founded_month": "2006-01",
"funding_rounds": 13,
"status": "operating",
"funding_total": 1045040000,
"region": "SF Bay Area",
"category": "|Construction|Clean Technology|",
"last_funding_at": "18/06/2013"
},
"categories": [
"COMPANY",
"INVESTOR"
]
},
"attributes": {
"x": 0.09298533946275711,
"y": 0.41120362281799316,
"text": "SolarCity",
"color": "#f35371",
"radius": 7,
"icon": {
"font": "Font Awesome 5 Free",
"content": "",
"color": "#fff",
"style": "bold"
}
}
},
{
"id": 7396,
"data": {
"properties": {
"name": "Tesla Motors",
"permalink": "/organization/tesla-motors",
"founded_at": "01/01/2003",
"first_funding_at": "01/04/2004",
"market": " Automotive ",
"founded_quarter": "2003-Q1",
"founded_year": 2003,
"state": "CA",
"url": "http://www.crunchbase.com/organization/tesla-motors",
"country": "USA",
"homepage_url": "http://www.teslamotors.com",
"logo": "http://www.crunchbase.com/organization/tesla-motors/primary-image/raw",
"founded_month": "2003-01",
"funding_rounds": 11,
"status": "operating",
"funding_total": 823000000,
"region": "SF Bay Area",
"category": "|Automotive|",
"last_funding_at": "10/10/2012"
},
"categories": [
"COMPANY"
]
},
"attributes": {
"x": 85.876122673705,
"y": -21.207117111759345,
"text": "Tesla Motors",
"color": "#cd476a",
"radius": 6,
"icon": {
"font": "Font Awesome 5 Free",
"content": "",
"color": "#fff",
"style": "bold"
}
}
},
{
"id": 2982,
"data": {
"properties": {
"name": "First Solar",
"permalink": "/organization/first-solar",
"founded_at": "01/01/1999",
"first_funding_at": "18/06/2013",
"market": " Semiconductors ",
"founded_quarter": "1999-Q1",
"founded_year": 1999,
"state": "AZ",
"url": "http://www.crunchbase.com/organization/first-solar",
"country": "USA",
"homepage_url": "http://www.firstsolar.com",
"logo": "http://www.crunchbase.com/organization/first-solar/primary-image/raw",
"founded_month": "1999-01",
"funding_rounds": 1,
"status": "operating",
"funding_total": 427700000,
"region": "Phoenix",
"category": "|Semiconductors|Clean Technology|",
"last_funding_at": "18/06/2013"
},
"categories": [
"COMPANY",
"INVESTOR"
]
},
"attributes": {
"x": -27.6874947092224,
"y": -21.207117111759345,
"text": "First Solar",
"color": "#632654",
"radius": 3,
"icon": {
"font": "Font Awesome 5 Free",
"content": "",
"color": "#fff",
"style": "bold"
}
}
},
{
"id": 3388,
"data": {
"properties": {
"name": "Google",
"permalink": "/organization/google",
"founded_at": "07/09/1998",
"first_funding_at": "01/08/1998",
"market": " Software ",
"founded_quarter": "1998-Q3",
"founded_year": 1998,
"state": "CA",
"url": "http://www.crunchbase.com/organization/google",
"country": "USA",
"homepage_url": "https://www.google.com",
"logo": "http://www.crunchbase.com/organization/google/primary-image/raw",
"founded_m
...