Fix: RawData Number Format

This commit is contained in:
2025-07-24 10:17:33 -03:00
parent c10924bc35
commit efd0dfb574
5 changed files with 64 additions and 25 deletions

View File

@@ -14,12 +14,12 @@ const toTSV = (data: CotizacionBolsa[]) => {
// Formateamos el nombre para que quede como "GGAL.BA (GRUPO FINANCIERO GALICIA)"
const nombreCompleto = `${row.ticker} (${row.nombreEmpresa || ''})`;
const precio = `$${formatCurrency(row.precioActual)}`
const cambio = `${row.porcentajeCambio.toFixed(2)}%`
const cambio = `${formatCurrency(row.porcentajeCambio)}%` //`${row.porcentajeCambio.toFixed(2)}%`
// Unimos los campos con un carácter de tabulación '\t'
return [nombreCompleto, precio, cambio].join('\t');
});
// Unimos todas las filas con un salto de línea
return dataRows.join('\n');
};
@@ -32,14 +32,14 @@ export const RawBolsaLocalTable = () => {
// Separamos los datos en prioritarios y el resto
const priorityData = data?.filter(d => TICKERS_PRIORITARIOS_LOCAL.includes(d.ticker))
.sort((a, b) => TICKERS_PRIORITARIOS_LOCAL.indexOf(a.ticker) - TICKERS_PRIORITARIOS_LOCAL.indexOf(b.ticker)); // Mantenemos el orden
.sort((a, b) => TICKERS_PRIORITARIOS_LOCAL.indexOf(a.ticker) - TICKERS_PRIORITARIOS_LOCAL.indexOf(b.ticker)); // Mantenemos el orden
const otherData = data?.filter(d => !TICKERS_PRIORITARIOS_LOCAL.includes(d.ticker));
const handleCopy = () => {
if (!priorityData) return;
const tsvData = toTSV(priorityData);
copyToClipboard(tsvData)
.then(() => alert('Datos prioritarios copiados al portapapeles.'))
.catch(err => {
@@ -81,7 +81,7 @@ export const RawBolsaLocalTable = () => {
<Typography component="span" sx={{ ml: 1, color: 'text.secondary' }}>({row.nombreEmpresa})</Typography>
</TableCell>
<TableCell align="right">${formatCurrency(row.precioActual)}</TableCell>
<TableCell align="right">{row.porcentajeCambio.toFixed(2)}%</TableCell>
<TableCell align="right">{formatCurrency(row.porcentajeCambio)}%</TableCell>
</TableRow>
))}
</TableBody>
@@ -98,17 +98,20 @@ export const RawBolsaLocalTable = () => {
<Table size="small">
<TableHead>
<TableRow>
<TableCell>Ticker</TableCell>
<TableCell>Nombre</TableCell>
<TableCell align="right">Precio</TableCell>
<TableCell>Símbolo (Nombre)</TableCell>
<TableCell align="right">Precio Actual</TableCell>
<TableCell align="right">% Cambio</TableCell>
</TableRow>
</TableHead>
<TableBody>
{otherData.map(row => (
<TableRow key={row.id}>
<TableCell>{row.ticker}</TableCell>
<TableCell>{row.nombreEmpresa}</TableCell>
<TableCell>
<Typography component="span" sx={{ fontWeight: 'bold' }}>{row.ticker}</Typography>
<Typography component="span" sx={{ ml: 1, color: 'text.secondary' }}>({row.nombreEmpresa})</Typography>
</TableCell>
<TableCell align="right">${formatCurrency(row.precioActual)}</TableCell>
<TableCell align="right">{formatCurrency(row.porcentajeCambio)}%</TableCell>
</TableRow>
))}
</TableBody>

View File

@@ -18,7 +18,7 @@ const toTSV = (data: CotizacionBolsa[]) => {
// Formateamos los datos según los requisitos de redacción
const nombreCompleto = `${row.ticker} (${row.nombreEmpresa || ''})`;
const precio = `$${formatCurrency(row.precioActual)}`;
const cambio = `${row.porcentajeCambio.toFixed(2)}%`;
const cambio = `${formatCurrency(row.porcentajeCambio)}%`;
return [nombreCompleto, precio, cambio].join('\t');
});
@@ -35,14 +35,14 @@ export const RawBolsaUsaTable = () => {
// Separamos los datos en prioritarios y el resto, manteniendo el orden de la lista
const priorityData = data?.filter(d => TICKERS_PRIORITARIOS_USA.includes(d.ticker))
.sort((a, b) => TICKERS_PRIORITARIOS_USA.indexOf(a.ticker) - TICKERS_PRIORITARIOS_USA.indexOf(b.ticker));
.sort((a, b) => TICKERS_PRIORITARIOS_USA.indexOf(a.ticker) - TICKERS_PRIORITARIOS_USA.indexOf(b.ticker));
const otherData = data?.filter(d => !TICKERS_PRIORITARIOS_USA.includes(d.ticker));
const handleCopy = () => {
if (!priorityData) return;
const tsvData = toTSV(priorityData);
copyToClipboard(tsvData)
.then(() => alert('Datos prioritarios copiados al portapapeles!'))
.catch(err => {
@@ -91,8 +91,8 @@ export const RawBolsaUsaTable = () => {
<Typography component="span" sx={{ fontWeight: 'bold' }}>{row.ticker}</Typography>
<Typography component="span" sx={{ ml: 1, color: 'text.secondary' }}>({row.nombreEmpresa})</Typography>
</TableCell>
<TableCell align="right">{formatCurrency(row.precioActual, 'USD')}</TableCell>
<TableCell align="right">{row.porcentajeCambio.toFixed(2)}%</TableCell>
<TableCell align="right">${formatCurrency(row.precioActual)}</TableCell>
<TableCell align="right">{formatCurrency(row.porcentajeCambio)}%</TableCell>
</TableRow>
))}
</TableBody>
@@ -109,17 +109,20 @@ export const RawBolsaUsaTable = () => {
<Table size="small">
<TableHead>
<TableRow>
<TableCell>Ticker</TableCell>
<TableCell>Nombre</TableCell>
<TableCell align="right">Precio</TableCell>
<TableCell>Símbolo (Nombre)</TableCell>
<TableCell align="right">Precio Actual</TableCell>
<TableCell align="right">% Cambio</TableCell>
</TableRow>
</TableHead>
<TableBody>
{otherData.map(row => (
<TableRow key={row.id}>
<TableCell>{row.ticker}</TableCell>
<TableCell>{row.nombreEmpresa}</TableCell>
<TableCell align="right">{formatCurrency(row.precioActual, 'USD')}</TableCell>
<TableCell>
<Typography component="span" sx={{ fontWeight: 'bold' }}>{row.ticker}</Typography>
<Typography component="span" sx={{ ml: 1, color: 'text.secondary' }}>({row.nombreEmpresa})</Typography>
</TableCell>
<TableCell align="right">${formatCurrency(row.precioActual)}</TableCell>
<TableCell align="right">{formatCurrency(row.porcentajeCambio)}%</TableCell>
</TableRow>
))}
</TableBody>