]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/storage/TemplateView.js
ui: eslint: fix various spacing related issues
[pve-manager.git] / www / manager6 / storage / TemplateView.js
1 Ext.define('PVE.grid.TemplateSelector', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: 'widget.pveTemplateSelector',
5
6 stateful: true,
7 stateId: 'grid-template-selector',
8 viewConfig: {
9 trackOver: false,
10 },
11 initComponent: function() {
12 var me = this;
13
14 if (!me.nodename) {
15 throw "no node name specified";
16 }
17
18 var baseurl = "/nodes/" + me.nodename + "/aplinfo";
19 var store = new Ext.data.Store({
20 model: 'pve-aplinfo',
21 groupField: 'section',
22 proxy: {
23 type: 'proxmox',
24 url: '/api2/json' + baseurl,
25 },
26 });
27
28 var sm = Ext.create('Ext.selection.RowModel', {});
29
30 var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
31 groupHeaderTpl: '{[ "Section: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
32 });
33
34 var reload = function() {
35 store.load();
36 };
37
38 Proxmox.Utils.monStoreErrors(me, store);
39
40 Ext.apply(me, {
41 store: store,
42 selModel: sm,
43 tbar: [
44 '->',
45 gettext('Search'),
46 {
47 xtype: 'textfield',
48 width: 200,
49 enableKeyEvents: true,
50 listeners: {
51 buffer: 500,
52 keyup: function(field) {
53 var value = field.getValue().toLowerCase();
54 store.clearFilter(true);
55 store.filterBy(function(rec) {
56 return (rec.data['package'].toLowerCase().indexOf(value) !== -1) ||
57 (rec.data.headline.toLowerCase().indexOf(value) !== -1);
58 });
59 },
60 },
61 },
62 ],
63 features: [groupingFeature],
64 columns: [
65 {
66 header: gettext('Type'),
67 width: 80,
68 dataIndex: 'type',
69 },
70 {
71 header: gettext('Package'),
72 flex: 1,
73 dataIndex: 'package',
74 },
75 {
76 header: gettext('Version'),
77 width: 80,
78 dataIndex: 'version',
79 },
80 {
81 header: gettext('Description'),
82 flex: 1.5,
83 renderer: Ext.String.htmlEncode,
84 dataIndex: 'headline',
85 },
86 ],
87 listeners: {
88 afterRender: reload,
89 },
90 });
91
92 me.callParent();
93 },
94
95 }, function() {
96 Ext.define('pve-aplinfo', {
97 extend: 'Ext.data.Model',
98 fields: [
99 'template', 'type', 'package', 'version', 'headline', 'infopage',
100 'description', 'os', 'section',
101 ],
102 idProperty: 'template',
103 });
104 });
105
106 Ext.define('PVE.storage.TemplateDownload', {
107 extend: 'Ext.window.Window',
108 alias: 'widget.pveTemplateDownload',
109
110 modal: true,
111 title: gettext('Templates'),
112 layout: 'fit',
113 width: 900,
114 height: 600,
115 initComponent: function() {
116 var me = this;
117
118 var grid = Ext.create('PVE.grid.TemplateSelector', {
119 border: false,
120 scrollable: true,
121 nodename: me.nodename,
122 });
123
124 var sm = grid.getSelectionModel();
125
126 var submitBtn = Ext.create('Proxmox.button.Button', {
127 text: gettext('Download'),
128 disabled: true,
129 selModel: sm,
130 handler: function(button, event, rec) {
131 Proxmox.Utils.API2Request({
132 url: '/nodes/' + me.nodename + '/aplinfo',
133 params: {
134 storage: me.storage,
135 template: rec.data.template,
136 },
137 method: 'POST',
138 failure: function(response, opts) {
139 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
140 },
141 success: function(response, options) {
142 var upid = response.result.data;
143
144 Ext.create('Proxmox.window.TaskViewer', {
145 upid: upid,
146 listeners: {
147 destroy: me.reloadGrid,
148 },
149 }).show();
150
151 me.close();
152 },
153 });
154 },
155 });
156
157 Ext.apply(me, {
158 items: grid,
159 buttons: [submitBtn],
160 });
161
162 me.callParent();
163 },
164 });
165
166 Ext.define('PVE.storage.TemplateView', {
167 extend: 'PVE.storage.ContentView',
168
169 alias: 'widget.pveStorageTemplateView',
170
171 initComponent: function() {
172 var me = this;
173
174 var nodename = me.nodename = me.pveSelNode.data.node;
175 if (!nodename) {
176 throw "no node name specified";
177 }
178
179 var storage = me.storage = me.pveSelNode.data.storage;
180 if (!storage) {
181 throw "no storage ID specified";
182 }
183
184 me.content = 'vztmpl';
185
186 var sm = me.sm = Ext.create('Ext.selection.RowModel', {});
187
188 var reload = function() {
189 me.store.load();
190 };
191
192 var templateButton = Ext.create('Proxmox.button.Button', {
193 itemId: 'tmpl-btn',
194 text: gettext('Templates'),
195 handler: function() {
196 var win = Ext.create('PVE.storage.TemplateDownload', {
197 nodename: nodename,
198 storage: storage,
199 reloadGrid: reload,
200 });
201 win.show();
202 },
203 });
204
205 me.tbar = [templateButton];
206 me.useUploadButton = true;
207
208 me.callParent();
209 },
210 });