]> git.proxmox.com Git - pmg-gui.git/blame - js/UserView.js
UserView.js: display role
[pmg-gui.git] / js / UserView.js
CommitLineData
ec1dd829
DM
1Ext.define('pmg-users', {
2 extend: 'Ext.data.Model',
3 fields: [
4 'userid', 'firstname', 'lastname' , 'email', 'comment',
56ea3718 5 'role', 'keys', 'realm',
ec1dd829
DM
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
16Ext.define('PMG.UserView', {
17 extend: 'Ext.grid.GridPanel',
18 alias: 'widget.pmgUserView',
19
8f5de6bf
DM
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
4468e69c 35 controller: {
ec1dd829 36
4468e69c 37 xclass: 'Ext.app.ViewController',
ec1dd829 38
e93402ee
DM
39 init: function(view) {
40 Proxmox.Utils.monStoreErrors(view, view.store);
41 },
42
4468e69c
DM
43 renderUsername: function(userid) {
44 return userid.match(/^(.+)(@[^@]+)$/)[1];
45 },
ec1dd829 46
4468e69c
DM
47 renderFullName: function(firstname, metaData, record) {
48 var first = firstname || '';
49 var last = record.data.lastname || '';
50 return first + " " + last;
51 },
ec1dd829 52
4468e69c
DM
53 onAdd: function() {
54 var view = this.getView();
55
56 var win = Ext.create('PMG.UserEdit', {});
57 win.on('destroy', function() { view.reload() });
58 win.show();
59 },
60
61 onEdit: function() {
62 var view = this.getView();
ec1dd829 63
4468e69c 64 var rec = view.selModel.getSelection()[0];
ec1dd829
DM
65
66 var win = Ext.create('PMG.UserEdit', {
4468e69c 67 userid: rec.data.userid
ec1dd829 68 });
4468e69c 69 win.on('destroy', function() { view.reload() });
ec1dd829 70 win.show();
4468e69c
DM
71 },
72
73 onPassword: function(btn, event, rec) {
74 var view = this.getView();
ec1dd829 75
4468e69c
DM
76 var win = Ext.create('Proxmox.window.PasswordEdit',{
77 userid: rec.data.userid
78 });
79 win.on('destroy', function() { view.reload() });
80 win.show();
81 },
82
83 onAfterRemove: function(btn, res) {
84 var view = this.getView();
85 view.reload();
86 }
87 },
88
89 listeners: {
90 scope: 'controller',
91 itemdblclick: 'onEdit',
92 },
93
94 tbar: [
95 {
96 text: gettext('Add'),
97 reference: 'addBtn',
98 handler: 'onAdd'
99 },
100 {
101 xtype: 'proxmoxButton',
ec1dd829
DM
102 text: gettext('Edit'),
103 disabled: true,
4468e69c
DM
104 handler: 'onEdit'
105 },
106 {
107 xtype: 'proxmoxStdRemoveButton',
108 baseurl: '/access/users',
109 reference: 'removeBtn',
110 callback: 'onAfterRemove',
111 waitMsgTarget: true
112 },
113 {
114 xtype: 'proxmoxButton',
ec1dd829
DM
115 text: gettext('Password'),
116 disabled: true,
4468e69c
DM
117 handler: 'onPassword'
118 }
119 ],
ec1dd829 120
4468e69c
DM
121 columns: [
122 {
123 header: gettext('User name'),
124 width: 200,
125 sortable: true,
126 renderer: 'renderUsername',
127 dataIndex: 'userid'
128 },
129 {
130 header: gettext('Realm'),
131 width: 100,
132 sortable: true,
133 dataIndex: 'realm'
134 },
7818f0a3
DM
135 {
136 header: gettext('Role'),
137 width: 150,
138 sortable: true,
139 renderer: PMG.Utils.format_user_role,
140 dataIndex: 'role'
141 },
4468e69c
DM
142 {
143 header: gettext('Enabled'),
144 width: 80,
145 sortable: true,
146 renderer: Proxmox.Utils.format_boolean,
147 dataIndex: 'enable'
148 },
149 {
150 header: gettext('Expire'),
151 width: 80,
152 sortable: true,
153 renderer: Proxmox.Utils.format_expire,
154 dataIndex: 'expire'
155 },
156 {
157 header: gettext('Name'),
158 width: 150,
159 sortable: true,
160 renderer: 'renderFullName',
161 dataIndex: 'firstname'
162 },
163 {
164 header: gettext('Comment'),
165 sortable: false,
166 renderer: Ext.String.htmlEncode,
167 dataIndex: 'comment',
168 flex: 1
169 }
170 ],
ec1dd829 171
4468e69c
DM
172 reload: function() {
173 var me = this;
ec1dd829 174
4468e69c 175 me.store.load();
ec1dd829
DM
176 }
177});