summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2013-03-27 16:35:56 +0000
committerhallgren <hallgren@chalmers.se>2013-03-27 16:35:56 +0000
commit8b06936c01ec2a19290d78117a40cf4549f55f7c (patch)
tree1638c111df70b47771d57ef806f601a687304099 /src
parent7e214fee01800b5bc982dde14c0c290b3758125a (diff)
minibar: click on a linearization to obtain a table with all variants and forms
Click again to hide the table.
Diffstat (limited to 'src')
-rw-r--r--src/www/minibar/minibar.css3
-rw-r--r--src/www/minibar/minibar_translations.js35
2 files changed, 34 insertions, 4 deletions
diff --git a/src/www/minibar/minibar.css b/src/www/minibar/minibar.css
index 03a75a2de..2e4d646ea 100644
--- a/src/www/minibar/minibar.css
+++ b/src/www/minibar/minibar.css
@@ -87,3 +87,6 @@ div.browse, table.browse td {
background: white;
padding: 2px;
}
+
+table.lintable { display: inline-table; border-collapse: collapse; }
+table.lintable td { border: 1px solid black; padding: 2px; }
diff --git a/src/www/minibar/minibar_translations.js b/src/www/minibar/minibar_translations.js
index 33cd1cc56..f1f55536e 100644
--- a/src/www/minibar/minibar_translations.js
+++ b/src/www/minibar/minibar_translations.js
@@ -75,14 +75,41 @@ Translations.prototype.show_translations=function(translationResults) {
function tdt(tree_btn,s,action) {
var txt=text(s);
if(action) {
- txt=node("span",{onclick:action},[txt])
+ txt=wrap("span",[txt])
+ txt.onclick=action
//txt=button(s,action)
}
- return self.options.show_trees ? tda([tree_btn,text(" "),txt]) : td(txt)
+ return self.options.show_trees ? td([tree_btn,text(" "),txt]) : td(txt)
}
function act(lin) {
return self.lin_action ? function() { self.lin_action(lin) } : null
}
+ function show_lin(tree_btn,lin,tree) {
+ function draw_table(lintable) {
+ function draw_texts(texts) {
+ return texts.map(function(s) { return wrap("div",text(s)) })
+ }
+ function draw_row(row) {
+ return tr([td(text(row.params)),td(draw_texts(row.texts))])
+ }
+ return wrap_class("table","lintable",lintable.map(draw_row))
+ }
+ function get_tabular() {
+ var t=this
+ var pa=this.parentNode
+ function show_table(lins) {
+ if(lins.length==1) {
+ var ta=draw_table(lins[0].table)
+ replaceNode(ta,t)
+ ta.onclick=function() { replaceNode(t,ta) }
+ t.onclick=function() { replaceNode(ta,t) }
+ }
+ }
+ self.server.pgf_call("linearizeTable",{"tree":tree,"to":lin.to},
+ show_table)
+ }
+ return tdt(tree_btn,lin.text,get_tabular)
+ }
with(self) {
var trans=main;
//var to=target_lang(); // wrong
@@ -139,8 +166,8 @@ Translations.prototype.show_translations=function(translationResults) {
button(langcode,act(lin[i])))
//hdr.disabled=lin[i].to==current.from
var btn=parsetree_button(t.tree,lin[i].to)
- tbody.appendChild(tr([th(hdr),
- tdt(btn,lin[i].text)]));
+ tbody.appendChild(
+ tr([th(hdr),show_lin(btn,lin[i],t.tree)]));
}
}
trans.appendChild(wrap("table",tbody));