(function($){
- function DiffPerspective(options) {
- var old_callback = options.callback || function() {};
- var self = this;
-
- options.callback = function(){
- self.base_id = options.base_id;
- old_callback.call(this);
- };
-
- $.wiki.Perspective.call(this, options);
- };
-
- DiffPerspective.prototype = new $.wiki.Perspective();
-
- DiffPerspective.prototype.freezeState = function(){
- // must
- };
-
- DiffPerspective.prototype.destroy = function() {
- $.wiki.switchToTab('#HistoryPerspective');
- $('#' + this.base_id).remove();
- $('#' + this.perspective_id).remove();
- };
-
- DiffPerspective.prototype.onEnter = function(success, failure){
- $.wiki.Perspective.prototype.onEnter.call(this);
- console.log("Entered diff view");
- };
-
- $.wiki.DiffPerspective = DiffPerspective;
+ class DiffPerspective extends $.wiki.Perspective {
+ constructor(options) {
+ super(options);
+ this.base_id = options.base_id;
+ }
+
+ static openId(id) {
+ let match = id.match(/R(\d+)-(\d+)/);
+ if (!match)
+ return [];
+ return this.open(match[1], match[2]);
+ }
+
+ static open(revFrom, revTo) {
+ let tabId = 'R' + revFrom + '-' + revTo;
+ let tab = $(".tabs #DiffPerspective_" + tabId);
+ if (tab.length) {
+ $.wiki.switchToTab(tab);
+ } else {
+ let result = $.wiki.newTab(CurrentDocument, ''+revFrom +' → ' + revTo, 'DiffPerspective', tabId);
+ $.blockUI({
+ message: 'Wczytywanie porównania...'
+ });
+
+ CurrentDocument.fetchDiff({
+ from: revFrom,
+ to: revTo,
+ success: function(doc, data){
+ $(result.view).html(data);
+ $.wiki.switchToTab(result.tab);
+ $.unblockUI();
+ },
+ failure: function(doc){
+ $.unblockUI();
+ }
+ });
+ return result.tab;
+ }
+ }
+
+ destroy() {
+ $.wiki.switchToTab('#HistoryPerspective');
+ $('#' + this.base_id).remove();
+ $('#' + this.perspective_id).remove();
+ }
+ }
+ $.wiki.DiffPerspective = DiffPerspective;
})(jQuery);
-