', {
diff --git a/www/drive/inner.html b/www/drive/inner.html
index 9761de93c..8f5a884ae 100644
--- a/www/drive/inner.html
+++ b/www/drive/inner.html
@@ -6,6 +6,7 @@
diff --git a/www/file/inner.js b/www/file/inner.js
index 55e7487a1..df5ba854f 100644
--- a/www/file/inner.js
+++ b/www/file/inner.js
@@ -77,7 +77,7 @@ define([
sfCommon: common,
};
if (uploadMode) {
- displayed.push('pageTitle'); //TODO in toolbar
+ displayed.push('pageTitle');
configTb.pageTitle = Messages.upload_title;
}
var toolbar = APP.toolbar = Toolbar.create(configTb);
diff --git a/www/poll/app-poll.less b/www/poll/app-poll.less
index 1b58841e3..2c2fa9ad1 100644
--- a/www/poll/app-poll.less
+++ b/www/poll/app-poll.less
@@ -28,7 +28,7 @@
@poll-uncommitted-bg: #ddd; //lighten(@poll-th-bg, 50%);
@poll-uncommitted-text: black;
-@poll-placeholder: #666;
+@poll-placeholder: #fff;
@poll-border-color: #555;
@poll-cover-color: #000;
@poll-fg: #000;
@@ -63,10 +63,6 @@ overflow-x: hidden;
}
}
-.cp-app-poll-table-text-cell input[type="text"] {
- width: 400px;
-}
-
input[type="text"], textarea {
background-color: white;
color: black;
@@ -81,12 +77,13 @@ input[type="text"][disabled], textarea[disabled] {
// The placeholder color only seems to effect Safari when not set
input[type="text"][disabled]::placeholder {
- //color: @poll-placeholder;
+ color: @poll-placeholder;
opacity: 1;
}
table#cp-app-poll-table {
margin: 0px;
+ overflow: hidden;
}
#cp-app-poll-table-container {
position: relative;
@@ -106,6 +103,7 @@ table#cp-app-poll-table {
overflow: hidden;
}
#cp-app-poll-create-option {
+ order: 3;
display: inline-flex;
width: 50px;
height: 24px;
@@ -125,6 +123,7 @@ table#cp-app-poll-table {
min-width: 80%;
width: 80%;
min-height: 200px;
+ height: 200px;
border: 1px solid black;
.CodeMirror-placeholder {
color: #777;
@@ -149,18 +148,26 @@ table#cp-app-poll-table {
max-height: 20em;
}
}
-.cp-app-poll-published {
- #cp-app-poll-description {
- display: none;
- &~ .CodeMirror {
+div.cp-app-poll-published {
+ div.cp-app-poll-realtime {
+ #cp-app-poll-description {
display: none;
+ &~ .CodeMirror {
+ display: none;
+ }
}
- }
- #cp-app-poll-description-published {
- display: block;
- &:empty {
+ #cp-app-poll-description-published {
+ display: block;
+ &:empty {
+ display: none;
+ }
+ }
+ #cp-app-poll-nocomments {
display: none;
}
+ #cp-app-poll-comments {
+ display: block;
+ }
}
}
@@ -218,6 +225,15 @@ div.cp-app-poll-realtime {
padding: 0px;
margin: 0px;
+ .cp-app-poll-table-scrolled {
+ tr td:last-child {
+ right: 0;
+ }
+ tr td:nth-last-child(2) {
+ right: 100px;
+ }
+ }
+
table {
border-collapse: collapse;
width: ~"calc(100% - 1px)";
@@ -231,10 +247,6 @@ div.cp-app-poll-realtime {
div.cp-app-poll-table-text-cell {
background-color: @poll-uncommitted-bg !important;
color: @poll-uncommitted-text !important;
- input {
- width: ~"calc(100% - 80px)" !important;
- vertical-align: middle;
- }
}
text-align: center;
background-color: @poll-uncommitted-bg !important;
@@ -272,14 +284,22 @@ div.cp-app-poll-realtime {
margin: 0px;
div.cp-app-poll-table-text-cell {
+ height: 28px;
padding: 0px;
margin: 0px;
- height: 100%;
-
+ display: flex;
+ align-items: center;
+ .cp-app-poll-table-remove {
+ order: 1;
+ }
+ .cp-app-poll-table-edit {
+ order: 3;
+ }
input {
- width: 80%;
- width: 90%;
- height: 100%;
+ min-width: 0;
+ order: 2;
+ flex: 1;
+ height: 24px;
border: 0px;
margin: 2px;
&[disabled] {
@@ -375,6 +395,9 @@ div.cp-app-poll-realtime {
}
thead {
height: 52px;
+ tr {
+ height: 52px;
+ }
td {
padding: 0px 5px;
background: @poll-th-bg;
@@ -382,6 +405,11 @@ div.cp-app-poll-realtime {
&:not(:last-child) {
border-right: 1px solid rgba(255,255,255,0.2);
}
+ &:last-child {
+ height: 52px;
+ line-height: 52px;
+ text-align: center;
+ }
&:nth-last-child(2) {
border-right: 1px solid @poll-border-color;
}
@@ -490,11 +518,18 @@ div.cp-app-poll-realtime {
display: none;
}
}
+ #cp-app-poll-nocomments {
+ color: #999;
+ text-align: center;
+ margin: 20px;
+ font: @colortheme_app-font;
+ }
#cp-app-poll-comments {
width: 50%;
margin: 20px auto;
min-width: 400px;
padding-bottom: 5px;
+ display: none;
button {
border-radius: 0;
}
diff --git a/www/poll/inner.js b/www/poll/inner.js
index 5586beb04..2ea839e69 100644
--- a/www/poll/inner.js
+++ b/www/poll/inner.js
@@ -46,9 +46,7 @@ define([
var Messages = Cryptpad.Messages;
var saveAs = window.saveAs;
- var Render = Renderer(Cryptpad);
var APP = window.APP = {
- Render: Render,
unlocked: {
row: [],
col: []
@@ -57,6 +55,7 @@ define([
Cryptpad: Cryptpad,
mobile: function () { return $('body').width() <= 600; } // Menu and content area are not inline-block anymore for mobiles
};
+ var Render = Renderer(Cryptpad, APP);
var debug = $.noop; //console.log;
@@ -221,11 +220,12 @@ define([
return newObj;
};
- var enableColumn = function (id) {
- var $input = $('input[disabled="disabled"][data-rt-id^="' + id + '"]')
+ var enableColumn = APP.enableColumn = function (id, table) {
+ table = table || $('body');
+ var $input = $(table).find('input[disabled="disabled"][data-rt-id^="' + id + '"]')
.removeAttr('disabled');
$input.closest('td').addClass('cp-app-poll-table-editing');
- $('.cp-app-poll-table-lock[data-rt-id="' + id + '"]').addClass('fa-unlock')
+ $(table).find('.cp-app-poll-table-lock[data-rt-id="' + id + '"]').addClass('fa-unlock')
.removeClass('fa-lock').attr('title', Messages.poll_unlocked);
};
var disableColumn = function (id) {
@@ -235,10 +235,13 @@ define([
$('.cp-app-poll-table-lock[data-rt-id="' + id + '"]').addClass('fa-lock')
.removeClass('fa-unlock').attr('title', Messages.poll_locked);
};
- var enableRow = function (id) {
- var $input = $('input[type="text"][disabled="disabled"][data-rt-id="' + id + '"]').removeAttr('disabled');
+ var enableRow = APP.enableRow = function (id, table) {
+ table = table || $('body');
+ var $input = $(table).find('input[disabled="disabled"][data-rt-id="' + id + '"]')
+ .removeAttr('disabled');
$input.closest('td').addClass('cp-app-poll-table-editing');
- $('span.cp-app-poll-table-edit[data-rt-id="' + id + '"]').css('visibility', 'hidden');
+ $(table).find('span.cp-app-poll-table-edit[data-rt-id="' + id + '"]')
+ .css('visibility', 'hidden');
};
var disableRow = function (id) {
var $input = $('input[type="text"][data-rt-id="' + id + '"]')
@@ -247,77 +250,11 @@ define([
$('span.cp-app-poll-table-edit[data-rt-id="' + id + '"]').css('visibility', 'visible');
};
- var styleUserColumn = function () {
- var userid = APP.userid;
- if (!userid) { return; }
-
- // Enable input for the userid column
- enableColumn(userid);
- $('input[disabled="disabled"][data-rt-id^="' + userid + '"]')
- .attr('placeholder', Messages.poll_userPlaceholder);
- $('.cp-app-poll-table-lock[data-rt-id="' + userid + '"]').remove();
- $('[data-rt-id^="' + userid + '"]').closest('td')
- .addClass("cp-app-poll-table-own");
- $('.cp-app-poll-table-bookmark[data-rt-id="' + userid + '"]').css('visibility', '')
- .addClass('cp-app-poll-table-bookmark-full')
- .attr('title', Messages.poll_bookmarked_col);
- };
- var styleUncommittedColumn = function () {
- var $scroll = $('#cp-app-poll-table-scroll');
- var hasScroll = $scroll.width() < $scroll[0].scrollWidth;
- APP.uncommitted.content.colsOrder.forEach(function(id) {
- // Enable the checkboxes for the uncommitted column
- enableColumn(id);
- $('.cp-app-poll-table-lock[data-rt-id="' + id + '"]').remove();
- $('.cp-app-poll-table-remove[data-rt-id="' + id + '"]').remove();
- $('.cp-app-poll-table-bookmark[data-rt-id="' + id + '"]').remove();
-
- $('td.cp-app-poll-table-uncommitted .cover').addClass("cp-app-poll-table-uncommitted");
- var $uncommittedCol = $('[data-rt-id^="' + id + '"]').closest('td');
- $uncommittedCol.addClass("cp-app-poll-table-uncommitted");
-
- if (hasScroll) {
- $uncommittedCol.css('right', '100px');
- }
- });
- APP.uncommitted.content.rowsOrder.forEach(function(id) {
- // Enable the checkboxes for the uncommitted column
- enableRow(id);
- $('.cp-app-poll-table-edit[data-rt-id="' + id + '"]').remove();
- $('.cp-app-poll-table-remove[data-rt-id="' + id + '"]').remove();
-
- $('[data-rt-id="' + id + '"]').closest('tr').addClass("cp-app-poll-table-uncommitted");
- });
- };
var unlockElements = function () {
APP.unlocked.row.forEach(enableRow);
APP.unlocked.col.forEach(enableColumn);
};
- var updateTableButtons = function () {
- var uncomColId = APP.uncommitted.content.colsOrder[0];
- var uncomRowId = APP.uncommitted.content.rowsOrder[0];
- var $createOption = APP.$table.find('tbody input[data-rt-id="' + uncomRowId+'"]')
- .closest('td').find('> div');
- $createOption.append(APP.$createRow);
- var $createUser = APP.$table.find('thead input[data-rt-id="' + uncomColId + '"]')
- .closest('td');
- $createUser.prepend(APP.$createCol);
-
- if (APP.proxy.content.colsOrder.indexOf(APP.userid) === -1) {
- APP.$table.find('.cp-app-poll-table-bookmark').css('visibility', '');
- }
- //$('#cp-app-poll-create-user, #cp-app-poll-create-option').css('display', 'inline-flex');
- if (!APP.proxy ||
- !APP.proxy.content.rowsOrder ||
- APP.proxy.content.rowsOrder.length === 0) {
- //$('#create-user').hide();
- }
- var width = $('#cp-app-poll-table').outerWidth();
- if (width) {
- //$('#create-user').css('left', width + 30 + 'px');
- }
- };
var setTablePublished = function (bool) {
if (bool) {
if (APP.$publish) { APP.$publish.hide(); }
@@ -329,59 +266,32 @@ define([
$('#cp-app-poll-form').removeClass('cp-app-poll-published');
}
};
- var addCount = function () {
+ var addScrollClass = function () {
var $scroll = $('#cp-app-poll-table-scroll');
- var hasScroll = $scroll.width() < $scroll[0].scrollWidth;
- var $countCol = $('tr td:last-child');
+ var hasScroll = $scroll.width() < $scroll[0].scrollWidth && $scroll.width() > 100;
if (hasScroll) {
- $countCol.css('right', '0');
+ $scroll.addClass('cp-app-poll-table-scrolled');
+ return;
}
- var $thead = APP.$table.find('thead');
- var $tr = APP.$table.find('tbody tr').first();
- $thead.find('tr td').last()
- .css({
- 'height': $thead.height()+'px',
- 'text-align': 'center',
- 'line-height': $thead.height()+'px'
- })
- .text(Messages.poll_total);
- var winner = {
- v: 0,
- ids: []
- };
- APP.count = {};
- APP.proxy.content.rowsOrder.forEach(function (rId) {
- var count = Object.keys(APP.proxy.content.cells)
- .filter(function (k) {
- return k.indexOf(rId) !== -1 && APP.proxy.content.cells[k] === 1;
- }).length;
- if (count > winner.v) {
- winner.v = count;
- winner.ids = [rId];
- } else if (count && count === winner.v) {
- winner.ids.push(rId);
- }
- APP.count[rId] = count;
- APP.$table.find('[data-rt-count-id="' + rId + '"]')
- .text(count)
- .css({
- 'height': $tr.height()+'px',
- 'line-height': $tr.height()+'px'
- });
- });
- winner.ids.forEach(function (rId) {
- $('[data-rt-id="' + rId + '"]').closest('td').addClass('cp-app-poll-table-winner');
- $('[data-rt-count-id="' + rId + '"]').addClass('cp-app-poll-table-winner');
- });
+ $scroll.removeClass('cp-app-poll-table-scrolled');
+ };
+ var updateTableButtons = function () {
+ var uncomColId = APP.uncommitted.content.colsOrder[0];
+ var uncomRowId = APP.uncommitted.content.rowsOrder[0];
+ var $createOption = $('tbody input[data-rt-id="' + uncomRowId+'"]')
+ .closest('td').find('> div');
+ $createOption.find('#cp-app-poll-create-option').remove();
+ $createOption.append(APP.$createRow);
+ var $createUser = $('thead input[data-rt-id="' + uncomColId + '"]')
+ .closest('td');
+ $createUser.find('#cp-app-poll-create-user').remove();
+ $createUser.prepend(APP.$createCol);
};
var updateDisplayedTable = function () {
- styleUserColumn();
- styleUncommittedColumn();
- unlockElements();
- updateTableButtons();
setTablePublished(APP.proxy.published);
- addCount();
+ addScrollClass();
+ updateTableButtons();
};
var unlockColumn = function (id, cb) {
@@ -464,11 +374,13 @@ define([
Render.updateTable(table, displayedObj, conf);
// Fix autocomplete bug:
displayedObj.content.rowsOrder.forEach(function (rowId) {
+ if (f.id === rowId) { return; }
$('input[data-rt-id="' + rowId +'"]').val(displayedObj.content.rows[rowId] || '');
});
- displayedObj.content.colsOrder.forEach(function (rowId) {
- $('input[data-rt-id="' + rowId +'"]')
- .val(displayedObj.content.cols[rowId] || '');
+ displayedObj.content.colsOrder.forEach(function (colId) {
+ if (f.id === colId) { return; }
+ $('input[data-rt-id="' + colId +'"]')
+ .val(displayedObj.content.cols[colId] || '');
});
updateDisplayedTable();
setFocus(f);
@@ -512,7 +424,7 @@ define([
case 'text':
debug("text[rt-id='%s'] [%s]", id, input.value);
Render.setValue(object, id, input.value);
- change(null, null, null, 250);
+ change(null, null, null, 1000);
break;
case 'number':
debug("checkbox[tr-id='%s'] %s", id, input.value);
@@ -630,6 +542,7 @@ define([
switch (nodeName) {
case 'INPUT':
+ if ($(target).is('[type="text"]') && !isKeyup) { return; }
if (isKeyup && (e.keyCode === 13 || e.keyCode === 27)) {
var id = target.getAttribute('data-rt-id');
if ($(target).parents('.cp-app-poll-table-uncommitted').length
@@ -783,6 +696,7 @@ define([
return comments[a].time > comments[b].time;
}).forEach(function (k) {
var c = comments[k];
+ var name = c.name || Messages.anonymous;
var $c = $('', {
'class': 'cp-app-poll-comments-list-el'
}).prependTo($comments);
@@ -794,7 +708,7 @@ define([
if (c.avatar && avatars[c.avatar]) {
$avatar.append(avatars[c.avatar]);
} else {
- common.displayAvatar($avatar, c.avatar, c.name, function ($img) {
+ common.displayAvatar($avatar, c.avatar, name, function ($img) {
if (c.avatar && $img.length) { avatars[c.avatar] = $img[0].outerHTML; }
});
}
@@ -803,11 +717,11 @@ define([
'href': APP.origin + '/profile/#' + c.profile,
'target': '_blank',
'class': 'cp-app-poll-comments-list-data-name'
- }).appendTo($data).text(c.name);
+ }).appendTo($data).text(name);
} else {
$('', {
'class': 'cp-app-poll-comments-list-data-name'
- }).appendTo($data).text(c.name);
+ }).appendTo($data).text(name);
}
$('', {
'class': 'cp-app-poll-comments-list-data-time'
@@ -845,10 +759,12 @@ define([
};
var addComment = function () {
if (!APP.proxy.comments) { APP.proxy.comments = {}; }
- var name = APP.$addComment.find('.cp-app-poll-comments-add-name').val();
- var msg = APP.$addComment.find('.cp-app-poll-comments-add-msg').val();
+ var name = APP.$addComment.find('.cp-app-poll-comments-add-name').val().trim();
+ var msg = APP.$addComment.find('.cp-app-poll-comments-add-msg').val().trim();
var time = +new Date();
+ if (!msg) { return; }
+
var profile, avatar;
if (common.isLoggedIn()) {
profile = metadataMgr.getUserData().profile;
@@ -938,12 +854,6 @@ define([
unlockRow(rowuid);
}
- var displayedObj = mergeUncommitted(proxy, uncommitted, false);
-
- var colsOrder = sortColumns(displayedObj.content.colsOrder, userid);
-
- var $table = APP.$table = $(Render.asHTML(displayedObj, null, colsOrder, APP.readOnly));
-
/*
Extract uncommitted data (row or column) and create a new uncommitted row or column
*/
@@ -1004,6 +914,15 @@ define([
});
});
+ var displayedObj = mergeUncommitted(proxy, uncommitted, false);
+
+ var colsOrder = sortColumns(displayedObj.content.colsOrder, userid);
+
+ Render.updateTable($('#cp-app-poll-table-scroll').find('table')[0], displayedObj, {
+ cols: colsOrder,
+ readOnly: APP.readOnly
+ });
+
// Description
APP.editor.on('change', function () {
var val = APP.editor.getValue();
@@ -1012,7 +931,7 @@ define([
APP.$addComment.find('.cp-app-poll-comments-add-submit').click(addComment);
APP.$addComment.find('.cp-app-poll-comments-add-cancel').click(resetComment);
- $('#cp-app-poll-table-scroll').html('').prepend($table);
+ var $table = APP.$table = $('#cp-app-poll-table-scroll').find('table');
updateDisplayedTable();
updateDescription(null, APP.proxy.description || '');
@@ -1079,6 +998,11 @@ define([
Cryptpad.findOKButton().click();
};
+ var getHeadingText = function () {
+ if (!APP.editor) { return; }
+ return SframeCM.getHeadingText(APP.editor);
+ };
+
var onCreate = function (info) {
APP.myID = info.myID;
@@ -1092,7 +1016,8 @@ define([
metadataMgr = common.getMetadataMgr();
- Title = common.createTitle();
+ var titleCfg = { getHeadingText: getHeadingText };
+ Title = common.createTitle(titleCfg);
var configTb = {
displayed: ['title', 'useradmin', 'spinner', 'share', 'userlist', 'newpad', 'limit'],
diff --git a/www/poll/render.js b/www/poll/render.js
index 6ca527292..f8dd298b9 100644
--- a/www/poll/render.js
+++ b/www/poll/render.js
@@ -1,9 +1,10 @@
define([
//'/common/cryptpad-common.js',
+ 'jquery',
'/bower_components/hyperjson/hyperjson.js',
'/bower_components/textpatcher/TextPatcher.js',
'/bower_components/diff-dom/diffDOM.js',
-], function (Hyperjson, TextPatcher) {
+], function ($, Hyperjson, TextPatcher) {
var DiffDOM = window.diffDOM;
var Example = {
@@ -30,7 +31,7 @@ by maintaining indexes in rowsOrder and colsOrder
}
};
-var Renderer = function (Cryptpad) {
+var Renderer = function (Cryptpad, APP) {
var Render = {
Example: Example
@@ -222,7 +223,9 @@ var Renderer = function (Cryptpad) {
disabled: 'disabled'
};
return result;
- })).concat([null]);
+ })).concat([{
+ content: Cryptpad.Messages.poll_total
+ }]);
}
if (i === rows.length) {
return [null].concat(cols.map(function () {
@@ -307,7 +310,7 @@ var Renderer = function (Cryptpad) {
}
return ['TD', {}, elements];
}
- return ['TD', cell, []];
+ return ['TD', cell, [cell.content]];
};
var clone = function (o) {
@@ -444,6 +447,107 @@ var Renderer = function (Cryptpad) {
}
};
+ var styleUserColumn = function (table) {
+ var userid = APP.userid;
+ if (!userid) { return; }
+
+
+ // Enable input for the userid column
+ APP.enableColumn(userid, table);
+ $(table).find('input[disabled="disabled"][data-rt-id^="' + userid + '"]')
+ .attr('placeholder', Cryptpad.Messages.poll_userPlaceholder);
+ $(table).find('.cp-app-poll-table-lock[data-rt-id="' + userid + '"]').remove();
+ $(table).find('[data-rt-id^="' + userid + '"]').closest('td')
+ .addClass("cp-app-poll-table-own");
+ $(table).find('.cp-app-poll-table-bookmark[data-rt-id="' + userid + '"]')
+ .css('visibility', '')
+ .addClass('cp-app-poll-table-bookmark-full')
+ .attr('title', Cryptpad.Messages.poll_bookmarked_col);
+ };
+ var styleUncommittedColumn = function (table) {
+ APP.uncommitted.content.colsOrder.forEach(function(id) {
+ // Enable the checkboxes for the uncommitted column
+ APP.enableColumn(id, table);
+ $(table).find('.cp-app-poll-table-lock[data-rt-id="' + id + '"]').remove();
+ $(table).find('.cp-app-poll-table-remove[data-rt-id="' + id + '"]').remove();
+ $(table).find('.cp-app-poll-table-bookmark[data-rt-id="' + id + '"]').remove();
+
+ $(table).find('td.cp-app-poll-table-uncommitted .cover')
+ .addClass("cp-app-poll-table-uncommitted");
+ var $uncommittedCol = $(table).find('[data-rt-id^="' + id + '"]').closest('td');
+ $uncommittedCol.addClass("cp-app-poll-table-uncommitted");
+ });
+ APP.uncommitted.content.rowsOrder.forEach(function(id) {
+ // Enable the checkboxes for the uncommitted column
+ APP.enableRow(id, table);
+ $(table).find('.cp-app-poll-table-edit[data-rt-id="' + id + '"]').remove();
+ $(table).find('.cp-app-poll-table-remove[data-rt-id="' + id + '"]').remove();
+
+ $(table).find('[data-rt-id="' + id + '"]').closest('tr')
+ .addClass("cp-app-poll-table-uncommitted");
+ });
+ };
+ var unlockElements = function (table) {
+ APP.unlocked.row.forEach(function (id) { APP.enableRow(id, table); });
+ APP.unlocked.col.forEach(function (id) { APP.enableColumn(id, table); });
+ };
+ var updateTableButtons = function (table) {
+ var uncomColId = APP.uncommitted.content.colsOrder[0];
+ var uncomRowId = APP.uncommitted.content.rowsOrder[0];
+ var $createOption = $(table).find('tbody input[data-rt-id="' + uncomRowId+'"]')
+ .closest('td').find('> div');
+ $createOption.append(APP.$createRow);
+ var $createUser = $(table).find('thead input[data-rt-id="' + uncomColId + '"]')
+ .closest('td');
+ $createUser.prepend(APP.$createCol);
+
+ if (APP.proxy.content.colsOrder.indexOf(APP.userid) === -1) {
+ $(table).find('.cp-app-poll-table-bookmark').css('visibility', '');
+ }
+ };
+ var addCount = function (table) {
+ var $tr = $(table).find('tbody tr').first();
+ var winner = {
+ v: 0,
+ ids: []
+ };
+ APP.count = {};
+ APP.proxy.content.rowsOrder.forEach(function (rId) {
+ var count = Object.keys(APP.proxy.content.cells)
+ .filter(function (k) {
+ return k.indexOf(rId) !== -1 && APP.proxy.content.cells[k] === 1;
+ }).length;
+ if (count > winner.v) {
+ winner.v = count;
+ winner.ids = [rId];
+ } else if (count && count === winner.v) {
+ winner.ids.push(rId);
+ }
+ APP.count[rId] = count;
+ var h = $tr.height() || 28;
+ $(table).find('[data-rt-count-id="' + rId + '"]')
+ .text(count)
+ .css({
+ 'height': h+'px',
+ 'line-height': h+'px'
+ });
+ });
+ winner.ids.forEach(function (rId) {
+ $(table).find('[data-rt-id="' + rId + '"]').closest('td')
+ .addClass('cp-app-poll-table-winner');
+ $(table).find('[data-rt-count-id="' + rId + '"]')
+ .addClass('cp-app-poll-table-winner');
+ });
+ };
+
+ var styleTable = function (table) {
+ styleUserColumn(table);
+ styleUncommittedColumn(table);
+ unlockElements(table);
+ updateTableButtons(table);
+ addCount(table);
+ };
+
Render.updateTable = function (table, obj, conf) {
var DD = new DiffDOM(diffOptions);
@@ -457,6 +561,9 @@ var Renderer = function (Cryptpad) {
if (!hj) { throw new Error("Expected Hyperjson!"); }
var table2 = Hyperjson.toDOM(hj);
+
+ styleTable(table2);
+
var patch = DD.diff(table, table2);
DD.apply(table, patch);
};
diff --git a/www/slide/slide.js b/www/slide/slide.js
index 492c0445c..f0ef35fe0 100644
--- a/www/slide/slide.js
+++ b/www/slide/slide.js
@@ -77,7 +77,7 @@ define([
var c = Slide.content;
var m = ''+DiffMd.render(c).replace(separatorReg, '')+'';
- DiffMd.apply(m, $content);
+ try { DiffMd.apply(m, $content); } catch (e) { return console.error(e); }
var length = getNumberOfSlides();
$modal.find('style.cp-app-slide-style').remove();
diff --git a/www/whiteboard/app-whiteboard.less b/www/whiteboard/app-whiteboard.less
index b2bd789fc..1b1ac30c9 100644
--- a/www/whiteboard/app-whiteboard.less
+++ b/www/whiteboard/app-whiteboard.less
@@ -46,6 +46,7 @@
// contains user tools
#cp-app-whiteboard-controls {
display: flex;
+ flex-wrap: wrap;
align-items: center;
justify-content: center;