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.
 
 

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