[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