2022-05-02 11:01:54 +02:00
import { FreeDatas2HTML , Pagination , SearchEngine , Selector } from "../../src/FreeDatas2HTML" ;
2022-02-03 17:45:23 +01:00
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" ) ;
2022-12-28 10:55:56 +01:00
converter . parser . setRemoteSource ( { url : "https://www.segal.bzh/data/medias/partenaires/partenaires.csv" } ) ;
2022-02-03 17:45:23 +01:00
// Parsage des données, qui ne sont pas encore affichées :
await converter . run ( ) ;
// Chaînes à utiliser par le moteur de rendu :
const renderSettings =
{
2022-08-19 11:12:42 +02:00
allBegining : "<ul class=\"ulpartenairelvl1\">" ,
2022-05-02 11:01:54 +02:00
allEnding : "</ul>" ,
2022-08-19 11:12:42 +02:00
datasLinesDisplaying : ` <li><h3>##0##</h3><ul class= \ "ulpartenairelvl2 \ "><li>##1##</li>##2##<li>Lieu(x) d'exercice : ##4####5##.</li>##6####7####8##</ul></li> `
2022-02-03 17:45:23 +01:00
} ;
// Fonctions spécifiques pour créer les liens hypertextes :
const rendName2HTML = ( values : { [ index : string ] : string } ) : string = >
{
2022-08-19 11:12:42 +02:00
if ( values [ "Fiche partenaire" ] !== undefined && values [ "Fiche partenaire" ] . trim ( ) !== "" )
return ` <a href=" ${ values [ 'Fiche partenaire' ] . trim ( ) } " title="Fiche partenaire de ${ values [ "Nom commercial" ] . trim ( ) } "> ${ values [ "Nom commercial" ] . trim ( ) } </a> ` ;
2022-02-03 17:45:23 +01:00
else
2022-02-14 15:18:41 +01:00
return values [ "Nom commercial" ] . trim ( ) ;
2022-02-03 17:45:23 +01:00
} ;
2022-08-19 11:12:42 +02:00
const rendSSDomaine2HTML = ( values : { [ index : string ] : string } ) : string = >
2022-02-03 17:45:23 +01:00
{
2022-08-19 11:12:42 +02:00
if ( values [ "Sous activités" ] !== undefined && values [ "Sous activités" ] . trim ( ) !== "" )
return ` <li> ${ values [ "Sous activités" ] . trim ( ) } </li> ` ;
2022-02-03 17:45:23 +01:00
else
2022-08-19 11:12:42 +02:00
return "" ;
2022-02-03 17:45:23 +01:00
} ;
2022-08-19 11:12:42 +02:00
const rendLieuxVente2HTML = ( values : { [ index : string ] : string } ) : string = >
2022-02-03 17:45:23 +01:00
{
2022-08-19 11:12:42 +02:00
if ( values [ "Ville (si adresse pertinente)" ] !== undefined && values [ "Ville (si adresse pertinente)" ] . trim ( ) !== "" )
return ` ${ values [ "Adresse (si pertinente)" ] . trim ( ) } , ${ values [ "Ville (si adresse pertinente)" ] . trim ( ) } ` ;
2022-02-03 17:45:23 +01:00
else
2022-08-19 11:12:42 +02:00
return "" ;
2022-02-03 17:45:23 +01:00
} ;
2022-08-19 11:12:42 +02:00
2022-02-14 15:18:41 +01:00
const rendTel2HTML = ( values : { [ index : string ] : string } ) : string = >
{
2022-08-19 11:12:42 +02:00
if ( values [ "Téléphone" ] . trim ( ) !== "" )
return ` <li>✆ <a href="tel: ${ values [ 'Téléphone' ] . trim ( ) } " title="Appelez ${ values [ 'Nom commercial' ] . trim ( ) } "> ${ values [ 'Téléphone' ] . trim ( ) } </a></li> ` ;
2022-02-14 15:18:41 +01:00
else
return "" ;
} ;
2022-08-19 11:12:42 +02:00
const rendEmail2HTML = ( values : { [ index : string ] : string } ) : string = >
2022-02-14 15:18:41 +01:00
{
2022-08-19 11:12:42 +02:00
if ( values [ "Courriel" ] . trim ( ) !== "" )
return ` <li>📧 <a href="mailto: ${ values [ 'Courriel' ] . trim ( ) } ?subject=Le segal">Courriel</a></li> ` ;
2022-02-14 15:18:41 +01:00
else
return "" ;
} ;
2022-08-19 11:12:42 +02:00
const rendSite2HTML = ( values : { [ index : string ] : string } ) : string = >
{
if ( values [ "www" ] . trim ( ) !== "" )
return ` <li><a href=" ${ values [ 'www' ] . trim ( ) } " target="_blank" rel='noopener'>Sa page internet</a></li> ` ;
else if ( values [ "FB" ] . trim ( ) !== "" )
return ` <li><a href=" ${ values [ 'FB' ] . trim ( ) } " target="_blank" rel='noopener'>Sa page facebook</a></li> ` ;
else if ( values [ "IG" ] . trim ( ) !== "" )
return ` <li><a href=" ${ values [ 'IG' ] . trim ( ) } " target="_blank" rel='noopener'>Sa page instagram</a></li> ` ;
else
return "" ;
} ;
2022-02-03 17:45:23 +01:00
const myRender = new MixedFieldsRender ( renderSettings ) ;
2022-08-19 11:12:42 +02:00
myRender . fieldRenders = [ { name : "Nom commercial" , rend2HTML : rendName2HTML } , { name : "Sous activités" , rend2HTML : rendSSDomaine2HTML } , { name : "Ville (si adresse pertinente)" , rend2HTML : rendLieuxVente2HTML } , { name : "Téléphone" , rend2HTML : rendTel2HTML } , { name : "Courriel" , rend2HTML : rendEmail2HTML } , { name : "www" , rend2HTML : rendSite2HTML } ] ;
2022-02-03 17:45:23 +01:00
converter . datasRender = myRender ;
2022-05-02 11:01:54 +02:00
// Création des filtres :
2022-08-19 11:12:42 +02:00
const filtre1 = new Selector ( converter , 1 , { id : "filtreActivites" } ) ;
2022-02-03 17:45:23 +01:00
filtre1 . filter2HTML ( "Domaine d'activité" ) ;
2022-05-02 11:01:54 +02:00
// Dont un moteur de recherche :
const mySearch = new SearchEngine ( converter , { id : "search" } ) ;
mySearch . label = "" ;
mySearch . btnTxt = "Chercher" ;
// La recherche se lance automatiquement, dès que 2 caractères sont saisis :
mySearch . automaticSearch = true ;
mySearch . nbCharsForSearch = 2 ;
2022-12-28 10:55:56 +01:00
mySearch . placeholder = "Exemples : crêperie Port-Louis, médecin Languidic..." ;
2022-05-02 11:01:54 +02:00
mySearch . filter2HTML ( ) ;
converter . datasFilters = [ filtre1 , mySearch ] ;
// Id de l'élément HTML devant afficher la liste de partenaires :
2022-02-03 17:45:23 +01:00
converter . datasViewElt = { id : "partenaires" } ;
2022-05-02 11:01:54 +02:00
// Pas d'affichage initial, car il est généré en PHP côté backend.
2022-02-03 17:45:23 +01:00
}
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> ` ;
}
}
2022-05-02 11:01:54 +02:00
console . log ( "**** Hello les devs :-)\nLe code source de ce script est libre et vous pouvez le trouver à cette adresse :\n https://forge.chapril.org/Fab_Blab/freeDatas2HTML/src/branch/master/integrations/src/segal.ts" ) ;
2022-02-03 17:45:23 +01:00
initialise ( ) ;