/
SoRusV
/
src_xendil
Обзор
Документация
Войти
/
SoRusV
/
src_xendil
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
html/src/MTimer.js
337 строк
11 KB
ruslan
Initial commit
29 окт 2024, 11:18
29 окт 2024, 11:18
5c4dcf5
Код
Авторство
О чём код?
let idIable="{@LTimer@:{}}"; new DynamicTBody( document.getElementById(idIable)); new DynamicTBody( document.getElementById("{@LPWMChanelTimer@:{}}")); let JLPWMChanelTimer; let JsonTimer; MakeMenuNet(document.getElementById('MenuNet'), undefined, function(){setTimeout(FRefresh, 1)}, []); function MakeList(List)//, iRow) { List.length=0; let Count= JLPWMChanelTimer["Count"]; for(let i=0; i<Count; i++) if(JLPWMChanelTimer["Data"][String(i)]["GPIO_PWM"]!="-") { List.length = List.length + 1; List.options[List.length-1].text=JLPWMChanelTimer["Data"][String(i)]["Name"]; List.options[List.length-1].value=i; } }; function GetChanelGPIO_PWMFromRow(Row) /// return id { let elements = Row.getElementsByTagName("*"); for (let i = 0; i < elements.length; i++) if(elements.item(i).id=="@T{@GPIO_PWM@:0}") return ElementGetValue(elements.item(i)); return -1; }; // function GetRegimeFromRow(Row) // /// return id // { // let elements = Row.getElementsByTagName("*"); // for (let i = 0; i < elements.length; i++) // if(elements.item(i).id=="@T{@Regime@:0}") // return ElementGetValue(elements.item(i)); // return ""; // } function GetIndexChanelFromGPIO_PWM(GPIO_PWM)//, Regime) /// return index of TimerChanel from id { if(GPIO_PWM!="-" && GPIO_PWM!="-1") for(iCh=JLPWMChanelTimer["Count"]-1; iCh>=0; iCh--) if(JLPWMChanelTimer["Data"][String(iCh)]["GPIO_PWM"]==GPIO_PWM) return iCh; return -1; } function MakeRow(Row, iR, TBodyID)//, iRow) /// Row - row element /// iRow - index of row element { if(TBodyID=="{@LTimer@:{}}") { let E = GetElementByID(Row, "@T@S{@Status@:0}"); if (E && E.innerHTML == "Disabled") E.style.backgroundColor = '#ff0000'; else if (E) E.style.backgroundColor = ""; let T = document.getElementById(idIable); if (JLPWMChanelTimer == undefined) return; let elements = Row.getElementsByTagName("*"); let List; for (let i = 0; i < elements.length; i++) if (elements.item(i).id == "idLChanel") { List = elements.item(i); break } if (!List) return; MakeList(List);//, iRow) let GPIO_PWM = GetChanelGPIO_PWMFromRow(Row); let iChanel = GetIndexChanelFromGPIO_PWM(GPIO_PWM);//, Regime); let b = false; for (let i = 0; i < List.length; i++) if (List.options[i].value == iChanel) { List.selectedIndex = i; b = true; break; } if (!b) List.selectedIndex = -1; onChangeChanel(List); } else if(TBodyID=="{@LPWMChanelTimer@:{}}"){ // let GPIO_PWM=GetChanelGPIO_PWMFromRow(Row); let iCh=iR;//GetIndexChanelFromGPIO_PWM(GPIO_PWM); let elements = Row.getElementsByTagName("*"); for (let i = 0; i < elements.length; i++) { let E = elements.item(i); if (JLPWMChanelTimer["Data"][iCh] && JLPWMChanelTimer["Data"][iCh]["YE"] < 1){ /// IntervalOn by msec if (E.id == "idIntervalOnTime") { let ER=GetElementByID(Row, "@T@S{@Rest@:0}") let R=ER.value; let ET=GetElementByID(Row, "idRestTime"); let T=Millis2TimeStr(R, false); ET.value=T; E.style.display = "block"; } else if (E.id == "idYE") E.style.display = "none"; } else /// IntervalOn by unit { if (E.id=="idIntervalOnTime") E.style.display = "none"; else if (E.id=="idYE") E.style.display = "inline"; else if (E.id=="idDimension" && JLPWMChanelTimer["Data"][String(iCh)]) ElementSetValue(E, "["+JLPWMChanelTimer["Data"][String(iCh)]["Dimension"]+"]"); } } } }; function FRefresh(J) { function FuncRetGET(d, JsonFrom) { //JsonFrom = get_rest(SJ, _ip); console.log(JSON.stringify(JsonFrom)) // if(!JLPWMChanelTimer) JLPWMChanelTimer=JsonFrom["LPWMChanelTimer"]; SetTBodyFromJson("LTimer", JsonFrom); if(JsonFrom["Eeprom"] && JsonFrom["Eeprom"]["CheckI2C"]=="Found") { SetTBodyFromJson("LPWMChanelTimer", JsonFrom); document.getElementById("TTimer").style.display = "inline"; } else document.getElementById("TTimer").style.display = "none"; let T= document.getElementById(idIable); for(let iR=0; iR< T.rows.length; iR++) MakeRow(T.rows[iR]);//, iR); WaitHide(); }; let JP=[{"LTimer":{"All":0}}]; JP[1]={"LPWMChanelTimer":{"All":0}, "Eeprom":{"CheckI2C":0}}; JNetUdpDShow.Data[0].FuncRet = FuncRetGET; WokerSend(JP, JNetUdpDShow, undefined, "GET"); }; function FSend(b, bSaveConfig) { let J=[]; J[0]=GetTBodyToSever("{@LTimer@:{}}"); let J1=GetTBodyToSever("{@LPWMChanelTimer@:{}}"); if(J1["LPWMChanelTimer"].Count>0) J[J.length]=J1; if(bSaveConfig) J[J.length]={Main:{SaveTimer:0}}; for(p in JNetUdpDSelect.Data) JNetUdpDSelect.Data[p].FuncRet = undefined; WokerSend(J, JNetUdpDSelect, FRefresh, "POST"); }; function FSave(b) { FSend(0, true); }; function onChangeChanel(List) /// List with was chached { let Row=List.parentNode.parentNode.parentNode; let elements = Row.getElementsByTagName("*"); let V; if(List.selectedIndex>=0) V=String(List.options[List.selectedIndex].value); for (let i = 0; i < elements.length; i++) { let E=elements.item(i); if(E.id=="@T{@GPIO_PWM@:0}") { if(List.selectedIndex<0) ElementSetValue(E, -1); else { let GPIO_PWM=JLPWMChanelTimer["Data"][V]["GPIO_PWM"]; ElementSetValue(E, GPIO_PWM); } continue; } if(E.id=="idColor") { if(List.selectedIndex<0) E.style["background-color"]="#000000"; else { let Color=DEC2Color(JLPWMChanelTimer["Data"][V]["Color"]); E.style["background-color"]=Color; } continue } if(List.selectedIndex<0 || JLPWMChanelTimer["Data"][V]["YE"]<1) /// IntervalOn by msec { if (E.id=="idIntervalOnTime") E.style.display = "block"; else if (E.id=="idYE") E.style.display = "none"; } else /// IntervalOn by unit { if (E.id=="idIntervalOnTime") E.style.display = "none"; else if (E.id=="idYE") E.style.display = "inline"; else if (E.id=="idDimension") { let GPIO_PWM=GetChanelGPIO_PWMFromRow(Row); // ++let Regime=GetRegimeFromRow(Row); if(GPIO_PWM<0) { ElementSetValue(E,"[]"); continue } let iCh=GetIndexChanelFromGPIO_PWM(GPIO_PWM);//, Regime); if(iCh<0) { ElementSetValue(E,"[]"); continue } ElementSetValue(E, "["+JLPWMChanelTimer["Data"][String(iCh)]["Dimension"]+"]"); } } } } let timerId; function TimeOutEnd() { //VPulseLast=-1; timerId=undefined; }; function PulseMs(Obj) { if(!JLPWMChanelTimer) return; let nobr=Obj.parentNode; let E=nobr.getElementsByTagName("*"); let T = E.item(0).value; T=Time2MSec(T); let tr=nobr.parentNode.parentNode; let Es = tr.getElementsByTagName("*"); let iR, iP=-1; for (i = 0; i < Es.length; i++) { let E = Es.item(i); if (E.id && (E.id == "@T{Index}")){ iR=E.value; // break; } else if(iP<0 && E.tagName=="NOBR") { let Es0 = E.getElementsByTagName("*"); for (i0 = 0; i0 < Es0.length; i0++) { let E0 = Es0.item(i0); if (E0.id && (E0.id == "idLChanel")) //iP=E0.selectedIndex; iP=E0.options[E0.selectedIndex].value; } } } let V=-1; if(!timerId) { V = JLPWMChanelTimer["Data"][String(iP)]["VMax"]; timerId = setTimeout(TimeOutEnd, T); } else { clearTimeout(timerId); timerId = undefined; } let S = "Json={\"LPWMChanelTimer\":{\"Data\":{" + String(iP) + ":{\"VManual\":{"+ "V:"+ V.toFixed(5)+", TOffMs:"+T+"}}}}}"; post_rest(S, JNetUdpDShow["Data"]["0"]["IP"]); } function PulseYE(Obj) { if(!JLPWMChanelTimer) return; let nobr=Obj.parentNode; let E=nobr.getElementsByTagName("*"); let T = E.item(0).value; //T=Time2MSec(T); let tr=nobr.parentNode.parentNode; let Es = tr.getElementsByTagName("*"); let iR, iP=-1; for (i = 0; i < Es.length; i++) { let E = Es.item(i); if (E.id && (E.id == "@T{Index}")){ iR=E.value; // break; } else if(iP<0 && E.tagName=="NOBR") { let Es0 = E.getElementsByTagName("*"); for (i0 = 0; i0 < Es0.length; i0++) { let E0 = Es0.item(i0); if (E0.id && (E0.id == "idLChanel")) iP=E0.options[E0.selectedIndex].value; } } } T=JLPWMChanelTimer["Data"][String(iP)]["YE"]*T; let V=-1; if(!timerId) { V = JLPWMChanelTimer["Data"][String(iP)]["VMax"]; timerId = setTimeout(TimeOutEnd, T); } else { clearTimeout(timerId); timerId = undefined; } let S = "Json={\"LPWMChanelTimer\":{\"Data\":{" + String(iP) + ":{\"VManual\":{"+ "V:"+ V.toFixed(5)+", TOffMs:"+T+"}}}}}"; post_rest(S, JNetUdpDShow["Data"]["0"]["IP"]); }; function SaveRestMs(Obj) { let nobr=Obj.parentNode; let tr=nobr.parentNode.parentNode; let iCh=GetElementByID(tr, "@T{Index}").innerHTML; let V=GetElementByID(tr, "idRestTime").value; V=TimeStr2Millis(V); let S = "Json={\"LPWMChanelTimer\":{\"Data\":{" + iCh + ":{\"Rest\":"+V+"}}}}"; post_rest(S, JNetUdpDShow["Data"]["0"]["IP"]); }; function SaveRestYE(Obj) { let nobr=Obj.parentNode; let tr=nobr.parentNode.parentNode; let iCh=GetElementByID(tr, "@T{Index}").innerHTML; let V=GetElementByID(tr, "@T@S{@Rest@:0}").value; let S = "Json={\"LPWMChanelTimer\":{\"Data\":{" + iCh + ":{\"Rest\":"+V+"}}}}"; post_rest(S, JNetUdpDShow["Data"]["0"]["IP"]); }; ClickItem("Timer");