]> git.proxmox.com Git - proxmox-backup.git/blob - www/dashboard/TaskSummary.js
c50957510834b9fa1016c056331c49974ad23e04
[proxmox-backup.git] / www / dashboard / TaskSummary.js
1 Ext.define('PBS.TaskSummary', {
2 extend: 'Ext.panel.Panel',
3 alias: 'widget.pbsTaskSummary',
4
5 title: gettext('Task Summary'),
6
7 controller: {
8 xclass: 'Ext.app.ViewController',
9
10 types: [
11 "backup",
12 "prune",
13 "garbage_collection",
14 "sync",
15 ],
16
17 titles: {
18 "backup": gettext('Backups'),
19 "prune": gettext('Prunes'),
20 "garbage_collection": gettext('Garbage collections'),
21 "sync": gettext('Syncs'),
22 },
23
24 render_icon: function(state, count) {
25 let cls = 'question';
26 let color = 'faded';
27 switch (state) {
28 case "error":
29 cls = "times-circle";
30 color = "critical";
31 break;
32 case "warning":
33 cls = "exclamation-circle";
34 color = "warning";
35 break;
36 case "ok":
37 cls = "check-circle";
38 color = "good";
39 break;
40 default: break;
41 }
42
43 if (count < 1) {
44 color = "faded";
45 }
46 cls += " " + color;
47 return `<i class="fa fa-${cls}"></i>`;
48 },
49
50 render_count: function(value, md, record, rowindex, colindex) {
51 let me = this;
52 let icon = me.render_icon(me.states[colindex], value);
53 return `${icon} ${value}`;
54 },
55 },
56
57 updateTasks: function(source) {
58 let me = this;
59 let controller = me.getController();
60 let data = [];
61 controller.types.forEach((type) => {
62 source[type].type = controller.titles[type];
63 data.push(source[type]);
64 });
65 me.lookup('grid').getStore().setData(data);
66 },
67
68 layout: 'fit',
69 bodyPadding: 15,
70 minHeight: 166,
71
72 // we have to wrap the grid in a panel to get the padding right
73 items: [
74 {
75 xtype: 'grid',
76 reference: 'grid',
77 hideHeaders: true,
78 border: false,
79 bodyBorder: false,
80 rowLines: false,
81 viewConfig: {
82 stripeRows: false,
83 trackOver: false,
84 },
85 scrollable: false,
86 disableSelection: true,
87
88 store: {
89 data: [],
90 },
91
92 columns: [
93 {
94 dataIndex: 'type',
95 flex: 1,
96 },
97 {
98 dataIndex: 'error',
99 renderer: 'render_count',
100 },
101 {
102 dataIndex: 'warning',
103 renderer: 'render_count',
104 },
105 {
106 dataIndex: 'ok',
107 renderer: 'render_count',
108 },
109 ],
110 },
111 ],
112
113 });