From 7f6c248bf1623a3e0ae5b1f4d7885bd4a54edc6e Mon Sep 17 00:00:00 2001 From: hallgren Date: Thu, 2 Aug 2012 12:54:15 +0000 Subject: [PATCH] translator: keep cloud docs and local docs apart + show a cloud icon next to the document name if it is stored in the cloud + in addition to the name of the current document, remember if it is stored in the cloud, so that the right document is loaded next time you open the translator. --- src/www/P/cloud.png | Bin 0 -> 4006 bytes src/www/translator/translator.js | 28 +++++++++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 src/www/P/cloud.png diff --git a/src/www/P/cloud.png b/src/www/P/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d187ce1b8edaff28056fbce1bfe00df328e3b0 GIT binary patch literal 4006 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 RGB7YOc)I$ztaD0e0stz6!D9db literal 0 HcmV?d00001 diff --git a/src/www/translator/translator.js b/src/www/translator/translator.js index be3fc0fa4..b50465622 100644 --- a/src/www/translator/translator.js +++ b/src/www/translator/translator.js @@ -10,8 +10,6 @@ function Translator() { var warning=span_class("error",text("It appears that localStorage is unsupported or disabled in this browser. Documents will not be preserved after you leave or reload this page!")) insertAfter(warning,t.view) } - t.current=t.local.get("current") - t.document=t.current && t.current!="/" && t.local.get("/"+t.current) || empty_document() t.servers={}; //The API is stateful, use one pgf_online object per grammar t.grammar_info={}; pgf_online({}).get_grammarlist(bind(t.extend_methods,t)) @@ -19,7 +17,12 @@ function Translator() { update_language_menu(t,"target") if(apertium) t.add_apertium() //initialize_sorting(["TR"],["segment"]) - t.redraw(); + t.document=empty_document(); + t.current=t.local.get("current") + if(t.current && t.current!="/") { + if(t.local.get("current_in_cloud")) t.open_from_cloud(t.current) + else t.open(t.current) + } } function update_language_menu(t,id) { @@ -309,7 +312,8 @@ Translator.prototype.browse=function(el) { var filenames=JSON.parse(result) var files=map(strip_cloudext,filenames) if(files.length>0) { - t.view.appendChild(wrap("h3",text("Documents in the cloud"))) + t.view.appendChild(wrap("h3",[text("Documents in the cloud "), + img("../P/cloud.png")])) t.view.appendChild(ls(files,"translator.open_from_cloud")) } } @@ -325,15 +329,17 @@ Translator.prototype.open=function(name) { if(name) { var path="/"+name var document=t.local.get(path); - if(document) t.load(name,document) + if(document) t.load(name,document,false) else alert("No such document: "+name) } } -Translator.prototype.load=function(name,document) { +Translator.prototype.load=function(name,document,in_cloud) { var t=this t.current=name; + t.current_in_cloud=in_cloud; t.local.put("current",name) + t.local.put("current_in_cloud",in_cloud) t.document=document; t.redraw(); } @@ -343,7 +349,7 @@ Translator.prototype.open_from_cloud=function(name) { var filename=name+cloudext function ok(result) { var document=JSON.parse(result) - if(document) t.load(name,document) + if(document) t.load(name,document,true) } gfcloud("download",{file:encodeURIComponent(filename)},ok); } @@ -355,7 +361,10 @@ Translator.prototype.save=function(el) { if(t.current) { var path="/"+t.current if(t.document.options.cloud) { - function done() { /*t.local.remove(path)*/ } + function done() { + //t.local.remove(path) + t.local.put("current_in_cloud",true) + } save_in_cloud(t.current+cloudext,t.document,done) } else @@ -601,7 +610,7 @@ function hide_menu(el) { /* type Document = { name:String, options:DocOptions, segments:[Segment] } type Segment = { source:String, target:String, options:Options } -type DocOptions = Options & { view:View } +type DocOptions = Options & { view:View, cloud:Bool } type Options = {from: Lang, to: Lang, method:Method} type Lang = String // Eng, Swe, Ita, etc type Method = "Manual" | "Apertium" | GFGrammarName @@ -619,6 +628,7 @@ Translator.prototype.draw_document=function() { var o=doc.options; var hdr=wrap("h2",[text(doc.name),text(" "), wrap("small",draw_translation(o))]) + if(doc.options.cloud) insertFirst(hdr,img("../P/cloud.png")) switch(o.view || "segmentbysegment") { case "paralleltexts": function src(seg) { return seg.source }