Browse code

Add a new configuration widget for automatic wakeup time

Natasha Kerensikova authored on27/04/2016 21:00:15
Showing2 changed files
... ...
@@ -47,6 +47,8 @@
47 47
       "signKey": document.getElementById("signKey").value,
48 48
       "signKeyFormat": document.getElementById("signKeyFormat").value,
49 49
       "autoClose" : document.getElementById("autoClose").checked ? 1 : 0,
50
+      "wakeupTime" : document.getElementById("wakeupEnable").checked
51
+       ? document.getElementById("wakeupTime").value : "-1",
50 52
     }
51 53
 
52 54
     if (!document.getElementById("bundleEnable").checked) {
... ...
@@ -72,6 +74,12 @@
72 74
      = document.getElementById("signEnable").checked
73 75
      ? "block" : "none";
74 76
   }
77
+
78
+  function updateWakeupVisibility() {
79
+    document.getElementById("wakeupFields").style.display
80
+     = document.getElementById("wakeupEnable").checked
81
+     ? "block" : "none";
82
+  }
75 83
   </script>
76 84
 </head>
77 85
 <body>
... ...
@@ -101,6 +109,22 @@
101 109
     </div>
102 110
   </div>
103 111
 
112
+  <div class="item-container">
113
+    <div class="item-container-header">Auto Wakeup</div>
114
+    <div class="item-container-content">
115
+      <label class="item">
116
+        Enable Auto Wakeup
117
+        <input type="checkbox" class="item-toggle" name="wakeupEnable" id="wakeupEnable" onchange="updateWakeupVisibility();">
118
+      </label>
119
+      <div id="wakeupFields">
120
+        <label class="item">
121
+          Wake-up time
122
+          <input type="time" class="item-time" name="wakeupTime" id="wakeupTime" value="00:00">
123
+        </label>
124
+      </div>
125
+    </div>
126
+  </div>
127
+
104 128
   <div class="item-container">
105 129
     <div class="item-container-header">Data Bundling</div>
106 130
     <div class="item-container-content">
... ...
@@ -215,8 +239,19 @@
215 239
     document.getElementById("signKeyFormat").value = getQueryParam("s_keyf", "HEX");
216 240
     document.getElementById("signEnable").checked = (getQueryParam("s_field", "") !== "");
217 241
     document.getElementById("autoClose").checked = (getQueryParam("ac", "") !== "");
242
+
243
+    var initWakeupTime = parseInt(getQueryParam("wakeup", "-1"));
244
+    if (initWakeupTime >= 0) {
245
+      var wakeupMin = initWakeupTime % 60;
246
+      document.getElementById("wakeupEnable").checked = true;
247
+      document.getElementById("wakeupTime").value = (initWakeupTime / 60).toString(10) + (wakeupMin >= 10 ? ":" : ":0") + wakeupMin.toString(10);
248
+    } else {
249
+      document.getElementById("wakeupEnable").checked = false;
250
+    }
251
+
218 252
     updateBundleVisibility();
219 253
     updateSignVisibility();
254
+    updateWakeupVisibility();
220 255
   </script>
221 256
 </body>
222 257
 </html>
... ...
@@ -24,6 +24,7 @@ var cfg_sign_field_format = "";
24 24
 var cfg_sign_key = "";
25 25
 var cfg_sign_key_format = "";
26 26
 var cfg_auto_close = false;
27
+var cfg_wakeup_time = -1;
27 28
 
28 29
 var to_send = [];
29 30
 var senders = [new XMLHttpRequest(), new XMLHttpRequest()];
... ...
@@ -101,6 +102,7 @@ Pebble.addEventListener("ready", function() {
101 102
    cfg_sign_key = localStorage.getItem("cfgSignKey");
102 103
    cfg_sign_key_format = localStorage.getItem("cfgSignKeyFormat");
103 104
    cfg_auto_close = localStorage.getItem("cfgAutoClose");
105
+   cfg_wakeup_time = parseInt(localStorage.getItem("cfgWakeupTime") || "-1", 10);
104 106
 
105 107
    if (!(cfg_bundle_max >= 1)) cfg_bundle_max = 1;
106 108
 
... ...
@@ -158,6 +160,10 @@ Pebble.addEventListener("showConfiguration", function() {
158 160
       settings += "&ac=1";
159 161
    }
160 162
 
163
+   if (cfg_wakeup_time >= 0) {
164
+      settings += "&wakeup=" + cfg_wakeup_time.toString(10);
165
+   }
166
+
161 167
    Pebble.openURL("https://cdn.rawgit.com/faelys/pebble-health-export/v1.0/config.html" + settings);
162 168
 });
163 169
 
... ...
@@ -218,7 +224,22 @@ Pebble.addEventListener("webviewclosed", function(e) {
218 224
       msg.cfgAutoClose = cfg_auto_close ? 1 : 0;
219 225
    }
220 226
 
221
-   console.log(cfg_sign_field ? "Signature enabled" : "Signature disabled");
227
+   if (configData.wakeupTime !== null) {
228
+      console.log("Received wakeupTime \"" + configData.wakeupTime + "\"");
229
+      var wakeupComponents = configData.wakeupTime.split(":");
230
+      if (wakeupComponents.length === 2) {
231
+         var wakeupH = parseInt(wakeupComponents[0], 10);
232
+         var wakeupM = parseInt(wakeupComponents[1], 10);
233
+         if (wakeupH >= 0 && wakeupH < 24 && wakeupM >= 0 && wakeupM < 60) {
234
+            cfg_wakeup_time = wakeupH * 60 + wakeupM;
235
+            localStorage.setItem("cfgWakeupTime", cfg_wakeup_time);
236
+         }
237
+         else
238
+            console.log("Invalid wakeupTime \"" + configData.wakeupTime + "\"");
239
+      }
240
+      else
241
+         console.log("Invalid wakeupTime \"" + configData.wakeupTime + "\"");
242
+   }
222 243
 
223 244
    if (configData.resend) {
224 245
       senders[0].abort();