initial commit
[namibia] / public / js / app / admin-workspace / xmlrpccallbacklog.js
1 ;(function(){
2
3         window._w.xmlrpccallbacklog = {
4
5                 ti : null,
6
7                 onTemplateReady : function( template, event, eventData )
8                 {
9                         _w.xmlrpccallbacklog.ti = _t[template];
10
11                         _w.xmlrpccallbacklog.initGrids();
12
13                         // XmlRpc grid
14                         if (null == App.API.taskContract('gridSystemXmlRpcCallback'))
15                         {
16                                 App.API.getTask(
17                                                 'gridSystemXmlRpcCallback', 'Valuation', 'XmlRpcCallbackLog.Grid', null,
18                                                 {}, _w.xmlrpccallbacklog.loadXmlRpcGrid, _w.taskContractError
19                                                 );
20                         }
21                         else
22                         {
23                                 _w.xmlrpccallbacklog.loadXmlRpcGrid( null, {}, {} );
24                         }
25                 },
26
27                 onTemplatePublished : function( template, event, eventData )
28                 {
29                         $(".gridXmlRpcFilter").keypress(function (evt) {
30                                 var charCode = evt.charCode || evt.keyCode;
31                                 if (charCode  == 13) { //Enter key's keycode
32                                         $('#btnXmlRpcSearch').click();
33                                 }
34                         });
35
36                         _w.xmlrpccallbacklog.ti = _t[template];
37
38                         // XmlRpc grid
39             $('#btnXmlRpcClearSearch').click(_w.xmlrpccallbacklog.clearXmlRpcGridContext);
40             $('#btnXmlRpcSearch').click(_w.xmlrpccallbacklog.searchXmlRpcGrid);
41
42                 },
43
44                 exportXmlRpcGrid : function()
45                 {
46                         App.API.execTask(
47                                         'gridSystemXmlRpcCallback', {}, {'ExportToExcel': true},
48                                         _w.xmlrpccallbacklog._onExportReceived, _w.taskExecError,
49                                         'EXPORT', true
50                                         );
51                 },
52
53                 initGrids : function()
54                 {
55
56                         _w.xmlrpccallbacklog.ti.hydrate({
57                                 // XmlRpc grid
58                                 'gridXmlRpcTitle': 'View xml-rpc callback logs',
59                                 'gridTitleButtons': {
60                                         constructor: 'Button',
61                                         items: {
62                                                 /*Export: {
63                                                         preset: 'GridExport',
64                                                         id: 'exportAuctionGrid',
65                                                         handler: _w.xmlrpccallbacklog.exportXmlRpcGrid
66                                                 }*/
67                                         }
68                                 },
69                                 'gridXmlRpcColumnHeaders': {
70                                         constructor: 'GridColumnHeader',
71                                         items: {
72                                                 ClientName: {
73                                                         id: 'gridXmlRpcColumn_ClientName',
74                                                         title: 'CLIENT NAME',
75                                                         orderAsc: {
76                                                                 id: 'gridXmlRpcOrder_ClientNameAsc',
77                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcClient.clientName', 'ASC')
78                                                         },
79                                                         orderDesc: {
80                                                                 id: 'gridXmlRpcOrder_ClientNameDesc',
81                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcClient.clientName', 'DESC')
82                                                         }
83                                                 },
84                                                 ValuationNumber: {
85                                                         id: 'gridXmlRpcColumn_ValuationNumber',
86                                                         title: 'VALUATION NUMBER',
87                                                         orderAsc: {
88                                                                 id: 'gridXmlRpcOrder_ValuationNumberAsc',
89                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'valuation.valuationNumber', 'ASC')
90                                                         },
91                                                         orderDesc: {
92                                                                 id: 'gridXmlRpcOrder_ValuationNumberDesc',
93                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'valuation.valuationNumber', 'DESC')
94                                                         }
95                                                 },
96                                                 CallbackUrl: {
97                                                         id: 'gridXmlRpcColumn_CallbackUrl',
98                                                         title: 'CALLBACK URL',
99                                                         orderAsc: {
100                                                                 id: 'gridXmlRpcOrder_CallbackUrlAsc',
101                                                                 bind: $.proxy(_w.xmlrpcclients.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.callbackUrl', 'ASC')
102                                                         },
103                                                         orderDesc: {
104                                                                 id: 'gridXmlRpcOrder_CallbackUrlDesc',
105                                                                 bind: $.proxy(_w.xmlrpcclients.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.callbackUrl', 'DESC')
106                                                         }
107                                                 },
108                                                 MethodName: {
109                                                         id: 'gridXmlRpcColumn_MethodName',
110                                                         title: 'METHOD',
111                                                         orderAsc: {
112                                                                 id: 'gridXmlRpcOrder_MethodNameAsc',
113                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.methodName', 'ASC')
114                                                         },
115                                                         orderDesc: {
116                                                                 id: 'gridXmlRpcOrder_MethodNameDesc',
117                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.methodName', 'DESC')
118                                                         }
119                                                 },
120                                                 Attempts: {
121                                                         id: 'gridXmlRpcColumn_Attempts',
122                                                         title: 'ATTEMPTS',
123                                                         orderAsc: {
124                                                                 id: 'gridXmlRpcOrder_AttemptsAsc',
125                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.attempts', 'ASC')
126                                                         },
127                                                         orderDesc: {
128                                                                 id: 'gridXmlRpcOrder_AttemptsDesc',
129                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.attempts', 'DESC')
130                                                         }
131                                                 },
132                                                 Created: {
133                                                         id: 'gridXmlRpcColumn_Created',
134                                                         title: 'CREATED',
135                                                         orderAsc: {
136                                                                 id: 'gridXmlRpcOrder_CreatedAsc',
137                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.created', 'ASC')
138                                                         },
139                                                         orderDesc: {
140                                                                 id: 'gridXmlRpcOrder_CreatedDesc',
141                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.created', 'DESC')
142                                                         }
143                                                 },
144                                                 Status: {
145                                                         id: 'gridXmlRpcColumn_Status',
146                                                         title: 'STATUS',
147                                                         orderAsc: {
148                                                                 id: 'gridXmlRpcOrder_StatusAsc',
149                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.status', 'ASC')
150                                                         },
151                                                         orderDesc: {
152                                                                 id: 'gridXmlRpcOrder_StatusDesc',
153                                                                 bind: $.proxy(_w.xmlrpccallbacklog.orderXmlRpcGrid, this, 'xmlRpcCallbackLog.status', 'DESC')
154                                                         }
155                                                 }
156                                         }
157                                 },
158                                 'gridXmlRpcColumnFilters': {
159                                         constructor: 'GridColumnFilter',
160                                         items: {
161                                                 ClientName : {
162                                                         id: 'gridXmlRpcFilter_ClientName',
163                                                         context: 'gridXmlRpcFilter'
164                                                 },
165                                                 ValuationNumber : {
166                                                         id: 'gridXmlRpcFilter_ValuationNumber',
167                                                         context: 'gridXmlRpcFilter'
168                                                 },
169                                                 CallbackUrl : {
170                                                         id: 'gridXmlRpcFilter_CallbackUrl',
171                                                         context: 'gridXmlRpcFilter'
172                                                 },
173                                                 MethodName: {
174                                                         id: 'gridXmlRpcFilter_MethodName',
175                                                         context: 'gridXmlRpcFilter'
176                                                 },
177                                                 Attempts : {
178                                                         id: 'gridXmlRpcFilter_Attempts',
179                                                         context: 'gridXmlRpcFilter'
180                                                 },
181                                                 Created: {
182                                                         id: 'gridXmlRpcFilter_Created',
183                                                         context: 'gridXmlRpcFilter'
184                                                 },
185                                                 Status: {
186                                                         id: 'gridXmlRpcFilter_Status',
187                                                         context: 'gridXmlRpcFilter'
188                                                 }
189                                         }
190                                 },
191                                 'gridXmlRpcRowRepeater': {},
192                                 'gridXmlRpcPager': {}
193                         });
194
195                 },
196
197                 loadXmlRpcGrid : function( contract, data, options )
198                 {
199                         App.API.execTask(
200                                         'gridSystemXmlRpcCallback', data, options,
201                                         _w.xmlrpccallbacklog._onXmlRpcGridDataReceived, _w.taskExecError
202                                         );
203                 },
204
205                 pageXmlRpcGrid : function( page )
206                 {
207                         _w.xmlrpccallbacklog.loadXmlRpcGrid( {}, {"Grid":{"Page":page}} );
208                 },
209
210                 clearXmlRpcGridContext : function()
211                 {
212                         $('.gridXmlRpcContext').val('');
213                         $('.gridXmlRpcFilter').val('');
214                         _w.xmlrpccallbacklog.searchXmlRpcGrid();
215                 },
216
217                 searchXmlRpcGrid : function()
218                 {
219                         var filter = {
220                                         count: 0,
221                                         filters: {}
222                         };
223
224                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_ClientName', 'xmlRpcClient.clientName');
225                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_ValuationNumber', 'valuation.valuationNumber');
226                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_CallbackUrl', 'xmlRpcCallbackLog.callbackUrl');
227                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_MethodName', 'xmlRpcCallbackLog.methodName');
228                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_Attempts', 'xmlRpcCallbackLog.attempts');
229                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_Created', 'xmlRpcCallbackLog.created');
230                         filter = _w.filterIfnotEmpty(filter, 'gridXmlRpcFilter_Status', 'xmlRpcCallbackLog.status');
231                         var request = {"Grid":{
232                             "Page": 1,
233                             "Filter": filter.filters
234                           }};
235                         _w.xmlrpccallbacklog.loadXmlRpcGrid( null, request, {} );
236                 },
237
238                 _onXmlRpcGridDataReceived : function( response )
239                 {
240                         _w.xmlrpccallbacklog.ti.hydrateParam('gridXmlRpcRowRepeater', {});
241                         _w.populateFilters(response.Data.Meta.Filters, {
242                                 'xmlRpcClient.clientName'                               : 'gridXmlRpcFilter_ClientName',
243                                 'valuation.valuationNumber'                     : 'gridXmlRpcFilter_ValuationNumber',
244                                 'xmlRpcCallbackLog.callbackUrl'                 : 'gridXmlRpcFilter_CallbackUrl',
245                                 'xmlRpcCallbackLog.methodName'                  : 'gridXmlRpcFilter_MethodName',
246                                 'xmlRpcCallbackLog.attempts'                    : 'gridXmlRpcFilter_Attempts',
247                                 'xmlRpcCallbackLog.created'                             : 'gridXmlRpcFilter_Created',
248                                 'xmlRpcCallbackLog.status'                              : 'gridXmlRpcFilter_Status'
249                         });
250                         _w.xmlrpcrequestlog.packetData = {};
251                         _w.xmlrpcrequestlog.responseData = {};
252                         var gridData = [];
253                         for (var i = 0; i < response.Data.DataSet.length; i++)
254                         {
255                                 var row = response.Data.DataSet[i];
256                                 _w.xmlrpcrequestlog.packetData['row' + row.id] = row.packet;
257                                 _w.xmlrpcrequestlog.responseData['row' + row.id] = row.response;
258                                 gridData.push({
259                                         rowId: row.id,
260                                         bind: function(meta) {
261                                                 $('#row' +  meta.rowId).click(function(e){
262                                                         var id = $(this).attr('id');
263
264                                                         var jspr = JSON.stringify(_w.xmlrpcrequestlog.packetData[id], undefined, 2);
265                                                         jspr = jspr.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
266                                                         jspr = jspr.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
267                                                         var cls = 'number';
268                                                         if (/^"/.test(match)) {
269                                                             if (/:$/.test(match)) {
270                                                                 cls = 'key';
271                                                             } else {
272                                                                 cls = 'string';
273                                                             }
274                                                         } else if (/true|false/.test(match)) {
275                                                             cls = 'boolean';
276                                                         } else if (/null/.test(match)) {
277                                                             cls = 'null';
278                                                         }
279                                                         return '<span class="' + cls + '">' + match + '</span>';
280                                                     });
281                                                         $('#modalbody').html('<pre>' + "Packet:\n" + jspr + '</pre><br/><br/>');
282
283                                                         var jspr = JSON.stringify(_w.xmlrpcrequestlog.responseData[id], undefined, 2);
284                                                         jspr = jspr.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
285                                                         jspr = jspr.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
286                                                                 var cls = 'number';
287                                                                 if (/^"/.test(match)) {
288                                                                         if (/:$/.test(match)) {
289                                                                                 cls = 'key';
290                                                                         } else {
291                                                                                 cls = 'string';
292                                                                         }
293                                                                 } else if (/true|false/.test(match)) {
294                                                                         cls = 'boolean';
295                                                                 } else if (/null/.test(match)) {
296                                                                         cls = 'null';
297                                                                 }
298                                                                 return '<span class="' + cls + '">' + match + '</span>';
299                                                         });
300                                                         $('#modalbody').append('<pre>' + "Response:\n" + jspr + '</pre>');
301
302                                                         $('#myModal').modal('toggle');
303                                                 });
304                                         },
305                                         prepend: {},
306                                         style: {},
307                                         items: {
308                                                 'id'                            : row.id,
309                                                 'ClientName'                    : row.xmlRpcClient.clientName,
310                                                 'ValuationNumber'               : row.valuation.valuationNumber,
311                                                 'CallbackUrl'                   : row.callbackUrl,
312                                                 'MethodName'                    : row.methodName,
313                                                 'Attempts'                              : row.attempts,
314                                                 'Created'                               : row.created,
315                                                 'Status'                                : row.status
316                                 }
317                                 });
318                         }
319                         _w.xmlrpccallbacklog.ti.hydrateParam('gridXmlRpcRowRepeater', {
320                                 constructor : 'GridDataRow',
321                                 items       : gridData
322                         });
323                         response.Data.Meta.itemName = 'userPager';
324                         response.Data.Meta.bind = _w.xmlrpccallbacklog.pageXmlRpcGrid;
325                         _w.xmlrpccallbacklog.ti.hydrateParam('gridXmlRpcPager', {
326                                 constructor : 'GridPager',
327                                 items       : [response.Data.Meta]
328                         });
329                 },
330
331                 orderXmlRpcGrid : function(field, direction)
332                 {
333                         var order = {};
334                         order[field] = direction;
335                         _w.xmlrpccallbacklog.loadXmlRpcGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );
336                 },
337
338                 _onExportReceived : function( response )
339                 {
340                         var win = window.open();
341                         win.document.write(response);
342                 }
343
344         };
345
346 })();