diff --git a/src/modules/bubble.js b/src/modules/bubble.js index c3e508a22e37e774630c1d31c88006903b291053..e70f8936520557b2db72b362b8567661c9e1a284 100644 --- a/src/modules/bubble.js +++ b/src/modules/bubble.js @@ -7,8 +7,8 @@ loadData().then(([schengenData1, countryData]) => { const countryMap = {}; countryData.forEach(d => { countryMap[d.Country] = { - gdp: +d.GDP.replace(/[$,]/g, ''), // Parse GDP - population: +d.Population.replace(/[$,]/g, '') // Parse population + gdp: +d.GDP.replace(/[$,]/g, ''), + population: +d.Population.replace(/[$,]/g, '') }; }); @@ -22,7 +22,6 @@ loadData().then(([schengenData1, countryData]) => { let sizeDim; let opacityDim; - // Append SVG container const svg = addSvg("#bubble-container", 0, 115) function updateBubble() { @@ -62,7 +61,6 @@ loadData().then(([schengenData1, countryData]) => { .domain([0, d3.max(schengenData, d => d["opacity"] || 1)]) .range([0.1, 1]); - //const colorScale = d3.scaleOrdinal(d3.schemeCategory10); const colorScale = d3 .scaleOrdinal() .domain(schengenData) @@ -70,7 +68,6 @@ loadData().then(([schengenData1, countryData]) => { svg.selectAll("*").remove(); - // Add X axis svg.append("g") .attr("transform", `translate(0,${height-margin.top-margin.bottom})`) .call(d3.axisBottom(xScale).ticks(10, ".1s")) @@ -80,7 +77,6 @@ loadData().then(([schengenData1, countryData]) => { .text("GDP") .style("fill", "black"); - // Add Y axis svg.append("g") .call(d3.axisLeft(yScale)) .append("text") @@ -91,7 +87,6 @@ loadData().then(([schengenData1, countryData]) => { .text("Population") .style("fill", "black"); - // Draw bubbles const tooltip = d3.select("body") .append("div") .attr("class", "tooltip") diff --git a/src/modules/main.js b/src/modules/main.js index 8bc0332ad72a6dda8924a683cc0d2e2a0a139d4a..035eb11f0f6732412ab458d09c8a09b7c3bb5402 100644 --- a/src/modules/main.js +++ b/src/modules/main.js @@ -1,11 +1,9 @@ import {getDimensions, initNavigation, loadData} from "./lib.js"; window.addEventListener('load', () => { - // navigation initNavigation() - - //data filter buttons + //fill dropdowns with dimensions const selectors = Array.from(document.querySelectorAll('.visa-type-autofill')); console.log(selectors); loadData().then(([schengenCsv, countryCsv])=>{ diff --git a/src/modules/parallel.js b/src/modules/parallel.js index a4c8b4e92f93aa9f59de38f2784bd78e333d3eee..e723d46c4a53a38f2087d6415f7954c4451031f2 100644 --- a/src/modules/parallel.js +++ b/src/modules/parallel.js @@ -1,4 +1,4 @@ -import {addSvg, width, height as _height, margin, colors, getDimensions, loadData} from "./lib.js"; +import {addSvg, width, height as _height, margin, getDimensions, loadData} from "./lib.js"; const height = _height-120 @@ -6,20 +6,16 @@ const svg = addSvg("#parallel-coordinates-container", 0, 60) const loadingIndicator = d3.select("#loading"); -// Show loading indicator function showLoading() { loadingIndicator.style("display", "block"); } -// Hide loading indicator function hideLoading() { loadingIndicator.style("display", "none"); } -// Load data showLoading(); loadData().then(([data,_]) => { - // Parse data data.forEach(d => { for (const key in d) { if (!isNaN(+d[key])) { @@ -48,13 +44,11 @@ loadData().then(([data,_]) => { const lineGenerator = d3.line() .defined(d => !isNaN(d[1])) .x(d => xScale(d[0])) - .y(d => yScales[d[0]](d[1] + epsilon)); // epsilon to avoid log(0) + .y(d => yScales[d[0]](d[1] + epsilon)); - // Group data by state const groupedData = d3.group(data, d => d["Schengen State"]); const states = Array.from(groupedData.keys()); - // Populate dropdown const dropdown = d3.select("#state-dropdown"); dropdown.selectAll("option") .data(states) @@ -63,14 +57,12 @@ loadData().then(([data,_]) => { .attr("value", d => d) .text(d => d); - // Update plot function function updatePlot(state) { const filteredData = state ? groupedData.get(state) : data; const paths = svg.selectAll(".data-line") .data(filteredData); - // Enter and update paths paths.enter() .append("path") .attr("class", "data-line") @@ -81,27 +73,23 @@ loadData().then(([data,_]) => { .style("opacity", 0.05) .attr("fill", "none"); - - // Remove old paths paths.exit().remove(); } // Initialize with full dataset updatePlot(null); - // Draw axes with labels dimensions.forEach(dim => { svg.append("g") .attr("transform", `translate(${xScale(dim)},0)`) .call(d3.axisLeft(yScales[dim])); - // Use foreignObject for axis labels svg.append("foreignObject") - .attr("x", xScale(dim) - 30) // Adjust x position - .attr("y", height - margin.top - margin.bottom-20) // Adjust y position - .attr("width", 60) // Set width for wrapping - .attr("height", 140) // Set height for the container - .append("xhtml:div") // Add a div for HTML content + .attr("x", xScale(dim) - 30) + .attr("y", height - margin.top - margin.bottom-20) + .attr("width", 60) + .attr("height", 140) + .append("xhtml:div") .style("font-size", "12px") .style("text-align", "center") .style("word-wrap", "break-word") diff --git a/src/modules/time-series.js b/src/modules/time-series.js index 9b9d3c6b7672f41941280faa4142f89ab4996d50..94f71e5dbbe4c13972aa58845f33adf332487213 100644 --- a/src/modules/time-series.js +++ b/src/modules/time-series.js @@ -78,6 +78,5 @@ loadData().then(([data,_]) => { updateGraph(type); }); - // Initialize with "Total uniform visas issued (including MEV)" updateGraph("Total uniform visas issued (including MEV)"); }); \ No newline at end of file diff --git a/src/modules/tree.js b/src/modules/tree.js index 6c935634c71da424e8916248f0a434e689083096..363da5197cd9ad21af2e9683f3da22829cd4f399 100644 --- a/src/modules/tree.js +++ b/src/modules/tree.js @@ -1,4 +1,4 @@ -import {addSvg, width, height, margin, loadData, navigate} from "./lib.js"; +import {addSvg, width, height, loadData, navigate} from "./lib.js"; let currentData; @@ -58,11 +58,10 @@ function updateTree(filterKey) { return match ? +match[1] : 0; }); return d3.scaleSqrt() - .domain([0, d3.max(values)]) // Min/Max der Werte - .range([5, 40]); // Knotenradius + .domain([0, d3.max(values)]) + .range([5, 40]); } - // Erstelle die Skalierung basierend auf der aktuellen Ebene const sizeScale = createSizeScale(root.descendants()); function removeChildren(child) {