X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/0479fc5313b1730d4de86b2b71a7bc721ab2b44a..e5ddc7a08a1464b59075e435c959cd957238fabd:/modules/documentHistory/documentHistory.js diff --git a/modules/documentHistory/documentHistory.js b/modules/documentHistory/documentHistory.js index d5f20d4..0693469 100644 --- a/modules/documentHistory/documentHistory.js +++ b/modules/documentHistory/documentHistory.js @@ -14,6 +14,12 @@ return function(sandbox) { itemList: dom.find('.rng-module-documentHistory-itemsList'), } var itemViews = []; + + + dom.find('.btn.compare').click(function(e) { + var selected = historyItems.getSelected(); + sandbox.publish('compare', selected[0], selected[1]); + }); var addHistoryItem = function(item, options) { historyItems.add(item); @@ -27,35 +33,62 @@ return function(sandbox) { var toggleItemViews = function(toggle) { itemViews.forEach(function(view) { - if(!historyItems.selected(view.item)) + if(!historyItems.isSelected(view.item)) view.toggle(toggle); }); } + var toggleButton = function(btn, toggle) { + dom.find('button.'+btn).toggleClass('disabled', !toggle); + } + var historyItems = { _itemsById: {}, _selected: [], select: function(item) { if(this._selected.length < 2) { this._selected.push(item.version); - if(this._selected.length === 2) - toggleItemViews(false); + this._updateUI(); return true; } return false; }, unselect: function(item) { this._selected = _.without(this._selected, item.version); - if(this._selected.length < 2) - toggleItemViews(true); + this._updateUI(); }, add: function(item) { this._itemsById[item.version] = item; }, - selected: function(item) { + isSelected: function(item) { return _.contains(this._selected, item.version); + }, + getSelected: function() { + return this._selected; + }, + _updateUI: function() { + var len = this._selected.length; + if(len === 0) { + toggleButton('compare', false); + toggleButton('show2', false); + toggleButton('restore', false); + } + if(len === 1) { + toggleButton('compare', false); + toggleButton('show2', true); + toggleButton('restore', true); + } + if(len === 2) { + toggleItemViews(false); + toggleButton('compare', true); + toggleButton('show2', false); + toggleButton('restore', false); + } else { + toggleItemViews(true); + } } }; + historyItems._updateUI(); var itemView = function(item) { this.item = item; @@ -64,7 +97,7 @@ return function(sandbox) { }; itemView.prototype.template = _.template(itemTemplateSrc); itemView.prototype.onItemClicked = function() { - if(historyItems.selected(this.item)) { + if(historyItems.isSelected(this.item)) { historyItems.unselect(this.item); this.dimItem(); } else if(historyItems.select(this.item)) {