[Libreoffice-commits] online.git: loleaflet/Makefile.am loleaflet/src
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Wed Apr 15 14:52:32 UTC 2020
loleaflet/Makefile.am | 1
loleaflet/src/control/Control.FormulaBar.js | 185 ++++++++++++++++++++++++++++
loleaflet/src/control/Control.Toolbar.js | 133 --------------------
loleaflet/src/layer/tile/CalcTileLayer.js | 33 ----
4 files changed, 189 insertions(+), 163 deletions(-)
New commits:
commit cca7a440093237af0bdcb87d44a77f383324c4bc
Author: Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Wed Apr 15 13:38:46 2020 +0200
Commit: Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Apr 15 16:52:12 2020 +0200
Move formula bar to separate file
Change-Id: If380e8bc8091151872a728cc632313aa3f4cfda1
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92269
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am
index 0cb94a244..c5693d351 100644
--- a/loleaflet/Makefile.am
+++ b/loleaflet/Makefile.am
@@ -267,6 +267,7 @@ LOLEAFLET_JS =\
src/control/Control.MobileTopBar.js \
src/control/Control.MobileBottomBar.js \
src/control/Control.UserList.js \
+ src/control/Control.FormulaBar.js \
src/control/Control.Layers.js \
src/control/Search.js \
src/control/Permission.js \
diff --git a/loleaflet/src/control/Control.FormulaBar.js b/loleaflet/src/control/Control.FormulaBar.js
new file mode 100644
index 000000000..e90e3f141
--- /dev/null
+++ b/loleaflet/src/control/Control.FormulaBar.js
@@ -0,0 +1,185 @@
+/* -*- js-indent-level: 8 -*- */
+/*
+ * L.Control.FormulaBar
+ */
+
+/* global $ w2ui _ */
+L.Control.FormulaBar = L.Control.extend({
+ options: {
+ showfunctionwizard: true
+ },
+
+ onAdd: function (map) {
+ this.map = map;
+ this.create();
+
+ map.on('doclayerinit', this.onDocLayerInit, this);
+ map.on('updatepermission', this.onUpdatePermission, this);
+
+ map.on('celladdress', function (e) {
+ if (document.activeElement !== L.DomUtil.get('addressInput')) {
+ // if the user is not editing the address field
+ L.DomUtil.get('addressInput').value = e.address;
+ }
+ });
+ },
+
+ create: function() {
+ var that = this;
+ var toolbar = $('#formulabar');
+ toolbar.w2toolbar({
+ name: 'formulabar',
+ tooltip: 'bottom',
+ hidden: true,
+ items: [
+ {type: 'html', id: 'left'},
+ {type: 'html', id: 'address', html: '<input id="addressInput" type="text">'},
+ {type: 'break', hidden: !this.options.showfunctionwizard},
+ {type: 'button', hidden: !this.options.showfunctionwizard, id: 'functiondialog', img: 'functiondialog', hint: _('Function Wizard'), uno: '.uno:FunctionDialog'},
+ {type: 'html', id: 'formula', html: '<div id="calc-inputbar-wrapper"><div id="calc-inputbar"></div></div>'}
+ ],
+ onClick: function (e) {
+ that.onClick(e, e.target);
+ window.hideTooltip(this, e.target);
+ },
+ onRefresh: function() {
+ $('#addressInput').off('keyup', this.onAddressInput, this).on('keyup', this.onAddressInput, this);
+ }
+ });
+ toolbar.bind('touchstart', function(e) {
+ w2ui['formulabar'].touchStarted = true;
+ var touchEvent = e.originalEvent;
+ if (touchEvent && touchEvent.touches.length > 1) {
+ L.DomEvent.preventDefault(e);
+ }
+ });
+
+ $(w2ui.formulabar.box).find('.w2ui-scroll-left, .w2ui-scroll-right').hide();
+ w2ui.formulabar.on('resize', function(target, e) {
+ e.isCancelled = true;
+ });
+ },
+
+ onClick: function(e, id, item) {
+ if ('formulabar' in w2ui && w2ui['formulabar'].get(id) !== null) {
+ var toolbar = w2ui['formulabar'];
+ item = toolbar.get(id);
+ }
+
+ // In the iOS app we don't want clicking on the toolbar to pop up the keyboard.
+ if (!window.ThisIsTheiOSApp && id !== 'zoomin' && id !== 'zoomout' && id !== 'mobile_wizard' && id !== 'insertion_mobile_wizard') {
+ this.map.focus(this.map.canAcceptKeyboardInput()); // Maintain same keyboard state.
+ }
+
+ if (item.disabled) {
+ return;
+ }
+
+ if (item.uno) {
+ if (item.unosheet && this.map.getDocType() === 'spreadsheet') {
+ this.map.toggleCommandState(item.unosheet);
+ }
+ else {
+ this.map.toggleCommandState(window.getUNOCommand(item.uno));
+ }
+ }
+ },
+
+ onDocLayerInit: function() {
+ var docType = this.map.getDocType();
+ if (docType == 'spreadsheet') {
+ $('#formulabar').show();
+ }
+ },
+
+ onUpdatePermission: function(e) {
+ var formulaBarButtons = ['functiondialog', 'sum', 'function'];
+ var toolbar = w2ui.formulabar;
+
+ if (e.perm === 'edit') {
+ // Enable formula bar
+ $('#addressInput').prop('disabled', false);
+ $('#formulaInput').prop('disabled', false);
+
+ if (toolbar) {
+ formulaBarButtons.forEach(function(id) {
+ toolbar.enable(id);
+ });
+ }
+ } else {
+ // Disable formula bar
+ $('#addressInput').prop('disabled', true);
+ $('#formulaInput').prop('disabled', true);
+
+ if (toolbar) {
+ formulaBarButtons.forEach(function(id) {
+ toolbar.disable(id);
+ });
+ }
+ }
+ },
+
+ onFormulaInput: function(e) {
+ // keycode = 13 is 'enter'
+ if (e.keyCode === 13) {
+ // formula bar should not have focus anymore
+ this.map.focus();
+
+ // forward the 'enter' keystroke to map to deal with the formula entered
+ var data = {
+ originalEvent: e
+ };
+ this.map.fire('keypress', data);
+ } else if (e.keyCode === 27) { // 27 = esc key
+ this.map.sendUnoCommand('.uno:Cancel');
+ this.map.focus();
+ } else {
+ this.map.cellEnterString(L.DomUtil.get('formulaInput').value);
+ }
+ },
+
+ onFormulaBarFocus: function() {
+ var formulabar = w2ui.formulabar;
+ formulabar.hide('sum');
+ formulabar.hide('function');
+ formulabar.show('cancelformula');
+ formulabar.show('acceptformula');
+ },
+
+ onFormulaBarBlur: function() {
+ // The timeout is needed because we want 'click' event on 'cancel',
+ // 'accept' button to act before we hide these buttons because
+ // once hidden, click event won't be processed.
+ // TODO: Some better way to do it ?
+ setTimeout(function() {
+ var formulabar = w2ui.formulabar;
+ formulabar.show('sum');
+ formulabar.show('function');
+ formulabar.hide('cancelformula');
+ formulabar.hide('acceptformula');
+ }, 250);
+ },
+
+ onAddressInput: function(e) {
+ if (e.keyCode === 13) {
+ // address control should not have focus anymore
+ this.map.focus();
+ var value = L.DomUtil.get('addressInput').value;
+ var command = {
+ ToPoint : {
+ type: 'string',
+ value: value
+ }
+
+ };
+ this.map.sendUnoCommand('.uno:GoToCell', command);
+ } else if (e.keyCode === 27) { // 27 = esc key
+ this.map.sendUnoCommand('.uno:Cancel');
+ this.map.focus();
+ }
+ }
+});
+
+L.control.formulaBar = function (options) {
+ return new L.Control.FormulaBar(options);
+};
diff --git a/loleaflet/src/control/Control.Toolbar.js b/loleaflet/src/control/Control.Toolbar.js
index be3101358..3f38a5958 100644
--- a/loleaflet/src/control/Control.Toolbar.js
+++ b/loleaflet/src/control/Control.Toolbar.js
@@ -91,10 +91,6 @@ function onClick(e, id, item) {
var toolbar = w2ui['editbar'];
item = toolbar.get(id);
}
- else if ('formulabar' in w2ui && w2ui['formulabar'].get(id) !== null) {
- toolbar = w2ui['formulabar'];
- item = toolbar.get(id);
- }
else if ('document-signing-bar' in w2ui && w2ui['document-signing-bar'].get(id) !== null) {
toolbar = w2ui['document-signing-bar'];
item = toolbar.get(id);
@@ -907,37 +903,6 @@ function createMainToolbar() {
});
}
-function createFormulaBar() {
- var toolbar = $('#formulabar');
- toolbar.w2toolbar({
- name: 'formulabar',
- tooltip: 'bottom',
- hidden: true,
- items: [
- {type: 'html', id: 'left'},
- {type: 'html', id: 'address', html: '<input id="addressInput" type="text">'},
- {type: 'break'},
- {type: 'button', id: 'functiondialog', img: 'functiondialog', hint: _('Function Wizard'), uno: '.uno:FunctionDialog'},
- {type: 'html', id: 'formula', html: '<div id="calc-inputbar-wrapper"><div id="calc-inputbar"></div></div>'}
- ],
- onClick: function (e) {
- onClick(e, e.target);
- hideTooltip(this, e.target);
- },
- onRefresh: function() {
- $('#addressInput').off('keyup', onAddressInput).on('keyup', onAddressInput);
- }
- });
- toolbar.bind('touchstart', function() {
- w2ui['formulabar'].touchStarted = true;
- });
-
- $(w2ui.formulabar.box).find('.w2ui-scroll-left, .w2ui-scroll-right').hide();
- w2ui.formulabar.on('resize', function(target, e) {
- e.isCancelled = true;
- });
-}
-
function createSigningBar() {
if (L.DomUtil.get('document-signing-bar') !== null) {
var toolbar = $('#document-signing-bar');
@@ -1008,7 +973,7 @@ function createPresentationToolbar() {
function initNormalToolbar() {
createMainToolbar();
- createFormulaBar();
+ map.addControl(L.control.formulaBar({showfunctionwizard: true}));
createSigningBar();
createSpreadsheetToolbar();
createPresentationToolbar();
@@ -1226,68 +1191,6 @@ function onInsertBackground() {
return false;
}
-function onAddressInput(e) {
- if (e.keyCode === 13) {
- // address control should not have focus anymore
- map.focus();
- var value = L.DomUtil.get('addressInput').value;
- var command = {
- ToPoint : {
- type: 'string',
- value: value
- }
-
- };
- map.sendUnoCommand('.uno:GoToCell', command);
- } else if (e.keyCode === 27) { // 27 = esc key
- map.sendUnoCommand('.uno:Cancel');
- map.focus();
- }
-}
-
-function onFormulaInput(e) {
- // keycode = 13 is 'enter'
- if (e.keyCode === 13) {
- // formula bar should not have focus anymore
- map.focus();
-
- // forward the 'enter' keystroke to map to deal with the formula entered
- var data = {
- originalEvent: e
- };
- map.fire('keypress', data);
- } else if (e.keyCode === 27) { // 27 = esc key
- map.sendUnoCommand('.uno:Cancel');
- map.focus();
- } else {
- map.cellEnterString(L.DomUtil.get('formulaInput').value);
- }
-}
-
-function onFormulaBarFocus() {
- var formulabar = w2ui.formulabar;
- formulabar.hide('sum');
- formulabar.hide('function');
- formulabar.show('cancelformula');
- formulabar.show('acceptformula');
-}
-
-function onFormulaBarBlur() {
- // The timeout is needed because we want 'click' event on 'cancel',
- // 'accept' button to act before we hide these buttons because
- // once hidden, click event won't be processed.
- // TODO: Some better way to do it ?
- setTimeout(function() {
- var formulabar = w2ui.formulabar;
- formulabar.show('sum');
- formulabar.show('function');
- formulabar.hide('cancelformula');
- formulabar.hide('acceptformula');
- }, 250);
-}
-
-
-
function onWopiProps(e) {
if (e.HideSaveOption) {
w2ui['editbar'].hide('save');
@@ -1347,7 +1250,6 @@ function onDocLayerInit() {
if (!window.mode.isMobile()) {
$('#spreadsheet-toolbar').show();
}
- $('#formulabar').show();
break;
case 'text':
@@ -1841,7 +1743,6 @@ function onUpdatePermission(e) {
}
var spreadsheetButtons = ['insertsheet'];
- var formulaBarButtons = ['functiondialog', 'sum', 'function'];
var presentationButtons = ['insertpage', 'duplicatepage', 'deletepage'];
if (e.perm === 'edit') {
// Enable list boxes
@@ -1849,16 +1750,6 @@ function onUpdatePermission(e) {
$('.fonts-select').prop('disabled', false);
$('.fontsizes-select').prop('disabled', false);
- // Enable formula bar
- $('#addressInput').prop('disabled', false);
- $('#formulaInput').prop('disabled', false);
- toolbar = w2ui.formulabar;
- if (toolbar) {
- formulaBarButtons.forEach(function(id) {
- toolbar.enable(id);
- });
- }
-
toolbar = w2ui['spreadsheet-toolbar'];
if (toolbar) {
spreadsheetButtons.forEach(function(id) {
@@ -1903,17 +1794,6 @@ function onUpdatePermission(e) {
$('.fonts-select').prop('disabled', true);
$('.fontsizes-select').prop('disabled', true);
- // Disable formula bar
- $('#addressInput').prop('disabled', true);
- $('#formulaInput').prop('disabled', true);
-
- toolbar = w2ui.formulabar;
- if (toolbar) {
- formulaBarButtons.forEach(function(id) {
- toolbar.disable(id);
- });
- }
-
toolbar = w2ui['spreadsheet-toolbar'];
if (toolbar) {
spreadsheetButtons.forEach(function(id) {
@@ -2005,13 +1885,6 @@ function setupToolbar(e) {
}
});
- map.on('celladdress', function (e) {
- if (document.activeElement !== L.DomUtil.get('addressInput')) {
- // if the user is not editing the address field
- L.DomUtil.get('addressInput').value = e.address;
- }
- });
-
if (!window.mode.isMobile()) {
map.on('updatetoolbarcommandvalues', function(e) {
updateCommandValues(e);
@@ -2044,10 +1917,6 @@ function setupToolbar(e) {
global.setupToolbar = setupToolbar;
global.onClick = onClick;
global.hideTooltip = hideTooltip;
-global.onAddressInput = onAddressInput;
-global.onFormulaInput = onFormulaInput;
-global.onFormulaBarBlur = onFormulaBarBlur;
-global.onFormulaBarFocus = onFormulaBarFocus;
global.onStyleSelect = onStyleSelect;
global.insertTable = insertTable;
global.insertShapes = insertShapes;
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js
index e6cb0ec1a..f4767648f 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -73,38 +73,9 @@ L.CalcTileLayer = L.TileLayer.extend({
onMobileInit: function (map) {
map.addControl(L.control.mobileTopBar('spreadsheet'));
- var toolbar = $('#formulabar');
- toolbar.w2toolbar({
- name: 'formulabar',
- tooltip: 'bottom',
- hidden: true,
- items: [
- {type: 'html', id: 'left'},
- {type: 'html', id: 'address', html: '<input id="addressInput" type="text">'},
- {type: 'html', id: 'formula', html: '<div id="calc-inputbar-wrapper"><div id="calc-inputbar"></div></div>'}
- ],
- onClick: function (e) {
- window.onClick(e, e.target);
- window.hideTooltip(this, e.target);
- },
- onRefresh: function() {
- $('#addressInput').off('keyup', window.onAddressInput).on('keyup', window.onAddressInput);
- }
- });
- toolbar.bind('touchstart', function(e) {
- w2ui['formulabar'].touchStarted = true;
- var touchEvent = e.originalEvent;
- if (touchEvent && touchEvent.touches.length > 1) {
- L.DomEvent.preventDefault(e);
- }
- });
-
- $(w2ui.formulabar.box).find('.w2ui-scroll-left, .w2ui-scroll-right').hide();
- w2ui.formulabar.on('resize', function(target, e) {
- e.isCancelled = true;
- });
+ map.addControl(L.control.formulaBar({showfunctionwizard: false}));
- toolbar = $('#spreadsheet-toolbar');
+ var toolbar = $('#spreadsheet-toolbar');
toolbar.w2toolbar({
name: 'spreadsheet-toolbar',
tooltip: 'bottom',
More information about the Libreoffice-commits
mailing list