Advertisement
Guest User

popup.js

a guest
Jul 17th, 2017
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. var refreshDisplayTimeout;
  2. var bgpage = chrome.extension.getBackgroundPage();
  3. var previousValues = [3, 5, 10, 30];
  4. var editing = false;
  5. var whitelist = [];
  6.  
  7. document.addEventListener('DOMContentLoaded', function () {
  8. load();
  9. document.querySelector('#start').addEventListener('click', setTimer);
  10. document.querySelector('#cancel').addEventListener('click', reset);
  11. document.querySelector('#wrench').addEventListener('click', swap);
  12. });
  13.  
  14. function show(section)
  15. {
  16. document.getElementById(section).style.display = "block";
  17. }
  18.  
  19. function showInline(section)
  20. {
  21. document.getElementById(section).style.display = "inline";
  22. }
  23.  
  24. function hide(section)
  25. {
  26. document.getElementById(section).style.display = "none";
  27. }
  28.  
  29. function load()
  30. {
  31. hide("settings");
  32. hide("whitelist");
  33. editing = false;
  34.  
  35. // loads custom times if they exist
  36. for(var i = 0; i < document.choices.radio.length; i++)
  37. if(localStorage[i] != null)
  38. document.getElementById("s"+i).textContent = localStorage[i];
  39.  
  40. // if timer is off, show settings
  41. if(!bgpage.alarmDate)
  42. {
  43. var span = document.getElementById("show-sites");
  44. for(var i=0; i < whitelist.length; i++)
  45. span.innerHTML += ( whitelist[i] + " ");
  46.  
  47. show("whitelist");
  48. hide("display");
  49. }
  50.  
  51. // else, show countdown
  52. else
  53. {
  54. show("display");
  55. refreshDisplay();
  56. }
  57. }
  58.  
  59. function addSite()
  60. {
  61. alert("DO SOMETHING");
  62. }
  63.  
  64. function getChoice()
  65. {
  66. // find selected RADIO, RETURN selected value
  67. var num;
  68. for(var i = 0; i < document.choices.radio.length; i++)
  69. {
  70. if(document.choices.radio[i].checked == true)
  71. num = parseInt(document.getElementById("s"+i).textContent);
  72. }
  73. return num;
  74. }
  75.  
  76. function swap()
  77. {
  78. editing = true;
  79.  
  80. // swap text with fields
  81. for(var i = 0; i < document.choices.radio.length; i++)
  82. {
  83. var span = document.getElementById("s"+i);
  84. var num = parseInt(span.textContent);
  85.  
  86. previousValues[i] = num;
  87.  
  88. var html = "<input class='input-mini' type='text' name='custom' id='c"+i;
  89. html += "' value='"+num;
  90. html += "'>";
  91. // used to select on click and auto save on change
  92.  
  93. span.innerHTML = html;
  94. }
  95.  
  96. // swap edit button with done button
  97. var butt = document.getElementById("swapper");
  98. butt.innerHTML = "<a href='#' id='done' class='btn'><i class='icon-ok'></i></a>";
  99. document.querySelector('#done').addEventListener('click', swapBack);
  100. }
  101.  
  102. function swapBack()
  103. {
  104. // swap fields with text
  105. for(var i = 0; i < document.choices.radio.length; i++)
  106. {
  107. var span = document.getElementById("s"+i);
  108. var num = parseInt(document.getElementById("c"+i).value);
  109.  
  110. if(isValid(num))
  111. {
  112. localStorage[i] = num;
  113. span.textContent = num;
  114. }
  115. else
  116. span.textContent = previousValues[i];
  117. }
  118.  
  119. // swap done button with edit button
  120. var butt = document.getElementById("swapper");
  121. butt.innerHTML = "<a href='#' id='wrench' class='btn'><i class='icon-wrench'></i></a>";
  122. document.querySelector('#wrench').addEventListener('click', swap);
  123.  
  124. editing = false;
  125. }
  126.  
  127. function setTimer()
  128. {
  129. // make sure we're dealing with text not fields
  130. if(editing)
  131. swapBack();
  132.  
  133. // SET background timer for selected number
  134. // HIDE settings, DISPLAY countdown
  135.  
  136. var num = getChoice();
  137.  
  138. // set timer, hide settings, display reset button
  139. if(isValid(num))
  140. {
  141. bgpage.setAlarm(num * 60000);
  142. hide("settings");
  143. show("display");
  144. refreshDisplay();
  145. }
  146. else
  147. bgpage.error();
  148. }
  149.  
  150. // Returns true if 0 <= amt <= 240
  151. function isValid(amt)
  152. {
  153. if(isNaN(amt) || (amt == null))
  154. return false;
  155. else if((amt < 0) || (amt > 240))
  156. return false;
  157. else
  158. return true;
  159. }
  160.  
  161. function refreshDisplay()
  162. {
  163. percent = bgpage.getTimeLeftPercent();
  164.  
  165. if(percent < 15)
  166. document.getElementById("bar").style.color = "grey";
  167. document.getElementById("bar").textContent = bgpage.getTimeLeftString();
  168. document.getElementById("bar").style.width = percent + "%";
  169.  
  170. refreshDisplayTimeout = setTimeout(refreshDisplay, 100);
  171. }
  172.  
  173. function reset()
  174. {
  175. clearTimeout(refreshDisplayTimeout);
  176. bgpage.turnOff();
  177. hide("display");
  178. show("settings");
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement