class DiffPerspective extends $.wiki.Perspective {
constructor(options) {
- var old_callback = options.callback || function() {};
+ super(options);
+ this.base_id = options.base_id;
+ }
- options.callback = function() {
- var self = this;
- self.base_id = options.base_id;
- old_callback.call(this);
- };
- super(options);
+ static openId(id) {
+ let match = id.match(/R(\d+)-(\d+)/);
+ if (!match)
+ return [];
+ return this.open(match[1], match[2]);
}
- freezeState() {
- // must
- };
+ 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() {
+ destroy() {
$.wiki.switchToTab('#HistoryPerspective');
$('#' + this.base_id).remove();
$('#' + this.perspective_id).remove();
- }
+ }
}
$.wiki.DiffPerspective = DiffPerspective;
})(jQuery);
-