From 44d1a5a9f71b03d9aceeccd760a63fcdc45f8bad Mon Sep 17 00:00:00 2001 From: hallgren Date: Wed, 12 Oct 2011 17:03:54 +0000 Subject: Improvements of "gf -server" mode and related setup "gf -server" mode now contains everything needed to run the minibar and the grammar editor (including example-based grammar writing). The Setup.hs script installs the required files where gf -server can find them. These files have been moved to a new directory: src/www. The separate server program pgf-http is now obsolete. --- src/www/minibar/saldotest.js | 340 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 340 insertions(+) create mode 100644 src/www/minibar/saldotest.js (limited to 'src/www/minibar/saldotest.js') diff --git a/src/www/minibar/saldotest.js b/src/www/minibar/saldotest.js new file mode 100644 index 000000000..47cb95047 --- /dev/null +++ b/src/www/minibar/saldotest.js @@ -0,0 +1,340 @@ + +var Saldo_ws_url = "http://spraakbanken.gu.se/ws/saldo-ws/"; +//var Saldo_ff_url = Saldo_ws_url+"ff/json+remember_completions/"; +var Saldo_lid_url = Saldo_ws_url+"lid/json"; + +function saldo_ws(fn,fmt,arg,cont_name) { + jsonp(Saldo_ws_url+fn+"/"+fmt+(cont_name ? "+"+cont_name : "")+"/"+arg,""); +} + +function saldo_json(fn,arg,cont_name) { saldo_ws(fn,"json",arg,cont_name); } +function saldo_lid(arg,cont_name) { saldo_json("lid",arg,cont_name); } +function saldo_lid_rnd(cont_name) { saldo_lid("rnd?"+Math.random(),cont_name); } + +var ordlista=[]; +var current=""; + +function start_saldotest() { + appendChildren(element("saldotest"), + [button("Slumpa","random_word()"), + button("Rensa","clear_all()"), + button("⌫","delete_last()"), + //button("Ordlista","show_ordlista()"), + button("Visa tänkbara drag","show_moves()"), + button("Gör ett drag","make_a_move()"), + //button("Visa prefix","show_prefixes()"), + div_id("surface"), + div_id("words"), + div_id("translations")]) + var style0="min-height: 3ex; margin: 5px; padding: 5px;"; + element("surface").setAttribute("style",style0+"border: 3px dashed #e0e0e0;"); + element("words").setAttribute("style",style0+"border: 3px solid #e0e0e0;"); + clear_all(); +} + +function random_word() { + saldo_lid_rnd("show_random"); +} + +function show_random(lid) { + var lex=lid.lex; + reset_all(lex.substring(0,lex.indexOf('.'))); +} + +function clear_all() { reset_all(""); } + +function reset_all(s) { + current=s; + element("surface").innerHTML=s; + element("translations").innerHTML=""; + get_completions(); +} + +function delete_last() { + var len=current.length; + if(len>0) { + current=current.substring(0,len-1); + var s=element("surface"); + s.innerHTML=current; + element("translations").innerHTML=""; + get_completions(); + } +} + +function with_completions(s,cont) { + var c=ordlista[s]; + if(c && c.a) cont(c); + else { + //if(c) alert("c already has fields"+field_names(c)); + ordlista[s]={put: function(c) { ordlista[s]=c; cont(c); }}; + var url=Saldo_ws_url+"ff/json+ordlista[\""+s+"\"].put/"+encodeURIComponent(s); + jsonp(url,""); + } +} + +function get_completions() { + with_completions(current,show_completions); +} + +function word(s) { + //var w=span_class("word",text(s)); + //if(s==" ") w.innerHTML=" "; + //w.setAttribute("onclick",'extend_current("'+s+'")'); + //return w; + return button(s,'extend_current("'+s+'")'); +} + +function extend_current(s) { + current+=s; + element("words").innerHTML=""; + element("surface").innerHTML=current; + get_completions(); +} + +function show_completions(saldo_ff) { + var box=element("words"); + box.innerHTML=""; + //var c=saldo_ff.c.split(""); + var c=filter(allowed,saldo_ff.c); + sort(c); + for(var i=0;i0 ? " "+s : ""; +} + +function show_translations(a) { + var tr=element("translations"); + tr.innerHTML=""; + //if(!a) alert("a undefined in show_translations"); + if(count_wordforms(a)<1) { + tr.appendChild(p(text(a.length<1 ? "Detta är inte en giltig ordform" + : "Denna form förekommer bara i sammansättningar"))); + element("surface").setAttribute("class","invalid"); + } + else { + element("surface").setAttribute("class","valid"); + for(var i=0;i0) { + var p=s.substr(0,s.length-1); + with_completions(p,function(c) { + if(count_wordforms(c.a)>0) trans.innerHTML+="
"+p; + show_prefixes_of(trans,p); + }); + } +} + +function show_prefixes() { + var trans=element("translations"); + trans.innerHTML="Prefix av "+current+":"; + show_prefixes_of(trans,current); +} + +/* -------------------------------------------------------------------------- */ + +var spel={ antal_ord: 4, // antal närbesläktade ord att visa + antal_korrekta_svar: 0, + antal_felaktiga_svar: 0 + }; + +function start_saldospel() { + spel.hylla=div_id("hylla"); + spel.status=div_id("status"); + //element("saldospel").innerHTML=""; + appendChildren(element("saldospel"), + [spel.hylla,spel.status, + p(text("")), + button("Nya ord","spel0()"), + text(" "), + wrap("b",span_id("score"))]); + spel.score=element("score"); + show_score(); + spel0(); +} + +function spel0() { // Välj ord 1 + saldo_lid_rnd("spel1"); +} + +function spel1(lid) { // Slå upp md1 för ord 1 + spel.lid=lid; + saldo_json("md1",lid.lex,"spel2"); +} + +function spel2(md1) { // Kontrollera att det finns minst 4 ord i md1 för ord1 + if(md1.length