Skip to content

Commit

Permalink
Se unifica lenguaje
Browse files Browse the repository at this point in the history
  • Loading branch information
fedekrenn committed Oct 30, 2023
1 parent 5aa8fef commit e7a3283
Show file tree
Hide file tree
Showing 13 changed files with 117 additions and 118 deletions.
7 changes: 3 additions & 4 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@ app.use(express.urlencoded({ extended: true }))
app.use(express.static('public'))

/* ---------- EJS ------------- */

// Configuracion de EJS
app.set('views', './views')
app.set('view engine', 'ejs')

/* ---------- Rutas ------------- */
app.get('/', async (req, res) => {
const result = await main()
res.render('index', { tabla: result })
const datos = await main()
res.render('index', { tabla: datos })
})

app.listen(PORT, () => {
Expand Down
16 changes: 16 additions & 0 deletions src/calcularParcial.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const PARTIDOS_TOTALES = 14

export default function calcularParcial (arrayEquipos) {
return arrayEquipos.map(infoEquipo => {
const { nombre, puntosTotales, partidosJugados } = infoEquipo

const porcentajeActual = parseFloat((puntosTotales / (partidosJugados * 3)).toFixed(2))
const puntosEstimados = parseInt((PARTIDOS_TOTALES - partidosJugados) * 3 * porcentajeActual)

return {
nombre,
porcentajeActual,
puntosEstimados
}
})
}
25 changes: 25 additions & 0 deletions src/calcularTotal.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import calcularParcial from './calcularParcial.js'

export default function calcularTotal (tablaGeneral, zonaA, zonaB) {
const unificado = [...calcularParcial(zonaA), ...calcularParcial(zonaB)]

const datos = tablaGeneral.map(equipo => {
const equipoEncontrado = unificado.find(eq => eq.nombre === equipo.nombre)
const puntosFinalesEstimados = equipo.puntosTotales + equipoEncontrado.puntosEstimados

return {
...equipo,
porcentajeActual: equipoEncontrado.porcentajeActual,
puntosFinalesEstimados
}
})

return datos
.sort((a, b) => b.puntosFinalesEstimados - a.puntosFinalesEstimados)
.map((equipoInfo, index) => {
return {
posicion: index + 1,
...equipoInfo
}
})
}
16 changes: 0 additions & 16 deletions src/calculatePartial.js

This file was deleted.

26 changes: 0 additions & 26 deletions src/calculateTotal.js

This file was deleted.

19 changes: 19 additions & 0 deletions src/extraerDatosConCheerio.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { extract } from '@extractus/article-extractor'
import * as cheerio from 'cheerio'

export default async function extraerDatosConCheerio (URL) {
const { content } = await extract(URL)

const $ = cheerio.load(content)

const tablaAnual = $("p:contains('Tabla Anual 2023 (Copas+Descenso)')")
const zonaA = $("p:contains('ZONA A')")
const zonaB = $("p:contains('ZONA B')")

return {
$,
tablaAnual,
zonaA,
zonaB
}
}
25 changes: 0 additions & 25 deletions src/format.js

This file was deleted.

25 changes: 25 additions & 0 deletions src/formatear.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
export default function formatearInfo (tablaDatos, datosGenerales) {
const buffer = []

if (tablaDatos.length > 0) {
tablaDatos.find('tbody tr').each((_, row) => {
const columnas = datosGenerales(row).find('td')

const nombre = columnas.eq(1).text().trim()
const puntosTotales = parseInt(columnas.eq(2).text(), 10)
const partidosJugados = parseInt(columnas.eq(3).text(), 10)

const datosEquipo = {
nombre,
puntosTotales,
partidosJugados
}

buffer.push(datosEquipo)
})

return buffer
} else {
return []
}
}
18 changes: 0 additions & 18 deletions src/getData.js

This file was deleted.

16 changes: 8 additions & 8 deletions src/main.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import getTableData from './getData.js'
import calculateTotal from './calculateTotal.js'
import useCheerio from './useCheerio.js'
import obtenerDatos from './obtenerDatos.js'
import calcularTotal from './calcularTotal.js'
import extraerDatosConCheerio from './extraerDatosConCheerio.js'

const URL = 'https://www.promiedos.com.ar/copadeliga'

export default async function main () {
const { $, yearTable, groupATable, groupBTable } = await useCheerio(URL)
const { $, tablaAnual, zonaA, zonaB } = await extraerDatosConCheerio(URL)

const tablaAnual = getTableData(yearTable, $)
const zonaA = getTableData(groupATable, $)
const zonaB = getTableData(groupBTable, $)
const datosTablaAnual = obtenerDatos(tablaAnual, $)
const datosZonaA = obtenerDatos(zonaA, $)
const datosZonaB = obtenerDatos(zonaB, $)

return calculateTotal(tablaAnual, zonaA, zonaB)
return calcularTotal(datosTablaAnual, datosZonaA, datosZonaB)
}
19 changes: 19 additions & 0 deletions src/obtenerDatos.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import formatearInfo from './formatear.js'

export default function obtenerDatos (tablaDatos, datosGenerales) {
let datosFormateados

if (tablaDatos.length > 0) {
const tabla = tablaDatos.next('table')

if (tabla.length > 0) {
datosFormateados = formatearInfo(tabla, datosGenerales)
} else {
console.log('No se encontró la tabla hermana.')
}
} else {
console.log('No se encontró el párrafo específico.')
}

return datosFormateados
}
19 changes: 0 additions & 19 deletions src/useCheerio.js

This file was deleted.

4 changes: 2 additions & 2 deletions views/index.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,10 @@
<tbody>
<% tabla.forEach(equipo => { %>
<tr
title="Puntos actuales de <%= equipo.equipo %>: <%= equipo.puntosTotales %>"
title="Puntos actuales de <%= equipo.nombre %>: <%= equipo.puntosTotales %>"
>
<td class="position"><%= equipo.posicion %></td>
<td><%= equipo.equipo %></td>
<td><%= equipo.nombre %></td>
<td><%= equipo.porcentajeActual * 100 %>%</td>
<td><%= equipo.puntosFinalesEstimados %></td>
</tr>
Expand Down

0 comments on commit e7a3283

Please sign in to comment.