loleaflet/build/deps.js | 1 loleaflet/src/control/Buttons.js | 4 +- loleaflet/src/control/Parts.js | 16 +++++----- loleaflet/src/control/Search.js | 2 - loleaflet/src/core/Log.js | 53 ++++++++++++++++++++++++++++++++++ loleaflet/src/layer/tile/GridLayer.js | 18 +++++------ loleaflet/src/layer/tile/TileLayer.js | 29 ++++++++++++------ 7 files changed, 94 insertions(+), 29 deletions(-)
New commits: commit 71ff6dca641072b3f5d05d0d917bc48d402e555d Author: Mihai Varga <mihai.va...@collabora.com> Date: Thu Jul 16 14:02:49 2015 +0300 loleaflet: log server - client communication diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index b52d7df..b5c9e64 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -272,6 +272,11 @@ L.TileLayer = L.GridLayer.extend({ textMsg = String.fromCharCode.apply(null, bytes.subarray(0, index)); } + if (!textMsg.startsWith('tile:')) { + // log the tile msg separately as we need the tile coordinates + L.Log.log(textMsg, L.INCOMING); + } + if (textMsg.startsWith('cursorvisible:')) { var command = textMsg.match('cursorvisible: true'); this._isCursorVisible = command ? true : false; @@ -459,6 +464,7 @@ L.TileLayer = L.GridLayer.extend({ if (this._pendingTilesCount > 0) { this._pendingTilesCount -= 1; } + L.Log.log(textMsg, L.INCOMING, key); } else if (textMsg.startsWith('textselection:')) { strTwips = textMsg.match(/\d+/g); @@ -527,6 +533,7 @@ L.TileLayer = L.GridLayer.extend({ }, sendMessage: function (msg, coords) { + L.Log.log(msg, L.OUTGOING, coords); this._map.socket.send(msg); }, commit 51592a4c53f462385f418a671900920a1db0a5c7 Author: Mihai Varga <mihai.va...@collabora.com> Date: Thu Jul 16 13:55:53 2015 +0300 loleaflet: log utility It's used to log communication between the server and the client It can print or download a csv formated file diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js index 7f22db1..c5927ba 100644 --- a/loleaflet/build/deps.js +++ b/loleaflet/build/deps.js @@ -1,6 +1,7 @@ var deps = { Core: { src: ['Leaflet.js', + 'core/Log.js', 'core/Util.js', 'core/Class.js', 'core/Events.js', diff --git a/loleaflet/src/core/Log.js b/loleaflet/src/core/Log.js new file mode 100644 index 0000000..e2a1355 --- /dev/null +++ b/loleaflet/src/core/Log.js @@ -0,0 +1,53 @@ +/* + * L.Log contains methods for logging the activity + */ + +L.Log = { + log: function (msg, direction, tileCoords) { + var time = Date.now(); + if (!this._logs) { + this._logs = []; + } + msg = msg.replace(/(\r\n|\n|\r)/gm,' '); + this._logs.push({msg : msg, direction : direction, + coords : tileCoords, time : time}); + }, + + _getEntries: function () { + this._logs.sort(function (a, b) { + if (a.time < b.time) { return -1; } + if (a.time > b.time) { return 1; } + return 0; + }); + var data = ''; + for (var i = 0; i < this._logs.length; i++) { + data += this._logs[i].time + '.' + this._logs[i].direction + '.' + + this._logs[i].msg + '.' + this._logs[i].coords; + data += '\n'; + } + return data; + }, + + print: function () { + console.log(this._getEntries()); + }, + + save: function () { + var blob = new Blob([this._getEntries()], {type: 'text/csv'}), + e = document.createEvent('MouseEvents'), + a = document.createElement('a'); + + a.download = Date.now() + '.csv'; + a.href = window.URL.createObjectURL(blob); + a.dataset.downloadurl = ['text/csv', a.download, a.href].join(':'); + e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); + a.dispatchEvent(e); + }, + + clear: function () { + this._logs = []; + } +}; + +L.INCOMING = 'INCOMING'; +L.OUTGOING = 'OUTGOING'; commit d5f9250bd874d050b2e56d029c133ef045df1288 Author: Mihai Varga <mihai.va...@collabora.com> Date: Thu Jul 16 13:20:11 2015 +0300 loleaflet: sendMessage method to replace map.socket.send diff --git a/loleaflet/src/control/Buttons.js b/loleaflet/src/control/Buttons.js index 1ce0c98..2f085f5 100644 --- a/loleaflet/src/control/Buttons.js +++ b/loleaflet/src/control/Buttons.js @@ -4,7 +4,7 @@ L.Map.include({ toggleCommandState: function (unoState) { if (this._docLayer._permission === 'edit') { - this.socket.send('uno .uno:' + unoState); + this._docLayer.sendMessage('uno .uno:' + unoState); } }, @@ -15,7 +15,7 @@ L.Map.include({ if (options === undefined || options === null) { options = ''; } - this.socket.send('saveas ' + + this._docLayer.sendMessage('saveas ' + 'url=' + url + ' ' + 'format=' + format + ' ' + 'options=' + options); diff --git a/loleaflet/src/control/Parts.js b/loleaflet/src/control/Parts.js index 6f8c143..9ee871b 100644 --- a/loleaflet/src/control/Parts.js +++ b/loleaflet/src/control/Parts.js @@ -41,13 +41,13 @@ L.Map.include({ else { maxHeight = Math.round(docLayer._docHeightTwips * maxWidth / docLayer._docWidthTwips); } - this.socket.send('tile ' + - 'part=' + part + ' ' + - 'width=' + maxWidth + ' ' + - 'height=' + maxHeight + ' ' + - 'tileposx=0 tileposy=0 ' + - 'tilewidth=' + docLayer._docWidthTwips + ' ' + - 'tileheight=' + docLayer._docHeightTwips + ' ' + - 'id=' + id); + docLayer.sendMessage('tile ' + + 'part=' + part + ' ' + + 'width=' + maxWidth + ' ' + + 'height=' + maxHeight + ' ' + + 'tileposx=0 tileposy=0 ' + + 'tilewidth=' + docLayer._docWidthTwips + ' ' + + 'tileheight=' + docLayer._docHeightTwips + ' ' + + 'id=' + id); } }); diff --git a/loleaflet/src/control/Search.js b/loleaflet/src/control/Search.js index a60d9da..1526e99 100644 --- a/loleaflet/src/control/Search.js +++ b/loleaflet/src/control/Search.js @@ -29,6 +29,6 @@ L.Map.include({ searchCmd['SearchItem.SearchStartPointY'] = {}; searchCmd['SearchItem.SearchStartPointY'].type = 'long'; searchCmd['SearchItem.SearchStartPointY'].value = topLeftTwips.y; - this.socket.send('uno .uno:ExecuteSearch ' + JSON.stringify(searchCmd)); + this._docLayer.sendMessage('uno .uno:ExecuteSearch ' + JSON.stringify(searchCmd)); } }); diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js index 7a59ae4..3016a78 100644 --- a/loleaflet/src/layer/tile/GridLayer.js +++ b/loleaflet/src/layer/tile/GridLayer.js @@ -516,7 +516,7 @@ L.GridLayer = L.Layer.extend({ if (newView) { // we know that a new set of tiles that cover the whole view has been requested // so we're able to cancel the previous requests that are being processed - this._map.socket.send('canceltiles'); + this.sendMessage('canceltiles'); this._pendingTilesCount = 0; for (key in this._tiles) { if (!this._tiles[key].loaded) { @@ -663,14 +663,14 @@ L.GridLayer = L.Layer.extend({ if (this.options.useSocket && this._map.socket) { var twips = this._coordsToTwips(coords); this._pendingTilesCount += 1; - this._map.socket.send('tile ' + - 'part=' + this._currentPart + ' ' + - 'width=' + this._tileSize + ' ' + - 'height=' + this._tileSize + ' ' + - 'tileposx=' + twips.x + ' ' + - 'tileposy=' + twips.y + ' ' + - 'tilewidth=' + this._tileWidthTwips + ' ' + - 'tileheight=' + this._tileHeightTwips); + this.sendMessage('tile ' + + 'part=' + this._currentPart + ' ' + + 'width=' + this._tileSize + ' ' + + 'height=' + this._tileSize + ' ' + + 'tileposx=' + twips.x + ' ' + + 'tileposy=' + twips.y + ' ' + + 'tilewidth=' + this._tileWidthTwips + ' ' + + 'tileheight=' + this._tileHeightTwips, key); } } else { diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 2d23fbc..b52d7df 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -186,8 +186,8 @@ L.TileLayer = L.GridLayer.extend({ return; } if (this.options.doc) { - this._map.socket.send('load url=' + this.options.doc); - this._map.socket.send('status'); + this.sendMessage('load url=' + this.options.doc); + this.sendMessage('status'); } this._map._scrollContainer.onscroll = L.bind(this._onScroll, this); this._map.on('zoomend resize', this._updateScrollOffset, this); @@ -352,14 +352,14 @@ L.TileLayer = L.GridLayer.extend({ else { this._tiles[key]._invalidCount = 1; } - this._map.socket.send('tile ' + + this.sendMessage('tile ' + 'part=' + coords.part + ' ' + 'width=' + this._tileSize + ' ' + 'height=' + this._tileSize + ' ' + 'tileposx=' + point1.x + ' ' + 'tileposy=' + point1.y + ' ' + 'tilewidth=' + this._tileWidthTwips + ' ' + - 'tileheight=' + this._tileHeightTwips); + 'tileheight=' + this._tileHeightTwips, key); } } for (var key in this._tileCache) { @@ -501,7 +501,7 @@ L.TileLayer = L.GridLayer.extend({ clearTimeout(this._selectionContentRequest); } this._selectionContentRequest = setTimeout(L.bind(function () { - this._map.socket.send('gettextselection mimetype=text/plain;charset=utf-8');}, this), 100); + this.sendMessage('gettextselection mimetype=text/plain;charset=utf-8');}, this), 100); } this._onUpdateTextSelection(); } @@ -526,6 +526,10 @@ L.TileLayer = L.GridLayer.extend({ } }, + sendMessage: function (msg, coords) { + this._map.socket.send(msg); + }, + _tileOnLoad: function (done, tile) { done(null, tile); }, @@ -737,22 +741,22 @@ L.TileLayer = L.GridLayer.extend({ }, _postMouseEvent: function(type, x, y, count) { - this._map.socket.send('mouse type=' + type + + this.sendMessage('mouse type=' + type + ' x=' + x + ' y=' + y + ' count=' + count); }, _postKeyboardEvent: function(type, charcode, keycode) { - this._map.socket.send('key type=' + type + + this.sendMessage('key type=' + type + ' char=' + charcode + ' key=' + keycode); }, _postSelectGraphicEvent: function(type, x, y) { - this._map.socket.send('selectgraphic type=' + type + + this.sendMessage('selectgraphic type=' + type + ' x=' + x + ' y=' + y); }, _postSelectTextEvent: function(type, x, y) { - this._map.socket.send('selecttext type=' + type + + this.sendMessage('selecttext type=' + type + ' x=' + x + ' y=' + y); }, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits