initial commit
[namibia] / public / js / app / admin-workspace / userpermissions.js
1 ;(function(){
2
3         window._w.userpermissions = {
4
5                 ti : null,
6
7                 onTemplateReady : function( template, event, eventData )
8                 {
9                         _w.userpermissions.ti = _t[template];
10                         App.DataStore.setData('stockstatuses',
11                                         [
12                                          {"value":"Permissions", "label":"Permissions"},
13                                          {"value":"Price Guide", "label":"Price Guide"},
14                                          {"value":"Archived", "label":"Archived"}
15                                          ]
16                         );
17                         _w.userpermissions.ti.hydrate({
18                                 'gridTitle': 'Permissions Control',
19                                 'gridTitleSubtext': 'Please use the filters below to narrow down the view',
20                                 'gridColumnHeaders': {
21                                         constructor: 'GridColumnHeader',
22                                         items: {
23                                                 Title: {
24                                                         id: 'gridPermissionsColumn_Title',
25                                                         title: 'TITLE',
26                                                         orderAsc: {
27                                                                 id: 'gridPermissionsOrder_TitleAsc',
28                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.name', 'ASC')
29                                                         },
30                                                         orderDesc: {
31                                                                 id: 'gridPermissionsOrder_TitleDesc',
32                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.name', 'DESC')
33                                                         }
34                                                 },
35                                                 Admin: {
36                                                         id: 'gridPermissionsColumn_Admin',
37                                                         title: 'ADMIN ACCESS',
38                                                         orderAsc: {
39                                                                 id: 'gridPermissionsOrder_AdminAsc',
40                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.accessAdminModule', 'ASC')
41                                                         },
42                                                         orderDesc: {
43                                                                 id: 'gridPermissionsOrder_AdminDesc',
44                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.accessAdminModule', 'DESC')
45                                                         }
46                                                 },
47                                                 Portal: {
48                                                         id: 'gridPermissionsColumn_Portal',
49                                                         title: 'PORTAL ACCESS',
50                                                         orderAsc: {
51                                                                 id: 'gridPermissionsOrder_PortalAsc',
52                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.accessPortalModule', 'ASC')
53                                                         },
54                                                         orderDesc: {
55                                                                 id: 'gridPermissionsOrder_PortalDesc',
56                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.accessPortalModule', 'DESC')
57                                                         }
58                                                 },
59                                                 Stock: {
60                                                         id: 'gridPermissionsColumn_Stock',
61                                                         title: 'STOCK ACCESS',
62                                                         orderAsc: {
63                                                                 id: 'gridPermissionsOrder_StockAsc',
64                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.stockPage', 'ASC')
65                                                         },
66                                                         orderDesc: {
67                                                                 id: 'gridPermissionsOrder_StockDesc',
68                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.stockPage', 'DESC')
69                                                         }
70                                                 },
71                                                 Valuation: {
72                                                         id: 'gridPermissionsColumn_Valuation',
73                                                         title: 'VALUATION ACCESS',
74                                                         orderAsc: {
75                                                                 id: 'gridPermissionsOrder_ValuationAsc',
76                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.valuationPage', 'ASC')
77                                                         },
78                                                         orderDesc: {
79                                                                 id: 'gridPermissionsOrder_ValuationDesc',
80                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.valuationPage', 'DESC')
81                                                         }
82                                                 },
83                                                 Settings: {
84                                                         id: 'gridPermissionsColumn_Settings',
85                                                         title: 'SETTINGS ACCESS',
86                                                         orderAsc: {
87                                                                 id: 'gridPermissionsOrder_SettingsAsc',
88                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.settingsPage', 'ASC')
89                                                         },
90                                                         orderDesc: {
91                                                                 id: 'gridPermissionsOrder_SettingsDesc',
92                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.settingsPage', 'DESC')
93                                                         }
94                                                 },
95                                                 PriceGuide: {
96                                                         id: 'gridPermissionsColumn_PriceGuide',
97                                                         title: 'PRICE GUIDE ACCESS',
98                                                         orderAsc: {
99                                                                 id: 'gridPermissionsOrder_PriceGuideAsc',
100                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.pgPage', 'ASC')
101                                                         },
102                                                         orderDesc: {
103                                                                 id: 'gridPermissionsOrder_PriceGuideDesc',
104                                                                 bind: $.proxy(_w.userpermissions.orderPermissionsGrid, this, 'permissions.pgPage', 'DESC')
105                                                         }
106                                                 }
107                                         }
108                                 },
109                                 'gridColumnFilters': {
110                                         constructor: 'GridColumnFilter',
111                                         items: {
112                                                 Title: {
113                                                         id: 'gridPermissionsFilter_Title',
114                                                         context: 'gridPermissionsFilter'
115                                                 },
116                                                 Admin: null,
117                                                 Portal: null,
118                                                 Stock: null,
119                                                 Valuation: null,
120                                                 Settings: null,
121                                                 PriceGuide: null
122                                         }
123                                 },
124                                 'gridRowRepeater': {},
125                                 'gridPager': {}
126                         });
127
128                         // Retrieve initial grid data.
129                         if (null == App.API.taskContract('gridPermissions'))
130                         {
131                                 App.API.getTask(
132                                                 'gridPermissions', 'User', 'Permissions.Grid', null,
133                                                 {}, _w.userpermissions.loadPermissionsGrid, _w.taskContractError
134                                                 );
135                         }
136                         else
137                         {
138                                 _w.userpermissions.loadPermissionsGrid( null, {}, {} );
139                         }
140                 },
141
142                 onTemplatePublished : function()
143                 {
144                         $(".gridPermissionsFilter").keypress(function (evt) {
145                                 var charCode = evt.charCode || evt.keyCode;
146                                 if (charCode  == 13) { //Enter key's keycode
147                                         $('#btnSearch').click();
148                                 }
149                         });
150                         
151                         $('#btnClearSearch').click(_w.userpermissions.clearPermissionsGridContext);
152             $('#btnSearch').click(_w.userpermissions.searchPermissionsGrid);
153                 },
154
155                 pagePermissionsGrid : function( page )
156                 {
157                         _w.userpermissions.loadPermissionsGrid( {}, {"Grid":{"Page":page}} );
158                 },
159
160                 loadPermissionsGrid : function( contract, data, options )
161                 {
162                         App.API.execTask(
163                                         'gridPermissions', data, options,
164                                         _w.userpermissions._onPermissionsGridDataReceived, _w.taskExecError
165                                         );
166                 },
167
168                 _onPermissionsGridDataReceived : function( response )
169                 {
170                         _w.userpermissions.ti.hydrateParam('gridRowRepeater', {});
171                         _w.populateFilters(response.Data.Meta.Filters, {
172                                 'permissions.name': 'gridPermissionsContext_Title'
173                         });
174                         var gridData = [];
175                         for (var i = 0; i < response.Data.DataSet.length; i++)
176                         {
177                                 var row = response.Data.DataSet[i];
178                                 gridData.push({
179                                         url: 'viewuserpermissions',
180                                         prepend: {},
181                                         style: {},
182                                         items: {
183                                                 'id'         : row.id,
184                                                 'Title'      : row.name,
185                                                 'Admin'      : row.accessAdminModule ? 'Yes' : 'No',
186                                                 'Portal'     : row.accessPortalModule ? 'Yes' : 'No',
187                                                 'Stock'      : row.stockPage ? 'Yes' : 'No',
188                                                 'Valuation'  : row.valuationPage ? 'Yes' : 'No',
189                                                 'Settings'   : row.settingsPage ? 'Yes' : 'No',
190                                                 'PriceGuide' : row.pgPage ? 'Yes' : 'No'
191                                         }
192                                 });
193                         }
194                         _w.userpermissions.ti.hydrateParam('gridRowRepeater', {
195                                 constructor : 'GridDataRow',
196                                 items       : gridData
197                         });
198                         response.Data.Meta.itemName = 'permissionsPager';
199                         response.Data.Meta.bind = _w.userpermissions.pagePermissionsGrid;
200                         _w.userpermissions.ti.hydrateParam('gridPager', {
201                                 constructor : 'GridPager',
202                                 items       : [response.Data.Meta]
203                         });
204                 },
205
206                 exportPermissionsGrid : function()
207                 {
208                         App.API.execTask(
209                                         'gridPermissions', {}, {'ExportToExcel': true},
210                                         _w.userpermissions._onExportReceived, _w.taskExecError,
211                                         'EXPORT', true
212                                         );
213                 },
214
215                 _onExportReceived : function( response )
216                 {
217                         var win = window.open();
218             win.document.write(response);
219                 },
220
221                 clearPermissionsGridContext : function()
222                 {
223                         $('.gridPermissionsContext').val('');
224                         $('.gridPermissionsFilter').val('');
225                         _w.userpermissions.searchPermissionsGrid();
226                 },
227
228                 searchPermissionsGrid : function()
229                 {
230                         var filter = {
231                                         count: 0,
232                                         filters: {}
233                         };
234                         filter = _w.filterIfnotEmpty(filter, 'gridPermissionsFilter_Title', 'permissions.name');
235                         var request = {"Grid":{
236                             "Page": 1,
237                             "Filter": filter.filters
238                           }};
239                         _w.userpermissions.loadPermissionsGrid( null, request, {} );
240                 },
241
242                 orderPermissionsGrid : function(field, direction)
243                 {
244                         var order = {};
245                         order[field] = direction;
246                         _w.userpermissions.loadPermissionsGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );
247                 }
248
249         };
250
251 })();