//شماتیک بندر امام 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 === "خوارزمی"; // اگر خوارزمی بود ظرفیت مخفی شود return (
درآمد:
{formatNumber(company?.revenue || 0)}
میلیون ریال
هزینه:
{ (hideCapacity ?
{formatNumber(company?.cost || 0)}
:
{formatNumber(company?.cost || 0)}
) }
میلیون ریال
{!hideCapacity && (
ظرفیت:
{formatNumber(company?.capacity || 0)}
تن در سال
)}
); }; export function D3ImageInfo({ companies }: D3ImageInfoProps) { // Ensure we have exactly 6 companies const sample = [ { id: "آب نیرو", name: "آب نیرو", imageUrl: "/abniro.png" }, { id: "بسپاران", name: "بسپاران", imageUrl: "/besparan.png" }, { id: "خوارزمی", name: "خوارزمی", imageUrl: "/khwarazmi.png" }, { id: "فراورش 1", name: "فراورش 1", imageUrl: "/faravash1.png" }, { id: "فراورش 2", name: "فراورش 2", imageUrl: "/faravash2.png" }, { id: "کیمیا", name: "کیمیا", imageUrl: "/kimia.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 }; }); const displayCompanies = merged; console.log(displayCompanies) // Positions inside a 5x4 grid (col, row) // Layout keeps same visual logic: left/middle/right on two bands with spacing grid around const gridPositions = [ { col: 2, row: 2 , colI : 1 , rowI : 2 , name : "بسپاران"}, // left - top band { col: 3, row: 2 , colI : 3 , rowI : 1 , name : "خوارزمی"}, // middle top (image sits in row 2, info box goes to row 1) { col: 4, row: 2 ,colI : 5 , rowI : 2 , name : "فراورش 1"}, // right - top band { col: 2, row: 3 , colI : 1 , rowI : 3 , name : "کیمیا"}, // left - bottom band { col: 3, row: 3 , colI : 3, rowI : 4 , name : "آب نیرو"}, // middle bottom (image sits in row 3, info box goes to row 4) { col: 4, row: 3 , colI : 5 , rowI : 3 , name : "فراورش 2"}, // right - bottom band ]; return (
{displayCompanies.map((company, index) => { const gp = gridPositions.find(v => v.name === company.name) ; return ( <>
{company.name}
{company.name}
); })}
); }