X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=panel%2FLogView.js;h=1ce83bc0f30c2301bc701e73b156f587a9ad23e1;hb=c898b490c713f8aad9085836e519c76157af55ac;hp=aae7440f586cd88f3d6a24bf17e0a986e8a40d9e;hpb=7f9a65672a617f6dc884ed35eb907515d37fdf53;p=proxmox-widget-toolkit.git diff --git a/panel/LogView.js b/panel/LogView.js index aae7440..1ce83bc 100644 --- a/panel/LogView.js +++ b/panel/LogView.js @@ -20,10 +20,10 @@ Ext.define('Proxmox.panel.LogView', { xclass: 'Ext.app.ViewController', updateParams: function() { - var me = this; - var viewModel = me.getViewModel(); - var since = viewModel.get('since'); - var until = viewModel.get('until'); + let me = this; + let viewModel = me.getViewModel(); + let since = viewModel.get('since'); + let until = viewModel.get('until'); if (viewModel.get('hide_timespan')) { return; } @@ -39,18 +39,18 @@ Ext.define('Proxmox.panel.LogView', { }, scrollPosBottom: function() { - var view = this.getView(); - var pos = view.getScrollY(); - var maxPos = view.getScrollable().getMaxPosition().y; + let view = this.getView(); + let pos = view.getScrollY(); + let maxPos = view.getScrollable().getMaxPosition().y; return maxPos - pos; }, updateView: function(text, first, total) { - var me = this; - var view = me.getView(); - var viewModel = me.getViewModel(); - var content = me.lookup('content'); - var data = viewModel.get('data'); + let me = this; + let view = me.getView(); + let viewModel = me.getViewModel(); + let content = me.lookup('content'); + let data = viewModel.get('data'); if (first === data.first && total === data.total && text.length === data.textlen) { return; // same content, skip setting and scrolling @@ -58,10 +58,10 @@ Ext.define('Proxmox.panel.LogView', { viewModel.set('data', { first: first, total: total, - textlen: text.length + textlen: text.length, }); - var scrollPos = me.scrollPosBottom(); + let scrollPos = me.scrollPosBottom(); content.update(text); @@ -72,19 +72,23 @@ Ext.define('Proxmox.panel.LogView', { }, doLoad: function() { - var me = this; + let me = this; + if (me.running) { + me.requested = true; + return; + } me.running = true; - var view = me.getView(); - var viewModel = me.getViewModel(); + let view = me.getView(); + let viewModel = me.getViewModel(); Proxmox.Utils.API2Request({ url: me.getView().url, params: viewModel.get('params'), method: 'GET', success: function(response) { Proxmox.Utils.setErrorMask(me, false); - var total = response.result.total; - var lines = new Array(); - var first = Infinity; + let total = response.result.total; + let lines = []; + let first = Infinity; Ext.Array.each(response.result.data, function(line) { if (first > line.n) { @@ -96,49 +100,57 @@ Ext.define('Proxmox.panel.LogView', { lines.length = total; me.updateView(lines.join('
'), first - 1, total); me.running = false; + if (me.requested) { + me.requested = false; + view.loadTask.delay(200); + } }, failure: function(response) { if (view.failCallback) { view.failCallback(response); } else { - var msg = response.htmlStatus; + let msg = response.htmlStatus; Proxmox.Utils.setErrorMask(me, msg); } me.running = false; - } + if (me.requested) { + me.requested = false; + view.loadTask.delay(200); + } + }, }); }, onScroll: function(x, y) { - var me = this; - var view = me.getView(); - var viewModel = me.getViewModel(); + let me = this; + let view = me.getView(); + let viewModel = me.getViewModel(); - var lineHeight = view.lineHeight; - var line = view.getScrollY()/lineHeight; - var start = viewModel.get('params.start'); - var limit = viewModel.get('params.limit'); - var viewLines = view.getHeight()/lineHeight; + let lineHeight = view.lineHeight; + let line = view.getScrollY()/lineHeight; + let start = viewModel.get('params.start'); + let limit = viewModel.get('params.limit'); + let viewLines = view.getHeight()/lineHeight; - var viewStart = Math.max(parseInt(line - 1 - view.viewBuffer, 10), 0); - var viewEnd = parseInt(line + viewLines + 1 + view.viewBuffer, 10); + let viewStart = Math.max(parseInt(line - 1 - view.viewBuffer, 10), 0); + let viewEnd = parseInt(line + viewLines + 1 + view.viewBuffer, 10); - if (viewStart < start || viewEnd > (start+limit)) { + if (viewStart < start || viewEnd > start+limit) { viewModel.set('params.start', - Math.max(parseInt(line - limit/2 + 10, 10), 0)); + Math.max(parseInt(line - (limit / 2) + 10, 10), 0)); view.loadTask.delay(200); } }, init: function(view) { - var me = this; + let me = this; if (!view.url) { throw "no url specified"; } - var viewModel = this.getViewModel(); - var since = new Date(); + let viewModel = this.getViewModel(); + let since = new Date(); since.setDate(since.getDate() - 3); viewModel.set('until', new Date()); viewModel.set('since', since); @@ -156,25 +168,23 @@ Ext.define('Proxmox.panel.LogView', { } if (me.scrollPosBottom() <= 1) { - if (!me.running) { - view.loadTask.delay(200); - } + view.loadTask.delay(200); } }, - interval: 1000 + interval: 1000, }); - } + }, }, onDestroy: function() { - var me = this; + let me = this; me.loadTask.cancel(); Ext.TaskManager.stop(me.task); }, // for user to initiate a load from outside requestUpdate: function() { - var me = this; + let me = this; me.loadTask.delay(200); }, @@ -186,13 +196,13 @@ Ext.define('Proxmox.panel.LogView', { data: { start: 0, total: 0, - textlen: 0 + textlen: 0, }, params: { start: 0, limit: 500, - } - } + }, + }, }, layout: 'auto', @@ -206,19 +216,19 @@ Ext.define('Proxmox.panel.LogView', { // the panel have a 'scroll' event' scroll: { fn: function(scroller, x, y) { - var controller = this.component.getController(); + let controller = this.component.getController(); if (controller) { // on destroy, controller can be gone - controller.onScroll(x,y); + controller.onScroll(x, y); } }, - buffer: 200 + buffer: 200, }, - } + }, }, tbar: { bind: { - hidden: '{hide_timespan}' + hidden: '{hide_timespan}', }, items: [ '->', @@ -230,8 +240,8 @@ Ext.define('Proxmox.panel.LogView', { format: 'Y-m-d', bind: { value: '{since}', - maxValue: '{until}' - } + maxValue: '{until}', + }, }, 'Until: ', { @@ -241,14 +251,14 @@ Ext.define('Proxmox.panel.LogView', { format: 'Y-m-d', bind: { value: '{until}', - minValue: '{since}' - } + minValue: '{since}', + }, }, { xtype: 'button', text: 'Update', - handler: 'updateParams' - } + handler: 'updateParams', + }, ], }, @@ -258,8 +268,8 @@ Ext.define('Proxmox.panel.LogView', { reference: 'content', style: { font: 'normal 11px tahoma, arial, verdana, sans-serif', - 'white-space': 'pre' + 'white-space': 'pre', }, - } - ] + }, + ], });