From 0ae2d8ad4a3ae820d8fc30f405cfec215b1ef3af Mon Sep 17 00:00:00 2001 From: Rohan Sircar Date: Sat, 26 Oct 2019 18:45:18 +0530 Subject: [PATCH] Added lib_deps, file upload page and temperature sensors to web UI --- .gitignore | 3 ++- data/colors.css.gz | Bin 597 -> 588 bytes data/edit.html.gz | Bin 620 -> 970 bytes data/index.html.gz | Bin 971 -> 1012 bytes data/main.css.gz | Bin 236 -> 242 bytes data/main.js.gz | Bin 990 -> 1058 bytes data/manualMode-ajax.html.gz | Bin 1514 -> 1528 bytes data/menu.html.gz | Bin 353 -> 353 bytes data/settings-ajax.html.gz | Bin 1077 -> 1087 bytes data/uploadButtonStyle.js.gz | Bin 0 -> 161 bytes platformio.ini | 7 +++++++ src/sketch_oct17esp.cpp | 2 +- 12 files changed, 10 insertions(+), 2 deletions(-) mode change 100755 => 100644 data/edit.html.gz create mode 100644 data/uploadButtonStyle.js.gz diff --git a/.gitignore b/.gitignore index 7087456..5fd8d00 100755 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,11 @@ .pio .pioenvs .piolibdeps +.piolibdeps_old .vscode/.browse.c_cpp.db* .vscode/c_cpp_properties.json .vscode/launch.json website-source website-source-copy website-zipped -website-zipped-bak \ No newline at end of file +website-zipped_bak diff --git a/data/colors.css.gz b/data/colors.css.gz index c174ba3a70ff387c101872cf76ebcac08d99916b..749506f3bd66570995ab9c3172fa7c6bdc8c83de 100644 GIT binary patch literal 588 zcmV-S0<--eiwFo|@v>b217mM&Z*p@kV{>x=wN^`SoG=i+^DC%&Ng^O@H{Q(>DVJO; zMe4Qc!GL)vtc{E}Nmcc~7nVo-6qrrD(n_A;^Ecm&$C}$4f5CEm_v!ij^ADFHiXr{& zECJozI!*v9M43Op+&_-nu7p&CM()=z+{7F7aJI!TdC4g`;nW}9JAl$G8{CAZh)yoB zL9lcERTv67kPHY$>It>IM|(YL*j6QeQDW>?kBMQLBZHP~ic}R6hWGo!L375>f}-qK zRFGFhJ-sg@$*Hm80*4(KxN<32V{Go1@>mnfAZBMMCz(B!OkE0mU&D#PYq2%3f3Ye0&$PN2n z@QtFQOY<0Bg`T_Fg7yz=z19J)6@nlw8yHt86*;2O{C^XO3A>u8uFu=xV+#{jz9P>8 z5=@Y$Aa9SNP)h1HO|60Cd4*PVmR8tZ0(R?!>1w-3-UOT#8GXuCAt%u$NKx0E3vPzQwW7rqUqYFRFNfs&oR*Uhm0C}Z$IyZn`8FxFXge#YuKg6z7qsE( z(ptCU8rhn*oDqL{dsbz`{4P(mUov!DH*WDWmEl0e-bp5S8elA8y4hwXNPdK~V;jn2 zbg{Rew{|iSZwfZyA2h3;+Pk8X-jh literal 597 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 diff --git a/data/main.css.gz b/data/main.css.gz index 94afda08a3600e9c1c252bb37a8d5069b53ccaad..e606c3530419a52a40869803b2ee477b3a223020 100644 GIT binary patch literal 242 zcmVtj6%}i@^GmK;m4?WG3gFeoZ2X9X3ZKZgf$Ge&aeQ8>0xiQNzJ#cV4p@Wq$Ia zu09c#zESiP!i_;!!W&OHEKYqLSPN0Y9vKqp{9x?HoSljzE;m`WhG&bj)nWPx##j<{ zyC=&l)&11FG45B(Q0A~rzXq#CDzwW1>)?Ci!lJ9uaDgP>J-fSSp#Qc?Y6S1h6)HhW sIY1|2Y4O5G^*&91E~_zN2IeJv{}0smeS%_Ae5Yyu0F6>`xaI)>0I*_nO#lD@ literal 236 zcmV;Il z>JzZ^jiMI_R|b6vZ#<D?H0)-seSe8=-avq*(@DPSG^AX#)Z8ZMCJUuS!Fdg5S})Ck_03si!Xa)3_4 m!eYxubQi~`b~)-(Yy67c{jAar^#A$OaCZY$yMI>M0RRAONpNTY diff --git a/data/main.js.gz b/data/main.js.gz index 3806cae86309e343ffccd2a51c10ad5d2ef2e510..2eb7731722d92cb5c846b4e5f2886a78e5ed6ae3 100644 GIT binary patch literal 1058 zcmV+-1l{`|iwFouIkQ~=18rexZZ2wb0M%GckJ~m7z57?N4hqR|AbIU|3&hz1O|roT zXn_EmTaW`+8m*Yhq)O52H3I+l4n>Kk_0_fEOLVYg>Ag3cA?Hzcvf+_pf)mE0J7ABg z@+aiSh~V)=C4r3GkXS^UHEU%uOYihXaryN8nPO;(nYmMTbtED%XjfHJxU z5eZ(141!EN`s2GAIwsSK=Lm7wT0kW_CG+LXAW*$fJ5;jq4)`hY@@H=~+K)zNL^KBJ zCi3qFB#u49(F^H&2B4GB@WSLYfG-YNkCM88Ddlknw^9mO_!5d7GljaAEFu0c_02&1 zQ{UHzN~PG6l4yCD8&#X)3q02q*_WRZ)JAer!^#v#wAk^8*n!|IeV~fkc??6krA%QQ zutXw~@_Pa*N=Zbstb}Hu4v-sScqPX7BC&p89O8RWit)$dBg5jWXI0OA80Jz$05K6f z0;A4kp$OhyGt^^+))v_l#DR?#<4A2JoBj7faDQSeTSKD`NfC|DR)S-7@#4C%|V zKD3wSL)(Xwgy&>YA32ulS-lsS1}`^>aT{}bMOzYG69LPC*C##Q2v zf1NFZc`|t^p-5}G@W*oPUF_QKc!+(25x&r5~zZz!_Zd^qS;wi;ch-aP8Yqr&s5T@0ct+T z911$jT%66kKAX8bk!i_)u|f@SH(B}a*kJ29X?ULZ&a4)%Y`<6f4ZiGbnLdVYqBf!W@zuaq3Jthv#t-ai=r!cw&|+0@UC1)e^vg5N@=T{Z(w z$P3!sWjyXe26st!yM(o!?Q87`!jAbrm+As_*;60xrFu<6>ccgis1N5_(B57h{j4h= cb^VfSzd%;+nHA3Y4{fsg55c_qzgiOj0P4LK>Hq)$ literal 990 zcmV<410nn$iwFoc%d%Yn18rexZZ2wb0M%GckJ~m7z57?N+k<4dki6^NOWhP`k_|RM z3k2BQf*iQgXvJ10U6NX_5%|A%C`uHquf~Qi@xhYGH*Y@3d6b-$Jkd;W!g%rk>^axr zoP3)R{Jc;}pdfEZDw1*oTu0BK?+Y-uZ}%V5Fxc!Lp|TF?z6R^rVK%c7(G;Yg z$iF2>jJ?3LU+EnCFeM``#it`d*QgwzGpKwpT{xYSDV=U_I9G{WtEFvqu=FRr|!oEhh zxl1`h)QiLt{l$2xVSsAG_z2Ug%k%-C9myw9bRUKNNx@RN0-2zYF<*Z0Uv*zEAtycIn_=)VR)8MzK!S4oJX3WAgQQx3` zmFQq=h7Q~|<9qfp^-lKGwpiU;7m~~~_3})yJX0ypl*tn`@`5sV8I8M;z+F<^E+K7a z>so(-uw(vDrG`L5@-&9~UcRm%jp4dVG=}pf=-}>-UQ(*5q4$#h17!W2S>wEagy!r2 M0G+@TcPJ7705~7~9{>OV diff --git a/data/manualMode-ajax.html.gz b/data/manualMode-ajax.html.gz index d120536cb4784324a1585786aca7059e3d79b777..2ce7910020fd4f94c69cda9990986a84fa42a957 100755 GIT binary patch literal 1528 zcmVciwFow7qndf18re$bzy8xZ)9aHVQOJ`E@*UZYyibrZExE)5dNI}3RVLq z8wn*lake0_4XjNHY*^c2=>`-&@|Rg*|3d3u)ztK=v-@y~{eFhd)iAgr)Hqq*`h($KHd)6-xC46eB51 za4{7@0yM~YCLDsO3Q{$2e&}>Af4&@V=r1STSsbcp5CXCQY6hnyPGc1_PG!J247y(D zlq75(Cq+^f6%vFQvk{6quI1oPW0>WcQ0~TZ5fc)SOQFW}5}6#^Ng0SZS44_n;P8xv zZy+tuIfsNW1~KgWR-q9XsTLe$1h5KCq*N}id_M@&2k8YoE5b2n0=ytgeD=WRK95Jz zSF>0tg-}BDBt{+J0uVh{lryfd{5v#J?bDf8O3J?qb-0LB@9T-&ft?tzU z=)1gls5`M`xi1jJF%}PHGmu#V{)N}=dS@npjPoxLx;)Es5J=tcdff}JDH5-L<=}#c&nOl_u`)5gN0pWa(Ppw+-yLKgz;IX&uH>5{CmP z#T`9iD%Lx+@1wLbA8;n621^x^15t*lJ})B{W;4nsB&X*j8PN+en$TGkDrqm-so+^K_hvWLe`RnNwD%%rW~aF=?b)YoFSwEll-J-LqgC zwwm+-g=esgLlypd{0#d#AB`?h3J8)Dem8F|8!Co!!8M+i& z6=!%?jFMROeLMcDKK6ahWY6ZfAM_q--{vXWcwScD$?WaMtE$}_=GE|lO_`NeQaxpY zB#YO&s}D$+1x1371aAWBmV>^1x%f3~xs_(`wy#&l*3e^NcsoVi-(!hiVIW$rG|6^P z$+$=j-xjpVe;clVmkZEVH!x-eSFH-JzI1;zP_mw_I(p9YyktK=$X%;JK&g+O#H%m%Qb!J<2vNd zz1#50M%={nPu;QP_PEQJi?`UxmZ5jso@r&9Xltmy^<))kgWQtYMsK{oD%;@-`}(+v zzPPa&aNW(N%ZU@5DH)Oz;tuq0g;B$K3>;}`;5lM;uJK$;p7-o+M?boCo5#99fGR{< zhRl;Z4xrUJCA3>Bjt#v^scxy%Rf+2jQV$unV5vwUbfuQr(I-)!KCY^zQLAPgJf2M~ z)E1ys4QPdp`7x*;-SVmsKXW4{aJ)eZ=KIj`*b4%J)BxgzH9 zEDp?9sXwQ)+03*iicBC4(ADsIbw=~o``7f+*$Vx*osfRDzAC+LC_J_sBFwO-B1l`S z?6d^P9AnpLdZqf&QJLzco;d+)ZH0bp*TJ`?d`-i0DZy)?V#Q(fnxzHfNH?2lv?J1 z_X(SVuhrJrz1{-<*4Ps^vyfJP3}mmr==JM>9{x0e5|+jjkZPs9diEY9&QPi+pcqM6 zf|IET5}-lGGvN?KRgkKo^Fyc8|EWLO(q9d_^Egz|Fa%@))I6M%IE_`zIF$k8FzkAr zbCR${oD@k_R7eo!nT=7@aV-aT7Q;NxgmSm0iApe`Cs;g`%|T`f_*Y)H>s^=tGS0t3=<+PjK_GR%>vgZZjt?@~2v_SW z$-;s|)w_y&#v3v4n!HI`nZf(n9V7llAK+eVVhMq+t^a?f113V7EnB!)!I-m@ ziKVXSOQOf=BooQ1q)D=%tWcR_mQiA|Mzz)VS!h{Ppt} z*w^`BqJe z1@)4HzJ0#@C2YBsX79Fd*2dP*V`2DmhPuDS5<&@o?LZ`V$pY1Pfch&?tK5tLF|lW+W3obKY`IU;3~KxpVI}ys{BD@%%$~EV(=G z^7--&cCuCI-L_|1**4k+>MuQ5McN{_Vz$*A@2|^txW>LYZK5x4Z3bL-d+KuF3`a_a zbR#yTl%ED{n=9$EHuv5o=2FU9@5c+an*y9|kmzHx)%vo6+n2%6@LFeUm_jbiXasL0NSqk0ssI2 diff --git a/data/menu.html.gz b/data/menu.html.gz index 05fdf16a1cebfbba5fb4040dc7e5ed647a00713e..39e4bced0db0b241c140bfe8763babcd4fd4282a 100755 GIT binary patch literal 353 zcmV-n0iOOJiwFqUH?&;<18rq)buMUhZEOIwl1)y-Fc5|JNZi3PYm*DOkx+%irYlY` zsV9l4e}XeE<@UH~O_R_dgw$+eXP)PM&lBlj&$b5oe#O(Wg1}BMfrk#95>~OQ5rn}( z_{=p0VaIBHKqbg`yu80->5)o*_u6_#pdE%>90b7Hfc1*E-r{3R*6^vfs6z7O<3#nE))DoYJW|saq za%%)c@>jzcJvtyXp}i)X3{*RXhaVFaM!Ov^U(&Rvk$RV32a(c0Tm%3B*x;(m literal 353 zcmV-n0iOOJiwFpZy|P^Z18rq)buMUhZEOIwl1*-dFc5|Jm3jxuUAycn2dT=Yo2+_* z0T1BDKZzOA^!9ZCH$X#GRVo{7{AS+wJV*y8RvKvA4UfwL0vlce&j)ZySjCE35C#X~ zBb_M-dsgW)Dnb6h^ZPp%AF1?LuhKgL?J%UnUI45KSZ#RYEj~764WE09B1BJ~KOZ{? zy0dH>+XQb62ARRM)5K~lZ4lJlt``;^k#`F%`MQohIa5F|?k>#6z@f$T8A6S;;SWR6 zHk~dUdKaAxDri{+qHORKyc5d5JD$r-FR`+LYZ@twnN}huvULAfQms;`H9pyyMf%Ig ztr5_XzZu5pNrBLW_LgimQ0)|+zfDva?e;u>iPN5s@0!^xZ|1KAEfQ&0w*uZ^mE?64 z{UZ%EPXkcd0Pzvdg6qKSyuu&xcD;;UbiXE)S!Y)MqO_J-w8%dJkMzNE>H`1(MbMxO diff --git a/data/settings-ajax.html.gz b/data/settings-ajax.html.gz index 709d1918947826dda1880bbd49ad6e4e75f42a7f..cb025deae1708a542507a80d2ad496999e239e28 100755 GIT binary patch literal 1087 zcmV-F1iU5Kp zRAjn}h!y{WT||@lc#GeNlm?1ZJKE{vx>`jir~%3CYQSg3SHQg40eUvu;&%^S@VkH* z#Lq#T&9}4p058Trr#OmNq5$jm#`|%+wiuu@SKv6QxWZVj1O+tHQk#e%s)NccqPOGm z{QbN*vfnF58m)7q7qJUNo~d@EGF^z9Z`HMRHOQ$#)4_bJVnuX6ml5d z3E0%yxY1F#k{b({OXCVU$4st*(q=}~j#!f|BB^V7YiFI|HJioLc)~Jk*+CX7 zQN<|PGuF@Y!Z_=14VWF9#xn#DgBBHQ8&>rU^mA3LhebRP?gdCJaPd&S0jm|Tn|Lyb zuUi7Sltb#;Xf60i@t_*D(MR{uM`5Ro9BiG(89kqvTGurgESpW@$xS?FVAZ{Fza^E< z8wq`8P6OJm6+Le?wp-A4L|i2-bh@h~)%mV-&&3@P`68;Y0j#(aenTe=rH5=F^U~I+ z&<6Kj5OmZYKr+d#^&u;V41?+Ehc-rU2HH~;N#%p|i%EpaK5-*CTk>pmnbh%bk+0id6XU%p1m zsH>{O#=RF#wls_}*I#-ckEQE&m)vpL09lY|5-mGt@^+H2pnlrzy61L%x!bhoHhstq zn?_sgg)o?7QLah%Hky`Q$ zN-c3uEuueKk%4cGFp$3{#_-f@9Q<(3FwB6m+cxlPBaJI;bq>!M;)DW%jk&+3K1Ivh2Af0*gp&n*z4&=KzdzH;0ZJfjNbbliZqoY!nUz=13m$0CG(HauwLp^a zudnB!&Zr&`4@AA8ziMRR{&Dm^bH7&Dn&0stjSfEDI}H-tzMS~C761R4{{Vig79+M1 F0021^78n2k literal 1077 zcmV-51j_p#iwFql!m?ce19N3`bZKs9b1h+NVR$ZRbZu+^?O021+c*$DZ+-=<9(*Z9 zJ9e-}A^Wi17JCV{KzrFEC5}s`Fjvo{Kvo@Z3=D}-)J;ehneyo!2;_OL{4DQ}!6w&c0qP`M&Cof4JO zo2X;=Y{>GuACdZn0}}#g*f2f4A4*=WfZQKe<@Na-9?FCIGPvj9QQy|TP0rVW+I_;G z7q|?=wgt4pkoASmEdaK5ka#LftUU4uZf|bg`-BDYAKw%cU(3=79^TP%g&j+og^%%pLV& zzMHdG*&NcwIXqAIH^MMFN_F|ANtJL33(6PGAz?n$6L+H+aU v)EoM%Mi%ZLM~^S}wZhi?jt6OU@aZ05kl^-N#6O()zhnLfvtf09r4axCI!Fyo diff --git a/data/uploadButtonStyle.js.gz b/data/uploadButtonStyle.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0407911c3f28c426c651218eb6368161f29aa1bc GIT binary patch literal 161 zcmV;S0ABweiwFouGqha*19fn0Z((FYb#!!ZZc}u5Y-KKLa{x`uK?=e!5CzbEPBBy= zEwmmWE)|!qyg-_cQW%pmGXYEK-Hl}9-@gC