972 <xsl:text> */ |
972 <xsl:text> */ |
973 </xsl:text> |
973 </xsl:text> |
974 <xsl:text> |
974 <xsl:text> |
975 </xsl:text> |
975 </xsl:text> |
976 <xsl:variable name="translations" select="ns:GetTranslations($translatable_strings)"/> |
976 <xsl:variable name="translations" select="ns:GetTranslations($translatable_strings)"/> |
977 <xsl:text>var langs = [ "default",</xsl:text> |
977 <xsl:text>var langs = [ ["Default", "C"],</xsl:text> |
978 <xsl:for-each select="$translations/langs/lang"> |
978 <xsl:for-each select="$translations/langs/lang"> |
979 <xsl:text>"</xsl:text> |
979 <xsl:text>["</xsl:text> |
980 <xsl:value-of select="."/> |
980 <xsl:value-of select="."/> |
981 <xsl:text>"</xsl:text> |
981 <xsl:text>","</xsl:text> |
|
982 <xsl:value-of select="@code"/> |
|
983 <xsl:text>"]</xsl:text> |
982 <xsl:if test="position()!=last()"> |
984 <xsl:if test="position()!=last()"> |
983 <xsl:text>,</xsl:text> |
985 <xsl:text>,</xsl:text> |
984 </xsl:if> |
986 </xsl:if> |
985 </xsl:for-each> |
987 </xsl:for-each> |
986 <xsl:text>]; |
988 <xsl:text>]; |
4518 </xsl:text> |
4526 </xsl:text> |
4519 <xsl:text> } |
4527 <xsl:text> } |
4520 </xsl:text> |
4528 </xsl:text> |
4521 <xsl:text> |
4529 <xsl:text> |
4522 </xsl:text> |
4530 </xsl:text> |
|
4531 <xsl:text> fetch_error(e){ |
|
4532 </xsl:text> |
|
4533 <xsl:text> console.log("HTTP fetch error, message = " + e.message + "Widget:" + this.element_id); |
|
4534 </xsl:text> |
|
4535 <xsl:text> } |
|
4536 </xsl:text> |
|
4537 <xsl:text> |
|
4538 </xsl:text> |
4523 <xsl:text> do_http_request(...opt) { |
4539 <xsl:text> do_http_request(...opt) { |
4524 </xsl:text> |
4540 </xsl:text> |
|
4541 <xsl:text> this.abort_controller = new AbortController(); |
|
4542 </xsl:text> |
4525 <xsl:text> const query = { |
4543 <xsl:text> const query = { |
4526 </xsl:text> |
4544 </xsl:text> |
4527 <xsl:text> args: this.args, |
4545 <xsl:text> args: this.args, |
4528 </xsl:text> |
4546 </xsl:text> |
4529 <xsl:text> range: this.cache[1], |
4547 <xsl:text> range: this.cache[1], |
4544 </xsl:text> |
4562 </xsl:text> |
4545 <xsl:text> method: 'POST', |
4563 <xsl:text> method: 'POST', |
4546 </xsl:text> |
4564 </xsl:text> |
4547 <xsl:text> body: JSON.stringify(query), |
4565 <xsl:text> body: JSON.stringify(query), |
4548 </xsl:text> |
4566 </xsl:text> |
4549 <xsl:text> headers: {'Content-Type': 'application/json'} |
4567 <xsl:text> headers: {'Content-Type': 'application/json'}, |
|
4568 </xsl:text> |
|
4569 <xsl:text> signal: this.abort_controller.signal |
4550 </xsl:text> |
4570 </xsl:text> |
4551 <xsl:text> }; |
4571 <xsl:text> }; |
4552 </xsl:text> |
4572 </xsl:text> |
4553 <xsl:text> |
4573 <xsl:text> |
4554 </xsl:text> |
4574 </xsl:text> |
4555 <xsl:text> fetch(this.args[0], options) |
4575 <xsl:text> return fetch(this.args[0], options) |
4556 </xsl:text> |
4576 </xsl:text> |
4557 <xsl:text> .then(this.handle_http_response) |
4577 <xsl:text> .then(this.handle_http_response_bound) |
4558 </xsl:text> |
4578 </xsl:text> |
4559 <xsl:text> .then(this.spread_json_data_bound); |
4579 <xsl:text> .then(this.spread_json_data_bound) |
4560 </xsl:text> |
4580 </xsl:text> |
4561 <xsl:text> |
4581 <xsl:text> .catch(this.fetch_error_bound); |
4562 </xsl:text> |
4582 </xsl:text> |
4563 <xsl:text> } |
4583 <xsl:text> |
|
4584 </xsl:text> |
|
4585 <xsl:text> } |
|
4586 </xsl:text> |
|
4587 <xsl:text> unsub(){ |
|
4588 </xsl:text> |
|
4589 <xsl:text> this.abort_controller.abort(); |
|
4590 </xsl:text> |
|
4591 <xsl:text> super.unsub(); |
|
4592 </xsl:text> |
|
4593 <xsl:text> } |
|
4594 </xsl:text> |
|
4595 <xsl:text> |
4564 </xsl:text> |
4596 </xsl:text> |
4565 <xsl:text> dispatch(value, oldval, index) { |
4597 <xsl:text> dispatch(value, oldval, index) { |
4566 </xsl:text> |
4598 </xsl:text> |
4567 <xsl:text> this.cache[index] = value; |
4599 <xsl:text> |
4568 </xsl:text> |
4600 </xsl:text> |
4569 <xsl:text> this.do_http_request(); |
4601 <xsl:text> if(this.cache[index] != value) |
|
4602 </xsl:text> |
|
4603 <xsl:text> this.cache[index] = value; |
|
4604 </xsl:text> |
|
4605 <xsl:text> else |
|
4606 </xsl:text> |
|
4607 <xsl:text> return; |
|
4608 </xsl:text> |
|
4609 <xsl:text> |
|
4610 </xsl:text> |
|
4611 <xsl:text> if(!this.promised){ |
|
4612 </xsl:text> |
|
4613 <xsl:text> this.promised = true; |
|
4614 </xsl:text> |
|
4615 <xsl:text> this.do_http_request().finally(() => { |
|
4616 </xsl:text> |
|
4617 <xsl:text> this.promised = false; |
|
4618 </xsl:text> |
|
4619 <xsl:text> }); |
|
4620 </xsl:text> |
|
4621 <xsl:text> } |
4570 </xsl:text> |
4622 </xsl:text> |
4571 <xsl:text> } |
4623 <xsl:text> } |
4572 </xsl:text> |
4624 </xsl:text> |
4573 <xsl:text> make_on_click(...options){ |
4625 <xsl:text> make_on_click(...options){ |
4574 </xsl:text> |
4626 </xsl:text> |
4788 </xsl:template> |
4840 </xsl:template> |
4789 <xsl:template mode="json_table_render" match="svg:g"> |
4841 <xsl:template mode="json_table_render" match="svg:g"> |
4790 <xsl:param name="expressions"/> |
4842 <xsl:param name="expressions"/> |
4791 <xsl:param name="widget_elts"/> |
4843 <xsl:param name="widget_elts"/> |
4792 <xsl:param name="label"/> |
4844 <xsl:param name="label"/> |
4793 <xsl:variable name="gid" select="@id"/> |
|
4794 <xsl:variable name="varprefix"> |
4845 <xsl:variable name="varprefix"> |
4795 <xsl:text>obj_</xsl:text> |
4846 <xsl:text>obj_</xsl:text> |
4796 <xsl:value-of select="$gid"/> |
4847 <xsl:value-of select="@id"/> |
4797 <xsl:text>_</xsl:text> |
4848 <xsl:text>_</xsl:text> |
4798 </xsl:variable> |
4849 </xsl:variable> |
4799 <xsl:text> try { |
4850 <xsl:text> try { |
4800 </xsl:text> |
4851 </xsl:text> |
4801 <xsl:for-each select="$expressions/expression"> |
4852 <xsl:for-each select="$expressions/expression"> |
4808 </xsl:text> |
4859 </xsl:text> |
4809 <xsl:text> if(</xsl:text> |
4860 <xsl:text> if(</xsl:text> |
4810 <xsl:value-of select="$varprefix"/> |
4861 <xsl:value-of select="$varprefix"/> |
4811 <xsl:value-of select="position()"/> |
4862 <xsl:value-of select="position()"/> |
4812 <xsl:text> == undefined) { |
4863 <xsl:text> == undefined) { |
4813 </xsl:text> |
|
4814 <xsl:text> console.log("</xsl:text> |
|
4815 <xsl:value-of select="$varprefix"/> |
|
4816 <xsl:value-of select="position()"/> |
|
4817 <xsl:text> = </xsl:text> |
|
4818 <xsl:value-of select="@content"/> |
|
4819 <xsl:text>"); |
|
4820 </xsl:text> |
4864 </xsl:text> |
4821 <xsl:text> throw null; |
4865 <xsl:text> throw null; |
4822 </xsl:text> |
4866 </xsl:text> |
4823 <xsl:text> } |
4867 <xsl:text> } |
4824 </xsl:text> |
4868 </xsl:text> |
4875 </xsl:text> |
4919 </xsl:text> |
4876 <xsl:text> spread_json_data: function(janswer) { |
4920 <xsl:text> spread_json_data: function(janswer) { |
4877 </xsl:text> |
4921 </xsl:text> |
4878 <xsl:text> let [range,position,jdata] = janswer; |
4922 <xsl:text> let [range,position,jdata] = janswer; |
4879 </xsl:text> |
4923 </xsl:text> |
4880 <xsl:text> this.apply_hmi_value(1, range); |
4924 <xsl:text> [[1, range], [2, position], [3, this.visible]].map(([i,v]) => { |
4881 </xsl:text> |
4925 </xsl:text> |
4882 <xsl:text> this.apply_hmi_value(2, position); |
4926 <xsl:text> this.apply_hmi_value(i,v); |
4883 </xsl:text> |
4927 </xsl:text> |
4884 <xsl:text> this.apply_hmi_value(3, this.visible); |
4928 <xsl:text> this.cache[i] = v; |
|
4929 </xsl:text> |
|
4930 <xsl:text> }); |
4885 </xsl:text> |
4931 </xsl:text> |
4886 <xsl:apply-templates mode="json_table_render_except_comments" select="$data_elt"> |
4932 <xsl:apply-templates mode="json_table_render_except_comments" select="$data_elt"> |
4887 <xsl:with-param name="expressions" select="$initexpr_ns"/> |
4933 <xsl:with-param name="expressions" select="$initexpr_ns"/> |
4888 <xsl:with-param name="widget_elts" select="$hmi_element/*[@inkscape:label = 'data']/descendant::svg:*"/> |
4934 <xsl:with-param name="widget_elts" select="$hmi_element/*[@inkscape:label = 'data']/descendant::svg:*"/> |
4889 </xsl:apply-templates> |
4935 </xsl:apply-templates> |
7169 </xsl:text> |
7215 </xsl:text> |
7170 <xsl:text> |
7216 <xsl:text> |
7171 </xsl:text> |
7217 </xsl:text> |
7172 <xsl:text>function switch_langnum(langnum) { |
7218 <xsl:text>function switch_langnum(langnum) { |
7173 </xsl:text> |
7219 </xsl:text> |
7174 <xsl:text> if(langnum == current_lang) { |
7220 <xsl:text> langnum = Math.max(0, Math.min(langs.length - 1, langnum)); |
7175 </xsl:text> |
7221 </xsl:text> |
7176 <xsl:text> return; |
7222 <xsl:text> |
|
7223 </xsl:text> |
|
7224 <xsl:text> for (let translation of translations) { |
|
7225 </xsl:text> |
|
7226 <xsl:text> let [objs, msgs] = translation; |
|
7227 </xsl:text> |
|
7228 <xsl:text> let msg = msgs[langnum]; |
|
7229 </xsl:text> |
|
7230 <xsl:text> for (let obj of objs) { |
|
7231 </xsl:text> |
|
7232 <xsl:text> multiline_to_svg_text(obj, msg); |
|
7233 </xsl:text> |
|
7234 <xsl:text> obj.setAttribute("lang",langnum); |
|
7235 </xsl:text> |
|
7236 <xsl:text> } |
7177 </xsl:text> |
7237 </xsl:text> |
7178 <xsl:text> } |
7238 <xsl:text> } |
7179 </xsl:text> |
7239 </xsl:text> |
7180 <xsl:text> |
7240 <xsl:text> return langnum; |
7181 </xsl:text> |
7241 </xsl:text> |
7182 <xsl:text> for (let translation of translations) { |
7242 <xsl:text>} |
7183 </xsl:text> |
7243 </xsl:text> |
7184 <xsl:text> let [objs, msgs, orig] = translation; |
7244 <xsl:text> |
7185 </xsl:text> |
7245 </xsl:text> |
7186 <xsl:text> let msg = langnum == 0 ? orig : msgs[langnum - 1]; |
7246 <xsl:text>// backup original texts |
7187 </xsl:text> |
7247 </xsl:text> |
7188 <xsl:text> for (let obj of objs) { |
7248 <xsl:text>for (let translation of translations) { |
7189 </xsl:text> |
7249 </xsl:text> |
7190 <xsl:text> multiline_to_svg_text(obj, msg); |
7250 <xsl:text> let [objs, msgs] = translation; |
7191 </xsl:text> |
7251 </xsl:text> |
7192 <xsl:text> obj.setAttribute("lang",langnum); |
7252 <xsl:text> msgs.unshift(svg_text_to_multiline(objs[0])); |
7193 </xsl:text> |
7253 </xsl:text> |
7194 <xsl:text> } |
7254 <xsl:text>} |
|
7255 </xsl:text> |
|
7256 <xsl:text> |
|
7257 </xsl:text> |
|
7258 <xsl:text>var lang_local_index = hmi_local_index("lang"); |
|
7259 </xsl:text> |
|
7260 <xsl:text>var langcode_local_index = hmi_local_index("lang_code"); |
|
7261 </xsl:text> |
|
7262 <xsl:text>var langname_local_index = hmi_local_index("lang_name"); |
|
7263 </xsl:text> |
|
7264 <xsl:text>subscribers(lang_local_index).add({ |
|
7265 </xsl:text> |
|
7266 <xsl:text> indexes: [lang_local_index], |
|
7267 </xsl:text> |
|
7268 <xsl:text> new_hmi_value: function(index, value, oldval) { |
|
7269 </xsl:text> |
|
7270 <xsl:text> let current_lang = switch_langnum(value); |
|
7271 </xsl:text> |
|
7272 <xsl:text> let [langname,langcode] = langs[current_lang]; |
|
7273 </xsl:text> |
|
7274 <xsl:text> apply_hmi_value(langcode_local_index, langcode); |
|
7275 </xsl:text> |
|
7276 <xsl:text> apply_hmi_value(langname_local_index, langname); |
|
7277 </xsl:text> |
|
7278 <xsl:text> switch_page(); |
7195 </xsl:text> |
7279 </xsl:text> |
7196 <xsl:text> } |
7280 <xsl:text> } |
7197 </xsl:text> |
7281 </xsl:text> |
7198 <xsl:text> current_lang = langnum; |
7282 <xsl:text>}); |
|
7283 </xsl:text> |
|
7284 <xsl:text> |
|
7285 </xsl:text> |
|
7286 <xsl:text>function setup_lang(){ |
|
7287 </xsl:text> |
|
7288 <xsl:text> let current_lang = cache[lang_local_index]; |
|
7289 </xsl:text> |
|
7290 <xsl:text> let new_lang = switch_langnum(current_lang); |
|
7291 </xsl:text> |
|
7292 <xsl:text> if(current_lang != new_lang){ |
|
7293 </xsl:text> |
|
7294 <xsl:text> apply_hmi_value(lang_local_index, new_lang); |
|
7295 </xsl:text> |
|
7296 <xsl:text> } |
7199 </xsl:text> |
7297 </xsl:text> |
7200 <xsl:text>} |
7298 <xsl:text>} |
7201 </xsl:text> |
7299 </xsl:text> |
7202 <xsl:text> |
7300 <xsl:text> |
7203 </xsl:text> |
7301 </xsl:text> |
7204 <xsl:text>// backup original texts |
7302 <xsl:text>setup_lang(); |
7205 </xsl:text> |
|
7206 <xsl:text>for (let translation of translations) { |
|
7207 </xsl:text> |
|
7208 <xsl:text> let [objs] = translation; |
|
7209 </xsl:text> |
|
7210 <xsl:text> translation.push(svg_text_to_multiline(objs[0])); |
|
7211 </xsl:text> |
|
7212 <xsl:text>} |
|
7213 </xsl:text> |
|
7214 <xsl:text> |
|
7215 </xsl:text> |
|
7216 <xsl:text>var lang_local_index = hmi_local_index("lang"); |
|
7217 </xsl:text> |
|
7218 <xsl:text>subscribers(lang_local_index).add({ |
|
7219 </xsl:text> |
|
7220 <xsl:text> indexes: [lang_local_index], |
|
7221 </xsl:text> |
|
7222 <xsl:text> new_hmi_value: function(index, value, oldval) { |
|
7223 </xsl:text> |
|
7224 <xsl:text> switch_langnum(value); |
|
7225 </xsl:text> |
|
7226 <xsl:text> switch_page(); |
|
7227 </xsl:text> |
|
7228 <xsl:text> } |
|
7229 </xsl:text> |
|
7230 <xsl:text>}); |
|
7231 </xsl:text> |
|
7232 <xsl:text>var current_lang = 0; |
|
7233 </xsl:text> |
|
7234 <xsl:text>switch_langnum(cache[lang_local_index]); |
|
7235 </xsl:text> |
7303 </xsl:text> |
7236 <xsl:text> |
7304 <xsl:text> |
7237 </xsl:text> |
7305 </xsl:text> |
7238 <xsl:text>function update_subscriptions() { |
7306 <xsl:text>function update_subscriptions() { |
7239 </xsl:text> |
7307 </xsl:text> |