log view: code cleanup and refactoring

save some lines while trying to keep or even improve readability a
bit

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-11-24 11:42:07 +01:00
parent 2f47411867
commit a16b036be0

View File

@ -131,36 +131,31 @@ Ext.define('Proxmox.panel.LogView', {
updateStart: function(scrolledToBottom, targetLine) { updateStart: function(scrolledToBottom, targetLine) {
let me = this; let me = this;
let view = me.getView(); let view = me.getView(), viewModel = me.getViewModel();
let viewModel = me.getViewModel();
let limit = viewModel.get('params.limit'); let limit = viewModel.get('params.limit');
if (scrolledToBottom) {
let total = viewModel.get('data.total'); let total = viewModel.get('data.total');
viewModel.set('params.start',
Math.max(parseInt(total - limit, 10), 0)); let newStart = scrolledToBottom
} else { ? Math.trunc(total - limit, 10)
viewModel.set('params.start', : Math.trunc(targetLine - (limit / 2) + 10);
Math.max(parseInt(targetLine - (limit / 2) + 10, 10), 0));
} viewModel.set('params.start', Math.max(newStart, 0));
view.loadTask.delay(200); view.loadTask.delay(200);
}, },
onScroll: function(x, y) { onScroll: function(x, y) {
let me = this; let me = this;
let view = me.getView(); let view = me.getView(), viewModel = me.getViewModel();
let viewModel = me.getViewModel();
let lineHeight = view.lineHeight; let line = view.getScrollY() / view.lineHeight;
let line = view.getScrollY()/lineHeight; let viewLines = view.getHeight() / view.lineHeight;
let start = viewModel.get('params.start');
let limit = viewModel.get('params.limit');
let viewLines = view.getHeight()/lineHeight;
let viewStart = Math.max(parseInt(line - 1 - view.viewBuffer, 10), 0); let viewStart = Math.max(Math.trunc(line - 1 - view.viewBuffer), 0);
let viewEnd = parseInt(line + viewLines + 1 + view.viewBuffer, 10); let viewEnd = Math.trunc(line + viewLines + 1 + view.viewBuffer);
let { start, limit } = viewModel.get('params');
if (viewStart < start || viewEnd > start + limit) { if (viewStart < start || viewEnd > start + limit) {
me.updateStart(false, line); me.updateStart(false, line);
@ -181,17 +176,16 @@ Ext.define('Proxmox.panel.LogView', {
viewModel.set('since', since); viewModel.set('since', since);
viewModel.set('params.limit', view.pageSize); viewModel.set('params.limit', view.pageSize);
viewModel.set('hide_timespan', !view.log_select_timespan); viewModel.set('hide_timespan', !view.log_select_timespan);
me.lookup('content').setStyle('line-height', view.lineHeight + 'px'); me.lookup('content').setStyle('line-height', `${view.lineHeight}px`);
view.loadTask = new Ext.util.DelayedTask(me.doLoad, me); view.loadTask = new Ext.util.DelayedTask(me.doLoad, me);
me.updateParams(); me.updateParams();
view.task = Ext.TaskManager.start({ view.task = Ext.TaskManager.start({
run: function() { run: () => {
if (!view.isVisible() || !view.scrollToEnd) { if (!view.isVisible() || !view.scrollToEnd) {
return; return;
} }
if (me.scrollPosBottom() <= 5) { if (me.scrollPosBottom() <= 5) {
view.loadTask.delay(200); view.loadTask.delay(200);
} }
@ -236,9 +230,8 @@ Ext.define('Proxmox.panel.LogView', {
x: 'auto', x: 'auto',
y: 'auto', y: 'auto',
listeners: { listeners: {
// we have to have this here, since we cannot listen to events // we have to have this here, since we cannot listen to events of the scroller in
// of the scroller in the viewcontroller (extjs bug?), nor does // the viewcontroller (extjs bug?), nor does the panel have a 'scroll' event'
// the panel have a 'scroll' event'
scroll: { scroll: {
fn: function(scroller, x, y) { fn: function(scroller, x, y) {
let controller = this.component.getController(); let controller = this.component.getController();