changeset ae48f74b001a in sao:5.2
details: https://hg.tryton.org/sao?cmd=changeset;node=ae48f74b001a
description:
Read value and fuzzy value in parallel to compare both
issue8500
review283741002
(grafted from 1f13f663a75990e5a8793649b60042b65c84ee79)
diffstat:
src/view/form.js | 63 ++++++++++++++++++++++++--------------------------------
1 files changed, 27 insertions(+), 36 deletions(-)
diffs (82 lines):
diff -r fe7503b3f7a1 -r ae48f74b001a src/view/form.js
--- a/src/view/form.js Sat Jul 20 21:45:28 2019 +0200
+++ b/src/view/form.js Sat Jul 20 21:53:12 2019 +0200
@@ -1035,18 +1035,10 @@
dialog.modal.modal('hide');
},
read: function(widget, dialog) {
+ function field_value(result) {
+ return result[0][widget.field_name] || '';
+ }
this.languages.forEach(function(lang){
- var context = {};
- context.language = lang.code;
- var params = [
- [widget.record.id],
- [widget.field_name],
- context
- ];
- var args = {
- 'method': 'model.' + widget.model.name + '.read',
- 'params': params
- };
var value;
var row = jQuery('<div/>', {
'class':'row form-group'
@@ -1065,32 +1057,31 @@
'disabled': true,
'title': Sao.i18n.gettext('Fuzzy')
});
- var prm = Sao.rpc(args, widget.model.session)
- .then(function(result) {
- value = result[0][widget.field_name];
- }.bind(this));
- params = [
- [widget.record.id],
- [widget.field_name],
- context
- ];
- context.fuzzy_translation = true;
- args = {
+ var prm1 = Sao.rpc({
+ 'method': 'model.' + widget.model.name + '.read',
+ 'params': [
+ [widget.record.id],
+ [widget.field_name],
+ {language: lang.code},
+ ],
+ }, widget.model.session).then(field_value);
+ var prm2 = Sao.rpc({
'method': 'model.' + widget.model.name + '.read',
- 'params': params
- };
- prm.then(function() {
- Sao.rpc(args, widget.model.session)
- .then(function(fuzzy_value) {
- value = fuzzy_value[0][widget.field_name] || '';
- widget.translate_widget_set(
- input, value);
- widget.translate_widget_set_readonly(
- input, true);
- fuzzy_box.attr('checked',
- fuzzy_value[0].name != value);
- }.bind(this));
- }.bind(this));
+ 'params': [
+ [widget.record.id],
+ [widget.field_name],
+ {
+ language: lang.code,
+ fuzzy_translation: true,
+ },
+ ],
+ }, widget.model.session).then(field_value);
+
+ jQuery.when(prm1, prm2).done(function(value, fuzzy_value) {
+ widget.translate_widget_set(input, fuzzy_value);
+ widget.translate_widget_set_readonly( input, true);
+ fuzzy_box.attr('checked', value !== fuzzy_value);
+ });
checkbox.click(function() {
widget.translate_widget_set_readonly(
input, !jQuery(this).prop('checked'));