202 new_hmi_value: function(index, value, oldval) { |
200 new_hmi_value: function(index, value, oldval) { |
203 apply_hmi_value(heartbeat_index, value+1); |
201 apply_hmi_value(heartbeat_index, value+1); |
204 } |
202 } |
205 }); |
203 }); |
206 |
204 |
207 var translated = false; |
205 function svg_text_to_multiline(elt) { |
|
206 return(Array.prototype.map.call(elt.children, x=>x.textContent).join("\\\\n")); |
|
207 } |
|
208 |
|
209 function multiline_to_svg_text(elt, str) { |
|
210 str.split('\\\\n').map((line,i) => {elt.children[i].textContent = line;}); |
|
211 } |
208 |
212 |
209 function switch_langnum(langnum) { |
213 function switch_langnum(langnum) { |
210 if(langnum == current_lang) { |
214 if(langnum == current_lang) { |
211 return; |
215 return; |
212 } |
|
213 |
|
214 if (!translated) { |
|
215 translated = true; |
|
216 for (let translation of translations) { |
|
217 let [objs] = translation; |
|
218 translation.push(Array.prototype.map.call(objs[0].children, x=>x.textContent).join("\\\\n")); |
|
219 } |
|
220 } |
216 } |
221 |
217 |
222 for (let translation of translations) { |
218 for (let translation of translations) { |
223 let [objs, msgs, orig] = translation; |
219 let [objs, msgs, orig] = translation; |
224 let msg = langnum == 0 ? orig : msgs[langnum - 1]; |
220 let msg = langnum == 0 ? orig : msgs[langnum - 1]; |
225 for (let obj of objs) { |
221 for (let obj of objs) { |
226 msg.split('\\\\n').map((line,i) => {obj.children[i].textContent = line;}); |
222 multiline_to_svg_text(obj, msg); |
|
223 obj.setAttribute("lang",langnum); |
227 } |
224 } |
228 } |
225 } |
229 current_lang = langnum; |
226 current_lang = langnum; |
230 } |
227 } |
|
228 |
|
229 // backup original texts |
|
230 for (let translation of translations) { |
|
231 let [objs] = translation; |
|
232 translation.push(svg_text_to_multiline(objs[0])); |
|
233 } |
|
234 |
231 var lang_local_index = hmi_local_index("lang"); |
235 var lang_local_index = hmi_local_index("lang"); |
232 subscribers(lang_local_index).add({ |
236 subscribers(lang_local_index).add({ |
233 indexes: [lang_local_index], |
237 indexes: [lang_local_index], |
234 new_hmi_value: function(index, value, oldval) { |
238 new_hmi_value: function(index, value, oldval) { |
235 switch_langnum(value); |
239 switch_langnum(value); |
|
240 switch_page(); |
236 } |
241 } |
237 }); |
242 }); |
238 var current_lang = 0; |
243 var current_lang = 0; |
239 switch_langnum(cache[lang_local_index]); |
244 switch_langnum(cache[lang_local_index]); |
240 |
245 |
395 current_page_index = page_index; |
400 current_page_index = page_index; |
396 |
401 |
397 jumps_need_update = true; |
402 jumps_need_update = true; |
398 |
403 |
399 requestHMIAnimation(); |
404 requestHMIAnimation(); |
400 |
|
401 jump_history.push([page_name, page_index]); |
405 jump_history.push([page_name, page_index]); |
402 if(jump_history.length > 42) |
406 if(jump_history.length > 42) |
403 jump_history.shift(); |
407 jump_history.shift(); |
404 |
408 |
405 return true; |
409 return true; |