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

Reply via email to