Git Repository Public Repository

namibia

URLs

Copy to Clipboard
 
df0489e1eeeeab5a9bd44e1d84fce49924fe1bac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
;(function(){

    window._w.systemauctions = {

        ti       : null,
        gridData : {},

        onTemplateReady : function( template, event, eventData )
        {
            _w.systemauctions.ti = _t[template];
            App.DataStore.setData('auctionstatuses',
                [
                    {"value":"Active", "label":"Active"},
                    {"value":"Sold", "label":"Sold"},
                    {"value":"Relist", "label":"Relist"},
                    {"value":"Undone", "label":"Undone"},
                ]
            );
            _w.systemauctions.ti.hydrate({
                'gridTitle': 'Auction',
                'gridTitleSubtext': 'Please use the filters below to narrow down the view',
                'gridTitleButtons': {
                    constructor: 'Button',
                    items: {
                        Export: {
                            preset: 'GridExport',
                            id: 'exportAuctionGrid',
                            handler: _w.systemauctions.exportAuctionGrid
                        }
                    }
                },
                'gridContextFilter': {
                    constructor: 'GridContextFilter',
                    items: {
                        RegNum: {
                            title: 'Search here:',
                            style: 'filter-input-wrapper',
                            id: 'gridAuctionContext_RegNo',
                            placeholder: 'Registration number',
                            context: 'gridAuctionContext'
                        },
                        Buttons: {
                            actions: true,
                            searchId: 'searchAuctionGrid',
                            bindSearch: _w.systemauctions.searchAuctionGrid,
                            clearId: 'clearAuctionGridContext',
                            bindClear: _w.systemauctions.clearAuctionGridContext
                        }
                    }
                },
                'gridColumnHeaders': {
                    constructor: 'GridColumnHeader',
                    items: {
                        ID: {
                            id: 'gridAuctionColumn_ID',
                            title: 'ID',
                            orderAsc: {
                                id: 'gridAuctionOrder_IDAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'auction.id', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_IDDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'auction.id', 'DESC')
                            }
                        },
                        Make: {
                            id: 'gridAuctionColumn_Make',
                            title: 'MAKE',
                            orderAsc: {
                                id: 'gridAuctionOrder_MakeAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'make.name', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_MakeDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'make.name', 'DESC')
                            }
                        },
                        Model: {
                            id: 'gridAuctionColumn_Model',
                            title: 'MODEL',
                            orderAsc: {
                                id: 'gridAuctionOrder_ModelAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'model.name', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_ModelDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'model.name', 'DESC')
                            }
                        },
                        Type: {
                            id: 'gridAuctionColumn_Type',
                            title: 'TYPE',
                            orderAsc: {
                                id: 'gridAuctionOrder_TypeAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'type.name', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_TypeDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'type.name', 'DESC')
                            },
                            style: 'type'
                        },
                        Year: {
                            id: 'gridAuctionColumn_Year',
                            title: 'YEAR',
                            orderAsc: {
                                id: 'gridAuctionOrder_YearAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'vehicleYear.name', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_YearDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'vehicleYear.name', 'DESC')
                            },
                            style: 'year'
                        },
                        KM: {
                            id: 'gridAuctionColumn_KM',
                            title: 'KM'S',
                            orderAsc: {
                                id: 'gridAuctionOrder_KMAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.km', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_KMDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.km', 'DESC')
                            },
                            style: 'kms'
                        },
                        Trade: {
                            id: 'gridAuctionColumn_Trade',
                            title: 'TRADE',
                            orderAsc: {
                                id: 'gridAuctionOrder_TradeAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.tradePrice', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_TradeDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.tradePrice', 'DESC')
                            }
                        },
                        Retail: {
                            id: 'gridAuctionColumn_Retail',
                            title: 'RETAIL',
                            orderAsc: {
                                id: 'gridAuctionOrder_RetailAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.retailPrice', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_RetailDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.retailPrice', 'DESC')
                            }
                        },
                        List: {
                            id: 'gridAuctionColumn_List',
                            title: 'NEW LIST PRICE',
                            orderAsc: {
                                id: 'gridAuctionOrder_ListAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.listPrice', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_ListDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'stock.listPrice', 'DESC')
                            }
                        },
                        Company: {
                            id: 'gridAuctionFilter_Company',
                            title: 'DEALERSHIP',
                            orderAsc: {
                                id: 'gridAuctionOrder_CompanyAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'company.name', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_CompanyDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'company.name', 'DESC')
                            }
                        },
                        Region: {
                            id: 'gridAuctionFilter_Region',
                            title: 'REGION',
                            orderAsc: {
                                id: 'gridAuctionOrder_RegionAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'region.name', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_RegionDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'region.name', 'DESC')
                            }
                        },
                        Bid: {
                            id: 'gridAuctionColumn_Bid',
                            title: 'HIGHEST BID',
                            orderAsc: {
                                id: 'gridAuctionOrder_BidAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'currentBid.amount', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_BidDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'currentBid.amount', 'DESC')
                            },
                            style: 'offer-submitted'
                        },
                        Time: {
                            id: 'gridAuctionColumn_Time',
                            title: 'TIME REMAINING'
                        },
                        Status: {
                            id: 'gridAuctionColumn_Status',
                            title: 'STATUS',
                            orderAsc: {
                                id: 'gridAuctionOrder_StatusAsc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'auction.jobState', 'ASC')
                            },
                            orderDesc: {
                                id: 'gridAuctionOrder_StatusDesc',
                                bind: $.proxy(_w.systemauctions.orderAuctionGrid, this, 'auction.jobState', 'DESC')
                            }
                        },
                    }
                },
                'gridColumnFilters': {
                    constructor: 'GridColumnFilter',
                    items: {
                        ID: {
                            id: 'gridAuctionFilter_ID',
                            context: 'gridAuctionFilter'
                        },
                        Make: {
                            id: 'gridAuctionFilter_Make',
                            context: 'gridAuctionFilter'
                        },
                        Model: {
                            id: 'gridAuctionFilter_Model',
                            context: 'gridAuctionFilter'
                        },
                        Type: {
                            id: 'gridAuctionFilter_Type',
                            context: 'gridAuctionFilter'
                        },
                        Year: {
                            id: 'gridAuctionFilter_Year',
                            context: 'gridAuctionFilter'
                        },
                        KM: {
                            id: 'gridAuctionFilter_KM',
                            context: 'gridAuctionFilter'
                        },
                        Trade: {
                            id: 'gridAuctionFilter_Trade',
                            context: 'gridAuctionFilter'
                        },
                        Retail: {
                            id: 'gridAuctionFilter_Retail',
                            context: 'gridAuctionFilter'
                        },
                        List: {
                            id: 'gridAuctionColumn_List',
                            context: 'gridAuctionFilter'
                        },
                        Company: {
                            id: 'gridAuctionFilter_Company',
                            context: 'gridAuctionFilter'
                        },
                        Region: {
                            id: 'gridAuctionFilter_Region',
                            context: 'gridAuctionFilter'
                        },

                        Bid: {
                            id: 'gridAuctionFilter_Bid',
                            context: 'gridAuctionFilter'
                        },
                        Time: {},
                        Status: {
                            id: 'gridAuctionFilter_Status',
                            context: 'gridAuctionFilter',
                            dataStoreId : 'auctionstatuses',
                            selectEmpty : 'All'
                        },
                    }
                },
                'gridRowRepeater': {},
                'gridPager': {}
            });

            // Retrieve initial grid data.
            if (null == App.API.taskContract('gridAuction'))
            {
                App.API.getTask(
                    'gridAdminAuction', 'Auction', 'Auction.AdminGrid', null,
                    {}, _w.systemauctions.loadAuctionGrid, _w.taskContractError
                );
            }
            else
            {
                _w.systemauctions.loadAuctionGrid( null, {}, {} );
            }
        },

        onTemplatePublished : function()
        {
            $(".gridAuctionFilter").keypress(function (evt) {
                var charCode = evt.charCode || evt.keyCode;
                if (charCode  == 13) { //Enter key's keycode
                    $('#btnSearch').click();
                }
            });

            $('#exportAuctionGrid').prop('disabled', !App.permissions.pgGridExport);
            //$('#btnClearSearch').click(_w.systemauctions.clearAuctionGridContext);
            //$('#btnSearch').click(_w.systemauctions.searchAuctionGrid);

            var setTableFormWidth = function()
            {
                $('.table-form').css({
                    width : $(window).width() * 0.96
                });
            };

            $(window).on('resize', setTableFormWidth );
            setTableFormWidth();

            setTimeout(_w.systemauctions.refreshGrid, 30000);
        },

        refreshGrid : function()
        {
            if ('systemauctions' != App.activePage)
            {
                return;
            }
            _w.systemauctions.loadAuctionGrid( null, {}, {} );
            setTimeout(_w.systemauctions.refreshGrid, 30000);
        },

        pageAuctionGrid : function( page )
        {
            _w.systemauctions.loadAuctionGrid( {}, {"Grid":{"Page":page}} );
        },

        loadAuctionGrid : function( contract, data, options )
        {
            App.API.execTask(
                'gridAdminAuction', data, options,
                _w.systemauctions._onAuctionGridDataReceived, _w.taskExecError
            );
        },

        _buildGrid : function()
        {
            _w.systemauctions.ti.hydrateParam('gridRowRepeater', {
                constructor : 'GridDataRow',
                items	    : _w.systemauctions.gridData
            });
        },

        _onAuctionGridDataReceived : function( response )
        {
            _w.systemauctions.ti.hydrateParam('gridRowRepeater', {});
            _w.populateFilters(response.Data.Meta.Filters, {
                'id': 'gridAuctionFilter_ID',
                'make.name': 'gridAuctionFilter_Make',
                'model.name': 'gridAuctionFilter_Model',
                'type.name': 'gridAuctionFilter_Type',
                'vehicleYear.name': 'gridAuctionFilter_Year',
                'stock.km': 'gridAuctionFilter_KM',
                'stock.tradePrice': 'gridAuctionFilter_Trade',
                'stock.retailPrice': 'gridAuctionFilter_Retail',
                'stock.listPrice': 'gridAuctionFilter_List',
                'company.name': 'gridAuctionFilter_Company',
                'region.name': 'gridAuctionFilter_Region',
                'currentBid.amount': 'gridAuctionFilter_Bid',
                'auction.jobState': 'gridAuctionFilter_Status'
            });
            $('select.gridAuctionFilter').each(function(i, elem) {
                $(elem).selectpicker('refresh');
            });
            _w.systemauctions.gridData = {};
            for (var i = 0; i < response.Data.DataSet.length; i++)
            {
                var row = response.Data.DataSet[i];
                _w.systemauctions.gridData['i' + row.id] = {
                    url: 'systembidview',
                    prepend: {
                        Trade  : 'R ',
                        Retail : 'R ',
                        Bid    : 'R '
                    },
                    style: {},
                    items: {
                        'id'	  : row.id,
                        'ID'	  : row.id,
                        'Make'	  : row.stock.type.model.make.name,
                        'Model'   : row.stock.type.model.name,
                        'Type'	  : row.stock.type.name,
                        'Year'	  : row.stock.vehicleYear.name,
                        'KM'	  : row.stock.km,
                        'Trade'   : row.stock.tradePrice,
                        'Retail'  : row.stock.retailPrice,
                        'List'    : row.stock.listPrice,
                        'Company' : row.company.name,
                        'Region'  : row.company.city.region.name,
                        'Bid'     : row.currentBid ? row.currentBid.amount : row.reservePrice,
                        'Time'    : App.Util.calculateTimeLeft(row.created, null, row.endDate),
                        'Status'  : row.jobState
                    }
                };
            }
            _w.systemauctions._buildGrid();
            response.Data.Meta.itemName = 'stockPager';
            response.Data.Meta.bind = _w.systemauctions.pageAuctionGrid;
            _w.systemauctions.ti.hydrateParam('gridPager', {
                constructor : 'GridPager',
                items	    : [response.Data.Meta]
            });
        },

        exportAuctionGrid : function()
        {
            App.API.execTask(
                'gridAdminAuction', {}, {'ExportToExcel': true},
                _w.systemauctions._onExportReceived, _w.taskExecError,
                'EXPORT', true
            );
        },

        _onExportReceived : function( response )
        {
            var win = window.open();
            win.document.write(response);
        },

        clearAuctionGridContext : function()
        {
            try
            {
                $('select.gridAuctionFilter').each(function(i, elem) {
                    $(elem).selectpicker('val', '');
                    $(elem).selectpicker('refresh');
                });
            }
            catch (err) { console.log(err); }
            $('.gridAuctionContext').val('');
            $('.gridAuctionFilter').val('');
            _w.systemauctions.searchAuctionGrid(true);
        },

        searchAuctionGrid : function(resetOrder)
        {
            var filter = {
                count: 0,
                filters: {}
            };
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_ID', 'id');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Make', 'make.name');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Model', 'model.name');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Type', 'type.name');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Year', 'vehicleYear.name');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionContext_RegNo', 'stock.registrationNumber');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_KM', 'stock.km');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Trade', 'stock.tradePrice');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Retail', 'stock.retailPrice');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_List', 'stock.listPrice');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Company', 'company.name');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Region', 'region.name');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Bid', 'currentBid.amount');
            filter = _w.filterIfnotEmpty(filter, 'gridAuctionFilter_Status', 'auction.jobState');
            var request = {"Grid":{
                "Page": 1,
                "Filter": filter.filters
            }};
            if (resetOrder)
            {
                request.Grid.OrderBy = {'auction.created': 'DESC'};
            }

            _w.systemauctions.loadAuctionGrid( null, request, {} );
        },

        orderAuctionGrid : function(field, direction)
        {
            var order = {};
            order[field] = direction;
            _w.systemauctions.loadAuctionGrid( {}, {"Grid":{"Page": 1, "OrderBy": order}} );
        }
    };

})();

Commits for namibiapublic/js/app/admin-workspace/systemauctions.js

Diff revisions: vs.
Revision Author Commited Message
df0489 ... Mark Fri 14 Oct, 2016 10:01:00 +0000

initial commit