]> git.proxmox.com Git - pmg-gui.git/blob - js/UserView.js
js/UserView.js: cleanup - remove initComponent
[pmg-gui.git] / js / UserView.js
1 Ext.define('pmg-users', {
2 extend: 'Ext.data.Model',
3 fields: [
4 'userid', 'firstname', 'lastname' , 'email', 'comment',
5 'role', 'keys', 'realm',
6 { type: 'boolean', name: 'enable' },
7 { type: 'date', dateFormat: 'timestamp', name: 'expire' }
8 ],
9 proxy: {
10 type: 'proxmox',
11 url: "/api2/json/access/users"
12 },
13 idProperty: 'userid'
14 });
15
16 Ext.define('PMG.UserView', {
17 extend: 'Ext.grid.GridPanel',
18 alias: 'widget.pmgUserView',
19
20 store: {
21 autoLoad: true,
22 model: 'pmg-users',
23 sorters: [
24 {
25 property: 'realm',
26 direction: 'ASC'
27 },
28 {
29 property: 'userid',
30 direction: 'ASC'
31 }
32 ]
33 },
34
35 controller: {
36
37 xclass: 'Ext.app.ViewController',
38
39 renderUsername: function(userid) {
40 return userid.match(/^(.+)(@[^@]+)$/)[1];
41 },
42
43 renderFullName: function(firstname, metaData, record) {
44 var first = firstname || '';
45 var last = record.data.lastname || '';
46 return first + " " + last;
47 },
48
49 onAdd: function() {
50 var view = this.getView();
51
52 var win = Ext.create('PMG.UserEdit', {});
53 win.on('destroy', function() { view.reload() });
54 win.show();
55 },
56
57 onEdit: function() {
58 var view = this.getView();
59
60 var rec = view.selModel.getSelection()[0];
61
62 var win = Ext.create('PMG.UserEdit', {
63 userid: rec.data.userid
64 });
65 win.on('destroy', function() { view.reload() });
66 win.show();
67 },
68
69 onPassword: function(btn, event, rec) {
70 var view = this.getView();
71
72 var win = Ext.create('Proxmox.window.PasswordEdit',{
73 userid: rec.data.userid
74 });
75 win.on('destroy', function() { view.reload() });
76 win.show();
77 },
78
79 onAfterRemove: function(btn, res) {
80 var view = this.getView();
81 view.reload();
82 }
83 },
84
85 listeners: {
86 scope: 'controller',
87 itemdblclick: 'onEdit',
88 },
89
90 tbar: [
91 {
92 text: gettext('Add'),
93 reference: 'addBtn',
94 handler: 'onAdd'
95 },
96 {
97 xtype: 'proxmoxButton',
98 text: gettext('Edit'),
99 disabled: true,
100 handler: 'onEdit'
101 },
102 {
103 xtype: 'proxmoxStdRemoveButton',
104 baseurl: '/access/users',
105 reference: 'removeBtn',
106 callback: 'onAfterRemove',
107 waitMsgTarget: true
108 },
109 {
110 xtype: 'proxmoxButton',
111 text: gettext('Password'),
112 disabled: true,
113 handler: 'onPassword'
114 }
115 ],
116
117 columns: [
118 {
119 header: gettext('User name'),
120 width: 200,
121 sortable: true,
122 renderer: 'renderUsername',
123 dataIndex: 'userid'
124 },
125 {
126 header: gettext('Realm'),
127 width: 100,
128 sortable: true,
129 dataIndex: 'realm'
130 },
131 {
132 header: gettext('Enabled'),
133 width: 80,
134 sortable: true,
135 renderer: Proxmox.Utils.format_boolean,
136 dataIndex: 'enable'
137 },
138 {
139 header: gettext('Expire'),
140 width: 80,
141 sortable: true,
142 renderer: Proxmox.Utils.format_expire,
143 dataIndex: 'expire'
144 },
145 {
146 header: gettext('Name'),
147 width: 150,
148 sortable: true,
149 renderer: 'renderFullName',
150 dataIndex: 'firstname'
151 },
152 {
153 header: gettext('Comment'),
154 sortable: false,
155 renderer: Ext.String.htmlEncode,
156 dataIndex: 'comment',
157 flex: 1
158 }
159 ],
160
161 reload: function() {
162 var me = this;
163
164 me.store.load();
165 }
166 });