loleaflet/src/control/Control.JSDialogBuilder.js |  163 +++++++++++------------
 1 file changed, 85 insertions(+), 78 deletions(-)

New commits:
commit d0ca14d40484aad01e1c5964537131fe3ae280a0
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Wed Apr 22 19:55:13 2020 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Tue Apr 28 03:13:38 2020 +0200

    jsdialog: create a static base spinfiled function
    
    The next patch will re-use to implement metric field control
    
    Change-Id: Iebfb2584fe4771e8a98eac1fc5b63768013b817a
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92798
    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 e27220fa1..5bc0ac9ba 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -23,6 +23,83 @@ L.Control.JSDialogBuilder = L.Control.extend({
 
        _currentDepth: 0,
 
+       statics: {
+               baseSpinField: function(parentContainer, data, builder, 
customCallback) {
+                       var controls = {};
+                       if (data.label) {
+                               var fixedTextData = { text: data.label };
+                               builder._fixedtextControl(parentContainer, 
fixedTextData, builder);
+                       }
+
+                       var div = L.DomUtil.create('div', 'spinfieldcontainer', 
parentContainer);
+                       div.id = data.id;
+                       controls['container'] = div;
+
+                       var commandName = data.id ? 
data.id.substring('.uno:'.length) : data.id;
+                       if (commandName && commandName.length && 
L.LOUtil.existsIconForCommand(commandName, builder.map.getDocType())) {
+                               var image = L.DomUtil.create('img', 
'spinfieldimage', div);
+                               var icon = builder._createIconPath(data.id);
+                               image.src = icon;
+                               icon.alt = '';
+                       }
+
+                       var spinfield = L.DomUtil.create('input', 'spinfield', 
div);
+                       spinfield.type = 'number';
+                       controls['spinfield'] = spinfield;
+
+                       if (data.unit) {
+                               var unit = L.DomUtil.create('span', 
'spinfieldunit', div);
+                               unit.innerHTML = 
builder._unitToVisibleString(data.unit);
+                       }
+
+                       var controlsContainer = L.DomUtil.create('div', 
'spinfieldcontrols', div);
+                       var minus = L.DomUtil.create('div', 'minus', 
controlsContainer);
+                       minus.innerHTML = '-';
+
+                       var plus = L.DomUtil.create('div', 'plus', 
controlsContainer);
+                       plus.innerHTML = '+';
+
+                       if (data.min != undefined)
+                               $(spinfield).attr('min', data.min);
+
+                       if (data.max != undefined)
+                               $(spinfield).attr('max', data.max);
+
+                       if (data.enabled == 'false') {
+                               $(spinfield).attr('disabled', 'disabled');
+                               $(image).addClass('disabled');
+                       }
+
+                       if (data.readOnly === true)
+                               $(spinfield).attr('readOnly', 'true');
+
+                       if (data.hidden)
+                               $(spinfield).hide();
+
+                       plus.addEventListener('click', function() {
+                               var attrdisabled = 
$(spinfield).attr('disabled');
+                               if (attrdisabled !== 'disabled') {
+                                       if (customCallback)
+                                               customCallback('spinfield', 
'plus', div, this.value, builder);
+                                       else
+                                               builder.callback('spinfield', 
'plus', div, this.value, builder);
+                               }
+                       });
+
+                       minus.addEventListener('click', function() {
+                               var attrdisabled = 
$(spinfield).attr('disabled');
+                               if (attrdisabled !== 'disabled') {
+                                       if (customCallback)
+                                               customCallback('spinfield', 
'minus', div, this.value, builder);
+                                       else
+                                               builder.callback('spinfield', 
'minus', div, this.value, builder);
+                               }
+                       });
+
+                       return controls;
+               }
+       },
+
        _setup: function(options) {
                this._clearColorPickers();
                this.wizard = options.mobileWizard;
@@ -1003,102 +1080,32 @@ L.Control.JSDialogBuilder = L.Control.extend({
        },
 
        _spinfieldControl: function(parentContainer, data, builder, 
customCallback) {
-               if (data.label) {
-                       var fixedTextData = { text: data.label };
-                       builder._fixedtextControl(parentContainer, 
fixedTextData, builder);
-               }
+               var controls = 
L.Control.JSDialogBuilder.baseSpinField(parentContainer, data, builder, 
customCallback);
 
-               var div = L.DomUtil.create('div', 'spinfieldcontainer', 
parentContainer);
-               div.id = data.id;
-
-               var commandName = data.id ? data.id.substring('.uno:'.length) : 
data.id;
-               if (commandName && commandName.length && 
L.LOUtil.existsIconForCommand(commandName, builder.map.getDocType())) {
-                       var image = L.DomUtil.create('img', 'spinfieldimage', 
div);
-                       var icon = builder._createIconPath(data.id);
-                       image.src = icon;
-                       icon.alt = '';
-               }
-
-               var spinfield = L.DomUtil.create('input', 'spinfield', div);
-               spinfield.type = 'number';
-
-               if (data.unit) {
-                       var unit = L.DomUtil.create('span', 'spinfieldunit', 
div);
-                       unit.innerHTML = 
builder._unitToVisibleString(data.unit);
-               }
-
-               var controlsContainer = L.DomUtil.create('div', 
'spinfieldcontrols', div);
-               var minus = L.DomUtil.create('div', 'minus', controlsContainer);
-               minus.innerHTML = '-';
-               var plus = L.DomUtil.create('div', 'plus', controlsContainer);
-               plus.innerHTML = '+';
-
-               if (data.min != undefined)
-                       $(spinfield).attr('min', data.min);
-
-               if (data.max != undefined)
-                       $(spinfield).attr('max', data.max);
-
-               if (data.enabled == 'false') {
-                       $(spinfield).attr('disabled', 'disabled');
-                       $(image).addClass('disabled');
-               }
-
-               if (data.readOnly === true)
-                       $(spinfield).attr('readOnly', 'true');
-
-               var updateFunction = function(e) {
-                       var value = e ? e[data.id] : undefined;
-                       if (!value) {
-                               value = builder._getUnoStateForItemId(data.id, 
builder);
-                       }
+               var updateFunction = function() {
+                       var value = builder._getUnoStateForItemId(data.id, 
builder);
 
                        if (!value && data.text != undefined)
                                value = data.text;
                        else if (!value && data.children && 
data.children.length)
                                value = data.children[0].text;
 
-                       $(spinfield).attr('value', 
builder._cleanValueFromUnits(value));
+                       $(controls.spinfield).attr('value', 
builder._cleanValueFromUnits(value));
                };
 
-               updateFunction();
-
                builder.map.on('commandstatechanged', function(e) {
-                       if (e.state[data.id]) {
-                               updateFunction(e.state);
-                       } else if (e.commandName === 
builder._mapWindowIdToUnoCommand(data.id))
+                       if (e.commandName === 
builder._mapWindowIdToUnoCommand(data.id))
                                updateFunction();
                }, this);
 
-               spinfield.addEventListener('change', function() {
+               controls.spinfield.addEventListener('change', function() {
                        if (customCallback)
                                customCallback();
                        else
-                               builder.callback('spinfield', 'set', div, 
this.value, builder);
-               });
-
-               plus.addEventListener('click', function() {
-                       var attrdisabled = $(spinfield).attr('disabled');
-                       if (attrdisabled !== 'disabled') {
-                               if (customCallback)
-                                       customCallback('spinfield', 'plus', 
div, this.value, builder);
-                               else
-                                       builder.callback('spinfield', 'plus', 
div, this.value, builder);
-                       }
+                               builder.callback('spinfield', 'set', 
controls.container, this.value, builder);
                });
 
-               minus.addEventListener('click', function() {
-                       var attrdisabled = $(spinfield).attr('disabled');
-                       if (attrdisabled !== 'disabled') {
-                               if (customCallback)
-                                       customCallback('spinfield', 'minus', 
div, this.value, builder);
-                               else
-                                       builder.callback('spinfield', 'minus', 
div, this.value, builder);
-                       }
-               });
-
-               if (data.hidden)
-                       $(spinfield).hide();
+               updateFunction();
 
                return false;
        },
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to