[Libreoffice-commits] online.git: loleaflet/build loleaflet/dist loleaflet/src
Henry Castro
hcastro at collabora.com
Sun Aug 28 12:56:56 UTC 2016
loleaflet/build/deps.js | 7 +
loleaflet/dist/leaflet.css | 11 +
loleaflet/src/control/Control.DocumentRepair.js | 141 ++++++++++++++++++++++++
3 files changed, 159 insertions(+)
New commits:
commit fa963528813c5aa11e3192af4bf2dfa97fd3de0b
Author: Henry Castro <hcastro at collabora.com>
Date: Sun Aug 28 08:35:00 2016 -0400
loleaflet: add L.Control.DocumentRepair
diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js
index 1425ed1..cb83325 100644
--- a/loleaflet/build/deps.js
+++ b/loleaflet/build/deps.js
@@ -288,6 +288,13 @@ var deps = {
desc: 'Metric Input'
},
+ ControlDocumentRepair: {
+ src: ['control/Control.js',
+ 'control/Control.DocumentRepair.js'],
+ heading: 'Controls',
+ desc: 'Document Repair'
+ },
+
ControlContextmenu: {
src: ['control/Control.js',
'control/Control.ContextMenu.js'],
diff --git a/loleaflet/dist/leaflet.css b/loleaflet/dist/leaflet.css
index f4e8f4e..f3521a4 100644
--- a/loleaflet/dist/leaflet.css
+++ b/loleaflet/dist/leaflet.css
@@ -481,6 +481,17 @@ a.leaflet-control-buttons:hover:first-child {
.leaflet-popup-content p {
margin: 18px 0;
}
+.leaflet-popup-content tr:hover {
+ background-color: #eee;
+ cursor: pointer;
+ }
+.leaflet-popup-content tbody {
+ display: block;
+ overflow-y: auto;
+ }
+.leaflet-popup-selected {
+ background-color: #eee;
+ }
.leaflet-popup-tip-container {
margin: 0 auto;
width: 40px;
diff --git a/loleaflet/src/control/Control.DocumentRepair.js b/loleaflet/src/control/Control.DocumentRepair.js
new file mode 100644
index 0000000..98ed4a2
--- /dev/null
+++ b/loleaflet/src/control/Control.DocumentRepair.js
@@ -0,0 +1,141 @@
+/*
+ * L.Control.DocumentRepair.
+ */
+
+L.Control.DocumentRepair = L.Control.extend({
+ options: {
+ position: 'topright'
+ },
+
+ initialize: function (options) {
+ L.setOptions(this, options);
+ },
+
+ onAdd: function (map) {
+ this._initLayout();
+
+ return this._container;
+ },
+
+ _initLayout: function () {
+ this._container = L.DomUtil.create('div', 'leaflet-control-layers');
+ this._container.style.visibility = 'hidden';
+
+ var closeButton = L.DomUtil.create('a', 'leaflet-popup-close-button', this._container);
+ closeButton.href = '#close';
+ closeButton.innerHTML = '×';
+ L.DomEvent.on(closeButton, 'click', this._onCloseClick, this);
+
+ var wrapper = L.DomUtil.create('div', 'leaflet-popup-content-wrapper', this._container);
+ var content = L.DomUtil.create('div', 'leaflet-popup-content', wrapper);
+ var labelTitle = document.createElement('span');
+ labelTitle.innerHTML = '<b>Repair Document</b>';
+ content.appendChild(labelTitle);
+ content.appendChild(document.createElement('br'));
+ content.appendChild(document.createElement('br'));
+ var table = L.DomUtil.create('table', '', content);
+ var tbody = this._tbody = L.DomUtil.create('tbody', '', table);
+ var tr = L.DomUtil.create('tr', '', tbody);
+ var th = L.DomUtil.create('th', '', tr);
+ th.appendChild(document.createTextNode(_('Type')));
+ th = L.DomUtil.create('th', '', tr);
+ th.appendChild(document.createTextNode(_('Index')));
+ th = L.DomUtil.create('th', '', tr);
+ th.appendChild(document.createTextNode(_('Comment')));
+ th = L.DomUtil.create('th', '', tr);
+ th.appendChild(document.createTextNode(_('View ID')));
+ th = L.DomUtil.create('th', '', tr);
+ th.appendChild(document.createTextNode(_('Timestamp')));
+
+ var inputButton = document.createElement('input');
+ inputButton.type = 'button';
+ inputButton.value = _('Jump to state');
+ L.DomEvent.on(inputButton, 'click', this._onJumpClick, this);
+ content.appendChild(document.createElement('br'));
+ content.appendChild(document.createElement('br'));
+ content.appendChild(inputButton);
+ },
+
+ createAction: function (type, index, comment, viewId, dateTime) {
+ var row = L.DomUtil.create('tr', '', this._tbody);
+ var td = L.DomUtil.create('td', '', row);
+ td.appendChild(document.createTextNode(type));
+ td = L.DomUtil.create('td', '', row);
+ td.appendChild(document.createTextNode(index));
+ td = L.DomUtil.create('td', '', row);
+ td.appendChild(document.createTextNode(comment));
+ td = L.DomUtil.create('td', '', row);
+ td.appendChild(document.createTextNode(viewId));
+ td = L.DomUtil.create('td', '', row);
+ td.appendChild(document.createTextNode(dateTime));
+ L.DomEvent.on(row, 'click', this._onRowClick, this);
+ },
+
+ fillAction: function (actions, type) {
+ for (var iterator = 0; iterator < actions.length; ++iterator) {
+ this.createAction(type, actions[iterator].index, actions[iterator].comment, actions[iterator].viewId, actions[iterator].dateTime);
+ }
+ },
+
+ fillActions: function (data) {
+ this.fillAction(data.Redo.actions, 'Redo');
+ this.fillAction(data.Undo.actions, 'Undo');
+ },
+
+ show: function () {
+ this._tbody.setAttribute('style', 'max-height:' + this._map.getSize().y / 2 + 'px');
+ this._container.style.visibility = '';
+ },
+
+ isVisible: function () {
+ if (!this._map) {
+ return false;
+ }
+ var corner = this._map._controlCorners[this.options.position];
+ return corner.hasChildNodes();
+ },
+
+ _selectRow: function (row) {
+ if (this._selected) {
+ L.DomUtil.removeClass(this._selected, 'leaflet-popup-selected');
+ }
+
+ this._selected = row;
+ L.DomUtil.addClass(this._selected, 'leaflet-popup-selected');
+ },
+
+ _onCloseClick: function (e) {
+ this._map.enable(true);
+ this._refocusOnMap();
+ this.remove();
+ },
+
+ _onRowClick: function (e) {
+ if (e.currentTarget && this._selected !== e.currentTarget) {
+ this._selectRow(e.currentTarget);
+ }
+ },
+
+ _onJumpClick: function (e) {
+ if (this._selected) {
+ var action = this._selected.childNodes[0].innerHTML;
+ var index = parseInt(this._selected.childNodes[1].innerHTML);
+ var command = {
+ Repair: {
+ type: 'boolean',
+ value: true
+ }
+ };
+ command[action] = {
+ type: 'unsigned short',
+ value: index + 1
+ };
+ this._map.sendUnoCommand('.uno:' + action, command);
+ this._onCloseClick();
+ }
+ }
+});
+
+L.control.documentRepair = function (options) {
+ return new L.Control.DocumentRepair(options);
+};
More information about the Libreoffice-commits
mailing list