1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| //BtDial.js
let BtDiCmpt, BtDiIdxInterval, NumfctRet;
//****************************************************************************************************************
function AfficherBt(titre,message="aucun",bouton,type,LefTT,TopP,modale,tempo,fctRetNum=0) {
let StyleTypeDial, TypDial, TypCoul, btn, DivCtnDial, ConfDial;
NumfctRet = fctRetNum;// drapeau a enclencher le code suite à la fermeture de la boite de dialogue
if(message===undefined){message=""};// cela ne devrait pas arriver, mais ...
if(titre===undefined){titre=""};// cela ne devrait pas arriver, mais ...
//boutons, 0=aucun, 1=ok, 2=ok et annuler ou 3=oui et non
if(bouton===undefined){bouton=0};// bouton(s) ou aucun
if(bouton!==0){
btn = "<div id='TheBouton'><button id='btn1' onclick='AnalyseRep(this)'>";
}else{
btn = "";//"</div>";
}
switch (bouton)
{
case 0:bouton = btn;break;
case 1:bouton = btn+"Ok</button></div>";break;
case 2:bouton = btn+"Ok</button> <button id='btn2' onclick='AnalyseRep(this)'>Annuler</button></div>";break;
case 3:bouton = btn+"Oui</button> <button id='btn2' onclick='AnalyseRep(this)'>Non</button></div>";
}
//0=Critique, 1=Exclamation, 2=Interrogation et 3=Information
if(type===undefined){type=3};
//LefTT et TopP sont des chiffres
if(LefTT===undefined||LefTT===""){LefTT=((Number(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-200)/2)+"px";}else{LefTT=String(LefTT)+"px";}//LefTT
if(TopP===undefined||TopP===""){TopP=((Number(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-150)/2)+"px";}else{TopP=String(TopP)+"px";}//TopP
// soit true, soit false
if(modale===undefined){modale=true;}
TypDial = "⚠,❕,❔,👀".split(",");//caractères icon de la boite de dialogue
TypCoul = "#ff9f80,#ffc266,#fff3c6,#b3ffb3".split(",");//couleur de la boite de dialogue
//gestion de tempo ou non, tempo étant toujours un multiple de 1000 (soit 1 Sc)
if(tempo===undefined){tempo="non";};
if (tempo!=="non"){tempo = Number(tempo);};
if (bouton==="" && tempo=="non"){tempo = 5;};//créer quand même une tempo de 5Sc pour fermer la boite de dialogue car il n'y a pas de bouton
// commencement de la construction de la boite de dialogue
DivCtnDial = document.createElement("div");//div conteneur de la boite de dialogue nécessaire pour le cas modale
DivCtnDial.setAttribute('id','CntBtDial');
DivCtnDial.style.position='absolute';
DivCtnDial.style.zIndex=5000;//pour assurer en premier plan, surtout en mode modale
if (modale===true){
DivCtnDial.style.height = "99%";//pour prendre toute la hauteur
DivCtnDial.style.width = "99%";//pour prendre toute la largeur
DivCtnDial.style.left = "0px";
DivCtnDial.style.top = "0px";
StyleTypeDial = " style='left:"+LefTT+";top:"+TopP+";background-color:"+TypCoul[type]+"'";
}else{
DivCtnDial.style.left = LefTT;
DivCtnDial.style.top = TopP;
StyleTypeDial = " style='background-color:"+TypCoul[type]+"'";
}
//création du contenu de la boite de dialogue
ConfDial = "<div id='TheBoiteDialogue'"+StyleTypeDial+">";// La boite de dialogue
ConfDial += "<div id='TheDivTitre'><h4><span id='h4Span'>"+TypDial[type]+"</span> "+titre+"</h4></div>";
message = message.replace(/\n/g,"<br />");//pour permettre du texte sur plusieurs lignes
if(message!==""){ConfDial += "<article id='TheMessage'>"+message+"</article>";}
ConfDial += bouton;
if (tempo!=="non"){ConfDial += "<div id='TheCompteur'></div>";}// pour décomptage si temporisation
ConfDial += "</div>";
DivCtnDial.innerHTML = ConfDial; // affecter les éléments au conteneur
//console.log("ConfDial = ",ConfDial);
document.body.appendChild(DivCtnDial, document.body);// création du conteneur dans la partie body, la boite de dialogue est affichée
if (bouton===""){
document.getElementById("CntBtDial").focus();
}else{
document.getElementById("btn1").focus();// donne le focus au bouton s'il existe
}
if (tempo!=="non"){// lancer la tempo pour fermeture de la boite de dialogue
BtDiCmpt = tempo;
document.getElementById("TheCompteur").innerHTML = " "+BtDiCmpt+" ";
BtDiIdxInterval = setInterval(GereTempo,1000);// GereTempo appelé toute les secondes
}
}// ---------------------------------------------------------------------------------------------------
function GereTempo() {
BtDiCmpt--;
if(BtDiCmpt == 0){
finTempo();
// la fonction RecupeReponse() est dans le fichier.js du programme principal.
RecupeReponse("NO",NumfctRet);// pas d'utilisation de bouton
}else{
document.getElementById("TheCompteur").innerHTML = " "+BtDiCmpt+" "; // seconde(s) restante(s)";
}
}// ---------------------------------------------------------------------------------------------------
function finTempo() {
clearInterval(BtDiIdxInterval);
BtDiIdxInterval = null;
KillDialogue();
}// ---------------------------------------------------------------------------------------------------
function KillDialogue() {document.getElementById("CntBtDial").remove();}//ferme la fenêtre de dialogue
// ---------------------------------------------------------------------------------------------------
function AnalyseRep(elem){
KillDialogue();
if (BtDiIdxInterval!==null){//la boite de dialogue a été fermée par bouton avant la fin de la temporisation
clearInterval(BtDiIdxInterval);//supprime la temporisation
BtDiIdxInterval = null;
}
RecupeReponse(elem.textContent,NumfctRet);
}// --------------------------------------------------------------------------------------------------- |
Partager