mirror of
https://git.proxmox.com/git/proxmox-widget-toolkit
synced 2025-05-22 22:00:18 +00:00
fix #4442: Extend LogView for firewall datetime filtering
Extends the current panels date filtering capability to date-time based filtering, and adds a config option to switch between livemode and filter mode, analogous to the JournalView panel. The `submitFormat` config is introduced to adapt the formatting of params values for their corresponding api calls. Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
parent
0e3cb037d6
commit
40e341792e
@ -22,19 +22,28 @@ Ext.define('Proxmox.panel.LogView', {
|
|||||||
updateParams: function() {
|
updateParams: function() {
|
||||||
let me = this;
|
let me = this;
|
||||||
let viewModel = me.getViewModel();
|
let viewModel = me.getViewModel();
|
||||||
let since = viewModel.get('since');
|
|
||||||
let until = viewModel.get('until');
|
if (viewModel.get('hide_timespan') || viewModel.get('livemode')) {
|
||||||
if (viewModel.get('hide_timespan')) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let since = viewModel.get('since');
|
||||||
|
let until = viewModel.get('until');
|
||||||
|
|
||||||
if (since > until) {
|
if (since > until) {
|
||||||
Ext.Msg.alert('Error', 'Since date must be less equal than Until date.');
|
Ext.Msg.alert('Error', 'Since date must be less equal than Until date.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.set('params.since', Ext.Date.format(since, 'Y-m-d'));
|
let submitFormat = viewModel.get('submitFormat');
|
||||||
viewModel.set('params.until', Ext.Date.format(until, 'Y-m-d') + ' 23:59:59');
|
|
||||||
|
viewModel.set('params.since', Ext.Date.format(since, submitFormat));
|
||||||
|
if (submitFormat === 'Y-m-d') {
|
||||||
|
viewModel.set('params.until', Ext.Date.format(until, submitFormat) + ' 23:59:59');
|
||||||
|
} else {
|
||||||
|
viewModel.set('params.until', Ext.Date.format(until, submitFormat));
|
||||||
|
}
|
||||||
|
|
||||||
me.getView().loadTask.delay(200);
|
me.getView().loadTask.delay(200);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -175,6 +184,27 @@ Ext.define('Proxmox.panel.LogView', {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onLiveMode: function() {
|
||||||
|
let me = this;
|
||||||
|
let viewModel = me.getViewModel();
|
||||||
|
viewModel.set('livemode', true);
|
||||||
|
viewModel.set('params', { start: 0, limit: 510 });
|
||||||
|
|
||||||
|
let view = me.getView();
|
||||||
|
delete view.content;
|
||||||
|
view.scrollToEnd = true;
|
||||||
|
me.updateView([], true, false);
|
||||||
|
},
|
||||||
|
|
||||||
|
onTimespan: function() {
|
||||||
|
let me = this;
|
||||||
|
me.getViewModel().set('livemode', false);
|
||||||
|
me.updateView([], false);
|
||||||
|
// Directly apply currently selected values without update
|
||||||
|
// button click.
|
||||||
|
me.updateParams();
|
||||||
|
},
|
||||||
|
|
||||||
init: function(view) {
|
init: function(view) {
|
||||||
let me = this;
|
let me = this;
|
||||||
|
|
||||||
@ -189,6 +219,7 @@ 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);
|
||||||
|
viewModel.set('submitFormat', view.submitFormat);
|
||||||
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);
|
||||||
@ -224,6 +255,8 @@ Ext.define('Proxmox.panel.LogView', {
|
|||||||
data: {
|
data: {
|
||||||
until: null,
|
until: null,
|
||||||
since: null,
|
since: null,
|
||||||
|
submitFormat: 'Y-m-d',
|
||||||
|
livemode: true,
|
||||||
hide_timespan: false,
|
hide_timespan: false,
|
||||||
data: {
|
data: {
|
||||||
start: 0,
|
start: 0,
|
||||||
@ -263,32 +296,70 @@ Ext.define('Proxmox.panel.LogView', {
|
|||||||
},
|
},
|
||||||
items: [
|
items: [
|
||||||
'->',
|
'->',
|
||||||
'Since: ',
|
|
||||||
{
|
{
|
||||||
xtype: 'datefield',
|
xtype: 'segmentedbutton',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
text: gettext('Live Mode'),
|
||||||
|
bind: {
|
||||||
|
pressed: '{livemode}',
|
||||||
|
},
|
||||||
|
handler: 'onLiveMode',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: gettext('Select Timespan'),
|
||||||
|
bind: {
|
||||||
|
pressed: '{!livemode}',
|
||||||
|
},
|
||||||
|
handler: 'onTimespan',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'box',
|
||||||
|
autoEl: { cn: gettext('Since') + ':' },
|
||||||
|
bind: {
|
||||||
|
disabled: '{livemode}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'proxmoxDateTimeField',
|
||||||
name: 'since_date',
|
name: 'since_date',
|
||||||
reference: 'since',
|
reference: 'since',
|
||||||
format: 'Y-m-d',
|
format: 'Y-m-d',
|
||||||
bind: {
|
bind: {
|
||||||
|
disabled: '{livemode}',
|
||||||
value: '{since}',
|
value: '{since}',
|
||||||
maxValue: '{until}',
|
maxValue: '{until}',
|
||||||
|
submitFormat: '{submitFormat}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'Until: ',
|
|
||||||
{
|
{
|
||||||
xtype: 'datefield',
|
xtype: 'box',
|
||||||
|
autoEl: { cn: gettext('Until') + ':' },
|
||||||
|
bind: {
|
||||||
|
disabled: '{livemode}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'proxmoxDateTimeField',
|
||||||
name: 'until_date',
|
name: 'until_date',
|
||||||
reference: 'until',
|
reference: 'until',
|
||||||
format: 'Y-m-d',
|
format: 'Y-m-d',
|
||||||
bind: {
|
bind: {
|
||||||
|
disabled: '{livemode}',
|
||||||
value: '{until}',
|
value: '{until}',
|
||||||
minValue: '{since}',
|
minValue: '{since}',
|
||||||
|
submitFormat: '{submitFormat}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
xtype: 'button',
|
xtype: 'button',
|
||||||
text: 'Update',
|
text: 'Update',
|
||||||
handler: 'updateParams',
|
handler: 'updateParams',
|
||||||
|
bind: {
|
||||||
|
disabled: '{livemode}',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user