ChartJS + CVR API: Visualisering af Finansielle Data
I denne vejledning vil vi gå igennem, hvordan man kan integrere data fra Virkdata API'en med ChartJS for at visualisere finansielle oplysninger i en graf på en web side. Vi vil fokusere på at vise balancestatus over tid for et specifikt firma.
Først opretter vi en simpel HTML-fil, som inkluderer de nødvendige biblioteker og opsætter grundstrukturen.
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Virkdata + ChartJS</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </head> <body> <div> <canvas id="chart"></canvas> </div> </body> </html>
Herefter tilføjer vi JavaScript, som henter data fra Virkdata API'en, og anvender Chart.js til at tegne grafen.
Opsætning af XMLHttpRequestVi starter med at oprette en XMLHttpRequest for at hente data. Vi sætter withCredentials til true for at tillade cookies og godkendelsesheaders over domæner, hvis det er nødvendigt.
var xhr = new XMLHttpRequest(); xhr.withCredentials = true;
Når vi har sendt forespørgslen, håndterer vi svaret fra serveren ved at lytte til readystatechange eventet. Når data er fuldt modtaget (this.readyState === this.DONE), parser vi JSON-responsen.
xhr.addEventListener('readystatechange', function () { if (this.readyState === this.DONE) { const response = JSON.parse(this.responseText); const financialData = response.financial_summary; financialData.reverse(); // Vend data for at vise det nyeste først
Vi udtrækker årene og balancestatus fra det finansielle dataset, og bruger disse som data og labels til grafen.
const years = financialData.map(item => item.year); const balanceSheetStatus = financialData.map(item => parseInt(item.balance_sheet_status));
Vi opretter et nyt Chart.js objekt ved at bruge getContext('2d') fra vores canvas-element. Vi formaterer også tal med dansk nummerformat.
const ctx = document.querySelector('#chart').getContext('2d'); const danishNumberFormatter = new Intl.NumberFormat('da-DK', { style: 'decimal', maximumFractionDigits: 0 }); new Chart(ctx, { type: 'line', // eller 'bar' for stolpediagram data: { labels: years, datasets: [{ label: 'Årets resultat', data: balanceSheetStatus, backgroundColor: 'rgba(54, 162, 235, 0.2)', borderColor: 'rgba(54, 162, 235, 1)', }] },
Vi tilpasser yderligere indstillinger såsom aksemarkeringer og tooltips for at forbedre brugeroplevelsen.
options: { scales: { y: { beginAtZero: true, ticks: { callback: function(value) { return danishNumberFormatter.format(value) + ' DKK'; } } } }, plugins: { tooltip: { callbacks: { label: function(tooltipItem) { return tooltipItem.dataset.label + ': ' + danishNumberFormatter.format(tooltipItem.parsed.y) + ' DKK'; } } }, }, responsive: true, maintainAspectRatio: false, } }); } });
Til sidst sender vi forespørgslen til API'et med den nødvendige godkendelsesheader.
xhr.open('GET', 'https://virkdata.dk/api/?search=firmanavn&financial_summary=true'); xhr.setRequestHeader('Authorization', 'YOUR_API_KEY'); xhr.send();
Sådan vil resultatet se ud i din browser. Her er eksempel hvor vi peger musen over året 2022 som viser årets resultat. Dette er muligt på hele grafen.
Komplet kodeHer er den komplette kode:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Virkdata + ChartJS</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script type="text/javascript"> // Set up the XMLHttpRequest var xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener('readystatechange', function () { if (this.readyState === this.DONE) { const response = JSON.parse(this.responseText); const financialData = response.financial_summary; financialData.reverse(); // Prepare the data for the chart const years = financialData.map(item => item.year); const balanceSheetStatus = financialData.map(item => parseInt(item.balance_sheet_status)); // Get the canvas context const ctx = document.querySelector('#chart').getContext('2d'); const danishNumberFormatter = new Intl.NumberFormat('da-DK', { style: 'decimal', // This ensures numerical formatting without currency symbols maximumFractionDigits: 0 // Assuming no fractional parts are needed; adjust as necessary }); // Instantiate the chart new Chart(ctx, { type: 'line', // Change to 'bar' type data: { labels: years, datasets: [{ label: 'Årets resultat', data: balanceSheetStatus, borderWidth: 1, fill: true, backgroundColor: 'rgba(54, 162, 235, 0.2)', borderColor: 'rgba(54, 162, 235, 1)', }] }, options: { scales: { y: { beginAtZero: true, ticks: { callback: function(value) { return danishNumberFormatter.format(value) + ' DKK'; // Formatting with Danish Kroner } } } }, plugins: { tooltip: { callbacks: { label: function(tooltipItem) { return tooltipItem.dataset.label + ': ' + danishNumberFormatter.format(tooltipItem.parsed.y) + ' DKK'; } } }, filler: { propagate: false, }, title: { display: false }, legend: { display: false }, }, interaction: { intersect: false, }, responsive: true, maintainAspectRatio: false, } }); } }); xhr.open('GET', 'https://virkdata.dk/api/?search=firmanavn&financial_summary=true'); xhr.setRequestHeader('Authorization', 'YOUR_API_KEY'); // Send the request xhr.send(); </script> </head> <body> <div> <canvas id="chart"></canvas> </div> </body> </html>
Ved at følge denne vejledning, vil du kunne visualisere finansielle data fra Virkdata API'en ved brug af Chart.js. Denne teknik kan tilpasses til at vise forskellige typer af data og er en kraftfuld måde at præsentere information på en interaktiv og visuelt tiltalende måde.
Flere Artikler
Praktiske råd, detaljerede guides og opdaterede nyheder
-
Trin-for-trin Guide til CVR APIDenne hurtige guide hjælper dig trin-for-trin med at begynde at bruge CVR API helt gratis. Fra tilmelding til de første API-kald, vil du være godt på vej til at integrere værdifulde virksomhedsdata i dine applikationer.30. april 2024 · 3 minutters læsning
-
Datadrevet B2B Salg og Marketing med CVR APIOpdag, hvordan CVR API kan transformere din B2B salgs- og marketingstrategi ved at levere nøjagtige og opdaterede virksomhedsdata. Lær at udnytte denne kraftfulde ressource til at forbedre lead generation, kundesegmentering og målrettet kommunikation, hvilket ultimativt kan øge dine salg og styrke dine kundeengagementer.27. april 2024 · 2 minutters læsning
-
Hvor kan man se virksomheders regnskab?Når det kommer til finansiel due diligence, markedssøgning eller blot nysgerrighed, kan tilgængeligheden af virksomhedsregnskaber være en værdifuld ressource. Uanset hvad din interesse måtte være, er det nyttigt at vide, hvor man kan finde disse regnskaber. Læs videre for at få en forståelse af, hvor og hvordan du kan tilgå disse vigtige dokumenter.25. april 2024 · 1 minuts læsning