var LesActions = []; var mouseClick = false; var blockEvent = false; var temperatureDS=-127; var LTARFbin=0; var ITmode=0; function Init() { LoadActions(); DispTimer(); LoadParaRouteur(); } function creerAction(aActif, aTitre, aHost, aPort, aOrdreOn, aOrdreOff, aRepet,aTempo,aReactivite, aPeriodes) { var S = { Actif: aActif, Titre: aTitre, Host: aHost, Port: aPort, OrdreOn: aOrdreOn, OrdreOff: aOrdreOff, Repet: aRepet, Tempo: aTempo, Reactivite: aReactivite, Periodes: aPeriodes } return S; } function TracePlanning(iAct) { var Radio0 = "
Inactif
"; var Radio1 = "
Découpe sinus
"; if (iAct > 0){Radio1 = "
On/Off
";} Radio1 += "
Multi-sinus
"; Radio1 += "
Train de sinus
"; var S = "

Titre

"; S +="
" +Radio0 + Radio1 + "
"; S +="
"; S += ""; S += ""; S += ""; S += ""; S += ""; S += ""; S += ""; S += ""; S += ""; S += "
Host (si externe)Ordre OnRépétition(s)Temporisation(s)
PortOrdre Off
"; S +="
"; S +="
"; S +="
"; S +="
Réactivité lente ou charge importante
"; S +=""; S +="
Réactivité rapide ou charge faible

"; S +="
"; S +="
"; S += "
"; S += "
"; S += "
"; GH("planning" + iAct, S); GID("radio" + iAct +"-" +LesActions[iAct].Actif).checked = true; GH("titre" + iAct, LesActions[iAct].Titre); GV("host" + iAct, LesActions[iAct].Host); GV("port" + iAct, LesActions[iAct].Port); GV("ordreOn" + iAct, LesActions[iAct].OrdreOn); GV("ordreOff" + iAct, LesActions[iAct].OrdreOff); GV("repet" + iAct, LesActions[iAct].Repet); GV("tempo" + iAct, LesActions[iAct].Tempo); GV("sensi" + iAct, LesActions[iAct].Reactivite); TracePeriodes(iAct); } function TracePeriodes(iAct) { var S = ""; var Sinfo = ""; var left = 0; var H0 = 0; var colors = ["#666", "#66f", "#f66", "#6f6", "#cc4"]; //NO,OFF,ON,PW,Triac blockEvent = false; for (var i = 0; i < LesActions[iAct].Periodes.length; i++) { var w = (LesActions[iAct].Periodes[i].Hfin - H0) /24; left = H0 / 24; H0 = LesActions[iAct].Periodes[i].Hfin; var Type = LesActions[iAct].Periodes[i].Type; var color = colors[Type]; var temperature=""; if (temperatureDS>-100) { // La sonde de température fonctionne var Tsup=LesActions[iAct].Periodes[i].Tsup; if (Tsup>=0 && Tsup <=100) temperature +="
si T ≥"+Tsup+"°
"; var Tinf=LesActions[iAct].Periodes[i].Tinf; if (Tinf>=0 && Tinf <=100) temperature +="
si T ≤"+Tinf+"°
"; } var TxtTarif= ""; if (LTARFbin>0) { TxtTarif= " si Tarif : "; var Tarif_=LesActions[iAct].Periodes[i].Tarif; if (LTARFbin<=3) { TxtTarif += (Tarif_ & 1) ? "H. Pleine":"" ; TxtTarif += (Tarif_ & 2) ? " H. Creuse":"" ; } else { TxtTarif += (Tarif_ & 4) ? "TempoBleu":"" ; TxtTarif += (Tarif_ & 8) ? " Blanc":"" ; TxtTarif += (Tarif_ & 16) ? " Rouge":"" ; } TxtTarif ="
" + TxtTarif +"
"; } if (LesActions[iAct].Actif<=1 && iAct>0){ LesActions[iAct].Periodes[i].Vmax=Math.max(LesActions[iAct].Periodes[i].Vmin,LesActions[iAct].Periodes[i].Vmax); var TexteMinMax="
Off si Pw>"+LesActions[iAct].Periodes[i].Vmax+"W
On si Pw<"+LesActions[iAct].Periodes[i].Vmin+"W
"+temperature + TxtTarif; } else { LesActions[iAct].Periodes[i].Vmax=Math.max(0,LesActions[iAct].Periodes[i].Vmax); LesActions[iAct].Periodes[i].Vmax=Math.min(100,LesActions[iAct].Periodes[i].Vmax); var TexteMinMax="
Seuil Pw : "+LesActions[iAct].Periodes[i].Vmin+"W
"+ temperature + "
Ouvre Max : "+LesActions[iAct].Periodes[i].Vmax+"%
" + TxtTarif; } var TexteTriac="
Seuil Pw : "+LesActions[iAct].Periodes[i].Vmin+"W
"+temperature + "
Ouvre Max : "+LesActions[iAct].Periodes[i].Vmax+"%
"+TxtTarif; var paras = ["Pas de contrôle", "OFF", "ON" + temperature + TxtTarif, TexteMinMax, TexteTriac]; var para = paras[Type]; S += "
"; Hmn = Math.floor(H0 / 100) + ":" + ("0" + Math.floor(0.6 * (H0 - 100 * Math.floor(H0 / 100)))).substr(-2, 2); fs = Math.max(8, Math.min(16, w/2)) + "px"; Sinfo += "
" Sinfo += "
" + Hmn + "
" + para + "
"; } GH("curseurs" + iAct, S); GH("infoAction" + iAct, Sinfo); } function touchMove(t, ev, iAct) { var leftPos = ev.touches[0].clientX - GID(t.id).getBoundingClientRect().left; NewPosition(t, leftPos, iAct); } function mouseMove(t, ev, iAct) { if (mouseClick) { var leftPos = ev.clientX - GID(t.id).getBoundingClientRect().left; NewPosition(t, leftPos, iAct); } } function NewPosition(t, leftPos, iAct) { var G = GID(t.id).style.left; //+ window.scrollX; var width = GID(t.id).getBoundingClientRect().width; var HeureMouse = leftPos * 2420 / width; var idxClick = 0; var deltaX = 999999; for (var i = 0; i < LesActions[iAct].Periodes.length - 1; i++) { var dist = Math.abs(HeureMouse - LesActions[iAct].Periodes[i].Hfin) if (dist < deltaX) { idxClick = i; deltaX = dist; } } var NewHfin = Math.max(0, Math.min(HeureMouse, 2400)); if (idxClick == LesActions[iAct].Periodes.length - 1) NewHfin=2400; if (idxClick < LesActions[iAct].Periodes.length - 1) NewHfin = Math.min(NewHfin, LesActions[iAct].Periodes[idxClick + 1].Hfin); if (idxClick > 0) NewHfin = Math.max(NewHfin, LesActions[iAct].Periodes[idxClick - 1].Hfin); LesActions[iAct].Periodes[idxClick].Hfin = Math.floor(NewHfin); TracePeriodes(iAct); } function AddSub(v, iAct) { if (v == 1) { if (LesActions[iAct].Periodes.length<8){ LesActions[iAct].Periodes.push({ Hfin: 2400, Type: 1, Vmin:0, Vmax:100, Tinf:150, Tsup:150, Tarif:31 }); //Tarif codé en bits var Hbas = 0; if (LesActions[iAct].Periodes.length > 2){ Hbas = parseInt(LesActions[iAct].Periodes[LesActions[iAct].Periodes.length - 3].Hfin); } if (LesActions[iAct].Periodes.length > 1) { LesActions[iAct].Periodes[LesActions[iAct].Periodes.length - 2].Hfin = Math.floor((Hbas + 2400) / 2); } } } else { if (LesActions[iAct].Periodes.length>1){ LesActions[iAct].Periodes.pop(); if (LesActions[iAct].Periodes.length > 0) LesActions[iAct].Periodes[LesActions[iAct].Periodes.length - 1].Hfin = 2400; } } TracePeriodes(iAct); } function infoZclicK(i, iAct) { if (!blockEvent) { blockEvent = true; var Type = LesActions[iAct].Periodes[i].Type; var idZ = "info" + iAct + "Z" + i; var S = "
Sélection Action
X
"; //On ne traite plus depuis version8 le cas "Pas de Contrôle". Inutile c = (Type == 1) ? "bInset" : "bOutset"; S += "
OFF
"; S += ""; S += "
"; if (temperatureDS>-100) { S += "
"; S += "
Actif si température :
"; S += "
T ≥°
"; S += "
T ≤°
"; S += "
T en degré (0 à 100) ou laisser vide
"; S += "
"; } if (LTARFbin>0) { S += "
"; S += "
Actif si tarif :
"; if (LTARFbin<=3) { S += "
Heure Pleine Heure Creuse
"; } else { S += "
Tempo Bleu Blanc Rouge
"; } S += "
"; } S += "
"; S += ""; GH(idZ, S); var Tarif_=LesActions[iAct].Periodes[i].Tarif; if (LTARFbin>0) { if (LTARFbin<=3) { GID("TarifPl_" + idZ).checked = (Tarif_ & 1) ? 1:0 ; // H Pleine GID("TarifCr_" + idZ).checked = (Tarif_ & 2) ? 1:0 ; } else { GID("TarifBe_" + idZ).checked = (Tarif_ & 4) ? 1:0 ; GID("TarifBa_" + idZ).checked = (Tarif_ & 8) ? 1:0 ; GID("TarifRo_" + idZ).checked = (Tarif_ & 16) ? 1:0 ; //Rouge } } GID(idZ).style.display = "block"; } } function infoZclose(idx) { var champs=idx.split("info"); var idx=champs[1].split("Z"); S="TracePeriodes("+idx[0]+");" setTimeout(S, 100); } function selectZ(T, i, iAct) { if (LesActions[iAct].Periodes[i].Type != T) { LesActions[iAct].Periodes[i].Type = T; var idZ = "info" + iAct + "Z" + i; if (T <= 2) infoZclose(idZ); TracePeriodes(iAct); } } function NewVal(t){ var champs=t.id.split("info"); var idx=champs[1].split("Z"); //Num Action, Num période if (champs[0].indexOf("min")>0){ LesActions[idx[0]].Periodes[idx[1]].Vmin=Math.floor(GID(t.id).value); } if (champs[0].indexOf("max")>0){ LesActions[idx[0]].Periodes[idx[1]].Vmax=Math.floor(GID(t.id).value); if (idx[0]==0){ LesActions[idx[0]].Periodes[idx[1]].Vmax=Math.max(LesActions[idx[0]].Periodes[idx[1]].Vmax,5); LesActions[idx[0]].Periodes[idx[1]].Vmax=Math.min(LesActions[idx[0]].Periodes[idx[1]].Vmax,100); } } if (champs[0].indexOf("inf")>0){ var V= GID(t.id).value; if (V=="") V=128; LesActions[idx[0]].Periodes[idx[1]].Tinf=Math.floor(V); } if (champs[0].indexOf("sup")>0){ var V= GID(t.id).value; if (V=="") V=128; LesActions[idx[0]].Periodes[idx[1]].Tsup=Math.floor(V); } if (champs[0].indexOf("Tarif")>=0){ var idZ = "info" + champs[1]; var Tarif_ = 0; if (LTARFbin<=3) { Tarif_ += GID("TarifPl_" + idZ).checked ? 1:0; //H pleine Tarif_ += GID("TarifCr_" + idZ).checked ? 2:0; } else { Tarif_ += GID("TarifBe_" + idZ).checked ? 4:0; //Bleu Tarif_ += GID("TarifBa_" + idZ).checked ? 8:0; Tarif_ += GID("TarifRo_" + idZ).checked ? 16:0; //Rouge } LesActions[idx[0]].Periodes[idx[1]].Tarif=Tarif_; } } function editTitre(iAct) { if (GID("titre" + iAct).innerHTML.indexOf(""); GID("Etitre" + iAct).focus(); } } function TitreValid(iAct) { LesActions[iAct].Titre = GID("Etitre" + iAct).value.trim(); GH("titre" + iAct, LesActions[iAct].Titre); } function checkDisabled(){ for (var iAct = 0; iAct < LesActions.length; iAct++) { for (var i=0;i<=3;i++){ if( GID("radio" + iAct +"-"+ i).checked ) { LesActions[iAct].Actif =i;} } TracePeriodes(iAct); GID("planning0").style.display = (ITmode>0) ? "block" : "none"; // Pas de Triac si pas de synchro Zc GID("TitrTriac").style.display = (ITmode>0) ? "block" : "none"; GID("blocPlanning"+iAct).style.display = (LesActions[iAct].Actif>0) ? "block" : "none"; var visible = ( LesActions[iAct].Actif== 1) ? "visible" : "hidden"; GID("Host"+iAct).style.visibility =visible; GID("host"+iAct).style.visibility =visible; GID("Tempo"+iAct).style.visibility =visible; GID("tempo"+iAct).style.visibility =visible; LesActions[iAct].Host = GID("host" + iAct).value.trim(); if (LesActions[iAct].Host =="") visible="hidden"; GID("ordreoff"+iAct).style.visibility =visible; GID("ordreOff"+iAct).style.visibility =visible; GID("Port"+iAct).style.visibility =visible; GID("port"+iAct).style.visibility =visible; GID("Repet"+iAct).style.visibility =visible; GID("repet"+iAct).style.visibility =visible; GID("ligne_bas"+iAct).style.display =( LesActions[iAct].Actif> 1) ? "none" :"table-row"; GID("fen_slide"+iAct).style.visibility = (LesActions[iAct].Actif== 1 && iAct>0 ) ? "hidden" : "visible"; } } function LoadActions() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { var LeRetour = this.responseText; var Les_ACTIONS = LeRetour.split(GS); var LesParas = Les_ACTIONS[0].split(RS); temperatureDS=LesParas[0]; LTARFbin = parseInt(LesParas[1]); ITmode = parseInt(LesParas[2]); LesActions.splice(0,LesActions.length); for (var iAct=1;iAct"; } GH("plannings", S); for (var iAct = 0; iAct < LesActions.length; iAct++) { TracePlanning(iAct); GID("radio" + iAct +"-" +LesActions[iAct].Actif).checked = true; GH("titre" + iAct,LesActions[iAct].Titre); GV("host" + iAct,LesActions[iAct].Host); GV("port" + iAct,LesActions[iAct].Port); GV("ordreOn" + iAct,LesActions[iAct].OrdreOn); GV("ordreOff" + iAct,LesActions[iAct].OrdreOff); GV("repet" + iAct,LesActions[iAct].Repet); GV("tempo" + iAct,LesActions[iAct].Tempo); GV("slider" + iAct ,LesActions[iAct].Reactivite); GH("sensi" + iAct ,LesActions[iAct].Reactivite) } checkDisabled(); } }; xhttp.open('GET', 'ActionsAjax', true); xhttp.send(); } function SendValues() { for (var iAct = 0; iAct < LesActions.length; iAct++) { for (var i=0;i<=3;i++){ if( GID("radio" + iAct +"-"+ i).checked ) { LesActions[iAct].Actif =i;} } LesActions[iAct].Titre = GID("titre" + iAct).innerHTML.trim(); LesActions[iAct].Host = GID("host" + iAct).value.trim(); LesActions[iAct].Port = GID("port" + iAct).value; LesActions[iAct].OrdreOn = GID("ordreOn" + iAct).value.trim(); LesActions[iAct].OrdreOff = GID("ordreOff" + iAct).value.trim(); LesActions[iAct].Repet = GID("repet" + iAct).value; LesActions[iAct].Tempo = GID("tempo" + iAct).value; LesActions[iAct].Reactivite = GID("slider" + iAct).value; if (LesActions[iAct].OrdreOn=="" && iAct>0) LesActions[iAct].Actif=0; } var S=""; for (var iAct = 0; iAct < LesActions.length; iAct++) { if ((iAct==0)||LesActions[iAct].Actif>0){ S +=LesActions[iAct].Actif+RS+LesActions[iAct].Titre+RS; S +=LesActions[iAct].Host+RS+LesActions[iAct].Port+RS; S +=LesActions[iAct].OrdreOn+RS+LesActions[iAct].OrdreOff+RS+LesActions[iAct].Repet+RS+LesActions[iAct].Tempo+RS; S +=LesActions[iAct].Reactivite + RS + LesActions[iAct].Periodes.length+RS; for (var i=0;i