Web based virtual Nixie Tube Clock
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 

259 lignes
7.9 KiB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <!-- SOURCE: http://cestmir.freeside.sk/projects/dhtml-nixie-display/ -->
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <meta name="mobile-web-app-capable" content="yes">
  7. <meta name="apple-mobile-web-app-capable" content="yes" />
  8. <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
  9. <script type='text/javascript' charset='utf-8'>
  10. // Hides mobile browser's address bar when page is done loading.
  11. window.addEventListener('load', function(e) {
  12. setTimeout(function() { window.scrollTo(0, 1); }, 1);
  13. }, false);
  14. </script>
  15. <title>Virtual nixie tube display</title>
  16. <script type="text/javascript" src="nixie.js?1"></script>
  17. <style type="text/css">
  18. html, body, td, th {
  19. font-family: Verdana, Arial, Helvetica, sans-serif;
  20. font-size: 12px;
  21. color: black;
  22. background-color: black;
  23. }
  24. body {
  25. margin: 30px;
  26. }
  27. th {
  28. text-align: left;
  29. vertical-align: top;
  30. font-weight: normal;
  31. font-style: italic;
  32. white-space: nowrap;
  33. }
  34. h1, h2, h3, h4, h5, h6 {
  35. border-bottom: 1px solid #DFDFDF;
  36. color: #660000;
  37. font-weight: normal;
  38. }
  39. h1 {
  40. font-size: 24px;
  41. }
  42. h2 {
  43. font-size: 18px;
  44. margin-top: 1.5em;
  45. }
  46. h3 {
  47. font-size: 16px;
  48. }
  49. h4 {
  50. font-size: 12px;
  51. }
  52. h5 {
  53. font-size: 12px;
  54. font-weight: bold;
  55. }
  56. .note {
  57. font-size: 9px;
  58. }
  59. li {
  60. margin: 0.2em;
  61. }
  62. table.references td {
  63. vertical-align: top;
  64. }
  65. .skin-switch {
  66. display: none;
  67. font-size: 9px;
  68. }
  69. pre {
  70. font-weight: bold;
  71. color: #333333;
  72. }
  73. </style>
  74. </head>
  75. <body>
  76. <div style="text-align: center;">
  77. <div style="position: absolute; right: 3em;"><a href="#" id="ndDate1SkinSwitch" class="skin-switch">skin...</a></div>
  78. <table style="margin: 0 auto;"><tr><td>
  79. <div style="background: black; padding: 5px 20px; ">
  80. <div id="ndDate1" style="">
  81. </div>
  82. </div>
  83. </td></tr></table>
  84. </div>
  85. <div style="text-align: center; margin-top: 4em;">
  86. <div style="position: absolute; right: 3em;"><a href="#" id="ndTime1SkinSwitch" class="skin-switch">skin...</a></div>
  87. <table style="margin: 0 auto; "><tr><td>
  88. <div style="background: white; padding: 5px 20px; border: none;">
  89. <div id="ndTime1" style="">
  90. </div>
  91. </div>
  92. </td></tr></table>
  93. </div>
  94. <div style="text-align: center; display:none;">
  95. <div style="position: absolute; right: 3em;"><a href="#" id="ndCalc1SkinSwitch" class="skin-switch">skin...</a></div>
  96. <table style="margin: 0 auto;"><tr><td>
  97. <div style="background: black; padding: 5px 20px; ">
  98. <div id="ndCalc1" style="">
  99. </div>
  100. </div>
  101. <div style="font-size: 80%; line-height: 150%;">
  102. (just type expressions on keyboard as on any basic electronic calculator)<br />
  103. [q] sqrt &nbsp; [Q] sqr &nbsp; [^] pow &nbsp; [m] +/- &nbsp; [p] PI &nbsp; [Enter] = &nbsp; [Esc] clear
  104. </div>
  105. </td></tr></table>
  106. </div>
  107. <script type="text/javascript">
  108. // *** Simple display ***
  109. nixieDate1 = new NixieDisplay();
  110. nixieDate1.id = 'ndDate1';
  111. nixieDate1.charCount = 8 + 2;
  112. nixieDate1.extraGapsWidths[3] = 20;
  113. nixieDate1.extraGapsWidths[5] = 20;
  114. nixieDate1.init();
  115. var d = new Date();
  116. nixieDate1.setText(d.getFullYear().toString() + '-' + (d.getMonth() + 1).toString().replace(/^(\d)$/, '0$1') + '-' + d.getDate().toString().replace(/^(\d)$/, '0$1'));
  117. // setup skin switching
  118. nixieDate1.__skinId = 0 - 1;
  119. nixieDate1.__skinCount = 3;
  120. nixieDate1.__skinSwitch = function() {
  121. var nd = nixieDate1;
  122. nd.__skinId = (nd.__skinId + 1) % nd.__skinCount;
  123. switch (nd.__skinId) {
  124. case 0:
  125. nd.urlCharsetImage = 'zm1080_d1_09bdm_62x100_8b.png';
  126. nd.charWidth = 62;
  127. nd.charHeight = 100;
  128. nd.extraGapsWidths[3] = 0;
  129. nd.extraGapsWidths[5] = 0;
  130. nd.charGapWidth = 4;
  131. document.getElementById(nd.id).parentNode.style.background = "black";
  132. break;
  133. case 1:
  134. break;
  135. case 2:
  136. break;
  137. }
  138. nd.init();
  139. return false;
  140. }
  141. document.getElementById('ndDate1SkinSwitch').onclick = nixieDate1.__skinSwitch; // attach skinswitch event handler
  142. nixieDate1.__skinSwitch(); // assign primary skin
  143. // *** Clock ***
  144. nixieTime1 = new NixieClock(); // create component instance
  145. nixieTime1.id = 'ndTime1'; // assign instance id
  146. nixieTime1.init(); // initialize component (after assigning params)
  147. nixieTime1.run(); // run clock
  148. // setup skin switching
  149. nixieTime1.__skinId = 3 - 1;
  150. nixieTime1.__skinCount = 4;
  151. nixieTime1.__skinSwitch = function() {
  152. var nd = nixieTime1;
  153. nd.__skinId = (nd.__skinId + 1) % nd.__skinCount;
  154. switch (nd.__skinId) {
  155. case 0:
  156. break;
  157. case 1:
  158. break;
  159. case 2:
  160. break;
  161. case 3:
  162. nd.urlCharsetImage = 'zm1080_d1_09bdm_62x100_8b.png';
  163. nd.charWidth = 62;
  164. nd.charHeight = 100;
  165. nd.extraGapsWidths[1] = 30;
  166. nd.extraGapsWidths[3] = 30;
  167. nd.charGapWidth = 20;
  168. document.getElementById(nd.id).parentNode.style.background = "black";
  169. break;
  170. }
  171. nd.init();
  172. return false;
  173. }
  174. document.getElementById('ndTime1SkinSwitch').onclick = nixieTime1.__skinSwitch; // attach skinswitch event handler
  175. nixieTime1.__skinSwitch(); // assign primary skin
  176. // *** Calculaor ***
  177. nixieCalc1 = new NixieCalculator(); // create component instance
  178. nixieCalc1.id = 'ndCalc1'; // assign instance id
  179. // assign keyboard event handlers
  180. document.onkeydown = function(e0) { return nixieCalc1.keyDown(e0); };
  181. document.onkeypress = function(e0) { return nixieCalc1.keyPress(e0); };
  182. nixieCalc1.init(); // initialize component (after assigning params)
  183. // setup skin switching
  184. nixieCalc1.display.__skinId = 2 - 1;
  185. nixieCalc1.display.__skinCount = 4;
  186. nixieCalc1.__skinSwitch = function() {
  187. var nd = nixieCalc1.display;
  188. nd.__skinId = (nd.__skinId + 1) % nd.__skinCount;
  189. switch (nd.__skinId) {
  190. case 0:
  191. nd.urlCharsetImage = 'zm1082_l1_09bdm_62x150_8b.png';
  192. nd.charWidth = 62;
  193. nd.charHeight = 150;
  194. nd.charGapWidth = 0;
  195. document.getElementById(nd.id).parentNode.style.background = "white";
  196. document.getElementById(nd.id).parentNode.style.border = "none";
  197. break;
  198. case 1:
  199. nd.urlCharsetImage = 'zm1080_l1_09bdm_62x150_8b.png';
  200. nd.charWidth = 62;
  201. nd.charHeight = 150;
  202. nd.charGapWidth = 0;
  203. document.getElementById(nd.id).parentNode.style.background = "white";
  204. document.getElementById(nd.id).parentNode.style.border = "none";
  205. break;
  206. case 2:
  207. nd.urlCharsetImage = 'zm1080_l2_09bdm_45x75_8b.png';
  208. nd.charWidth = 45;
  209. nd.charHeight = 75;
  210. nd.charGapWidth = 10;
  211. document.getElementById(nd.id).parentNode.style.background = "black";
  212. document.getElementById(nd.id).parentNode.style.border = "2px solid #AAAAAA";
  213. break;
  214. case 3:
  215. nd.urlCharsetImage = 'zm1080_d1_09bdm_46x75_8b.png';
  216. nd.charWidth = 46;
  217. nd.charHeight = 75;
  218. nd.charGapWidth = 10;
  219. document.getElementById(nd.id).parentNode.style.background = "black";
  220. document.getElementById(nd.id).parentNode.style.border = "2px solid #AAAAAA";
  221. break;
  222. }
  223. nd.init();
  224. return false;
  225. }
  226. document.getElementById('ndCalc1SkinSwitch').onclick = nixieCalc1.__skinSwitch; // attach skinswitch event handler
  227. nixieCalc1.__skinSwitch(); // assign primary skin
  228. </script>
  229. </body>
  230. </html>