diff --git a/www/hack/index.html b/www/hack/index.html
index 127ac6d1e..4fa7e6065 100644
--- a/www/hack/index.html
+++ b/www/hack/index.html
@@ -27,6 +27,11 @@
resize: none;
}
+ textarea[disabled] {
+ background-color: #275662;
+ color: #637476;
+ }
+
#run {
position: fixed;
top: 0px;
diff --git a/www/hack/main.js b/www/hack/main.js
index 45d10c74f..dcb80b3b5 100644
--- a/www/hack/main.js
+++ b/www/hack/main.js
@@ -20,14 +20,43 @@ define([
var $textarea = $('textarea'),
$run = $('#run');
- var rts = $textarea.toArray().map(function (e, i) {
- var rt = Realtime.start(e, // window
- Config.websocketURL, // websocketUrl
- Crypto.rand64(8), // userName
- key.channel, // channel
- key.cryptKey); // cryptKey
- return rt;
- });
+ /*
+ onRemote
+ onInit
+ onReady
+ onAbort
+ transformFunction
+ */
+
+ var config = {};
+ var initializing = true;
+
+ $textarea.attr('disabled', true);
+
+ var onInit = config.onInit = function (info) { };
+
+ var onRemote = config.onRemote = function (contents) {
+ if (initializing) { return; }
+ // TODO do something on external messages
+ // http://webdesign.tutsplus.com/tutorials/how-to-display-update-notifications-in-the-browser-tab--cms-23458
+ };
+
+ var onReady = config.onReady = function (info) {
+ initializing = false;
+ $textarea.attr('disabled', false);
+ };
+
+ var onAbort = config.onAbort = function (info) {
+ $textarea.attr('disabled', true);
+ window.alert("Server Connection Lost");
+ };
+
+ var rt = Realtime.start($textarea[0], // window
+ Config.websocketURL, // websocketUrl
+ Crypto.rand64(8), // userName
+ key.channel, // channel
+ key.cryptKey,
+ config); // cryptKey
$run.click(function (e) {
e.preventDefault();
@@ -38,6 +67,7 @@ define([
} catch (err) {
// FIXME don't use alert, make an errorbox
window.alert(err.message);
+ console.error(err);
}
});
});