From 6fc47c3f94fc6a1838afd5d2c3013754c89e1e7f Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Fri, 30 Mar 2018 17:46:30 +0200 Subject: [PATCH] Shrink timer webpage by 2k Shrink timer webpage by 2k --- sonoff/xdrv_09_timers.ino | 76 +++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 43 deletions(-) diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index efa57b708..f1ddeb68c 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -197,7 +197,7 @@ boolean TimerCommand() #ifdef USE_TIMERS_WEB const char HTTP_TIMER_SCRIPT[] PROGMEM = "var pt=[],ct=99;" - "function qs(s){" // Save code space + "function qs(s){" // Alias to save code space "return document.querySelector(s);" "}" "function ce(i,q){" // Create select option @@ -206,47 +206,48 @@ const char HTTP_TIMER_SCRIPT[] PROGMEM = "q.appendChild(o);" "}" "function st(){" // Save parameters to hidden area - "var d,h,i,m,n,s,p;" - "h=qs('#ho');" - "m=qs('#mi');" - "d=qs('#d1');" + "var i,n,p,s;" "s=0;" "n=1<<30;if(eb('a0').checked){s|=n;}" // Get arm "n=1<<29;if(eb('r0').checked){s|=n;}" // Get repeat "for(i=0;i<7;i++){n=1<<(16+i);if(eb('w'+i).checked){s|=n;}}" // Get weekdays "s|=(eb('p1').value<<27);" // Get power - "s|=(d.selectedIndex<<23);" // Get device - "s|=((h.selectedIndex*60)+m.selectedIndex)&0x7FF;" // Get time + "s|=(qs('#d1').selectedIndex<<23);" // Get device + "s|=((qs('#ho').selectedIndex*60)+qs('#mi').selectedIndex)&0x7FF;" // Get time "pt[ct]=s;" "eb('t0').value=pt.join();" // Save parameters from array to hidden area "}" - "function ot(t,e){" - "var d,h,i,m,n,s,tl,p,q;" - "h=qs('#ho');" - "m=qs('#mi');" - "d=qs('#d1');" - "if(ct==99){" // Do this once - "pt=eb('t0').value.split(',').map(Number);" // Get parameters from hidden area to array - "for(i=0;i<=23;i++){ce((i<10)?('0'+i):i,h);}" // Create hours select options - "for(i=0;i<=59;i++){ce((i<10)?('0'+i):i,m);}" // Create minutes select options - "for(i=0;i<}1;i++){ce(i+1,d);}" // Create devices - "}else{" + "function ot(t,e){" // Select tab and update elements + "var i,n,o,p,q,s;" + "if(ct<99){" "st();" // Save changes "}" - "tl=document.getElementsByClassName('tl');" // Remove the background color of all tablinks/buttons - "for(i=0;i>(16+i))&1;eb('w'+i).checked=p;}" // Set weekdays - "p=(s>>23)&0xF;d.value=p+1;" // Set device + "p=(s>>23)&0xF;qs('#d1').value=p+1;" // Set device "p=(s>>27)&3;eb('p1').value=p;" // Set power "p=(s>>29)&1;eb('r0').checked=p;" // Set repeat "p=(s>>30)&1;eb('a0').checked=p;" // Set arm "ct=t;" + "}" + "function it(){" // Initialize elements and select first tab + "var b,i,o,s;" + "pt=eb('t0').value.split(',').map(Number);" // Get parameters from hidden area to array + "s='';for(i=0;i<" STR(MAX_TIMERS) ";i++){b='';if(0==i){b=\" id='dP'\";}s+=\"\"}" + "eb('bt').innerHTML=s;" // Create tabs + "o=qs('#ho');for(i=0;i<=23;i++){ce((i<10)?('0'+i):i,o);}" // Create hours select options + "o=qs('#mi');for(i=0;i<=59;i++){ce((i<10)?('0'+i):i,o);}" // Create minutes select options + "o=qs('#d1');for(i=0;i<}1;i++){ce(i+1,o);}" // Create devices + "var a='" D_DAY3LIST "';" + "s='';for(i=0;i<7;i++){s+=\"\"+a.substring(i*3,(i*3)+3)+\"\"}" + "eb('ds').innerHTML=s;" // Create weekdays + "eb('dP').click();" // Get the element with id='dP' and click on it "}"; const char HTTP_TIMER_STYLE[] PROGMEM = ".tl{float:left;border-radius:0;border:1px solid #fff;padding:1px;width:6.25%;}" @@ -255,7 +256,7 @@ const char HTTP_FORM_TIMER[] PROGMEM = "
 " D_TIMER_PARAMETERS " 
" "



" "
" "" D_TIMER_OUTPUT "  " "" D_TIMER_POWER "  " - "" D_TIMER_TIME "  :  " + "" D_TIMER_TIME "  " D_HOUR_MINUTE_SEPARATOR "  " "" D_TIMER_ARM " " "" D_TIMER_REPEAT "" "

" - "
"; + "
"; const char HTTP_FORM_TIMER2[] PROGMEM = "type='submit' onclick='st();this.form.submit();'"; @@ -295,25 +296,11 @@ void HandleTimerConfiguration() if (i > 0) page += F(","); page += String(Settings.timer[i].data); } - page += F("' hidden>
"); - for (byte i = 0; i < MAX_TIMERS; i++) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(""), - i, (0 == i) ? " id='dP'" : "", i +1); - page += mqtt_data; - } page += FPSTR(HTTP_FORM_TIMER1); page.replace(F("}1"), String(devices_present)); - char day[4] = { 0 }; - for (byte i = 0; i < 7; i++) { - strncpy_P(day, PSTR(D_DAY3LIST) + (i *3), 3); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s"), i, i, day); - page += mqtt_data; - } - page += F("
"); - page += FPSTR(HTTP_FORM_END); page.replace(F("type='submit'"), FPSTR(HTTP_FORM_TIMER2)); - page += F(""); // Get the element with id='defaultOpen' and click on it + page += F(""); // Init elements and select first tab/button page += FPSTR(HTTP_BTN_CONF); ShowPage(page); } @@ -324,11 +311,14 @@ void TimerSaveSettings() WebGetArg("t0", tmp, sizeof(tmp)); char *p = tmp; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_TIMERS " ")); for (byte i = 0; i < MAX_TIMERS; i++) { uint32_t data = strtol(p, &p, 10); p++; // Skip comma if ((data & 0x7FF) < 1440) Settings.timer[i].data = data; + snprintf_P(log_data, sizeof(log_data), PSTR("%s%s0x%08X"), log_data, (i > 0)?",":"", Settings.timer[i].data); } + AddLog(LOG_LEVEL_DEBUG); } #endif // USE_TIMERS_WEB #endif // USE_WEBSERVER