@@ -72,24 +72,33 @@ const buildChart = (chart, data) => {
7272
7373 const z = d3 .scaleLinear ()
7474 .domain ([minSize, maxSize])
75- .range ([ 20 , 80 ]);
75+ .range ([ 15 , 70 ]);
7676
77- const maxRadius = z (maxSize)
78- const minRadius = z (minSize)
79-
80- const x = d3 .scaleLinear ()
81- .domain ([0 , maxBlobsCount + maxBlobsCount * 0.1 ])
82- .range ([ marginLeft, width ]);
77+ // const x = d3.scaleLinear()
78+ // .domain([0, maxBlobsCount + maxBlobsCount * 0.1])
79+ // .range([ marginLeft, width ]);
8380
84- const y = d3 .scaleLinear ()
85- .domain ([0 , maxFee + maxFee * 0.3 ])
86- .range ([ height - 30 , 0 ]);
87-
81+ const x = d3 .scaleLog ()
82+ .domain ([1_000 , maxBlobsCount + maxBlobsCount * 0.1 ])
83+ .range ([ marginLeft, width ])
84+ .base (10 )
85+ .nice ()
86+
87+ // const y = d3.scaleLinear()
88+ // .domain([0, maxFee + maxFee * 0.3])
89+ // .range([ height - 30, 0]);
90+
91+ const y = d3 .scaleLog ()
92+ .domain ([1 , maxFee + maxFee * 0.3 ])
93+ .range ([ height - 30 , 0 ])
94+ .base (10 )
95+ .nice ()
96+
8897 // Add axes:
8998 svg .append (" g" )
9099 .attr (" transform" , " translate(0," + (height - 20 ) + " )" )
91100 .attr (" color" , " var(--op-20)" )
92- .call (d3 .axisBottom (x).ticks (4 ).tickFormat (d3 .format (" .2s" )))
101+ .call (d3 .axisBottom (x).ticks (2 ).tickFormat (d3 .format (" .2s" )))
93102
94103 svg .append (" g" )
95104 .attr (" transform" , ` translate(${ marginLeft} ,0)` )
@@ -129,10 +138,10 @@ const buildChart = (chart, data) => {
129138
130139 // Size legend
131140 let size = d3 .scaleSqrt ()
132- .domain ([ 0 , maxSize ])
133- .range ([ 1 , 45 ])
134-
135- let legendValues = [minSize * 1.5 , midSize * 0.9 , maxSize * 1 ]
141+ .domain ([minSize, maxSize / 2 ]) // [ minSize , maxSize ])
142+ .range ([ 10 , 35 ])
143+
144+ let legendValues = [500 * 1_024 * 1_024 , midSize * 0.5 , maxSize / 2 ]
136145 let xCircle = width - 50
137146 let xLabel = width - 150
138147 let yCircle = 100
@@ -154,8 +163,8 @@ const buildChart = (chart, data) => {
154163 .append (" line" )
155164 .attr (" x1" , function (d ){ return xCircle - size (d) } )
156165 .attr (" x2" , xLabel)
157- .attr (" y1" , function (d ){ return yCircle - size (d) } )
158- .attr (" y2" , function (d ){ return yCircle - size (d) } )
166+ .attr (" y1" , function (d , i ){ return yCircle - size (d) + (i === 0 ? 5 : i === 2 ? - 7 : 0 ) } )
167+ .attr (" y2" , function (d , i ){ return yCircle - size (d) + (i === 0 ? 5 : i === 2 ? - 7 : 0 ) } )
159168 .attr (" stroke" , " var(--op-20)" )
160169 .style (" stroke-dasharray" , (" 2, 2" ))
161170
@@ -164,14 +173,17 @@ const buildChart = (chart, data) => {
164173 .enter ()
165174 .append (" text" )
166175 .attr (' x' , xLabel)
167- .attr (' y' , function (d ){ return yCircle - size (d) - 5 } )
168- .text ( function (d ){ return formatBytes (d, 0 ) } )
176+ .attr (' y' , function (d , i ){ return yCircle - size (d) - 5 + (i === 0 ? 5 : i === 2 ? - 7 : 0 ) } )
177+ .text ( function (d , i ){ return i === 0 ? ' < ' + formatBytes (d, 0 ) : formatBytes (d, 0 ) } )
169178 .style (" font-size" , 10 )
170179 .style (" fill" , " var(--op-20)" )
171180 .attr (' alignment-baseline' , ' middle' )
172181
173182 // Tooltip
174183 function onPointerEnter (event , rollup ) {
184+ const element = document .getElementById (event .target .id )
185+ element .style .filter = " brightness(100%)"
186+
175187 if (! tooltip .value .data .length ) {
176188 tooltip .value .x = x (rollup .blobs_count )
177189 tooltip .value .y = y (rollup .fee )
@@ -182,6 +194,9 @@ const buildChart = (chart, data) => {
182194 }
183195
184196 function onPointerLeave () {
197+ const element = document .getElementById (event .target .id )
198+ element .style .filter = " brightness(60%)"
199+
185200 tooltip .value .data = []
186201 tooltip .value .show = false
187202 }
@@ -227,25 +242,11 @@ const buildChart = (chart, data) => {
227242 .attr (" x" , d => x (d .blobs_count ) - z (d .size ))
228243 .attr (" y" , d => y (d .fee ) - z (d .size ))
229244 .attr (" clip-path" , (d , i ) => ` url(#clip-${ i} )` )
230- .attr (" style" , " stroke: red; stroke-width: 5px;" )
245+ .style (" filter" , " brightness(60%)" )
246+ .attr (" class" , " transition_all" )
231247 .on (" pointerenter" , (d , rollup ) => onPointerEnter (d, rollup))
232248 .on (" pointerleave" , onPointerLeave)
233249
234- // const circles = svg.append('g')
235- // .selectAll("circle")
236- // .data(data)
237- // .enter()
238- // .append("circle")
239- // .attr("cx", d => x(d.blobs_count))
240- // .attr("cy", d => y(d.fee))
241- // .attr("r", 0)
242- // .attr("stroke", "var(--op-20)")
243- // .attr("stroke-width", 1)
244- // .attr("fill", "none")
245- // .transition()
246- // .duration(1_500)
247- // .attr("r", d => z(d.size))
248-
249250 if (chart .children [0 ]) chart .children [0 ].remove ()
250251 chart .append (svg .node ())
251252}
0 commit comments