Latest version of my personal website

index.html 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. ---
  2. layout: home
  3. title: Tyler Hallada
  4. ---
  5. <script>
  6. window.onload = function () {
  7. window.magicObj = new Magic({{site.data.magic | jsonify}});
  8. magicObj.draw();
  9. document.getElementById("play-pause").addEventListener("click", togglePlay);
  10. document.getElementById("hide-show-mobile").addEventListener("click", togglePanel);
  11. document.getElementById("hide-show-desktop").addEventListener("click", togglePanel);
  12. document.getElementById("clear").addEventListener("click", clear);
  13. }
  14. function updateMagic(key, value) {
  15. magicObj[key] = value;
  16. }
  17. function findParentWithIds(el, ids) {
  18. while (ids.indexOf(el.getAttribute('id')) === -1) {
  19. el = el.parentElement;
  20. }
  21. return el;
  22. }
  23. function togglePanel(event) {
  24. var options = document.getElementById("options");
  25. var button = findParentWithIds(event.target, ["hide-show-desktop", "hide-show-mobile"]);
  26. if (options.offsetParent === null) { // hidden
  27. options.style.display = "block";
  28. button.innerHTML = "<i class=\"icon ion-chevron-down\"></i>";
  29. } else { // shown
  30. options.style.display = "none";
  31. button.innerHTML = "<i class=\"icon ion-chevron-up\"></i>";
  32. }
  33. }
  34. function togglePlay(event) {
  35. var button = findParentWithIds(event.target, ["play-pause"]);
  36. if (magicObj.paused) {
  37. magicObj.paused = false;
  38. button.innerHTML = "<i class=\"icon ion-pause\"></i>";
  39. } else {
  40. magicObj.paused = true;
  41. button.innerHTML = "<i class=\"icon ion-play\"></i>";
  42. }
  43. }
  44. function clear(event) {
  45. magicObj.clear();
  46. }
  47. </script>
  48. <div class="options-panel">
  49. <div class="controls-tab">
  50. <div class="controls">
  51. <button id="play-pause"><i class="icon ion-pause"></i></button>
  52. <button id="clear"><i class="icon ion-refresh"></i></button>
  53. <button id="hide-show-mobile" class="hide-desktop hide-desktop-inline-block"><i class="icon ion-chevron-up"></i></button>
  54. <button id="hide-show-desktop" class="hide-mobile hide-mobile-inline-block"><i class="icon ion-chevron-down"></i></button>
  55. </div>
  56. </div>
  57. <div id="options" class="container-full hide-mobile hide-mobile-block">
  58. <div class="row clearfix">
  59. <div class="column fourth">
  60. <form oninput="output.value=speed.value;updateMagic('step', parseFloat(speed.value))">
  61. <label for="speed">Speed</label>
  62. <input type="range" min=0.01 max=2 value={{site.data.magic.step}} id="speed" step=0.01>
  63. <output name="output" for="speed">{{site.data.magic.step}}</output>
  64. </form>
  65. </div>
  66. <div class="column fourth">
  67. <form oninput="output.value=minDuration.value;updateMagic('minDuration', parseInt(minDuration.value))">
  68. <label for="minDuration">Min Spell Duration</label>
  69. <input type="range" min=1 max=1000 value={{site.data.magic.minDuration}} id="minDuration" step=1>
  70. <output name="output" for="minDuration">{{site.data.magic.minDuration}}</output>
  71. </form>
  72. </div>
  73. <div class="column fourth">
  74. <form oninput="output.value=maxDuration.value;updateMagic('maxDuration', parseInt(maxDuration.value))">
  75. <label for="maxDuration">Max Spell Duration</label>
  76. <input type="range" min=1 max=1000 value={{site.data.magic.maxDuration}} id="maxDuration" step=1>
  77. <output name="output" for="maxDuration">{{site.data.magic.maxDuration}}</output>
  78. </form>
  79. </div>
  80. <div class="column fourth">
  81. <form oninput="output.value=splineLength.value;updateMagic('splineLength', parseInt(splineLength.value))">
  82. <label for="splineLength">Spline Length</label>
  83. <input type="range" min=1 max=300 value={{site.data.magic.splineLength}} id="splineLength" step=1>
  84. <output name="output" for="splineLength">{{site.data.magic.splineLength}}</output>
  85. </form>
  86. </div>
  87. </div>
  88. <div class="row clearfix">
  89. <div class="column fourth">
  90. <form oninput="output.value=minAngleChange.value;updateMagic('minAngleChange', parseInt(minAngleChange.value))">
  91. <label for="minAngleChange">Min Angle</label>
  92. <input type="range" min=0 max=360 value={{site.data.magic.minAngleChange}} id="minAngleChange" step=1>
  93. <output name="output" for="minAngleChange">{{site.data.magic.minAngleChange}}</output>
  94. </form>
  95. </div>
  96. <div class="column fourth">
  97. <form oninput="output.value=maxAngleChange.value;updateMagic('maxAngleChange', parseInt(maxAngleChange.value))">
  98. <label for="maxAngleChange">Max Angle</label>
  99. <input type="range" min=0 max=360 value={{site.data.magic.maxAngleChange}} id="maxAngleChange" step=1>
  100. <output name="output" for="maxAngleChange">{{site.data.magic.maxAngleChange}}</output>
  101. </form>
  102. </div>
  103. <div class="column fourth">
  104. <form oninput="output.value=prune_to.value;updateMagic('prune_to', parseInt(prune_to.value))">
  105. <label for="prune_to">Branches</label>
  106. <input type="range" min=0 max=300 value={{site.data.magic.prune_to}} id="prune_to" step=1>
  107. <output name="output" for="prune_To">{{site.data.magic.prune_to}}</output>
  108. </form>
  109. </div>
  110. <div class="column fourth">
  111. <form onchange="output.value=randomColored.checked;updateMagic('randomColored', randomColored.checked)">
  112. <label for="randomColored">Randomly Colored</label>
  113. <input type="checkbox" {% if site.data.magic.randomColored %}checked{% endif %} id="randomColored">
  114. <output name="output" for="randomColored">{{site.data.magic.randomColored}}</output>
  115. </form>
  116. </div>
  117. </div>