//این فایل مخصوص //شماتیک نوری import React from "react"; import { formatNumber } from "~/lib/utils"; export type CompanyInfo = { id: string; imageUrl: string; name: string; costReduction: number; revenue?: number; capacity?: number; costI: number; capacityI: number; revenueI: number; cost: number | string; }; export type D3ImageInfoProps = { companies: CompanyInfo[]; width?: number; height?: number; }; const InfoBox = ({ company, style }: { company: CompanyInfo; style: any }) => { // const hideCapacity = company.name === "واحد 300"; // اگر واحد 300 بود ظرفیت مخفی شود const hideCapacity = false; return (
درآمد:
{formatNumber(company?.revenue || 0)}
میلیون ریال
هزینه:
{hideCapacity ? (
{formatNumber(company?.cost || 0)}
) : (
{formatNumber(company?.cost || 0)}
)}
میلیون ریال
{!hideCapacity && (
ظرفیت:
{formatNumber(company?.capacity || 0)}
تن در سال
)}
); }; export function D3ImageInfo({ companies }: D3ImageInfoProps) { // واحدهای جدید - 4 واحد const sample = [ { id: "واحد 100", name: "واحد 100", imageUrl: "/abniro.png" }, { id: "واحد 200", name: "واحد 200", imageUrl: "/besparan.png" }, { id: "واحد 300", name: "واحد 300", imageUrl: "/khwarazmi.png" }, { id: "واحد 400", name: "واحد 400", imageUrl: "/faravash1.png" } ]; const merged = sample.map(company => { const found = companies.find(item => item.id === company.id); return found ? found : { ...company, cost: 0, capacity: 0, revenue: 0, costReduction: 0, costI: 0, capacityI: 0, revenueI: 0 }; }); const displayCompanies = merged; console.log(displayCompanies); // موقعیت‌های جدید برای چیدمان لوزی شکل (3 ردیف - 1-2-1) // گرید 5x4 نگه داشته شده اما موقعیت‌ها تغییر کرده const gridPositions = [ { col: 2, row: 1, colI: 1, rowI: 1, name: "واحد 100" }, // ردیف اول - ستون اول { col: 4, row: 1, colI: 5, rowI: 1, name: "واحد 200" }, // ردیف اول - ستون دوم { col: 2, row: 3, colI: 1, rowI: 3, name: "واحد 300" }, // ردیف دوم - ستون اول { col: 4, row: 3, colI: 5, rowI: 3, name: "واحد 400" }, // ردیف دوم - ستون دوم ]; return (
{displayCompanies.map((company, index) => { const gp = gridPositions.find(v => v.name === company.name); return (
{company.name}
{company.name}
); })}
); }