From 6e99d20972bec95d3502ef7549d74f67b4cf0001 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Sat, 27 Sep 2014 15:34:15 +0200 Subject: Initial commit (using Yesod's scaffolding) --- templates/default-layout-wrapper.hamlet | 48 ++++++++++++++++++++++ templates/default-layout.hamlet | 3 ++ templates/home.hamlet | 17 ++++++++ templates/home.julius | 73 +++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 templates/default-layout-wrapper.hamlet create mode 100644 templates/default-layout.hamlet create mode 100644 templates/home.hamlet create mode 100644 templates/home.julius (limited to 'templates') diff --git a/templates/default-layout-wrapper.hamlet b/templates/default-layout-wrapper.hamlet new file mode 100644 index 0000000..b222256 --- /dev/null +++ b/templates/default-layout-wrapper.hamlet @@ -0,0 +1,48 @@ +$newline never +\ +\ +\ +\ +\ + + + + + #{pageTitle pc} + <meta name="description" content=""> + <meta name="author" content=""> + + <meta name="viewport" content="width=device-width,initial-scale=1"> + + ^{pageHead pc} + + \<!--[if lt IE 9]> + \<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> + \<![endif]--> + + <script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/,'js'); + <body> + <div class="container"> + <header> + <div id="main" role="main"> + ^{pageBody pc} + <footer> + #{extraCopyright $ appExtra $ settings master} + + $maybe analytics <- extraAnalytics $ appExtra $ settings master + <script> + if(!window.location.href.match(/localhost/)){ + window._gaq = [['_setAccount','#{analytics}'],['_trackPageview'],['_trackPageLoadTime']]; + (function() { + \ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + \ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + \ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + } + \<!-- Prompt IE 6 users to install Chrome Frame. Remove this if you want to support IE 6. chromium.org/developers/how-tos/chrome-frame-getting-started --> + \<!--[if lt IE 7 ]> + <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"> + <script> + window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})}) + \<![endif]--> diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet new file mode 100644 index 0000000..fa86744 --- /dev/null +++ b/templates/default-layout.hamlet @@ -0,0 +1,3 @@ +$maybe msg <- mmsg + <div #message>#{msg} +^{widget} diff --git a/templates/home.hamlet b/templates/home.hamlet new file mode 100644 index 0000000..ed377e9 --- /dev/null +++ b/templates/home.hamlet @@ -0,0 +1,17 @@ +<div class="container"> + <h1>Turing Machine simulator! + <div class="row"> + <div class="col-sm-12 col-md-12"> + <div class="row"> + <div class="col-sm-12 col-md-12"> + <pre id="#{results}"> + <div class="row"> + <div class="col-sm-12 col-md-12"> + <button id="#{butBeginning}" class="btn"> + <span class="glyphicon glyphicon-fast-backward"> + <button id="#{butBackward}" class="btn"> + <span class="glyphicon glyphicon-step-backward"> + <button id="#{butTogglePlay}" class="btn"> + <span class="glyphicon glyphicon-play"> + <button id="#{butForward}" class="btn"> + <span class="glyphicon glyphicon-step-forward"> diff --git a/templates/home.julius b/templates/home.julius new file mode 100644 index 0000000..da20f7f --- /dev/null +++ b/templates/home.julius @@ -0,0 +1,73 @@ +$(function() { + var ui = { + bBeginning : $("##{rawJS butBeginning}"), + bBackward : $("##{rawJS butBackward}"), + bTogglePlay : $("##{rawJS butTogglePlay}"), + bForward : $("##{rawJS butForward}"), + results : $("##{rawJS results}") + }; + var pollInterval = 10000; + var playing = false; + var timeout = 150; + function poll() { + sock.send("Poll"); + setTimeout(poll, pollInterval); + }; + function forwardWait() { + if (playing === true) { + sock.send("Forward"); + setTimeout(forwardWait, timeout); + } + }; + function enableButtons(buttons) { + for (var i = 0; i < buttons.length; i++) { + buttons[i].removeAttr("disabled"); + }; + }; + function disableButtons(buttons) { + for (var i = 0; i < buttons.length; i++) { + buttons[i].attr("disabled", "disabled"); + }; + }; + function togglePlay() { + var btns = [ui.bBeginning, ui.bBackward, ui.bForward]; + playing = !playing; + if (playing === true) { + disableButtons(btns); + forwardWait(); + } else { + enableButtons(btns); + }; + }; + ui.bBeginning.on("click", function () { + sock.send("Beginning"); + }); + ui.bBackward.on("click", function () { + sock.send("Backward"); + }); + ui.bTogglePlay.on("click", function () { + ui.bTogglePlay.children().toggleClass("glyphicon-play glyphicon-stop"); + togglePlay(); + }); + ui.bForward.on("click", function () { + sock.send("Forward"); + }); + sock = new WebSocket("ws://" + window.location.host); + sock.onopen = function (e) { + enableButtons([ui.bBeginning, ui.bBackward, + ui.bTogglePlay, ui.bForward]); + poll(); + }; + sock.onclose = function (e) { + disableButtons([ui.bBeginning, ui.bBackward, + ui.bTogglePlay, ui.bForward]); + alert("SOCKET CLOSED! D: (" + e.code + ")"); + }; + sock.onmessage = function (e) { + // var data = JSON.parse(e.data); + ui.results.html(e.data); + }; + sock.onerror = function (e) { + alert("ERROR! D: (" + e + ")"); + }; +}); -- cgit v1.2.3