]>
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.exturl}/initgpt`,
79 params
: { disk
: rec
.data
.name
},
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', {
87 taskDone: function() {
96 init: function(view
) {
97 Proxmox
.Utils
.monStoreErrors(view
, view
.getStore(), true);
99 let nodename
= view
.nodename
|| 'localhost';
100 view
.baseurl
= `/api2/json/nodes/${nodename}/disks`;
101 view
.exturl
= `/api2/extjs/nodes/${nodename}/disks`;
102 view
.getStore().getProxy().setUrl(`${view.baseurl}/list`);
103 view
.getStore().load();
108 model
: 'pmx-disk-list',
122 text
: gettext('Reload'),
126 xtype
: 'proxmoxButton',
127 text
: gettext('Show S.M.A.R.T. values'),
129 handler
: 'openSmartWindow',
132 xtype
: 'proxmoxButton',
133 text
: gettext('Initialize Disk with GPT'),
135 enableFn: function(rec
) {
136 if (!rec
|| (rec
.data
.used
&& rec
.data
.used
!== 'unused')) {
148 header
: gettext('Device'),
151 dataIndex
: 'devpath',
154 header
: gettext('Type'),
157 dataIndex
: 'disk-type',
158 renderer: function(v
) {
159 if (v
=== undefined) return Proxmox
.Utils
.unknownText
;
161 case 'ssd': return 'SSD';
162 case 'hdd': return 'Hard Disk';
163 case 'usb': return 'USB';
169 header
: gettext('Usage'),
172 renderer
: v
=> v
|| Proxmox
.Utils
.noText
,
176 header
: gettext('Size'),
180 renderer
: Proxmox
.Utils
.format_size
,
187 renderer
: Proxmox
.Utils
.format_boolean
,
191 header
: gettext('Vendor'),
195 renderer
: Ext
.String
.htmlEncode
,
199 header
: gettext('Model'),
202 renderer
: Ext
.String
.htmlEncode
,
206 header
: gettext('Serial'),
209 renderer
: Ext
.String
.htmlEncode
,
213 header
: 'S.M.A.R.T.',
216 renderer
: Ext
.String
.htmlEncode
,
224 dataIndex
: 'wearout',
225 renderer: function(value
) {
226 if (Ext
.isNumeric(value
)) {
227 return (100 - value
).toString() + '%';
235 itemdblclick
: 'openSmartWindow',