loleaflet/src/control/Control.JSDialogBuilder.js |   58 ++++++++++++++++-------
 1 file changed, 41 insertions(+), 17 deletions(-)

New commits:
commit 4617903be2666f437ff87a3ca07b713e39e685d1
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Wed May 6 15:04:22 2020 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Mon May 11 04:48:07 2020 +0200

    jsdialog: add formatted field handler
    
    In master branch by default the legacy control like the
    metric control is not created, that force to create the
    replacement which is formatted field control.
    
    Change-Id: Ib5dcaa9516057a3aed304b748f13d44098dc525b
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/93588
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Henry Castro <hcas...@collabora.com>

diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js 
b/loleaflet/src/control/Control.JSDialogBuilder.js
index a72fe2959..4ecbc0ad9 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -112,6 +112,25 @@ L.Control.JSDialogBuilder = L.Control.extend({
                        });
 
                        return controls;
+               },
+
+               listenNumericChanges: function (data, builder, controls, 
customCallback) {
+                       // It listens server state changes using GetControlState
+                       // to avoid unit conversion
+                       builder.map.on('commandstatechanged', function(e) {
+                               var value = e.state[data.id];
+                               if (value) {
+                                       value = parseFloat(value);
+                                       $(controls.spinfield).attr('value', 
value);
+                               }
+                       }, this);
+
+                       controls.spinfield.addEventListener('change', 
function() {
+                               if (customCallback)
+                                       customCallback();
+                               else
+                                       builder.callback('spinfield', 'value', 
controls.container, this.value, builder);
+                       });
                }
        },
 
@@ -125,6 +144,7 @@ L.Control.JSDialogBuilder = L.Control.extend({
                this._controlHandlers['checkbox'] = this._checkboxControl;
                this._controlHandlers['spinfield'] = this._spinfieldControl;
                this._controlHandlers['metricfield'] = this._metricfieldControl;
+               this._controlHandlers['formattedfield'] = 
this._formattedfieldControl;
                this._controlHandlers['edit'] = this._editControl;
                this._controlHandlers['multilineedit'] = 
this._multiLineEditControl;
                this._controlHandlers['pushbutton'] = this._pushbuttonControl;
@@ -1183,26 +1203,30 @@ L.Control.JSDialogBuilder = L.Control.extend({
                return false;
        },
 
+       _formattedfieldControl: function(parentContainer, data, builder, 
customCallback) {
+               var value, units, controls;
+
+               // formatted control does not contain unit property
+               units = data.text.split(' ');
+               if (units.length == 2) {
+                       data.unit = units[1];
+               }
+
+               controls = 
L.Control.JSDialogBuilder.baseSpinField(parentContainer, data, builder, 
customCallback);
+
+               L.Control.JSDialogBuilder.listenNumericChanges(data, builder, 
controls, customCallback);
+
+               value = parseFloat(data.value);
+               $(controls.spinfield).attr('value', value);
+
+               return false;
+       },
+
+
        _metricfieldControl: function(parentContainer, data, builder, 
customCallback) {
                var value;
                var controls = 
L.Control.JSDialogBuilder.baseSpinField(parentContainer, data, builder, 
customCallback);
-
-               // It listens server state changes using GetControlState
-               // to avoid unit conversion
-               builder.map.on('commandstatechanged', function(e) {
-                       value = e.state[data.id];
-                       if (value) {
-                               value = parseFloat(value);
-                               $(controls.spinfield).attr('value', value);
-                       }
-               }, this);
-
-               controls.spinfield.addEventListener('change', function() {
-                       if (customCallback)
-                               customCallback();
-                       else
-                               builder.callback('spinfield', 'value', 
controls.container, this.value, builder);
-               });
+               L.Control.JSDialogBuilder.listenNumericChanges(data, builder, 
controls, customCallback);
 
                value = parseFloat(data.value);
                $(controls.spinfield).attr('value', value);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to