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