-function loadPanel(target, url) {
- console.log('ajax', url, 'into', target);
- $(document).trigger('panel:unload', target);
+function Panel(target) {
+ var self = this;
+ this.target = target;
+ this.instanceId = Math.ceil(Math.random() * 1000000000);
+ $.log('new panel - target: ', this.target);
+ $(document).bind('panel:unload.' + this.instanceId,
+ function(event, data) { self.unload(event, data); });
+}
+
+Panel.prototype.load = function (url) {
+ $.log('preparing xhr load: ', this.target);
+ $('.change-notification', $(this.target).parent()).fadeOut();
+ $(document).trigger('panel:unload', this.target);
+ var self = this;
+
$.ajax({
url: url,
dataType: 'html',
- success: function(data, textStatus) {
- console.log(target, 'ajax success');
- $(target).html(data);
- console.log(target, 'triggering panel:load');
- $(document).trigger('panel:load', target);
- // panel(target);
- },
+ success: function(data, tstat) {
+ load_callback = unload_callback = null;
+ $(self.target).html(data);
+ self._onUnload = unload_callback;
+
+ if(load_callback != null) {
+ $.log('Invoking panel load callback.');
+ load_callback(self);
+ }
+ },
error: function(request, textStatus, errorThrown) {
- console.log('ajax', url, target, 'error:', textStatus, errorThrown);
+ $.log('ajax', url, this.target, 'error:', textStatus, errorThrown);
}
});
}
-// Funkcja do tworzenia nowych paneli
-function panel(load, unload) {
- var self = null;
- var eventId = Math.ceil(Math.random() * 1000000000);
-
- unloadHandler = function(event, panel) {
- if (self && self == panel) {
- console.log('Panel', panel, 'unloading');
- $(document).unbind('panel:unload.' + eventId);
- $(panel).html('');
- unload(event, panel);
- console.log('Panel', panel, 'unloaded');
- return false;
- }
+Panel.prototype.unload = function(event, data) {
+ $.log('got unload signal', this.target, ' target: ', data);
+ if(this.target == data) {
+ $(document).unbind('panel:unload.' + this.instanceId);
+ $(this.target).html('');
+ if(this._onUnload != null) this._onUnload(this);
+ return false;
};
-
- $(document).one('panel:load', function(event, panel) {
- self = panel;
- console.log('Panel', panel, 'loading');
- $(document).bind('panel:unload.' + eventId, unloadHandler);
- load(event, panel);
- console.log('Panel', panel, 'loaded');
- });
}
-$(function() {
- // ========================
- // = Resizable panels =
- // ========================
-// function resizePanels() {
-// // called on resize
-// $('.panel').height($(window).height() - $('.panel').position().top);
-// $('.panel-content').height($(window).height() - $('.panel-contents').position().top);
-// $('#right-panel-wrap').width($(window).width() - $('#left-panel-wrap').outerWidth());
-// }
-
-// $(window).resize(function() {
-// resizePanels();
-// })
+/*
+ * Return the data that should be saved
+ */
+Panel.prototype.saveData = function() {
+ return "";
+}
+
+
+$(function() {
$('#panels').makeHorizPanel({});
$('#panels').css('top', ($('#header').outerHeight() ) + 'px');
+
+ $('.panel-content').each(function() {
+ var ctrl = new Panel(this);
+ $(this).data('ctrl', ctrl);
+ });
-// $('#left-panel-wrap').bind('resizable:stop', resizePanels)
-// .resizable({minWidth: 8});
-// resizePanels();
-
$('.panel-toolbar select').change(function() {
- loadPanel($('.panel-content', $(this).parent().parent()), $(this).val())
+ var panel = $('.panel-content', $(this).parent().parent());
+ $(panel).data('ctrl').load( $(this).val() );
});
- // $('#id_folders').change(function() {
- // $('#images').load('{% url folder_image_ajax %}' + $('#id_folders').val() + '/', function() {
- // $('#images-wrap').data('lazyload:lastCheckedScrollTop', -10000);
- // });
- // });
- //
- //
-
- // var editor = CodeMirror.fromTextArea("id_text", {
- // parserfile: 'parsexml.js',
- // path: "/static/js/codemirror/",
- // stylesheet: "/static/css/xmlcolors.css",
- // parserConfig: {useHTMLKludges: false},
- // initCallback: function() {
- // $('#images').autoscroll('iframe');
- // $('.toggleAutoscroll').toggle(function() {
- // $(this).html('Synchronizuj przewijanie');
- // $('#images').disableAutoscroll();
- // }, function() {
- // $(this).html('Nie synchronizuj przewijania');
- // $('#images').enableAutoscroll();
- // })
- //
- // // Toolbar
- // $('#toolbar-tabs li').click(function() {
- // var id = $(this).attr('p:button-list');
- // $('#toolbar-tabs li').removeClass('active');
- // $(this).addClass('active');
- // if (!$('#' + id).is(':visible')) {
- // $('#toolbar-buttons ol').not('#' + id).hide();
- // $('#' + id).show();
- // }
- // })
- //
- // var keys = {};
- // $('#toolbar-buttons li').each(function() {
- // var tag = $(this).attr('p:tag');
- // var handler = function() {
- // var text = editor.selection();
- // editor.replaceSelection('<' + tag + '>' + text + '</' + tag + '>');
- // if (text.length == 0) {
- // var pos = editor.cursorPosition();
- // editor.selectLines(pos.line, pos.character + tag.length + 2);
- // }
- // }
- // if ($(this).attr('p:key')) {
- // keys[$(this).attr('p:key')] = handler;
- // }
- // $(this).click(handler)
- // });
- //
- // editor.grabKeys(function(event) {
- // if (keys[event.keyCode]) {
- // keys[event.keyCode]();
- // }
- // }, function(event) {
- // return event.altKey && keys[event.keyCode];
- // });
- // }
- // });
-
-
-
-
-
- // $('#toolbar-buttons li').wTooltip({
- // delay: 1000,
- // style: {
- // border: "1px solid #7F7D67",
- // opacity: 0.9,
- // background: "#FBFBC6",
- // padding: "1px",
- // fontSize: "12px",
- // }});
-
- // $('#images-wrap').lazyload('.image-box', {threshold: 640 * 10, scrollTreshold: 640 * 5});
});