Merge branch 'kanban-throttle' into dark2
commit
fc4a9b1497
|
@ -134,6 +134,24 @@ define([
|
|||
};
|
||||
|
||||
var addEditItemButton = function () {};
|
||||
|
||||
var now = function () { return +new Date(); };
|
||||
var _lastUpdate = 0;
|
||||
var _updateBoards = function (framework, kanban, boards) {
|
||||
_lastUpdate = now();
|
||||
kanban.setBoards(Util.clone(boards));
|
||||
kanban.inEditMode = false;
|
||||
addEditItemButton(framework, kanban);
|
||||
};
|
||||
var _updateBoardsThrottle = Util.throttle(_updateBoards, 500);
|
||||
var updateBoards = function (framework, kanban, boards) {
|
||||
if ((now() - _lastUpdate) > 5000) {
|
||||
_updateBoards(framework, kanban, boards);
|
||||
return;
|
||||
}
|
||||
_updateBoardsThrottle();
|
||||
};
|
||||
|
||||
var onRemoteChange = Util.mkEvent();
|
||||
var editModal;
|
||||
var PROPERTIES = ['title', 'body', 'tags', 'color'];
|
||||
|
@ -146,10 +164,9 @@ define([
|
|||
var isBoard, id;
|
||||
var offline = false;
|
||||
|
||||
var update = Util.throttle(function () {
|
||||
kanban.setBoards(kanban.options.boards);
|
||||
addEditItemButton(framework, kanban);
|
||||
}, 400);
|
||||
var update = function () {
|
||||
updateBoards(framework, kanban, kanban.options.boards);
|
||||
};
|
||||
|
||||
var commit = function () {
|
||||
framework.localChange();
|
||||
|
@ -831,7 +848,8 @@ define([
|
|||
openLink: openLink,
|
||||
getTags: getExistingTags,
|
||||
cursors: remoteCursors,
|
||||
boards: boards
|
||||
boards: boards,
|
||||
_boards: Util.clone(boards),
|
||||
});
|
||||
|
||||
framework._.cpNfInner.metadataMgr.onChange(function () {
|
||||
|
@ -842,7 +860,7 @@ define([
|
|||
// If the rendering has changed, update the value and redraw
|
||||
kanban.options.tagsAnd = tagsAnd;
|
||||
_tagsAnd = tagsAnd;
|
||||
kanban.setBoards(kanban.options.boards);
|
||||
updateBoards(kanban.options.boards);
|
||||
});
|
||||
|
||||
if (migrated) { framework.localChange(); }
|
||||
|
@ -1167,9 +1185,8 @@ define([
|
|||
if (Sortify(currentContent) !== Sortify(remoteContent)) {
|
||||
var cursor = getCursor();
|
||||
verbose("Content is different.. Applying content");
|
||||
kanban.setBoards(remoteContent);
|
||||
kanban.inEditMode = false;
|
||||
addEditItemButton(framework, kanban);
|
||||
kanban.options.boards = remoteContent;
|
||||
updateBoards(framework, kanban, remoteContent);
|
||||
restoreCursor(cursor);
|
||||
onRemoteChange.fire();
|
||||
}
|
||||
|
|
|
@ -32,7 +32,8 @@ define([
|
|||
data: {},
|
||||
items: {},
|
||||
list: []
|
||||
},
|
||||
}, // The realtime kanban
|
||||
_boards: {}, // The displayed kanban. We need to remember the old columns when we redraw
|
||||
getAvatar: function () {},
|
||||
openLink: function () {},
|
||||
getTags: function () {},
|
||||
|
@ -707,21 +708,29 @@ define([
|
|||
};
|
||||
this.addBoard = function (board) {
|
||||
if (!board || !board.id) { return; }
|
||||
// We need to store all the columns in _boards too because it's used to
|
||||
// remember what columns were already displayed when we redraw (in order to
|
||||
// preserve their scroll value)
|
||||
var boards = self.options.boards;
|
||||
boards.data = boards.data || {};
|
||||
boards.list = boards.list || [];
|
||||
var _boards = self.options._boards;
|
||||
_boards.data = _boards.data || {};
|
||||
_boards.list = _boards.list || [];
|
||||
// If it already there, abort
|
||||
boards.data[board.id] = board;
|
||||
_boards.data[board.id] = board;
|
||||
if (boards.list.indexOf(board.id) !== -1) { return; }
|
||||
|
||||
boards.list.push(board.id);
|
||||
_boards.list.push(board.id);
|
||||
var boardNode = getBoardNode(board);
|
||||
self.container.appendChild(boardNode);
|
||||
};
|
||||
|
||||
this.addBoards = function() {
|
||||
//for on all the boards
|
||||
var boards = self.options.boards;
|
||||
var boards = self.options._boards;
|
||||
boards.list = boards.list || [];
|
||||
boards.data = boards.data || {};
|
||||
var toRemove = [];
|
||||
|
@ -759,10 +768,10 @@ define([
|
|||
var $el = $(self.element);
|
||||
var scrollLeft = $el.scrollLeft();
|
||||
// Get existing boards list
|
||||
var list = Util.clone(this.options.boards.list);
|
||||
var list = Util.clone(this.options._boards.list);
|
||||
|
||||
// Update memory
|
||||
this.options.boards = boards;
|
||||
this.options._boards = boards;
|
||||
|
||||
// If the tab is not focused but a handler already exists: abort
|
||||
if (!Visible.currently() && onVisibleHandler) { return; }
|
||||
|
@ -779,7 +788,7 @@ define([
|
|||
self.addBoards();
|
||||
self.options.refresh();
|
||||
// Preserve scroll
|
||||
self.options.boards.list.forEach(function (id) {
|
||||
self.options._boards.list.forEach(function (id) {
|
||||
if (!scroll[id]) { return; }
|
||||
$('.kanban-board[data-id="'+id+'"] .kanban-drag').scrollTop(scroll[id]);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue