FreeDatas2HTML/integrations/src/segal.ts

65 lines
3.2 KiB
TypeScript
Raw Normal View History

import { FreeDatas2HTML, Selector } from "../../src/FreeDatas2HTML";
import { MixedFieldsRender } from "../../src/extensions/MixedFieldsRender";
const initialise=async () =>
{
try
{
// Création d'un convertisseur parsant des données transmises en JSON :
const converter=new FreeDatas2HTML("CSV");
converter.parser.setRemoteSource({ url: "http://pluxml.segal.bzh/data/medias/partenaires/partenaires.csv"});
// Parsage des données, qui ne sont pas encore affichées :
await converter.run();
// Chaînes à utiliser par le moteur de rendu :
const renderSettings=
{
allBegining: "",
allEnding: "",
datasLinesDisplaying: `<h4>##0##</h4><p>Activités : ##8##<br>Lieux d'activité : ##7##<br>Téléphone(s) : ##10## ##11####4####12##</p>`
};
// Fonctions spécifiques pour créer les liens hypertextes :
const rendName2HTML=(values: {[index: string]:string} ) : string =>
{
if(values["Présentation"] !== undefined && values["Présentation"] !== "")
return `<a href="${values['Présentation']}">${values["Nom commercial"]}</a>`;
else
return values["Nom commercial"];
};
const rendSite2HTML=(values: {[index: string]:string} ) : string =>
{
if(values["Site"] !== "")
return `<br><a href="${values['Site']}" target="_blank" title="Visiter le site de ${values['Nom commercial']}">Page internet</a>`;
else
return "";
};
const rendEmail2HTML=(values: {[index: string]:string} ) : string =>
{
if(values["E-mail"] !== "")
return `<br><a href="mailto:${values['E-mail']}" title="Contactez ${values['Nom commercial']}">E-Mail</a>`;
else
return "";
};
const myRender=new MixedFieldsRender(renderSettings);
myRender.fieldRenders=[{ name:"Nom commercial", rend2HTML: rendName2HTML}, { name:"E-mail", rend2HTML: rendEmail2HTML}, { name:"Site", rend2HTML: rendSite2HTML}];
converter.datasRender=myRender;
// Création de filtres :
const filtre1=new Selector(converter, 8, { id:"filtrePartenaires"} );
let filtre2=new Selector(converter, 7, { id:"filtreLieux"}, "," );
filtre1.filter2HTML("Domaine d'activité");
filtre2.filter2HTML("Lieux");
converter.datasFilters=[filtre1,filtre2];
// Affichage initial avec l'id de l'élément HTML devant afficher le compteur :
converter.datasViewElt={ id:"partenaires" };
converter.refreshView();
}
catch(e)
{
console.error(e);
document.getElementById("datas")!.innerHTML=`<div class="alert alert-warning">Désolé, mais un problème technique empêche l'affichage des données.</div>`;
}
}
console.log("Hello, ami développeur :-)\nLe code source TypeScript utilisé pour faire fonctionner cette page est lisible ici : :\nhttps://forge.chapril.org/Fab_Blab/freeDatas2HTML/src/branch/master/integrations/src/segal.ts\nUn bug ? Une suggestion ? => fabrice@le-fab-lab.com");
initialise();