summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2014-04-10 15:50:34 +0000
committerhallgren <hallgren@chalmers.se>2014-04-10 15:50:34 +0000
commit5f75baf56ad1eea70ae786a71f557f093688b741 (patch)
treeea4a2345f244c32782c9e30e19f84d6750bde4ad /src
parent1ca09448f9032b92ef436f4e0f658309d60e7ffd (diff)
Wide Coverage Demo App: it now works ok without server caching of parse results
Diffstat (limited to 'src')
-rw-r--r--src/www/js/wc.js76
1 files changed, 50 insertions, 26 deletions
diff --git a/src/www/js/wc.js b/src/www/js/wc.js
index 7577f2785..14593d1b5 100644
--- a/src/www/js/wc.js
+++ b/src/www/js/wc.js
@@ -47,21 +47,18 @@ wc.translate=function() {
var f=wc.f, e=wc.e, p=wc.p
var selected= -1
+ /*
function disable(yes) {
f.translate.disabled=yes
f.to.disabled=yes
if(f.swap) f.swap.disabled=yes
}
- disable(true)
- clear(wc.o)
- wc.os=[]
- clear(e)
- clear(p)
-
+ */
function split_punct(s) {
return s.split(/([.!?]+[ \t\n]+|\n\n+|[ \t\n]*[-•*+#]+[ \t\n]+)/)
}
+
function trans_quality(r) {
var text=r.linearizations[0].text
if(r.prob==0) return {quality:"high_quality",text:text}
@@ -91,7 +88,7 @@ wc.translate=function() {
replaceChildren(output,text("["+msg+"]"))
output.className="error"
}
- disable(false)
+ //disable(false)
}
function show_pick(i) { return function() { show_trans(i); return false; } }
function show_picks() {
@@ -144,9 +141,9 @@ wc.translate=function() {
var j=rs.length-1
if(current_pick==j) show_trans(j)
else if(selected==si) show_picks()
- disable(false)
+ //disable(false)
}
- function trans(text,i) {
+ function trans(text,i,count) {
function step3(tra) {
if(wc.serial==current) {
if(tra.length>=1) {
@@ -154,22 +151,27 @@ wc.translate=function() {
if(r.error!=undefined) {
if(i==0 && rs.length==0) show_error(tra[0].error)
}
- else if(r.linearizations) {
- showit(r)
- if(wc.p && i<9) {
- if(si==selected) trans(text,i+1)
- else get_more=function() { trans(text,i+1) }
+ else {
+ for(var ti=0;ti<tra.length;ti++) {
+ var r=tra[ti]
+ if(r.linearizations) showit(r)
+ //else show_error("no linearizations")
+ }
+ /*
+ if(wc.p && i==0 && count==1) {
+ if(si==selected) trans(text,1,9)
+ else get_more=function() { trans(text,1,9) }
}
+ */
}
- else show_error("no linearizations")
}
else if(i==0 && rs.length==0)
show_error("Unable to translate")
}
}
- gftranslate.translate(text,f.from.value,f.to.value,i,1,step3)
+ gftranslate.translate(text,f.from.value,f.to.value,i,count,step3)
}
- function step2(text) { trans(text,0) }
+ function step2(text) { trans(text,0,10) }
function step2cnl(text) {
function step3cnl(results) {
var trans=results[0].translations
@@ -189,17 +191,39 @@ wc.translate=function() {
if(wc.cnl) step2cnl(is[si])
else step2(is[si])
}
+
+ //disable(true)
+ clear(wc.o)
+ clear(e)
+ clear(p)
+
+
+ var old={}
+ for(var i=0;i<wc.os.length;i++) old[wc.os[i].input]=wc.os[i]
+ // could also keep all copies if the same text occurs more than once...
+ wc.os=[]
+
wc.translating=f.input.value
- var is=wc.is=split_punct(wc.translating+"\n")
+ var is=split_punct(wc.translating+"\n")
+
for(var i=0;i<is.length;i++) {
- wc.os[i]={text:is[i]}
- if(i&1) { // punctuation
- wc.o.appendChild(span_class("punct",text(is[i])))
+ var same=old[is[i]]
+ if(same && same.to==f.to.value) { // reuse unchanged segment?
+ wc.os[i]=same
+ wc.o.appendChild(same.target)
+ delete old[is[i]] // can't use the same node twice
}
- else { // segment
- var o=wc.os[i].target=span_class("placeholder",text(is[i]))
- wc.o.appendChild(o)
- translate_segment(i)
+ else {
+ wc.os[i]={input:is[i],text:is[i],to:f.to.value}
+ if(i&1) { // punctuation
+ var o=wc.os[i].target=span_class("punct",text(is[i]))
+ wc.o.appendChild(o)
+ }
+ else { // text segment to be translated
+ var o=wc.os[i].target=span_class("placeholder",text(is[i]))
+ wc.o.appendChild(o)
+ translate_segment(i)
+ }
}
}
wc.save()
@@ -216,7 +240,7 @@ wc.speak=function(text,lang) {
}
wc.colors=function() {
- wc.o.className=wc.f.colors.checked ? "colors" : ""
+ document.body.className=wc.f.colors.checked ? "colors" : ""
wc.local.put("colors",wc.f.colors.checked)
}