initial commit
[namibia] / public / js / app / admin-workspace / systemdisputes.js
1 ;(function(){
2
3         window._w.systemdisputes = {
4
5                 itemId        : null,
6                 itemData      : null,
7                 formMeta      : null,
8                 offerId       : null,
9                 offerData     : null,
10                 formOfferMeta : null,
11                 ti            : null,
12                 limited       : false,
13                 newItem       : false,
14
15                 onTemplateReady : function( template, event, eventData )
16                 {
17                         _w.systemdisputes.ti = _t[template];
18
19                         _w.systemdisputes.initGrids();
20
21                         // Dispute grid
22                         if (null == App.API.taskContract('gridSystemDispute'))
23                         {
24                                 App.API.getTask(
25                                                 'gridSystemDispute', 'Dispute', 'Dispute.AdminGrid', null,
26                                                 {}, _w.systemdisputes.loadDisputeGrid, _w.taskContractError
27                                                 );
28                         }
29                         else
30                         {
31                                 _w.systemdisputes.loadDisputeGrid( null, {}, {} );
32                         }
33                 },
34
35                 onTemplatePublished : function( template, event, eventData )
36                 {
37                         _w.systemdisputes.ti = _t[template];
38
39                         // Dispute grid
40             $('#btnDisputeClearSearch').click(_w.systemdisputes.clearDisputeGridContext);
41             $('#btnDisputeSearch').click(_w.systemdisputes.searchDisputeGrid);
42
43                 },
44
45                 initGrids : function()
46                 {
47
48                         _w.systemdisputes.ti.hydrate({
49                                 // Dispute grid
50                                 'gridDisputeTitle': 'Manage system disputes',
51                                 'gridDisputeColumnHeaders': {
52                                         constructor: 'GridColumnHeader',
53                                         items: {
54                                                 Plaintive: {
55                                                         id: 'gridDisputeColumn_Plaintive',
56                                                         title: 'PLAINTIFF',
57                                                         orderAsc: {
58                                                                 id: 'gridDisputeOrder_PlaintiveAsc',
59                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'fromCompany.name', 'ASC')
60                                                         },
61                                                         orderDesc: {
62                                                                 id: 'gridDisputeOrder_PlaintiveDesc',
63                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'fromCompany.name', 'DESC')
64                                                         }
65                                                 },
66                                                 Defendant: {
67                                                         id: 'gridDisputeColumn_Defendant',
68                                                         title: 'DEFENDANT',
69                                                         orderAsc: {
70                                                                 id: 'gridDisputeOrder_DefendantAsc',
71                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'againstCompany.name', 'ASC')
72                                                         },
73                                                         orderDesc: {
74                                                                 id: 'gridDisputeOrder_DefendantDesc',
75                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'againstCompany.name', 'DESC')
76                                                         }
77                                                 },
78                                                 Make: {
79                                                         id: 'gridDisputeColumn_Make',
80                                                         title: 'VEHICLE MAKE',
81                                                         orderAsc: {
82                                                                 id: 'gridDisputeOrder_MakeAsc',
83                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'make.name', 'ASC')
84                                                         },
85                                                         orderDesc: {
86                                                                 id: 'gridDisputeOrder_MakeDesc',
87                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'make.name', 'DESC')
88                                                         }
89                                                 },
90                                                 Model: {
91                                                         id: 'gridDisputeColumn_Model',
92                                                         title: 'MODEL',
93                                                         orderAsc: {
94                                                                 id: 'gridDisputeOrder_ModelAsc',
95                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'model.name', 'ASC')
96                                                         },
97                                                         orderDesc: {
98                                                                 id: 'gridDisputeOrder_ModelDesc',
99                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'model.name', 'DESC')
100                                                         }
101                                                 },
102                                                 Type: {
103                                                         id: 'gridDisputeColumn_Type',
104                                                         title: 'TYPE',
105                                                         orderAsc: {
106                                                                 id: 'gridDisputeOrder_TypeAsc',
107                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'type.name', 'ASC')
108                                                         },
109                                                         orderDesc: {
110                                                                 id: 'gridDisputeOrder_TypeDesc',
111                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'type.name', 'DESC')
112                                                         }
113                                                 },
114                                                 Reg: {
115                                                         id: 'gridDisputeColumn_Reg',
116                                                         title: 'REGISTRATION',
117                                                         orderAsc: {
118                                                                 id: 'gridDisputeOrder_RegAsc',
119                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'stock.registrationNumber', 'ASC')
120                                                         },
121                                                         orderDesc: {
122                                                                 id: 'gridDisputeOrder_RegDesc',
123                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'stock.registrationNumber', 'DESC')
124                                                         }
125                                                 },
126                                                 Status: {
127                                                         id: 'gridDisputeColumn_Status',
128                                                         title: 'STATUS',
129                                                         orderAsc: {
130                                                                 id: 'gridDisputeOrder_StatusAsc',
131                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'dispute.jobState', 'ASC')
132                                                         },
133                                                         orderDesc: {
134                                                                 id: 'gridDisputeOrder_StatusDesc',
135                                                                 bind: $.proxy(_w.systemdisputes.orderDisputeGrid, this, 'dispute.jobState', 'DESC')
136                                                         }
137                                                 }
138                                         }
139                                 },
140                                 'gridDisputeColumnFilters': {
141                                         constructor: 'GridColumnFilter',
142                                         items: {
143                                                 Plaintive: {
144                                                         id: 'gridDisputeFilter_Plaintive',
145                                                         context: 'gridDisputeFilter'
146                                                 },
147                                                 Defendant: {
148                                                         id: 'gridDisputeFilter_Defendant',
149                                                         context: 'gridDisputeFilter'
150                                                 },
151                                                 Make: {
152                                                         id: 'gridDisputeFilter_Make',
153                                                         context: 'gridDisputeFilter'
154                                                 },
155                                                 Model: {
156                                                         id: 'gridDisputeFilter_Model',
157                                                         context: 'gridDisputeFilter'
158                                                 },
159                                                 Type: {
160                                                         id: 'gridDisputeFilter_Type',
161                                                         context: 'gridDisputeFilter'
162                                                 },
163                                                 Reg: {
164                                                         id: 'gridDisputeFilter_Reg',
165                                                         context: 'gridDisputeFilter'
166                                                 },
167                                                 Status: {
168                                                         id: 'gridDisputeFilter_Status',
169                                                         context: 'gridDisputeFilter'
170                                                 }
171                                         }
172                                 },
173                                 'gridDisputeRowRepeater': {},
174                                 'gridDisputePager': {}
175                         });
176
177                 },
178
179                 loadDisputeGrid : function( contract, data, options )
180                 {
181                         App.API.execTask(
182                                         'gridSystemDispute', data, options,
183                                         _w.systemdisputes._onDisputeGridDataReceived, _w.taskExecError
184                                         );
185                 },
186
187                 pageDisputeGrid : function( page )
188                 {
189                         _w.systemdisputes.loadDisputeGrid( {}, {"Grid":{"Page":page}} );
190                 },
191
192                 clearDisputeGridContext : function()
193                 {
194                         $('.gridDisputeContext').val('');
195                         $('.gridDisputeFilter').val('');
196                         _w.systemdisputes.searchDisputeGrid();
197                 },
198
199                 searchDisputeGrid : function()
200                 {
201                         var filter = {
202                                         count: 0,
203                                         filters: {}
204                         };
205
206                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Plaintive', 'fromCompany.name');
207                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Defendant', 'againstCompany.name');
208                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Make', 'make.name');
209                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Model', 'model.name');
210                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Type', 'type.name');
211                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Reg', 'stock.registrationNumber');
212                         filter = _w.filterIfnotEmpty(filter, 'gridDisputeFilter_Status', 'dispute.jobState');
213                         var request = {"Grid":{
214                             "Page": 1,
215                             "Filter": filter.filters
216                           }};
217                         _w.systemdisputes.loadDisputeGrid( null, request, {} );
218                 },
219
220                 _onDisputeGridDataReceived : function( response )
221                 {
222                         _w.systemdisputes.ti.hydrateParam('gridDisputeRowRepeater', {});
223                         _w.populateFilters(response.Data.Meta.Filters, {
224                                 'fromCompany.name'                   : 'gridDisputeFilter_Plaintive',
225                                 'againstCompany.name'                : 'gridDisputeFilter_Defendant',
226                                 'auction.stock.type.model.make.name' : 'gridDisputeFilter_Make',
227                                 'auction.stock.type.model.name'      : 'gridDisputeFilter_Model',
228                                 'auction.stock.type..name'           : 'gridDisputeFilter_Type',
229                                 'auction.stock.registrationNumber'   : 'gridDisputeFilter_Reg',
230                                 'jobState'                           : 'gridDisputeFilter_Status'
231                         });
232                         var gridData = [];
233                         for (var i = 0; i < response.Data.DataSet.length; i++)
234                         {
235                                 var row = response.Data.DataSet[i];
236                                 gridData.push({
237                                         url: 'systemdisputeview',
238                                         prepend: {},
239                                         style: {},
240                                         items: {
241                                                 'id'        : row.id,
242                                                 'Plaintive' : row.fromCompany.name,
243                                                 'Defendant' : row.againstCompany.name,
244                                                 'Make'      : row.auction.stock.type.model.make.name,
245                                                 'Model'     : row.auction.stock.type.model.name,
246                                                 'Type'      : row.auction.stock.type.name,
247                                                 'Reg'       : row.auction.stock.registrationNumber,
248                                                 'Status'    : row.jobState
249                                 }
250                                 });
251                         }
252                         _w.systemdisputes.ti.hydrateParam('gridDisputeRowRepeater', {
253                                 constructor : 'GridDataRow',
254                                 items       : gridData
255                         });
256                         response.Data.Meta.itemName = 'disputePager';
257                         response.Data.Meta.bind = _w.systemdisputes.pageDisputeGrid;
258                         _w.systemdisputes.ti.hydrateParam('gridDisputePager', {
259                                 constructor : 'GridPager',
260                                 items       : [response.Data.Meta]
261                         });
262                 },
263
264                 orderDisputeGrid : function(field, direction)
265                 {
266                         var order = {};
267                         order[field] = direction;
268                         _w.systemdisputes.loadDisputeGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );
269                 }
270
271         };
272
273 })();