/
SoRusV
/
src_xendil
Обзор
Документация
Войти
/
SoRusV
/
src_xendil
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
html/src/MTemperature.js
382 строки
14 KB
ruslan
Initial commit
29 окт 2024, 11:18
29 окт 2024, 11:18
5c4dcf5
Код
Авторство
О чём код?
// let s="{\"LCool\":{\"Count\":2,\"Data\":{\"0\":{\"Enabled\":true,\"Name\":\"Name1\",\"GPIO_PWM\":\"P27\",\"LbT\":[0,0],\"TMin\":1,\"TMax\":2,\"TErr\":3,\"TimeStep\":4,\"LightDown\":0.8},\"1\":{\"Enabled\":true,\"Name\":\"Name2\",\"GPIO_PWM\":\"P28\",\"LbT\":[1,0],\"TMin\":11,\"TMax\":21,\"TErr\":32,\"TimeStep\":44,\"LightDown\":0.8}}}}"; // let JJJ=JSON.parse(s); let idTBody="{@LCool@:{}}"; new DynamicTBody(document.getElementById("{@LTemperature@:{}}")); new DynamicTBody(document.getElementById(idTBody)); let JLPWMChanelFan; let JLTemper; var JTemperTime; // let bLock=false; // let TimeRefresh; let JLCool; let bAutoRefreshRun=false; let LockAutoRefresh=false; P = document.getElementById('idSvgCTime'); SetNode(P, {width: document.body.clientWidth , height: document.body.clientHeight}); // let JP=[{"LTemperature":{"All":0}},{"LPWMChanelFan":{"All":0}}, {"LCool":{"All":0}}]; // MakeMenuNet(document.getElementById('MenuNet'), undefined, FRefresh, JP); MakeMenuNet(document.getElementById('MenuNet'), undefined, function(){setTimeout(FRefresh, 1)}, []); // WaitHide(); // setTimeout(AutoRefresh, 3000); // ShowWait(FRefresh); 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 -1; // } function GetIndexChanelFromGPIO_PWM(GPIO_PWM)//, Regime) /// return index of TimerChanel from id { if(GPIO_PWM!="-")// && Regime=="Auto") for(iCh=JLPWMChanelFan["Count"]-1; iCh>=0; iCh--) if(JLPWMChanelFan["Data"][String(iCh)]["GPIO_PWM"]==GPIO_PWM) return iCh; return -1; } // function MakeList(List)//, iRow) // { // List.length=JLPWMChanelFan["Count"]; // for(let i=0; i<List.length; i++) // List.options[i].text=JLPWMChanelFan["Data"][String(i)]["Name"]; // } function MakeList(List)//, iRow) { List.length=0; let Count= JLPWMChanelFan["Count"]; for(let i=0; i<Count; i++) if(JLPWMChanelFan["Data"][String(i)]["Regime"]=="Auto" && JLPWMChanelFan["Data"][String(i)]["GPIO_PWM"]!="-") { List.length = List.length + 1; List.options[List.length-1].text=JLPWMChanelFan["Data"][String(i)]["Name"]; List.options[List.length-1].value=i; } } function MakeChList(td, iRow) { // let elements = td.getElementsByTagName("*"); // for (let i = elements.length-1 ; i>=0; i--) // td.removeChild(elements.item(i)); while(td.firstChild) td.removeChild(td.firstChild); let C=JLTemper.Count; for(let i=0; i<C; i++) { let span = document.createElement("span"); span.style["background-color"]=DEC2Color(JLTemper.Data[String(i)].Color);//"#F7EBCC"; span.innerHTML="    "; let ch = document.createElement('input'); ch.type = 'checkbox'; ch.id="@T{@LbT@:["+i+"]}"; if(iRow>=0) if(JLCool && JLCool.Data && JLCool.Data[String(iRow)]) ch.checked = JLCool.Data[String(iRow)].LbT[i]; let nobr = document.createElement("nobr"); nobr.appendChild(span); nobr.appendChild(ch); td.appendChild(nobr ); } // List.options[i].text=JLPWMChanelFan["Data"][String(i)]["Name"]; } // function MakeRow(Row) {}; function MakeRow(Row, iR, idTBody_) { if(!JLPWMChanelFan || idTBody_!=idTBody) return; let T= document.getElementById(idTBody); let elements = Row.getElementsByTagName("*"); let List; let tdChList; let C=0; for (let i = 0; i < elements.length && C<2; i++) if(elements.item(i).id=="idLChanel") { List=elements.item(i); C++; } else if (elements.item(i).id=="idtdChList") { tdChList=elements.item(i); C++; } if(List) { MakeList(List);//, iRow) let GPIO_PWM = GetChanelGPIO_PWMFromRow(Row); // let Regime=GetRegimeFromRow(Row); let iChanel = GetIndexChanelFromGPIO_PWM(GPIO_PWM);//, Regime); // List.selectedIndex = iChanel; for(let i=0; i<List.length; i++) if(List.options[i].value==iChanel){ List.selectedIndex=i; break; } onChangeChanel(List); } if(tdChList) MakeChList(tdChList, iR); } function onChangeChanel(List) /// List with was chached { let Row=List.parentNode.parentNode.parentNode; //SetChanelIDToRow(Row, ID) 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=JLPWMChanelFan["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(JLPWMChanelFan["Data"][V]["Color"]); E.style["background-color"]=Color; } } } } function FRefresh(J) { function FuncRetGET(d, JFrom) { // if(!JFrom) // return; // if (CheckTab("TabLight") > 0) { // document.getElementById("idTempLightErr1").style.display = "block"; // document.getElementById("idTempLightErr2").style.display = "block"; // } // else { // document.getElementById("idTempLightErr1").style.display = "none"; // document.getElementById("idTempLightErr2").style.display = "none"; // } ElementsFromJson(document, JFrom); // if(!JLPWMChanelFan) JLPWMChanelFan=JFrom["LPWMChanelFan"]; TimeCurrent=Str2Time(JFrom["Time"]["TimeCurrent"]); JLTemper=JFrom["LTemperature"]; JLCool=JFrom["LCool"]; JTemperTime=UnpackTemper(JFrom); SetTBodyFromJson("LTemperature", JFrom); SetTBodyFromJson("LCool", JFrom); let T= document.getElementById(idTBody); for(let iR=0; iR< T.rows.length; iR++) MakeRow(T.rows[iR], iR, idTBody);//, iR); let TableLCool = document.getElementById("idTableLCool"); if(JFrom["LCool"] && JFrom["LCool"]["Count"] && JFrom["LCool"]["Count"]>0 || JLPWMChanelFan["Count"]>0) TableLCool.style.display="block"; else TableLCool.style.display="none"; if(CTime) { CTime.Free(); delete CTime; } LoadJTmpr(); CreateCTime(); WaitHide(); LockAutoRefresh=false; if(!bAutoRefreshRun){ bAutoRefreshRun=true; setTimeout(AutoRefresh, 3000); } }; LockAutoRefresh=true; // if(!J) { // JP = [{"LTemperature":{"All":0}}, {"LCool":{"All":0}}]; JP = [{"LCool":{"All":0}, "Time":{"TimeCurrent":0}}]; // if(!JLPWMChanelFan) JP[1]={"LPWMChanelFan":{"All":0}}; JP[2]={"LTemperature":{"Data":{"All":{"Ch":0, "LT":0}}}}; JP[3]={"LTemperature":{"All":0}}; // JP[2]={"LTemperature":{"Data":{"All":{"LT":0, "All":0}}}}; // let J = [JP]; JNetUdpDShow.Data[0].FuncRet = FuncRetGET; WokerSend(JP, JNetUdpDShow, undefined, "GET"); // } // else // FuncRetGET(undefined, J); // if(!JLPWMChanelFan) // { // JLPWMChanelFan = get_rest("Json={\"LPWMChanelFan\":{\"All\":0}}", _ip); // JLPWMChanelFan=JLPWMChanelFan["LPWMChanelFan"]; // } // // GetElementsFromServer(); // JLTemper= GetTBodyFromServer("{@LTemperature@:{}}")["LTemperature"]; // JLCool=GetTBodyFromServer("{@LCool@:{}}").LCool; // // let T= document.getElementById(idTBody); // for(let iR=0; iR< T.rows.length; iR++) // MakeRow(T.rows[iR], iR); // // let E = document.getElementById("@R{@LTemperature@:{@TimeRefresh@:0}}"); // TimeRefresh = E.value; // if(!b) // WaitHide(); // } function AutoRefresh() { function FuncRetGET(d, JFrom) { if(!JFrom) return; if(!LockAutoRefresh) SetTBodyFromJson("LTemperature", JFrom); setTimeout(AutoRefresh, 3000); // WaitHide(); }; if(LockAutoRefresh){ setTimeout(AutoRefresh, 3000); return; } JP = [GetTBodyFromServerAuto("{@LTemperature@:{}}")]; // JsonAdd(JP, GetElementsFromFaceAuto()); // console.log(JSON.stringify(JP)); // let J = [JP]; // for(p in JNetUdpDSelect.Data) // JNetUdpDSelect.Data[p].FuncRet = undefined; JNetUdpDShow.Data[0].FuncRet = FuncRetGET; WokerSend(JP, JNetUdpDShow, undefined, "GET"); }; // function FuncRet(Index){ // FRefresh(); // }; function FSend(b, bSaveConfig) { LockAutoRefresh=true; let J=[GetTBodyToSever("{@LTemperature@:{}}")]; J[1]=GetTBodyToSever("{@LCool@:{}}"); // JsonAdd(J[0], J1); if(bSaveConfig) { J[2] = {Main:{SaveCool:0}}; // J1 = {Main:{SaveConfig:0}}; // JsonAdd(J[1], J1); } for(p in JNetUdpDSelect.Data) JNetUdpDSelect.Data[p].FuncRet = undefined; WokerSend(J, JNetUdpDSelect, FRefresh, "POST"); }; // function FSend(b) { // SendElementsToServer(); // SendTBodyToSever("{@LTemperature@:{}}"); // SendTBodyToSever("{@LCool@:{}}"); // FRefresh(b); // }; function FSave(b) { FSend(0, true); }; // function FSave(b) { // FSend(1); // post_rest("Json={\"Main\":{\"SaveCool\":0}}", _ip); // SaveConfigToFile(); // if(!b) // document.getElementById('wrap').style.display = "none"; // } function FScanSensorTerm(b) { LockAutoRefresh = true; // post_rest("Json={\"LTemperature\":{\"ScanSensor\":0}}", _ip); let J=[{"LTemperature":{"ScanSensor":0}}]; for(p in JNetUdpDShow.Data) JNetUdpDShow.Data[p].FuncRet = undefined; WokerSend(J, JNetUdpDShow, FRefresh, "POST"); // FRefresh(b); } function LoadJTmpr() { let JTmprParam0 = JLTemper;//GetTemperatureParam(); let JTmprTime0 = JTemperTime;//GetTemperatureTime(); AATmprTime = []; ATmprParam = []; for (v in JTmprParam0.Data) { if (JTmprParam0.Data[v].Ch >= 0) { let Ch = JTmprParam0.Data[v].Ch; let bAdd=false; // if (JTmprTime0[Ch]) { // ATmprParam.push(JTmprParam0.Data[v]); // AATmprTime.push(JTmprTime0[Ch]); // } for(vg in JTmprTime0) { // console.log("vg="+JSON.stringify(vg)); if (JTmprTime0[vg].Ch == Ch) { ATmprParam.push(JTmprParam0.Data[v]); AATmprTime.push(JTmprTime0[vg].LP); bAdd = true; break; } } // if(!bAdd) // AAPWMTime.push([["00:00", 0]]); } } // ATmprParam, AATmprTime return {Param:ATmprParam, Data:AATmprTime}; } let AATmprTime, ATmprParam; let CTime; function CreateCTime() { let svg = document.getElementById('idSvgCTime'); let H = Number(svg.getAttributeNS(null, 'height')); let W = Number(svg.getAttributeNS(null, 'width')); let B = 0; let JCTimeGraph= {svg: svg, x0: B, x1: W - 2 * B, y0: B, y1: H - 2 * B, K: 1, AxesVisible:{L:false, R:true}, Unit: 0, onSelect: 0, CircleCursor:"default", LoadJTmpr: LoadJTmpr }; /// not svg CTime = new MChartTime(JCTimeGraph, 0,0, ATmprParam, AATmprTime); CTime.Show(CTime.ASR, true); CTime.SetSliderCurrentTime(); CTime.SliderShow(); } ClickItem("Temperature");