import { FreeDatas2HTML, Pagination, Render, SearchEngine, Selector, SortingField } from "./FreeDatas2HTML"; const initialise = async () => { try { const myForm=document.getElementById("userSettings") as HTMLElement; const myFile=document.getElementById("myFile") as HTMLInputElement; const dataDisplayElt=document.getElementById("datas"); const dataDisplayOptionsElt=document.getElementById("displayOptions"); if(myFile === null || myForm === null || dataDisplayOptionsElt === null || dataDisplayElt === null) throw new Error("Certains éléments nécessaires n'ont pas été trouvés dans le DOM;"); const converter=new FreeDatas2HTML("CSV"); myFile.addEventListener("change", function(e) { dataDisplayElt.innerHTML=""; dataDisplayOptionsElt.innerHTML=""; const selectedFiles=myFile.files; if(selectedFiles !== null && selectedFiles.length === 1) { if(selectedFiles[0].type !== "text/csv" && selectedFiles[0].type !== "text/tsv") dataDisplayOptionsElt.innerHTML=`
Le fichier que vous avez sélectionné ne semble pas être un fichier CSV ?
`; else { const reader=new FileReader(); reader.onload=async function(e) { converter.parser.datas2Parse=reader.result as string; await converter.run(); let fieldsSelectorHTML=``; dataDisplayOptionsElt.innerHTML=fieldsSelectorHTML+filtersSelectorHTML+``; }; reader.readAsText(selectedFiles[0]); } } }); myForm.addEventListener("submit", function(e) { e.preventDefault(); const fields2Rend: number[]=[]; let checkBox: HTMLInputElement, nbSelector=0; for(let i=0; i < converter.fields.length; i++) { checkBox=document.getElementById("selectedField_"+i) as HTMLInputElement; if(checkBox !== null) { if(checkBox.checked) fields2Rend.push(i); } if(nbSelector < 3) { checkBox=document.getElementById("selectedFilter_"+i) as HTMLInputElement; if(checkBox !== null) { if(checkBox.checked) { nbSelector++; let filtre1=new Selector(converter, i, { id:"filtre"+nbSelector} ); filtre1.filter2HTML(); converter.datasFilters.push(filtre1); } } } } /// + rendre classable toutes les colonnes /// + ajout moteur de recherche /// + nombre de résultat /// + rendu autre que tableau ou alors permettre scroll horizontale ? if( fields2Rend.length === 0) dataDisplayElt.innerHTML=`Vous n'avez sélectionné aucun champ à afficher !
`; else { converter.fields2Rend=fields2Rend; converter.datasViewElt={ id:"datas" }; converter.run();// run pour prendre les champs à afficher, mais refreshView devrait suffire ! } }); } catch(e) { console.error(e); if(document.getElementById("datas")!==null) document.getElementById("datas")!.innerHTML="Désolé, mais un problème technique empêche l'affichage des données."; } } initialise();