Commit 333eda8e authored by Dietmar Maurer's avatar Dietmar Maurer

use template method pattern

This is the suggested way to implement componenets.
parent 589b7385
...@@ -129,20 +129,30 @@ Ext.define('PVE.panel.LogView', { ...@@ -129,20 +129,30 @@ Ext.define('PVE.panel.LogView', {
me.attemptLoad(line); me.attemptLoad(line);
}, },
initComponent : function() { afterRender: function() {
var me = this; var me = this;
if (!me.url) { me.callParent(arguments);
throw "no url specified";
} Ext.Function.defer(function() {
var target = me.getTargetEl();
target.on('scroll', function(e) {
me.requestUpdate();
});
me.requestUpdate(0);
}, 20);
},
me.dataCmp = Ext.create('Ext.Component', { onShow: function() {
style: 'font:normal 11px tahoma, arial, verdana, sans-serif;' + /*jslint confusion: true */
'line-height: ' + me.lineHeight.toString() + 'px; white-space: pre;' var me = this;
});
me.callParent(arguments);
var target = me.getTargetEl();
target.dom.scrollTop = me.savedScrollTop;
var autoScrollTask = { me.task = Ext.TaskManager.start({
run: function() { run: function() {
if (!me.scrollToEnd || !me.viewInfo) { if (!me.scrollToEnd || !me.viewInfo) {
return; return;
...@@ -156,44 +166,49 @@ Ext.define('PVE.panel.LogView', { ...@@ -156,44 +166,49 @@ Ext.define('PVE.panel.LogView', {
me.requestUpdate(undefined, true); me.requestUpdate(undefined, true);
}, },
interval: 1000 interval: 1000
}; });
},
var task; onHide: function() {
var savedScrollTop = 0; var me = this;
var target = me.getTargetEl();
// Hack: chrome reset scrollTop to 0, so we save/restore
me.savedScrollTop = target.dom.scrollTop;
if (me.task) {
Ext.TaskManager.stop(me.task);
}
me.callParent(arguments);
},
onDestroy: function() {
var me = this;
if (me.task) {
Ext.TaskManager.stop(me.task);
}
me.callParent(arguments);
},
initComponent : function() {
var me = this;
if (!me.url) {
throw "no url specified";
}
me.dataCmp = Ext.create('Ext.Component', {
style: 'font:normal 11px tahoma, arial, verdana, sans-serif;' +
'line-height: ' + me.lineHeight.toString() + 'px; white-space: pre;'
});
Ext.apply(me, { Ext.apply(me, {
autoScroll: true, autoScroll: true,
layout: 'auto', layout: 'auto',
items: me.dataCmp, items: me.dataCmp,
bodyStyle: 'padding: 5px;', bodyStyle: 'padding: 5px;'
listeners: {
afterrender: Ext.Function.createDelayed(function() {
var target = me.getTargetEl();
target.on('scroll', function(e) {
me.requestUpdate();
});
me.requestUpdate(0);
}, 20),
show: function() {
/*jslint confusion: true */
var target = me.getTargetEl();
target.dom.scrollTop = savedScrollTop;
task = Ext.TaskManager.start(autoScrollTask);
},
beforehide: function() {
var target = me.getTargetEl();
// Hack: chrome reset scrollTop to 0, so we save/restore
savedScrollTop = target.dom.scrollTop;
if (task) {
Ext.TaskManager.stop(task);
}
},
destroy: function() {
if (task) {
Ext.TaskManager.stop(task);
}
}
}
}); });
me.callParent(); me.callParent();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment