From: Ian Jackson Date: Tue, 7 Jul 2020 21:58:43 +0000 (+0100) Subject: tsc! X-Git-Tag: otter-0.2.0~1411 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7838a8baece9c81c5439787da57753eae58ca921;p=otter.git tsc! --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b1df170d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +templates/script.js diff --git a/templates/script.js b/templates/script.ts similarity index 89% rename from templates/script.js rename to templates/script.ts index 903bf530..e8bfc181 100644 --- a/templates/script.js +++ b/templates/script.ts @@ -1,4 +1,4 @@ -// +// -*- JavaScript -*- // xxx deployment note: need a whole bunch of domains for SSE conn limit @@ -36,15 +36,27 @@ // #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 index 00000000..65935ae1 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "lib": [ + "es2015", + "dom" + ], + "strict": true, + "target": "es2015" + } +}