import React, { useState } from 'react'; import Papa from 'papaparse'; import { ResponsiveContainer, LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts'; const CustomMetricExplorer = () => { const [csvData, setCsvData] = useState([]); const [formula, setFormula] = useState('((HR + BB) / PA) * 100'); const [metricName, setMetricName] = useState('Custom Stat'); const [parsedData, setParsedData] = useState([]); const [error, setError] = useState(''); const parseCSV = async (file) => { Papa.parse(file, { header: true, dynamicTyping: true, complete: (results) => { setCsvData(results.data); calculateMetric(results.data); }, error: (err) => setError(`CSV parsing failed: ${err.message}`) }); }; const calculateMetric = (data) => { try { const calculated = data.map(player => { const formulaFn = new Function( ...Object.keys(player), `return ${formula}` ); const metricValue = formulaFn(...Object.values(player)); return { ...player, [metricName]: Number.isFinite(metricValue) ? metricValue.toFixed(2) : 0 }; }); setParsedData(calculated); setError(''); } catch (e) { setError(`Invalid formula: ${e.message}`); setParsedData([]); } }; return (
| Name | POS | {metricName} |
|---|---|---|
| {player.Name} | {player.POS} | {player[metricName]} |