86 lines
1.9 KiB
JavaScript
86 lines
1.9 KiB
JavaScript
|
import debounce from './helpers'
|
||
|
|
||
|
|
||
|
class tableManager {
|
||
|
tbody = null
|
||
|
props = ["intRank","strTeamBadge","strTeam","intPlayed","intWin","intDraw",
|
||
|
"intLoss","intGoalsFor","intGoalsAgainst","intGoalDifference","intPoints"]
|
||
|
sort = -1 // -1 ou 1
|
||
|
teamSearch = ''
|
||
|
data = [] // données à afficher
|
||
|
//
|
||
|
constructor(tbodyNode){
|
||
|
this.tbody = tbodyNode
|
||
|
|
||
|
|
||
|
document
|
||
|
.getElementById("myInput")
|
||
|
.addEventListener("input",debounce(e=>{
|
||
|
this.teamSearch = e.target.value.toUpperCase()
|
||
|
this.tableRender()
|
||
|
},500))
|
||
|
|
||
|
document
|
||
|
.getElementById("sort")
|
||
|
.addEventListener("click",((e) => {
|
||
|
this.sort *= -1
|
||
|
e.preventDefault()
|
||
|
this.tableRender()
|
||
|
|
||
|
}))
|
||
|
|
||
|
}
|
||
|
setData(data){
|
||
|
this.data = data
|
||
|
}
|
||
|
_setDate = (()=>{
|
||
|
if (this.data.length == 0 ) return
|
||
|
let date=new Date(this.data[0].dateUpdated)
|
||
|
document.getElementById("date").textContent = date.toLocaleDateString("fr")
|
||
|
})
|
||
|
|
||
|
setNom(nom){
|
||
|
document.getElementById("nom").textContent = nom
|
||
|
}
|
||
|
_getRow = (v => {
|
||
|
let tr = document.createElement("tr")
|
||
|
for (let p of this.props){
|
||
|
let td = document.createElement("td")
|
||
|
if (p !== "strTeamBadge"){
|
||
|
td.textContent = v[p]
|
||
|
} else {
|
||
|
let figure = document.createElement("figure")
|
||
|
let img = document.createElement("img")
|
||
|
figure.classList.add("image","is-32x32")
|
||
|
img.src = v[p]
|
||
|
figure.appendChild(img)
|
||
|
td.appendChild(figure)
|
||
|
}
|
||
|
tr.appendChild(td)
|
||
|
}
|
||
|
return tr
|
||
|
})
|
||
|
|
||
|
tableRender(){
|
||
|
let dataFilter
|
||
|
if (this.teamSearch)
|
||
|
dataFilter = this.data.filter( item => item.strTeam.toUpperCase().includes(this.teamSearch))
|
||
|
else
|
||
|
dataFilter = [...this.data]
|
||
|
|
||
|
dataFilter.sort((eq1,eq2)=>this.sort*(eq2.intRank - eq1.intRank))
|
||
|
this._setDate()
|
||
|
|
||
|
let content = document.createDocumentFragment()
|
||
|
dataFilter.forEach(v =>{
|
||
|
content.appendChild(this._getRow(v))
|
||
|
})
|
||
|
|
||
|
this.tbody.replaceChildren(content)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export { tableManager }
|
||
|
|
||
|
|