Normalize bokeh preview sizing
Build & Deploy / build (push) Successful in 2m32s
Build & Deploy / deploy (push) Successful in 20s

This commit is contained in:
2025-09-29 10:55:18 +02:00
parent 94ee8a16fb
commit 607e2f6667
+7 -6
View File
@@ -136,17 +136,18 @@ const filterDatasetForPlotType = (dataset, plotType) => {
const PreviewPanel = ({ lensCurves }) => { const PreviewPanel = ({ lensCurves }) => {
const previewItems = lensCurves.map((curve) => { const previewItems = lensCurves.map((curve) => {
const infinityStat = curve.checkpointStats.find((stat) => !Number.isFinite(stat.separation)); const infinityStat = curve.checkpointStats.find((stat) => !Number.isFinite(stat.separation));
const blurPercent = infinityStat?.blurPercentOfDiagonal ?? 0; const blurMm = infinityStat?.blurMm ?? 0;
return { return {
lens: curve.lens, lens: curve.lens,
blurPercent, blurMm,
sensorDiagonal: curve.sensor?.diagonal ?? 1,
colorIndex: curve.colorIndex, colorIndex: curve.colorIndex,
}; };
}); });
const maxBlurPercent = previewItems.reduce((maxValue, item) => Math.max(maxValue, item.blurPercent), 0); const maxBlurMm = previewItems.reduce((maxValue, item) => Math.max(maxValue, item.blurMm), 0);
const denominator = maxBlurPercent > 0 ? maxBlurPercent : 1; const denominator = maxBlurMm > 0 ? maxBlurMm : 1;
return ( return (
<div className="rounded-lg border border-slate-800 bg-slate-900/60 p-4"> <div className="rounded-lg border border-slate-800 bg-slate-900/60 p-4">
@@ -156,7 +157,7 @@ const PreviewPanel = ({ lensCurves }) => {
) : ( ) : (
<div className="flex flex-wrap justify-center gap-4"> <div className="flex flex-wrap justify-center gap-4">
{previewItems.map((item) => { {previewItems.map((item) => {
const normalized = Math.min(item.blurPercent / denominator, 1); const normalized = Math.min(item.blurMm / denominator, 1);
const diameter = Math.max(18, 30 + normalized * 70); const diameter = Math.max(18, 30 + normalized * 70);
const paletteColor = COLOR_PALETTE[item.colorIndex % COLOR_PALETTE.length]; const paletteColor = COLOR_PALETTE[item.colorIndex % COLOR_PALETTE.length];
@@ -177,7 +178,7 @@ const PreviewPanel = ({ lensCurves }) => {
<div className="text-xs text-slate-200"> <div className="text-xs text-slate-200">
<div className="font-medium text-slate-100">{item.lens.name}</div> <div className="font-medium text-slate-100">{item.lens.name}</div>
<div className="text-[10px] uppercase tracking-wide text-slate-500"> <div className="text-[10px] uppercase tracking-wide text-slate-500">
blur {formatNumber(item.blurPercent, 2)}% blur {formatNumber(item.blurMm, 2)} mm
</div> </div>
</div> </div>
</div> </div>