]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - src/grid/DiskList.js
1 Ext
.define('pmx-disk-list', {
2 extend
: 'Ext.data.Model',
5 { name
: 'size', type
: 'number' },
6 { name
: 'osdid', type
: 'number' },
9 convert: function(value
, rec
) {
10 if (value
) return value
;
11 if (rec
.data
.health
) {
12 return rec
.data
.health
;
14 return Proxmox
.Utils
.unknownText
;
19 convert: function(value
, rec
) {
20 if (value
) return value
;
21 if (rec
.data
.devpath
) return rec
.data
.devpath
;
27 convert: function(value
, rec
) {
28 if (value
) return value
;
29 if (rec
.data
.type
) return rec
.data
.type
;
33 'vendor', 'model', 'serial', 'rpm', 'type', 'wearout', 'health',
35 idProperty
: 'devpath',
38 Ext
.define('Proxmox.DiskList', {
39 extend
: 'Ext.grid.GridPanel',
40 alias
: 'widget.pmxDiskList',
42 emptyText
: gettext('No Disks found'),
45 stateId
: 'grid-node-disks',
48 xclass
: 'Ext.app.ViewController',
52 me
.getView().getStore().load();
55 openSmartWindow: function() {
57 let view
= me
.getView();
58 let selection
= view
.getSelection();
59 if (!selection
|| selection
.length
< 1) return;
61 let rec
= selection
[0];
62 Ext
.create('Proxmox.window.DiskSmart', {
63 baseurl
: view
.baseurl
,
70 let view
= me
.getView();
71 let selection
= view
.getSelection();
72 if (!selection
|| selection
.length
< 1) return;
74 let rec
= selection
[0];
75 Proxmox
.Utils
.API2Request({
76 url
: `${view.baseurl}/initgpt`,
79 params
: { disk
: rec
.data
.devpath
},
80 failure: function(response
, options
) {
81 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
83 success: function(response
, options
) {
84 var upid
= response
.result
.data
;
85 var win
= Ext
.create('Proxmox.window.TaskProgress', {
93 init: function(view
) {
94 Proxmox
.Utils
.monStoreErrors(view
, view
.getStore(), true);
96 let nodename
= view
.nodename
|| 'localhost';
97 view
.baseurl
= `/api2/json/nodes/${nodename}/disks`;
98 view
.getStore().getProxy().setUrl(`${view.baseurl}/list`);
99 view
.getStore().load();
104 model
: 'pmx-disk-list',
118 text
: gettext('Reload'),
122 xtype
: 'proxmoxButton',
123 text
: gettext('Show S.M.A.R.T. values'),
125 handler
: 'openSmartWindow',
128 xtype
: 'proxmoxButton',
129 text
: gettext('Initialize Disk with GPT'),
131 enableFn: function(rec
) {
132 if (!rec
|| rec
.data
.used
) {
144 header
: gettext('Device'),
147 dataIndex
: 'devpath',
150 header
: gettext('Type'),
153 dataIndex
: 'disk-type',
154 renderer: function(v
) {
155 if (v
=== undefined) return Proxmox
.Utils
.unknownText
;
157 case 'ssd': return 'SSD';
158 case 'hdd': return 'Hard Disk';
159 case 'usb': return 'USB';
165 header
: gettext('Usage'),
168 renderer
: v
=> v
|| Proxmox
.Utils
.noText
,
172 header
: gettext('Size'),
176 renderer
: Proxmox
.Utils
.format_size
,
183 renderer
: Proxmox
.Utils
.format_boolean
,
187 header
: gettext('Vendor'),
191 renderer
: Ext
.String
.htmlEncode
,
195 header
: gettext('Model'),
198 renderer
: Ext
.String
.htmlEncode
,
202 header
: gettext('Serial'),
205 renderer
: Ext
.String
.htmlEncode
,
209 header
: 'S.M.A.R.T.',
212 renderer
: Ext
.String
.htmlEncode
,
220 dataIndex
: 'wearout',
221 renderer: function(value
) {
222 if (Ext
.isNumeric(value
)) {
223 return (100 - value
).toString() + '%';
231 itemdblclick
: 'openSmartWindow',