mirror of
https://git.proxmox.com/git/pve-manager
synced 2026-01-27 15:05:16 +00:00
use TaskViewer & TaskProgress window from widget toolkit
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
9fccc702ec
commit
8cbc11a70c
@ -75,7 +75,6 @@ JSSRC= \
|
||||
panel/GaugeWidget.js \
|
||||
panel/HealthWidget.js \
|
||||
window/LoginWindow.js \
|
||||
window/TaskViewer.js \
|
||||
window/Wizard.js \
|
||||
window/NotesEdit.js \
|
||||
window/Backup.js \
|
||||
|
||||
@ -96,7 +96,7 @@ Ext.define('PVE.node.CephMonList', {
|
||||
params: { service: "mon." + rec.data.name },
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
},
|
||||
failure: function(response, opts) {
|
||||
@ -151,7 +151,7 @@ Ext.define('PVE.node.CephMonList', {
|
||||
method: 'DELETE',
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
},
|
||||
failure: function(response, opts) {
|
||||
|
||||
@ -403,7 +403,7 @@ Ext.define('PVE.node.CephOsdTree', {
|
||||
method: 'POST',
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
me.mon(win, 'close', reload, me);
|
||||
},
|
||||
|
||||
@ -43,7 +43,7 @@ Ext.define('PVE.dc.Tasks', {
|
||||
return;
|
||||
}
|
||||
|
||||
var win = Ext.create('PVE.window.TaskViewer', {
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: rec.data.upid
|
||||
});
|
||||
win.show();
|
||||
|
||||
@ -320,7 +320,7 @@ Ext.define('PVE.lxc.CreateWizard', {
|
||||
success: function(response, opts){
|
||||
var upid = response.result.data;
|
||||
|
||||
var win = Ext.create('PVE.window.TaskViewer', {
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: upid
|
||||
});
|
||||
win.show();
|
||||
|
||||
@ -17,7 +17,7 @@ Ext.define('PVE.window.MPResize', {
|
||||
},
|
||||
success: function(response, opts) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskViewer', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', { upid: upid });
|
||||
win.show();
|
||||
me.close();
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ Ext.define('PVE.window.LxcSnapshot', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
me.close();
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@ Ext.define('PVE.lxc.SnapshotTree', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
}
|
||||
});
|
||||
@ -217,7 +217,7 @@ Ext.define('PVE.lxc.SnapshotTree', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
}
|
||||
});
|
||||
|
||||
@ -204,7 +204,7 @@ Ext.define('PVE.node.DiskList', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', {
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', {
|
||||
upid: upid
|
||||
});
|
||||
win.show();
|
||||
|
||||
@ -27,7 +27,7 @@ Ext.define('PVE.window.HDMove', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskViewer', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', { upid: upid });
|
||||
win.show();
|
||||
me.close();
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ Ext.define('PVE.window.Snapshot', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
me.close();
|
||||
}
|
||||
|
||||
@ -179,7 +179,7 @@ Ext.define('PVE.qemu.SnapshotTree', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
}
|
||||
});
|
||||
@ -215,7 +215,7 @@ Ext.define('PVE.qemu.SnapshotTree', {
|
||||
},
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', { upid: upid });
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', { upid: upid });
|
||||
win.show();
|
||||
}
|
||||
});
|
||||
|
||||
@ -124,7 +124,7 @@ Ext.define('PVE.storage.TemplateDownload', {
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
|
||||
Ext.create('PVE.window.TaskViewer', {
|
||||
Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: upid,
|
||||
listeners: {
|
||||
destroy: me.reloadGrid
|
||||
|
||||
@ -93,7 +93,7 @@ Ext.define('PVE.window.Backup', {
|
||||
|
||||
var upid = response.result.data;
|
||||
|
||||
var win = Ext.create('PVE.window.TaskViewer', {
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: upid,
|
||||
listeners: {
|
||||
close: function() {
|
||||
|
||||
@ -29,7 +29,7 @@ Ext.define('PVE.window.BulkAction', {
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
|
||||
var win = Ext.create('PVE.window.TaskViewer', {
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: upid
|
||||
});
|
||||
win.show();
|
||||
|
||||
@ -43,7 +43,7 @@ Ext.define('PVE.window.Migrate', {
|
||||
var upid = response.result.data;
|
||||
var extraTitle = Ext.String.format(' ({0} ---> {1})', view.nodename, params.target);
|
||||
|
||||
Ext.create('PVE.window.TaskViewer', {
|
||||
Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: upid,
|
||||
extraTitle: extraTitle
|
||||
}).show();
|
||||
|
||||
@ -86,7 +86,7 @@ Ext.define('PVE.window.Restore', {
|
||||
success: function(response, options) {
|
||||
var upid = response.result.data;
|
||||
|
||||
var win = Ext.create('PVE.window.TaskViewer', {
|
||||
var win = Ext.create('Proxmox.window.TaskViewer', {
|
||||
upid: upid
|
||||
});
|
||||
win.show();
|
||||
|
||||
@ -75,7 +75,7 @@ Ext.define('PVE.window.SafeDestroy', {
|
||||
view.hide();
|
||||
|
||||
var upid = response.result.data;
|
||||
var win = Ext.create('PVE.window.TaskProgress', {
|
||||
var win = Ext.create('Proxmox.window.TaskProgress', {
|
||||
upid: upid,
|
||||
listeners: {
|
||||
destroy: function () {
|
||||
|
||||
@ -1,223 +0,0 @@
|
||||
Ext.define('PVE.window.TaskProgress', {
|
||||
extend: 'Ext.window.Window',
|
||||
alias: 'widget.pveTaskProgress',
|
||||
|
||||
initComponent: function() {
|
||||
var me = this;
|
||||
|
||||
if (!me.upid) {
|
||||
throw "no task specified";
|
||||
}
|
||||
|
||||
var task = Proxmox.Utils.parse_task_upid(me.upid);
|
||||
|
||||
var statstore = Ext.create('PVE.data.ObjectStore', {
|
||||
url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
|
||||
interval: 1000,
|
||||
rows: {
|
||||
status: { defaultValue: 'unknown' },
|
||||
exitstatus: { defaultValue: 'unknown' }
|
||||
}
|
||||
});
|
||||
|
||||
me.on('destroy', statstore.stopUpdate);
|
||||
|
||||
var getObjectValue = function(key, defaultValue) {
|
||||
var rec = statstore.getById(key);
|
||||
if (rec) {
|
||||
return rec.data.value;
|
||||
}
|
||||
return defaultValue;
|
||||
};
|
||||
|
||||
var pbar = Ext.create('Ext.ProgressBar', { text: 'running...' });
|
||||
|
||||
me.mon(statstore, 'load', function() {
|
||||
var status = getObjectValue('status');
|
||||
if (status === 'stopped') {
|
||||
var exitstatus = getObjectValue('exitstatus');
|
||||
if (exitstatus == 'OK') {
|
||||
pbar.reset();
|
||||
pbar.updateText("Done!");
|
||||
Ext.Function.defer(me.close, 1000, me);
|
||||
} else {
|
||||
me.close();
|
||||
Ext.Msg.alert('Task failed', exitstatus);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var descr = Proxmox.Utils.format_task_description(task.type, task.id);
|
||||
|
||||
Ext.apply(me, {
|
||||
title: "Task: " + descr,
|
||||
width: 300,
|
||||
layout: 'auto',
|
||||
modal: true,
|
||||
bodyPadding: 5,
|
||||
items: pbar,
|
||||
buttons: [
|
||||
{
|
||||
text: gettext('Details'),
|
||||
handler: function() {
|
||||
var win = Ext.create('PVE.window.TaskViewer', {
|
||||
upid: me.upid
|
||||
});
|
||||
win.show();
|
||||
me.close();
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
me.callParent();
|
||||
|
||||
statstore.startUpdate();
|
||||
|
||||
pbar.wait();
|
||||
}
|
||||
});
|
||||
|
||||
// fixme: how can we avoid those lint errors?
|
||||
/*jslint confusion: true */
|
||||
|
||||
Ext.define('PVE.window.TaskViewer', {
|
||||
extend: 'Ext.window.Window',
|
||||
alias: 'widget.pveTaskViewer',
|
||||
extraTitle: '', // string to prepend after the generic task title
|
||||
|
||||
initComponent: function() {
|
||||
var me = this;
|
||||
|
||||
if (!me.upid) {
|
||||
throw "no task specified";
|
||||
}
|
||||
|
||||
var task = Proxmox.Utils.parse_task_upid(me.upid);
|
||||
|
||||
var statgrid;
|
||||
|
||||
var rows = {
|
||||
status: {
|
||||
header: gettext('Status'),
|
||||
defaultValue: 'unknown',
|
||||
renderer: function(value) {
|
||||
if (value != 'stopped') {
|
||||
return value;
|
||||
}
|
||||
var es = statgrid.getObjectValue('exitstatus');
|
||||
if (es) {
|
||||
return value + ': ' + es;
|
||||
}
|
||||
}
|
||||
},
|
||||
exitstatus: {
|
||||
visible: false
|
||||
},
|
||||
type: {
|
||||
header: gettext('Task type'),
|
||||
required: true
|
||||
},
|
||||
user: {
|
||||
header: gettext('User name'),
|
||||
required: true
|
||||
},
|
||||
node: {
|
||||
header: gettext('Node'),
|
||||
required: true
|
||||
},
|
||||
pid: {
|
||||
header: gettext('Process ID'),
|
||||
required: true
|
||||
},
|
||||
starttime: {
|
||||
header: gettext('Start Time'),
|
||||
required: true,
|
||||
renderer: Proxmox.Utils.render_timestamp
|
||||
},
|
||||
upid: {
|
||||
header: gettext('Unique task ID')
|
||||
}
|
||||
};
|
||||
|
||||
var statstore = Ext.create('PVE.data.ObjectStore', {
|
||||
url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
|
||||
interval: 1000,
|
||||
rows: rows
|
||||
});
|
||||
|
||||
me.on('destroy', statstore.stopUpdate);
|
||||
|
||||
var stop_task = function() {
|
||||
Proxmox.Utils.API2Request({
|
||||
url: "/nodes/" + task.node + "/tasks/" + me.upid,
|
||||
waitMsgTarget: me,
|
||||
method: 'DELETE',
|
||||
failure: function(response, opts) {
|
||||
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var stop_btn1 = new Ext.Button({
|
||||
text: gettext('Stop'),
|
||||
disabled: true,
|
||||
handler: stop_task
|
||||
});
|
||||
|
||||
var stop_btn2 = new Ext.Button({
|
||||
text: gettext('Stop'),
|
||||
disabled: true,
|
||||
handler: stop_task
|
||||
});
|
||||
|
||||
statgrid = Ext.create('Proxmox.grid.ObjectGrid', {
|
||||
title: gettext('Status'),
|
||||
layout: 'fit',
|
||||
tbar: [ stop_btn1 ],
|
||||
rstore: statstore,
|
||||
rows: rows,
|
||||
border: false
|
||||
});
|
||||
|
||||
var logView = Ext.create('PVE.panel.LogView', {
|
||||
title: gettext('Output'),
|
||||
tbar: [ stop_btn2 ],
|
||||
border: false,
|
||||
url: "/api2/extjs/nodes/" + task.node + "/tasks/" + me.upid + "/log"
|
||||
});
|
||||
|
||||
me.mon(statstore, 'load', function() {
|
||||
var status = statgrid.getObjectValue('status');
|
||||
|
||||
if (status === 'stopped') {
|
||||
logView.requestUpdate(undefined, true);
|
||||
logView.scrollToEnd = false;
|
||||
statstore.stopUpdate();
|
||||
}
|
||||
|
||||
stop_btn1.setDisabled(status !== 'running');
|
||||
stop_btn2.setDisabled(status !== 'running');
|
||||
});
|
||||
|
||||
statstore.startUpdate();
|
||||
|
||||
Ext.apply(me, {
|
||||
title: "Task viewer: " + task.desc + me.extraTitle,
|
||||
width: 800,
|
||||
height: 400,
|
||||
layout: 'fit',
|
||||
modal: true,
|
||||
items: [{
|
||||
xtype: 'tabpanel',
|
||||
region: 'center',
|
||||
items: [ logView, statgrid ]
|
||||
}]
|
||||
});
|
||||
|
||||
me.callParent();
|
||||
|
||||
logView.fireEvent('show', logView);
|
||||
}
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user