chiark / gitweb /
tsc!
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 7 Jul 2020 21:58:43 +0000 (22:58 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 7 Jul 2020 21:58:43 +0000 (22:58 +0100)
.gitignore [new file with mode: 0644]
templates/script.ts [moved from templates/script.js with 89% similarity]
tsconfig.json [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..b1df170
--- /dev/null
@@ -0,0 +1 @@
+templates/script.js
similarity index 89%
rename from templates/script.js
rename to templates/script.ts
index 903bf530da615ec63896a50b2ddd5893c2d08a67..e8bfc1813a1098dbe131cea3eb459192138508d7 100644 (file)
@@ -1,4 +1,4 @@
-//
+// -*- JavaScript -*-
 
 // xxx deployment note: need a whole bunch of domains for SSE conn limit
 
 //   #def.{}.stuff
 //      generated by server
 
-general_timeout = 10000;
-messages = Object();
-pieceops = Object();
+var general_timeout : number = 10000;
+var messages = Object();
+var pieceops = Object();
 var our_dnd_type = "text/puvnex-game-server-dummy";
-api_queue = [];
-api_posting = false;
+var api_queue = [];
+var api_posting = false;
 var us;
 var gen = 0;
 var cseq = 0;
+var ctoken : string;
+
+var svg_ns : string;
+var space : SVGGraphicsElement;
+var logdiv : HTMLElement;
+var status_node : HTMLElement;
+
+var dox : number;
+var doy : number;
+var dcx : number;
+var dcy : number;
+const DRAGTHRESH = 5;
 
 function xhr_post_then(url,data,good) {
   var xhr = new XMLHttpRequest();
@@ -137,7 +149,7 @@ function drag_mousedown(e) {
     dragging = DRAGGING.MAYBE_UNGRAB;
   } else {
     dragging = DRAGGING.MAYBE_GRAB;
-    pelem = set_grab(drag_uelem, piece, us);
+    var pelem = set_grab(drag_uelem, piece, us);
     api_piece(api, 'grab', piece, drag_uelem, { });
   }
 
@@ -170,12 +182,12 @@ function piece_cleanup_grab(piece) {
 }
 
 function drag_mousemove(e) {
-  ctm = space.getScreenCTM();
-  ddx = (e.clientX - dcx)/ctm.a;
-  ddy = (e.clientY - dcy)/ctm.d;
+  var ctm = space.getScreenCTM();
+  var ddx = (e.clientX - dcx)/ctm.a;
+  var ddy = (e.clientY - dcy)/ctm.d;
   if (!(dragging & DRAGGING.YES)) {
-    ddr2 = ddx*ddx + ddy*ddy;
-    if (ddr2 > dragthresh) {
+    var ddr2 = ddx*ddx + ddy*ddy;
+    if (ddr2 > DRAGTHRESH) {
       dragging |= DRAGGING.YES;
     }
   }
@@ -197,11 +209,11 @@ function drag_mouseup(e) {
   //console.log('mouseup ...', dragging);
   if (dragging == DRAGGING.MAYBE_UNGRAB ||
       dragging == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) {
-    piece = drag_uelem.dataset.piece;
+    var piece = drag_uelem.dataset.piece;
     var pelem = set_ungrab(drag_uelem, piece);
     api_piece(api, 'ungrab', drag_uelem.dataset.piece, drag_uelem, { });
   }
-  drag_cancel(e);
+  drag_cancel();
 }
 
 function drag_cancel() {
@@ -218,8 +230,8 @@ messages.Log = function(j) {
 }
 
 function add_log_message(msg_html) {
-  lastent = logdiv.lastElementChild;
-  in_scrollback =
+  var lastent = logdiv.lastElementChild;
+  var in_scrollback =
     // inspired by
     //   https://stackoverflow.com/questions/487073/how-to-check-if-element-is-visible-after-scrolling/21627295#21627295
     // rejected
@@ -291,13 +303,12 @@ function startup() {
   us = body.dataset.us;
   gen = parseInt(body.dataset.gen);
   status_node = document.getElementById('status');
-  status_node.innerHTML = 'js-done'
-  dragthresh = 5;
-  space = document.getElementById('space');
+  status_node.innerHTML = 'js-done';
+  space = document.getElementById('space') as unknown as SVGGraphicsElement;
   logdiv = document.getElementById("log");
   svg_ns = space.getAttribute('xmlns');
 
-  es = new EventSource("/_/updates/"+ctoken+'/'+gen);
+  var es = new EventSource("/_/updates/"+ctoken+'/'+gen);
   es.onmessage = function(event) {
     console.log('GOTEVE', event)
     var j = JSON.parse(event.data);
@@ -310,7 +321,7 @@ function startup() {
   }
   es.addEventListener('commsworking', function(event) {
     console.log('GOTDATA', event);
-    status_node.innerHTML = event.data;
+    status_node.innerHTML = (event as any).data;
   });
   es.onerror = function(e) {
     console.log('FOO',e,es);
@@ -318,7 +329,7 @@ function startup() {
       updates_error : e,
       updates_event_source : es,
       updates_event_source_ready : es.readyState,
-      update_oe : e.className,
+      update_oe : (e as any).className,
     })
   }
 }
@@ -326,7 +337,7 @@ function startup() {
 function doload(){
   console.log('DOLOAD');
   var elem = document.getElementById('loading_token');
-  ptoken = elem.dataset.ptoken;
+  var ptoken = elem.dataset.ptoken;
   xhr_post_then('/_/session', 
                JSON.stringify({ ptoken : ptoken }),
                loaded);
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644 (file)
index 0000000..65935ae
--- /dev/null
@@ -0,0 +1,10 @@
+{
+    "compilerOptions": {
+        "lib": [
+            "es2015",
+            "dom"
+        ],
+        "strict": true,
+        "target": "es2015"
+    }
+}