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