Project

General

Profile

Support #1714 » MinovaXtype.js

Tri Rizqiaty, 02/02/2023 05:33 PM

 
1
var isMobile = {
2
    Android: function () {
3
        return navigator.userAgent.match(/Android/i);
4
    },
5
    BlackBerry: function () {
6
        return navigator.userAgent.match(/BlackBerry/i);
7
    },
8
    iOS: function () {
9
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
10
    },
11
    Opera: function () {
12
        return navigator.userAgent.match(/Opera Mini/i);
13
    },
14
    Windows: function () {
15
        return navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i);
16
    },
17
    any: function () {
18
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
19
    }
20
};
21
var isDesk = true;
22
var layoutForm = 'column';
23
if (isMobile.Android() != null || isMobile.BlackBerry() != null || isMobile.iOS() != null) {
24
    isDesk = false;
25
    layoutForm = 'column'
26
} else {
27
    isDesk = true;
28
    layoutForm = 'column';
29
}
30

    
31
Ext.define('MinovaUtil.MinovaES.MinovaLookupGridold', {
32
    extend: 'Ext.form.field.Trigger',
33
    alias: ['widget.minovalookupgridold'],
34

    
35
    tableName: undefined,
36
    param: undefined,
37
    formtarget: undefined,
38
    anchor: '50%',
39
    pagesize: undefined,
40
    fieldTarget: undefined,
41
    fieldValue: undefined,
42
    isGrid: undefined,
43
    isMultiSelect: undefined,
44
    LookupFunction: undefined,
45
    SearchFunction: undefined,
46

    
47
    trigger1Cls: Ext.baseCSSPrefix + 'form-clear-trigger',
48
    trigger2Cls: Ext.baseCSSPrefix + 'form-search-trigger',
49
    setValue: function (v) {
50
        var me = this;
51
        var value = v;
52
        this.value = '';
53
        this.value = v;
54
        if (value != "" && value != undefined) {
55
            data_ = undefined;
56
            Ext.Ajax.request({
57
                async: false,
58
                method: 'POST',
59
                url: '/UserControl/GetStore',
60
                params: {
61
                    tableName: 'PDSCMTABLE',
62
                    param: this.tableName + ',' + v + ',hasil'
63
                },
64
                success: function (response) {
65
                    var results = Ext.decode(response.responseText);
66
                    data_ = results.data
67
                    if (data_.length > 0) {
68
                        me.setRawValue(v + ' - ' + data_[0].hasil)
69

    
70
                    }
71
                }
72
            });
73
        }
74
    },
75
    getValue: function () {
76
        var hasil = this.value;
77
        if (this.valData) {
78
            hasil = this.valData;
79
        }
80
        return hasil;
81
    },
82
    getSubmitValue: function () {
83
        var hasil = this.value;
84
        if (this.valData) {
85
            hasil = this.valData;
86
        }
87
        return hasil;
88
    },
89
    initComponent: function () {
90
        //var formtarget_ = this.formtarget;
91
        var pagesize = this.pagesize;
92
        var tableName = this.tableName;
93
        this.callParent();
94
    },
95
    onRender: function () {
96
        var me = this,
97
		el;
98

    
99
        me.callParent(arguments);
100

    
101
        el = me.triggerEl.first().parent();
102
        el.setVisibilityMode(Ext.Element.DISPLAY);
103
        el.hide();
104
    },
105

    
106
    onChange: function (newVal, oldVal) {
107
        var me = this
108
        el = me.triggerEl.first().parent();
109

    
110
        me.callParent(arguments);
111

    
112
        if (newVal.length) {
113
            el.show();
114
        } else {
115
            el.hide();
116
        }
117
    },
118

    
119
    onTrigger1Click: function (event) {
120
        var me = this;
121
        if (me.hideTrigger) {
122
            return;
123
        }
124
        me.setValue("");
125
        me.fireEvent('cleartriggerclick', me, event);
126
    },
127
    onTrigger2Click: function () {
128
        //alert('asa')
129
        var isGrid_ = this.isGrid;
130
        var fieldTarget_ = this.fieldTarget;
131
        var formtarget_ = this.formtarget;
132
        var fieldValue_ = this.fieldValue;
133
        var tableName = this.tableName;
134
        var LookupFunction_ = this.LookupFunction;
135
        var SearchFunction_ = this.SearchFunction;
136
        var pnl = Ext.ComponentQuery.query('[name=' + formtarget_ + ']')[0];
137

    
138
        if (tableName == 'PDSPY0006') {
139
            Ext.create('Ext.window.Window', {
140
                title: 'Lookup - ' + this.fieldLabel,
141
                //hamid
142
                controller: 'rdlreportPayResult',
143
                //end hamid
144
                height: 530,
145
                width: 500,
146
                fieldTarget: fieldTarget_,
147
                fieldValue: fieldValue_,
148
                isGrid: isGrid_,
149
                name: 'lookupMain',
150
                //modal: true,
151
                listeners: {
152
                    'beforeshow': function (g) {
153
                        pnl.mask('Loading...');
154
                        setTimeout(function () {
155
                            pnl.unmask();
156
                        }, 100);
157
                    }
158
                },
159
                items: [{
160
                    xtype: 'minovaform',
161
                    bodyBorder: false,
162
                    MaxHeigth: '100',
163
                    cls: 'borderLookup',
164
                    border: false,
165
                    scroll: true,
166
                    isLookup: true,
167
                    name: "formLookupFilter",
168
                    tableName: this.tableName,
169
                    buttons: [{
170
                        text: 'Search',
171
                        //iconCls : 'fa-edit',
172
                        //style : 'font-family: FontAwesome',
173
                        handler: function () {
174
                            var store = Ext.data.StoreManager.lookup('lookupStore');
175
                            var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
176
                            grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
177
                            var values_ = form.getValues();
178
                            var fields_ = form.getFields().items;
179
                            var param_ = '';
180
                            for (var i = 0; i < fields_.length; i++) {
181
                                var val_ = form.getFields().items[i].getValue();
182
                                var xtype_ = form.getFields().items[i].xtype;
183
                                var oprator_ = '[like]';
184
                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
185
                                    oprator_ = '[Equal]';
186
                                }
187
                                if (xtype_ == 'datefield') {
188
                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
189
                                        oprator_ = '[LessThanEqual]';
190
                                    } else {
191
                                        oprator_ = '[GreaterThanEqual]';
192
                                    }
193
                                }
194
                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
195
                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
196
                                }
197
                            }
198
                            store.proxy.extraParams = {
199
                                tableName: grid.tableName,
200
                                param: param_,
201
                                menuId: MinovaUtil.GetMenuID()
202
                            };
203
                            store.removeAll();
204
                            store.reload();
205
                            store.loadPage(1);
206
                        }
207

    
208
                    }
209
                    ],
210
                }, {
211
                    xtype: 'minovagrid1',
212
                    isLookup: true,
213
                    autoLoad: false,
214
                    minHeight: 280,
215
                    height: 380,
216
                    tableName: this.tableName,
217
                    param: '',
218
                    //name: 'gridForm' + this.tableName,
219
                    name: 'gridLookup',
220
                    hidebutton: 0,
221
                    pagesize: 25,
222
                    storename: 'lookupStore',
223
                    listeners: {
224
                        itemdblclick: function (g) {
225

    
226
                            var me = this;
227
                            var selection = this.getView().getSelectionModel().getSelection()[0];
228
                            var name_ = 'form[name=' + formtarget_ + ']';
229
                            var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
230
                            var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
231
                            var targetField = mainLookup.fieldTarget;
232
                            if (mainLookup.isGrid) {
233
                                if (targetField) {
234
                                    targetField = targetField.split('$')
235
                                    var dt = targetField[0].split(',');
236
                                    var fieldValue = targetField[1].split(',');
237
                                    if (fieldValue.length > 0) {
238
                                        for (i in dt) {
239
                                            field_ = dt[i];
240
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
241
                                        }
242
                                    } else {
243
                                        for (i in dt) {
244
                                            field_ = dt[i];
245
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
246
                                        }
247
                                    }
248

    
249
                                }
250
                            }
251
                            //else {// untuk form
252
                            if (targetField) {
253
                                var dt = targetField.split(',');
254
                                var fieldValue = mainLookup.fieldValue.split(',');
255
                                if (fieldValue.length > 0) {
256
                                    for (i in dt) {
257
                                        field_ = dt[i];
258
                                        Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
259
                                    }
260
                                } else {
261
                                    for (i in dt) {
262
                                        field_ = dt[i];
263
                                        Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
264
                                    }
265
                                }
266
                            } else {
267
                                form_.setValues(selection.data);
268
                            }
269
                            //}
270

    
271
                            mainLookup.destroy();
272
                        },
273
                        beforeedit: function (grid) {
274
                            return false;
275
                        }
276
                    },
277
                    dockedItems: [{
278
                        xtype: 'pagingtoolbar',
279
                        store: 'lookupStore',
280
                        dock: 'bottom',
281
                        pageSize: 25,
282
                        displayInfo: true
283
                    }
284
                    ]
285

    
286
                }, ]
287
            }).show();
288
        } else {
289
            // hamid
290
            Ext.create('Ext.window.Window', {
291
                title: 'Lookup - ' + this.fieldLabel,
292
                height: 560,
293
                width: 500,
294
                fieldTarget: fieldTarget_,
295
                fieldValue: fieldValue_,
296
                isGrid: isGrid_,
297
                name: 'lookupMain',
298
                //modal: true,
299
                listeners: {
300
                    'beforeshow': function (g) {
301
                        pnl.mask('Loading...');
302
                        setTimeout(function () {
303
                            pnl.unmask();
304
                        }, 100);
305
                    }
306
                },
307
                items: [{
308
                    xtype: 'minovaform',
309
                    bodyBorder: false,
310
                    MaxHeigth: '100',
311
                    cls: 'borderLookup',
312
                    border: false,
313
                    MaxHeigth: '30',
314
                    scroll: true,
315
                    isLookup: true,
316
                    name: "formLookupFilter",
317
                    tableName: this.tableName,
318
                    buttons: [{
319
                        text: 'Search',
320
                        //iconCls : 'fa-edit',
321
                        //style : 'font-family: FontAwesome',
322
                        handler: function () {
323

    
324
                            var store = Ext.data.StoreManager.lookup('lookupStore');
325
                            var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
326
                            grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
327
                            var values_ = form.getValues();
328
                            var fields_ = form.getFields().items;
329
                            var param_ = '';
330
                            for (var i = 0; i < fields_.length; i++) {
331
                                var val_ = form.getFields().items[i].getValue();
332
                                var xtype_ = form.getFields().items[i].xtype;
333
                                var oprator_ = '[like]';
334
                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
335
                                    oprator_ = '[Equal]';
336
                                }
337
                                if (xtype_ == 'datefield') {
338
                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
339
                                        oprator_ = '[LessThanEqual]';
340
                                    } else {
341
                                        oprator_ = '[GreaterThanEqual]';
342
                                    }
343
                                }
344
                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
345
                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
346
                                }
347
                            }
348

    
349
                            if (SearchFunction_ != undefined && SearchFunction_ != "") {
350
                                eval(SearchFunction_);
351
                            } else {
352
                                store.proxy.extraParams = {
353
                                    tableName: grid.tableName,
354
                                    param: param_,
355
                                    menuId: MinovaUtil.GetMenuID()
356
                                };
357
                            }
358
                            store.removeAll();
359
                            store.reload();
360
                            store.loadPage(1);
361
                        }
362

    
363
                    }
364
                    ],
365
                }, {
366
                    xtype: 'minovagrid1',
367
                    isLookup: true,
368
                    autoLoad: false,
369
                    minHeight: 240,
370
                    height: 340,
371
                    tableName: this.tableName,
372
                    param: '',
373
                    //name: 'gridForm' + this.tableName,
374
                    name: 'gridLookup',
375
                    hidebutton: 0,
376
                    pagesize: 25,
377
                    storename: 'lookupStore',
378
                    listeners: {
379
                        itemdblclick: function (g) {
380
                            var LookupFunction = LookupFunction_;
381

    
382
                            var me = this;
383
                            var selection = this.getView().getSelectionModel().getSelection()[0];
384
                            var pnlMain = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0];
385
                            var name_ = 'form[name=' + formtarget_ + ']';
386
                            if (pnlMain) {
387
                                name_ = 'form[name=' + formtarget_ + pnlMain.nameTable + ']';
388
                            }
389

    
390
                            var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
391
                            var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
392
                            var targetField = mainLookup.fieldTarget;
393
                            if (mainLookup.isGrid) {
394
                                if (targetField) {
395
                                    targetField = targetField.split('$')
396
                                    var dt = targetField[0].split(',');
397
                                    var fieldValue = targetField[1].split(',');
398
                                    if (fieldValue.length > 0) {
399
                                        for (i in dt) {
400
                                            field_ = dt[i];
401
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
402
                                        }
403
                                    } else {
404
                                        for (i in dt) {
405
                                            field_ = dt[i];
406
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
407
                                        }
408
                                    }
409

    
410
                                }
411
                            } else { // untuk form
412
                                if (targetField) {
413
                                    var dt = targetField.split(',');
414
                                    var fieldValue = mainLookup.fieldValue.split(',');
415
                                    if (fieldValue.length > 0) {
416
                                        for (i in dt) {
417
                                            field_ = dt[i];
418
                                            Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
419
                                        }
420
                                    } else {
421
                                        for (i in dt) {
422
                                            field_ = dt[i];
423
                                            Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
424
                                        }
425
                                    }
426
                                } else {
427
                                    form_.setValues(selection.data);
428
                                }
429
                            }
430
                            eval(LookupFunction);
431
                            mainLookup.destroy();
432
                        },
433
                        beforeedit: function (grid) {
434
                            return false;
435
                        }
436
                    },
437
                    dockedItems: [{
438
                        xtype: 'pagingtoolbar',
439
                        store: 'lookupStore',
440
                        dock: 'bottom',
441
                        pageSize: 25,
442
                        displayInfo: true
443
                    }
444
                    ]
445

    
446
                }, ]
447
            }).show();
448
        }
449
        //Ext.create('Ext.window.Window', {
450
        //    title: 'Lookup - ' + this.fieldLabel,
451
        //    height: 530,
452
        //    width: 500,
453
        //    fieldTarget: fieldTarget_,
454
        //    fieldValue: fieldValue_,
455
        //    isGrid: isGrid_,
456
        //    name: 'lookupMain',
457
        //    //modal: true,
458
        //    listeners: {
459
        //        'beforeshow': function (g) {
460
        //            pnl.mask('Loading...');
461
        //            setTimeout(function () {
462
        //                pnl.unmask();
463
        //            }, 100);
464
        //        }
465
        //    },
466
        //    items: [{
467
        //        xtype: 'minovaform',
468
        //        bodyBorder: false,
469
        //        MaxHeigth: '100',
470
        //        cls: 'borderLookup',
471
        //        border: false,
472
        //        MaxHeigth: '30',
473
        //        scroll: true,
474
        //        isLookup: true,
475
        //        name: "formLookupFilter",
476
        //        tableName: this.tableName,
477
        //        buttons: [{
478
        //            text: 'Search',
479
        //            //iconCls : 'fa-edit',
480
        //            //style : 'font-family: FontAwesome',
481
        //            handler: function () {
482
        //                var store = Ext.data.StoreManager.lookup('lookupStore');
483
        //                var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
484
        //                grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
485
        //                var values_ = form.getValues();
486
        //                var fields_ = form.getFields().items;
487
        //                var param_ = '';
488
        //                for (var i = 0; i < fields_.length; i++) {
489
        //                    var val_ = form.getFields().items[i].getValue();
490
        //                    var xtype_ = form.getFields().items[i].xtype;
491
        //                    var oprator_ = '[like]';
492
        //                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
493
        //                        oprator_ = '[Equal]';
494
        //                    }
495
        //                    if (xtype_ == 'datefield') {
496
        //                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
497
        //                            oprator_ = '[LessThanEqual]';
498
        //                        } else {
499
        //                            oprator_ = '[GreaterThanEqual]';
500
        //                        }
501
        //                    }
502
        //                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
503
        //                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
504
        //                    }
505
        //                }
506
        //                store.proxy.extraParams = {
507
        //                    tableName: grid.tableName,
508
        //                    param: param_
509
        //                };
510
        //                store.removeAll();
511
        //                store.reload();
512
        //                store.loadPage(1);
513
        //            }
514

    
515
        //        }
516
        //        ],
517
        //    }, {
518
        //        xtype: 'minovagrid1',
519
        //        isLookup: true,
520
        //        autoLoad: false,
521
        //        minHeight: 280,
522
        //        height: 380,
523
        //        tableName: this.tableName,
524
        //        param: '',
525
        //        //name: 'gridForm' + this.tableName,
526
        //        name: 'gridLookup',
527
        //        hidebutton: 0,
528
        //        pagesize: 25,
529
        //        storename: 'lookupStore',
530
        //        listeners: {
531
        //            itemdblclick: function (g) {
532
        //                var me = this;
533
        //                var selection = this.getView().getSelectionModel().getSelection()[0];
534
        //                var name_ = 'form[name=' + formtarget_ + ']';
535
        //                var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
536
        //                var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
537
        //                var targetField = mainLookup.fieldTarget;
538
        //                if (mainLookup.isGrid) {
539
        //                    if (targetField) {
540
        //                        targetField = targetField.split('$')
541
        //                        var dt = targetField[0].split(',');
542
        //                        var fieldValue = targetField[1].split(',');
543
        //                        if (fieldValue.length > 0) {
544
        //                            for (i in dt) {
545
        //                                field_ = dt[i];
546
        //                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
547
        //                            }
548
        //                        } else {
549
        //                            for (i in dt) {
550
        //                                field_ = dt[i];
551
        //                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
552
        //                            }
553
        //                        }
554

    
555

    
556
        //                    }
557
        //                }
558
        //                else {// untuk form
559
        //                    if (targetField) {
560
        //                        var dt = targetField.split(',');
561
        //                        var fieldValue = mainLookup.fieldValue.split(',');
562
        //                        if (fieldValue.length > 0) {
563
        //                            for (i in dt) {
564
        //                                field_ = dt[i];
565
        //                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
566
        //                            }
567
        //                        } else {
568
        //                            for (i in dt) {
569
        //                                field_ = dt[i];
570
        //                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
571
        //                            }
572
        //                        }
573
        //                    }
574
        //                    else {
575
        //                        form_.setValues(selection.data);
576
        //                    }
577
        //                }
578

    
579
        //                mainLookup.destroy();
580
        //            },
581
        //            beforeedit: function (grid) {
582
        //                return false;
583
        //            }
584
        //        },
585
        //        dockedItems: [{
586
        //            xtype: 'pagingtoolbar',
587
        //            store: 'lookupStore',
588
        //            dock: 'bottom',
589
        //            pageSize: 25,
590
        //            displayInfo: true
591
        //        }
592
        //        ]
593

    
594
        //    }, ]
595
        //}).show();
596

    
597
    },
598
    onTrigger1Click: function (event) {
599
        var me = this;
600
        if (me.hideTrigger) {
601
            return;
602
        }
603
        me.setValue("");
604
        me.fireEvent('cleartriggerclick', me, event);
605
    },
606

    
607
});
608

    
609
Ext.define('MinovaUtil.MinovaES.MinovaLookupGrid', {
610
    extend: 'Ext.form.field.Trigger',
611
    alias: ['widget.minovalookupgrid', 'widget.minovalookupgrid2'],
612
    tableName: undefined,
613
    param: undefined,
614
    formtarget: undefined,
615
    anchor: '50%',
616
    pagesize: undefined,
617
    fieldTarget: undefined,
618
    fieldValue: undefined,
619
    isGrid: undefined,
620
    isMultiSelect: undefined,
621
    LookupFunction: undefined,
622
    SearchFunction: undefined,
623
    trigger1Cls: Ext.baseCSSPrefix + 'form-clear-trigger',
624
    trigger2Cls: Ext.baseCSSPrefix + 'form-search-trigger',
625
    //clearCls: 'x-form-search-clear',
626
    fieldGrid: undefined,
627

    
628
    onTrigger1Click: function (event) {
629
        var me = this;
630
        if (me.hideTrigger) {
631
            return;
632
        }
633
        me.setValue("");
634
        me.setRawValue("");
635
        me.fireEvent('cleartriggerclick', me, event);
636
    },
637
    //onTrigger1Click: function (field) {
638
    //    Ext.Msg.alert("Trigger 1", "Trigger One!!!");
639
    //},
640
    setValue: function (v) {
641
        var me = this;
642
        var value = v;
643
        this.value = '';
644
        this.value = v;
645
        me.setRawValue(v);
646
        if (value != "" && value != undefined) {
647
            data_ = undefined;
648
            Ext.Ajax.request({
649
                async: false,
650
                method: 'POST',
651
                url: '/UserControl/GetStore',
652
                params: {
653
                    tableName: 'PDSCMTABLE',
654
                    param: this.tableName + ',' + v + ',hasil'
655
                },
656
                success: function (response) {
657
                    var results = Ext.decode(response.responseText);
658
                    data_ = results.data
659
                    if (data_ != null) {
660
                        if (data_.length > 0) {
661
                            me.setRawValue(v + ' - ' + data_[0].hasil);
662

    
663
                        }
664
                    }
665

    
666
                }
667
            });
668
        }
669
        //if (me.getRawValue() == "") {
670
        //    me.value(v);
671
        //    me.setRawValue(v);
672
        //}
673
    },
674
    getValue: function () {
675
        var me = this;
676
        var hasil = this.value;
677
        if (this.valData) {
678
            hasil = this.valData;
679
        }
680
        if (hasil == undefined) {
681
            hasil = me.getRawValue();
682
        }
683
        return hasil;
684
    },
685
    getSubmitValue: function () {
686
        var me = this;
687
        var hasil = this.value;
688
        if (this.valData) {
689
            hasil = this.valData;
690
        }
691
        if (hasil == undefined) {
692
            hasil = me.getRawValue();
693
        }
694
        return hasil;
695
    },
696
    initComponent: function () {
697
        //var formtarget_ = this.formtarget;
698
        var pagesize = this.pagesize;
699
        var tableName = this.tableName;
700
        var fieldGrid_ = this.fieldGrid;
701
        this.callParent();
702
    },
703
    onTrigger2Click: function () {
704
        //alert('asa')
705
        var isGrid_ = this.isGrid;
706
        var fieldTarget_ = this.fieldTarget;
707
        var formtarget_ = this.formtarget;
708
        var fieldValue_ = this.fieldValue;
709
        var tableName = this.tableName;
710
        var LookupFunction_ = this.LookupFunction;
711
        var SearchFunction_ = this.SearchFunction;
712
        var fieldGrid_ = this.fieldGrid;
713
        var pnl = Ext.ComponentQuery.query('[name=' + formtarget_ + ']')[0];
714

    
715
        if (tableName == 'PDSPY0006') {
716
            Ext.create('Ext.window.Window', {
717
                title: 'Lookup - ' + this.fieldLabel,
718
                //hamid
719
                controller: 'rdlreportPayResult',
720
                //end hamid
721
                height: 530,
722
                width: 500,
723
                fieldTarget: fieldTarget_,
724
                fieldValue: fieldValue_,
725
                isGrid: isGrid_,
726
                name: 'lookupMain',
727
                //modal: true,
728
                listeners: {
729
                    'beforeshow': function (g) {
730
                        pnl.mask('Loading...');
731
                        setTimeout(function () {
732
                            pnl.unmask();
733
                        }, 100);
734
                    }
735
                },
736
                items: [{
737
                    xtype: 'minovaform',
738
                    bodyBorder: false,
739
                    MaxHeigth: '100',
740
                    cls: 'borderLookup',
741
                    border: false,
742
                    scroll: true,
743
                    isLookup: true,
744
                    name: "formLookupFilter",
745
                    tableName: this.tableName,
746
                    buttons: [{
747
                        text: 'Search',
748
                        //iconCls : 'fa-edit',
749
                        //style : 'font-family: FontAwesome',
750
                        handler: function () {
751
                            var store = Ext.data.StoreManager.lookup('lookupStore');
752
                            var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
753
                            grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
754
                            var values_ = form.getValues();
755
                            var fields_ = form.getFields().items;
756
                            var param_ = '';
757
                            for (var i = 0; i < fields_.length; i++) {
758
                                var val_ = form.getFields().items[i].getValue();
759
                                var xtype_ = form.getFields().items[i].xtype;
760
                                var oprator_ = '[like]';
761
                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
762
                                    oprator_ = '[Equal]';
763
                                }
764
                                if (xtype_ == 'datefield') {
765
                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
766
                                        oprator_ = '[LessThanEqual]';
767
                                    } else {
768
                                        oprator_ = '[GreaterThanEqual]';
769
                                    }
770
                                }
771
                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
772
                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
773
                                }
774
                            }
775
                            store.proxy.extraParams = {
776
                                tableName: grid.tableName,
777
                                param: param_,
778
                                menuId: MinovaUtil.GetMenuID()
779
                            };
780
                            store.removeAll();
781
                            store.reload();
782
                            store.loadPage(1);
783
                        }
784

    
785
                    }
786
                    ],
787
                }, {
788
                    xtype: 'minovagrid2',
789
                    isLookup: true,
790
                    autoLoad: false,
791
                    minHeight: 280,
792
                    fieldGrid: fieldGrid_,
793
                    height: 380,
794
                    tableName: this.tableName,
795
                    param: '',
796
                    //name: 'gridForm' + this.tableName,
797
                    name: 'gridLookup',
798
                    hidebutton: 0,
799
                    pagesize: 25,
800
                    storename: 'lookupStore',
801
                    listeners: {
802
                        itemdblclick: function (g) {
803

    
804
                            var me = this;
805

    
806
                            var selection = this.getView().getSelectionModel().getSelection()[0];
807
                            var name_ = 'form[name=' + formtarget_ + ']';
808
                            var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
809
                            var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
810
                            var targetField = mainLookup.fieldTarget;
811
                            if (mainLookup.isGrid) {
812
                                var b = Ext.ComponentQuery.query('[fieldGrid=' + me.fieldGrid + ']')[0];
813
                                if (b) {
814
                                    b.setValue(eval('selection.data.' + me.fieldGrid));
815
                                }
816
                                if (targetField) {
817
                                    targetField = targetField.split('$')
818
                                    var dt = targetField[0].split(',');
819
                                    var fieldValue = targetField[1].split(',');
820
                                    if (fieldValue.length > 0) {
821
                                        for (i in dt) {
822
                                            field_ = dt[i];
823
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
824
                                        }
825
                                    } else {
826
                                        for (i in dt) {
827
                                            field_ = dt[i];
828
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
829
                                        }
830
                                    }
831
                                }
832
                            }
833
                            //else {// untuk form
834
                            if (targetField) {
835
                                var dt = targetField.split(',');
836
                                var fieldValue = mainLookup.fieldValue.split(',');
837
                                if (fieldValue.length > 0) {
838
                                    for (i in dt) {
839
                                        field_ = dt[i];
840
                                        Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
841
                                    }
842
                                } else {
843
                                    for (i in dt) {
844
                                        field_ = dt[i];
845
                                        Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
846
                                    }
847
                                }
848
                            } else {
849
                                form_.setValues(selection.data);
850
                            }
851
                            //}
852

    
853
                            mainLookup.destroy();
854
                        },
855
                        beforeedit: function (grid) {
856
                            return false;
857
                        }
858
                    },
859
                    dockedItems: [{
860
                        xtype: 'pagingtoolbar',
861
                        store: 'lookupStore',
862
                        dock: 'bottom',
863
                        pageSize: 25,
864
                        displayInfo: true
865
                    }
866
                    ]
867

    
868
                }, ]
869
            }).show();
870
        } else {
871
            // hamid
872
            Ext.create('Ext.window.Window', {
873
                title: 'Lookup - ' + this.fieldLabel,
874
                height: 560,
875
                width: 500,
876
                fieldTarget: fieldTarget_,
877
                fieldValue: fieldValue_,
878
                isGrid: isGrid_,
879
                name: 'lookupMain',
880
                //modal: true,
881
                listeners: {
882
                    'beforeshow': function (g) {
883
						if(tableName == 'PDSEMP0002') //add by Tri nwh 20230202 untuk appraisalid PMS
884
						{ }					
885
						else
886
						{
887
							pnl.mask('Loading...');
888
							setTimeout(function () {
889
								pnl.unmask();
890
							}, 100);
891
						}
892
                    }
893
                },
894
                items: [{
895
                    xtype: 'minovaform',
896
                    bodyBorder: false,
897
                    MaxHeigth: '100',
898
                    cls: 'borderLookup',
899
                    border: false,
900
                    MaxHeigth: '30',
901
                    scroll: true,
902
                    isLookup: true,
903
                    name: "formLookupFilter",
904
                    tableName: this.tableName,
905
                    buttons: [{
906
                        text: 'Search',
907
                        //iconCls : 'fa-edit',
908
                        //style : 'font-family: FontAwesome',
909
                        handler: function () {
910

    
911
                            var store = Ext.data.StoreManager.lookup('lookupStore');
912
                            var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
913
                            grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
914
                            var values_ = form.getValues();
915
                            var fields_ = form.getFields().items;
916
                            var param_ = '';
917
                            for (var i = 0; i < fields_.length; i++) {
918
                                var val_ = form.getFields().items[i].getValue();
919
                                var xtype_ = form.getFields().items[i].xtype;
920
                                var oprator_ = '[like]';
921
                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
922
                                    oprator_ = '[Equal]';
923
                                }
924
                                if (xtype_ == 'datefield') {
925
                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
926
                                        oprator_ = '[LessThanEqual]';
927
                                    } else {
928
                                        oprator_ = '[GreaterThanEqual]';
929
                                    }
930
                                }
931
                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
932
                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
933
                                }
934
                            }
935

    
936
                            if (SearchFunction_ != undefined && SearchFunction_ != "") {
937
                                eval(SearchFunction_);
938
                            } else {
939
                                store.proxy.extraParams = {
940
                                    tableName: grid.tableName,
941
                                    param: param_,
942
                                    menuId: MinovaUtil.GetMenuID()
943
                                };
944
                            }
945
                            store.removeAll();
946
                            store.reload();
947
                            store.loadPage(1);
948
                        }
949

    
950
                    }
951
                    ],
952
                }, {
953
                    xtype: 'minovagrid2',
954
                    isLookup: true,
955
                    autoLoad: false,
956
                    minHeight: 240,
957
                    height: 340,
958
                    tableName: this.tableName,
959
                    param: '',
960
                    //name: 'gridForm' + this.tableName,
961
                    name: 'gridLookup',
962
                    hidebutton: 0,
963
                    pagesize: 25,
964
                    storename: 'lookupStore',
965
                    fieldGrid: fieldGrid_,
966
                    listeners: {
967
                        itemdblclick: function (g) {
968
                            var LookupFunction = LookupFunction_;
969

    
970
                            var me = this;
971
                            var selection = this.getView().getSelectionModel().getSelection()[0];
972
                            var pnlMain = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0];
973
                            var name_ = 'form[name=' + formtarget_ + ']';
974
                            if (pnlMain) {
975
                                name_ = 'form[name=' + formtarget_ + pnlMain.nameTable + ']';
976
                            }
977

    
978
                            var formM = Ext.ComponentQuery.query(name_)[0];
979
                            var form_ = null;
980
                            if (!formM) {
981
                                form_ = Ext.ComponentQuery.query('[name=MinovaGridFormEdit]')[0].getForm();
982
                            } else {
983
                                form_ = formM.getForm();
984
                            }
985
                            var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
986
                            var targetField = mainLookup.fieldTarget;
987
                            if (mainLookup.isGrid) {
988
                                var b = Ext.ComponentQuery.query('[fieldGrid=' + me.fieldGrid + ']')[0];
989
                                if (b) {
990
                                    b.setValue(eval('selection.data.' + me.fieldGrid));
991
                                }
992
                                if (targetField) {
993
                                    targetField = targetField.split('$')
994
                                    var dt = targetField[0].split(',');
995
                                    var fieldValue = targetField[1].split(',');
996
                                    if (fieldValue.length > 0) {
997
                                        for (i in dt) {
998
                                            field_ = dt[i];
999
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1000
                                        }
1001
                                    } else {
1002
                                        for (i in dt) {
1003
                                            field_ = dt[i];
1004
                                            Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1005
                                        }
1006
                                    }
1007

    
1008
                                }
1009
                            } else { // untuk form
1010
                                if (targetField) {
1011
                                    var dt = targetField.split(',');
1012
                                    var fieldValue = mainLookup.fieldValue.split(',');
1013
                                    if (fieldValue.length > 0) {
1014
                                        for (i in dt) {
1015
                                            field_ = dt[i];
1016
                                            Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1017
                                        }
1018
                                    } else {
1019
                                        for (i in dt) {
1020
                                            field_ = dt[i];
1021
                                            Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1022
                                        }
1023
                                    }
1024
                                } else {
1025
                                    form_.setValues(selection.data);
1026
                                }
1027
                            }
1028
                            eval(LookupFunction);
1029
                            mainLookup.destroy();
1030
                        },
1031
                        beforeedit: function (grid) {
1032
                            return false;
1033
                        }
1034
                    },
1035
                    dockedItems: [{
1036
                        xtype: 'pagingtoolbar',
1037
                        store: 'lookupStore',
1038
                        dock: 'bottom',
1039
                        pageSize: 25,
1040
                        displayInfo: true
1041
                    }
1042
                    ]
1043

    
1044
                }, ]
1045
            }).show();
1046
        }
1047
        //Ext.create('Ext.window.Window', {
1048
        //    title: 'Lookup - ' + this.fieldLabel,
1049
        //    height: 530,
1050
        //    width: 500,
1051
        //    fieldTarget: fieldTarget_,
1052
        //    fieldValue: fieldValue_,
1053
        //    isGrid: isGrid_,
1054
        //    name: 'lookupMain',
1055
        //    //modal: true,
1056
        //    listeners: {
1057
        //        'beforeshow': function (g) {
1058
        //            pnl.mask('Loading...');
1059
        //            setTimeout(function () {
1060
        //                pnl.unmask();
1061
        //            }, 100);
1062
        //        }
1063
        //    },
1064
        //    items: [{
1065
        //        xtype: 'minovaform',
1066
        //        bodyBorder: false,
1067
        //        MaxHeigth: '100',
1068
        //        cls: 'borderLookup',
1069
        //        border: false,
1070
        //        MaxHeigth: '30',
1071
        //        scroll: true,
1072
        //        isLookup: true,
1073
        //        name: "formLookupFilter",
1074
        //        tableName: this.tableName,
1075
        //        buttons: [{
1076
        //            text: 'Search',
1077
        //            //iconCls : 'fa-edit',
1078
        //            //style : 'font-family: FontAwesome',
1079
        //            handler: function () {
1080
        //                var store = Ext.data.StoreManager.lookup('lookupStore');
1081
        //                var form = Ext.ComponentQuery.query('[name=formLookupFilter]')[0].getForm();
1082
        //                grid = Ext.ComponentQuery.query('[name=gridLookup]')[0];
1083
        //                var values_ = form.getValues();
1084
        //                var fields_ = form.getFields().items;
1085
        //                var param_ = '';
1086
        //                for (var i = 0; i < fields_.length; i++) {
1087
        //                    var val_ = form.getFields().items[i].getValue();
1088
        //                    var xtype_ = form.getFields().items[i].xtype;
1089
        //                    var oprator_ = '[like]';
1090
        //                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
1091
        //                        oprator_ = '[Equal]';
1092
        //                    }
1093
        //                    if (xtype_ == 'datefield') {
1094
        //                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
1095
        //                            oprator_ = '[LessThanEqual]';
1096
        //                        } else {
1097
        //                            oprator_ = '[GreaterThanEqual]';
1098
        //                        }
1099
        //                    }
1100
        //                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
1101
        //                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
1102
        //                    }
1103
        //                }
1104
        //                store.proxy.extraParams = {
1105
        //                    tableName: grid.tableName,
1106
        //                    param: param_
1107
        //                };
1108
        //                store.removeAll();
1109
        //                store.reload();
1110
        //                store.loadPage(1);
1111
        //            }
1112

    
1113
        //        }
1114
        //        ],
1115
        //    }, {
1116
        //        xtype: 'minovagrid1',
1117
        //        isLookup: true,
1118
        //        autoLoad: false,
1119
        //        minHeight: 280,
1120
        //        height: 380,
1121
        //        tableName: this.tableName,
1122
        //        param: '',
1123
        //        //name: 'gridForm' + this.tableName,
1124
        //        name: 'gridLookup',
1125
        //        hidebutton: 0,
1126
        //        pagesize: 25,
1127
        //        storename: 'lookupStore',
1128
        //        listeners: {
1129
        //            itemdblclick: function (g) {
1130
        //                var me = this;
1131
        //                var selection = this.getView().getSelectionModel().getSelection()[0];
1132
        //                var name_ = 'form[name=' + formtarget_ + ']';
1133
        //                var form_ = Ext.ComponentQuery.query(name_)[0].getForm();
1134
        //                var mainLookup = Ext.ComponentQuery.query('[name=lookupMain]')[0];
1135
        //                var targetField = mainLookup.fieldTarget;
1136
        //                if (mainLookup.isGrid) {
1137
        //                    if (targetField) {
1138
        //                        targetField = targetField.split('$')
1139
        //                        var dt = targetField[0].split(',');
1140
        //                        var fieldValue = targetField[1].split(',');
1141
        //                        if (fieldValue.length > 0) {
1142
        //                            for (i in dt) {
1143
        //                                field_ = dt[i];
1144
        //                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1145
        //                            }
1146
        //                        } else {
1147
        //                            for (i in dt) {
1148
        //                                field_ = dt[i];
1149
        //                                Ext.ComponentQuery.query('[id=' + 'grid' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1150
        //                            }
1151
        //                        }
1152

    
1153

    
1154
        //                    }
1155
        //                }
1156
        //                else {// untuk form
1157
        //                    if (targetField) {
1158
        //                        var dt = targetField.split(',');
1159
        //                        var fieldValue = mainLookup.fieldValue.split(',');
1160
        //                        if (fieldValue.length > 0) {
1161
        //                            for (i in dt) {
1162
        //                                field_ = dt[i];
1163
        //                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + fieldValue[i]))
1164
        //                            }
1165
        //                        } else {
1166
        //                            for (i in dt) {
1167
        //                                field_ = dt[i];
1168
        //                                Ext.ComponentQuery.query('[name=' + field_ + ']')[0].setValue(eval('selection.data.' + field_))
1169
        //                            }
1170
        //                        }
1171
        //                    }
1172
        //                    else {
1173
        //                        form_.setValues(selection.data);
1174
        //                    }
1175
        //                }
1176

    
1177
        //                mainLookup.destroy();
1178
        //            },
1179
        //            beforeedit: function (grid) {
1180
        //                return false;
1181
        //            }
1182
        //        },
1183
        //        dockedItems: [{
1184
        //            xtype: 'pagingtoolbar',
1185
        //            store: 'lookupStore',
1186
        //            dock: 'bottom',
1187
        //            pageSize: 25,
1188
        //            displayInfo: true
1189
        //        }
1190
        //        ]
1191

    
1192
        //    }, ]
1193
        //}).show();
1194

    
1195
    },
1196
});
1197
Ext.define('MinovaUtil.MinovaES.MinovaComboDisplay', {
1198
    extend: 'Ext.form.field.Display',
1199
    alias: ['widget.minovacombodisplay'],
1200
    initComponent: function () {
1201
        this.callParent(arguments);
1202
    },
1203

    
1204
    defaultRenderer: function (value) {
1205
        if (typeof(this.store) !== 'object') {
1206
            this.store = Ext.data.StoreManager.lookup(this.store);
1207
        }
1208
        var idx = this.store.findExact(this.valueField, value);
1209
        if (this.store.getAt(idx)) {
1210
            var result = this.store.getAt(idx).get(this.displayField);
1211
            value = result ? result : value;
1212
        }
1213
        this.setRawValue(value);
1214

    
1215
    }
1216
});
1217
Ext.define('MinovaUtil.MinovaES.DisplayDate', {
1218
    extend: 'Ext.form.field.Display',
1219
    alias: ['widget.minovadisplaydate'],
1220
    undefinedText: '&#160;',
1221
    setValue: function (v) {
1222
        var value = v;
1223
        if (value === undefined) {
1224
            return this.undefinedText;
1225
        }
1226
        if (value === null) {
1227
            return this.setRawValue(null);
1228
        }
1229
        var d = value.substring(6, 8);
1230
        var m = value.substring(4, 6);
1231
        var y = value.substring(0, 4);
1232

    
1233
        var hasil = d + '/' + m + '/' + y;
1234
        //this.setRawValue(hasil);
1235
        this.setValue(hasil);
1236
    },
1237
    getRawValue: function () {
1238
        return this.getValue();
1239
    },
1240
    getValue: function () {
1241
        var value = this.rawValue;
1242
        var hasil = null;
1243
        if (value != undefined) {
1244
            var d = value.substring(0, 2);
1245
            var m = value.substring(3, 5);
1246
            var y = value.substring(6, 10);
1247

    
1248
            hasil = y + m + d;
1249
        }
1250
        return hasil;
1251
    }
1252
});
1253
Ext.define('MinovaUtil.MinovaES.DisplaySysDateTime', {
1254
    extend: 'Ext.form.field.Display',
1255
    alias: ['widget.minovadisplaysysdatetime'],
1256
    undefinedText: '&#160;',
1257
    //hamid
1258
    listeners: {
1259
        change: function (f) {
1260
            var field = f.getValue()
1261
            var value = field;
1262
            if (value === "" || value === undefined) {
1263
                return this.setRawValue("");
1264
            } else {
1265
                var d = value.substring(6, 8);
1266
                var m = value.substring(4, 6);
1267
                var y = value.substring(0, 4);
1268
                var h = value.substring(8, 10);
1269
                var mt = value.substring(10, 12);
1270
                var s = value.substring(12, 14);
1271
                var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
1272

    
1273
            }
1274

    
1275
            f.setRawValue(hasil)
1276
        },
1277
    },
1278
    //end
1279

    
1280
});
1281
Ext.define('MinovaUtil.MinovaES.MinovaButton', {
1282
    extend: 'Ext.button.Button',
1283
    alias: ['widget.minovabutton', 'widget.MinovaButton'],
1284
    nextid: undefined,
1285
    parid: undefined,
1286
    page: undefined,
1287
    start: undefined,
1288
    limit: 1,
1289
    setStart: function (value) {
1290
        var me = this;
1291
        me.start = value;
1292
        return me;
1293
    },
1294
    getStart: function () {
1295
        return this.start;
1296
    },
1297
    setNextid: function (value) {
1298
        var me = this;
1299
        me.nextid = value;
1300
        return me;
1301
    },
1302
    getNextid: function () {
1303
        return this.nextid;
1304
    },
1305
    setParid: function (value) {
1306
        var me = this;
1307
        me.parid = value;
1308
        return me;
1309
    },
1310
    getParid: function () {
1311
        return this.parid;
1312
    },
1313
    anchor: '50%',
1314
    initComponent: function () {
1315
        var me = this;
1316
        Ext.applyIf(me, {});
1317
        me.callParent(arguments);
1318
    }
1319
});
1320
Ext.define('MinovaUtil.MinovaES.MinovaComboBox', {
1321
    extend: 'Ext.form.field.ComboBox',
1322
    alias: ['widget.minovacombobox', 'widget.minovacombo'],
1323
    tableName: undefined,
1324
    param: undefined,
1325
	anyMatch: true,
1326
    anchor: '50%',
1327
    queryMode: 'local',
1328
    forceSelection: true, // cek data
1329
    initComponent: function () {
1330
        var me = this;
1331
        Ext.applyIf(me, {
1332

    
1333
            store: Ext.create('Ext.data.Store', {
1334
                storeId: 'store' + me.name,
1335
                autoLoad: true,
1336
                proxy: {
1337
                    method: 'POST',
1338
                    type: 'ajax',
1339
                    url: '/UserControl/GetStoreAuth',
1340
                    extraParams: {
1341
                        tableName: me.tableName,
1342
                        param: me.param,
1343
                        menuId: MinovaUtil.GetMenuID()
1344
                    },
1345
                    reader: {
1346
                        type: 'json',
1347
                        root: 'data'
1348
                    }
1349
                }
1350
            })
1351
        });
1352
        me.callParent(arguments);
1353
    }
1354
});
1355

    
1356
Ext.define('MinovaUtil.MinovaES.MinovaComboBoxTpl', {
1357
    extend: 'Ext.form.field.ComboBox',
1358
    alias: ['widget.minovacomboboxtpl', 'widget.minovacombotpl'],
1359
    tableName: undefined,
1360
    param: undefined,
1361
    dis1: undefined,
1362
    dis2: undefined,
1363
    anchor: '50%',
1364
    queryMode: 'local',
1365
    forceSelection: true,
1366
    tpl: Ext.create('Ext.XTemplate',
1367
		'<tpl for=".">',
1368
		'<div class="x-boundlist-item">' + this.dis1 + '</div>',
1369
		'</tpl>'),
1370
    displayTpl: Ext.create('Ext.XTemplate',
1371
		'<tpl for=".">',
1372
		+this.dis1,
1373
		'</tpl>'),
1374
    initComponent: function () {
1375
        var me = this;
1376
        Ext.applyIf(me, {
1377
            store: Ext.create('Ext.data.Store', {
1378
                storeId: 'store' + me.name,
1379
                autoLoad: true,
1380
                proxy: {
1381
                    method: 'POST',
1382
                    type: 'ajax',
1383
                    url: '/UserControl/GetStore',
1384
                    extraParams: {
1385
                        tableName: me.tableName,
1386
                        param: me.param
1387
                    },
1388
                    reader: {
1389
                        type: 'json',
1390
                        root: 'data'
1391
                    }
1392
                }
1393
            })
1394
        });
1395
        me.callParent(arguments);
1396
    }
1397
});
1398
Ext.define('MinovaUtil.MinovaES.MinovaMultiComboBox', {
1399
    extend: 'Ext.form.field.ComboBox',
1400
    alias: ['widget.minovamulticombobox', 'widget.minovamulticombo'],
1401
    tableName: undefined,
1402
    param: undefined,
1403
    anchor: '50%',
1404
    queryMode: 'local',
1405
    forceSelection: true, // cek data
1406
    multiSelect: true,
1407
    getValue: function () {
1408
        var hasil = null;
1409
        var val = this.value;
1410
        if (val != undefined) {
1411
            hasil = val.toString();
1412
        }
1413
        return hasil;
1414
    },
1415
    initComponent: function () {
1416
        var me = this;
1417
        Ext.applyIf(me, {
1418
            store: Ext.create('Ext.data.Store', {
1419
                storeId: 'store' + me.name,
1420
                autoLoad: true,
1421
                proxy: {
1422
                    method: 'POST',
1423
                    type: 'ajax',
1424
                    url: '/UserControl/GetStore',
1425
                    extraParams: {
1426
                        tableName: me.tableName,
1427
                        param: me.param
1428
                    },
1429
                    reader: {
1430
                        type: 'json',
1431
                        root: 'data'
1432
                    }
1433
                }
1434
            })
1435
        });
1436
        me.callParent(arguments);
1437
    }
1438
});
1439
Ext.define('Ext.ux.MinovaLookupGrid1', {
1440
    extend: 'Ext.form.field.Trigger',
1441
    alias: 'widget.minovalookupgrid1',
1442
    tableName: undefined,
1443
    param: undefined,
1444
    formtarget_: this.formtarget,
1445
    anchor: '50%',
1446
    pagesize: undefined,
1447
    initComponent: function () {
1448
        var target = this.formtarget;
1449
        this.callParent();
1450
    },
1451
    onTriggerClick: function () {
1452
        var count_lookup = Ext.ComponentQuery.query('[name=mainLookup]').length;
1453
        if (count_lookup == 1) {
1454
            Ext.ComponentQuery.query('[name=mainLookup]')[0].show();
1455
        } else {
1456
            var target_ = this.formtarget;
1457
            var fieldtarget = this.name;
1458
            var pagesize_ = this.pagesize;
1459
            if (pagesize_ == undefined) {
1460
                pagesize_ = 25;
1461
            }
1462
            var mainLookup = Ext.create('Ext.window.Window', {
1463
                name: 'mainLookup',
1464
                width: 500,
1465
                heigth: 300,
1466
                maxHeigth: 300,
1467
                minWidth: 400,
1468
                scroll: true,
1469
                modal: true,
1470
                title: 'Lookup - ' + this.fieldLabel,
1471
                items: [{
1472
                    xtype: 'form',
1473
                    collapsible: false,
1474
                    items: [{
1475
                        xtype: 'form',
1476
                        //width: '90%',
1477
                        name: 'formFilter',
1478
                        layout: 'column',
1479
                        dockedItems: [{
1480
                            xtype: 'toolbar',
1481
                            dock: 'bottom',
1482
                            items: [{
1483
                                xtype: 'tbfill'
1484
                            }, {
1485
                                text: 'Search',
1486
                                scope: this,
1487
                                handler: function () {
1488
                                    var store = Ext.data.StoreManager.lookup('lookupStore');
1489
                                    var form = Ext.ComponentQuery.query('[name=formFilter]')[0].getForm();
1490
                                    var values_ = form.getValues();
1491
                                    var fields_ = form.getFields().items;
1492
                                    var param_ = '';
1493
                                    for (var i = 0; i < fields_.length; i++) {
1494
                                        var val_ = form.getFields().items[i].getValue();
1495
                                        var xtype_ = form.getFields().items[i].xtype;
1496
                                        var oprator_ = '[like]';
1497
                                        if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
1498
                                            oprator_ = '[Equal]';
1499
                                        }
1500
                                        if (xtype_ == 'datefield') {
1501
                                            if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
1502
                                                oprator_ = '[LessThanEqual]';
1503
                                            } else {
1504
                                                oprator_ = '[GreaterThanEqual]';
1505
                                            }
1506
                                        }
1507
                                        if (val_ != 'undefined' && val_ != "") {
1508
                                            param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
1509
                                        }
1510
                                    }
1511
                                    store.proxy.extraParams = {
1512
                                        tableName: this.tableName,
1513
                                        param: param_
1514
                                    };
1515
                                    store.removeAll();
1516
                                    store.reload();
1517
                                    store.loadPage(1);
1518
                                }
1519
                            }, ]
1520
                        }
1521
                        ],
1522
                        defaults: {
1523
                            xtype: 'container',
1524
                            defaultType: 'textfield',
1525
                            style: 'width: 50%'
1526
                        },
1527
                        items: [{
1528
                            xtype: 'minovaform',
1529
                            bodyBorder: false,
1530
                            cls: 'borderLookup',
1531
                            border: false,
1532
                            MaxHeigth: '30',
1533
                            scroll: true,
1534
                            isLookup: 1,
1535
                            name: "formLookupFilter",
1536
                            tableName: this.tableName,
1537
                        }
1538
                        ],
1539
                    }
1540
                    ]
1541
                }, {
1542
                    xtype: 'form',
1543
                    name: 'formResult',
1544
                    title: 'Result',
1545
                    collapsible: true,
1546
                    items: [{
1547
                        xtype: "minovagrid",
1548
                        name: "lookupgrid",
1549
                        tableName: this.tableName,
1550
                        param: '',
1551
                        pagesize: pagesize_,
1552
                        storename: 'lookupStore',
1553
                        isLookup: 1,
1554
                        border: false,
1555
                        minHeight: 300,
1556
                        maxHeight: 500,
1557
                        height: 100,
1558
                        columnLines: true,
1559
                        scrollable: true,
1560
                        listeners: {
1561
                            itemdblclick: function (formtarget_) {
1562
                                var me = this;
1563
                                var selection = this.getView().getSelectionModel().getSelection()[0];
1564
                                if (target_ == null || target_ == undefined) {
1565
                                    var formtarget_ = '[name=' + fieldtarget + ']';
1566
                                    var form_ = Ext.ComponentQuery.query(formtarget_)[0];
1567
                                } else {
1568
                                    var formtarget_ = 'form[name=' + target_ + ']';
1569
                                    var form_ = Ext.ComponentQuery.query(formtarget_)[0].getForm();
1570
                                    form_.setValues(selection.data)
1571
                                }
1572
                                mainLookup.hide();
1573
                            },
1574
                            beforeedit: function (grid) {
1575
                                return false;
1576
                            }
1577
                        },
1578
                        dockedItems: [{
1579
                            xtype: 'pagingtoolbar',
1580
                            store: 'lookupStore',
1581
                            dock: 'bottom',
1582
                            pageSize: pagesize_,
1583
                            displayInfo: true
1584
                        }
1585
                        ],
1586
                    }
1587
                    ]
1588
                }
1589
                ]
1590
            }).show();
1591
        }
1592
    },
1593
});
1594
Ext.define('Ext.ux.MinovaLookupTree', {
1595
    extend: 'Ext.form.field.Trigger',
1596
    alias: 'widget.minovalookuptree',
1597
    tableName: undefined,
1598
    param: undefined,
1599
    onTriggerClick: function () {}
1600

    
1601
});
1602
Ext.define('Ext.ux.MinovaLookupFile', {
1603
    extend: 'Ext.form.field.Trigger',
1604
    alias: 'widget.minovalookupfile',
1605
    tableName: undefined,
1606
    param: undefined,
1607
    onTriggerClick: function () {}
1608

    
1609
});
1610
Ext.define('MinovaUtil.MinovaES.MinovaGrid1', {
1611
    extend: 'Ext.grid.Panel',
1612
    requires: ['Ext.grid.RowNumberer'],
1613
    alias: 'widget.minovagrid1',
1614
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
1615
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
1616
    alternateClassName: 'Ext.grid.MinovaGrid',
1617
    //controller:'orm-manage2-controller',
1618
    tableName: undefined,
1619
    isLookup: undefined,
1620
    param: undefined,
1621
    pagesize: undefined,
1622
    storename: undefined,
1623
    layoutType: undefined,
1624
    enableLocking: true,
1625
    autoLoad: undefined,
1626
    multiSelect: undefined,
1627
    getTableName: function () {
1628
        return this.tableName;
1629
    },
1630

    
1631
    initComponent: function () {
1632
        var me = this;
1633
        var cols_ = [];
1634
        var fieldeditor = {};
1635
        var hasil = null;
1636
        var autoLoad = true;
1637
        var LangID = localStorage.LangId;
1638
        var fielGrid = 'rec.GridView == 1';
1639
        var locking = true;
1640
        var checkSelection = '';
1641
        var widthLock = 250;
1642
        if (me.multiSelect) {
1643
            locking = false;
1644
            checkSelection = 'checkboxmodel';
1645
            widthLock = 40;
1646
        }
1647
        //var _url = 'GetAllField';
1648
        if (me.autoLoad == false) {
1649
            autoLoad = false;
1650
        }
1651
        parameter = null;
1652
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
1653
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
1654
            fielGrid = 'rec.LookupGrid == 1';
1655
            locking = false;
1656

    
1657
        } else {
1658
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
1659
            //autoLoad = false;
1660
            //_url = 'GetAllFieldGridLookUp';
1661
        };
1662

    
1663
        //Ext.Ajax.request({
1664
        //	async : false,
1665
        //	method : 'POST',
1666
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
1667
        //	success : function (response) {
1668
        //		var results = Ext.decode(response.responseText);
1669
        //		hasil = results.data;
1670
        //	}
1671
        //});
1672
        //hamid03102016
1673

    
1674
        Ext.Ajax.request({
1675
            async: false,
1676
            method: 'POST',
1677
            url: '/UserControl/GetStore',
1678
            params: {
1679
                tableName: 'PDSBS0007',
1680
                param: parameter
1681
            },
1682
            success: function (response) {
1683
                var results = Ext.decode(response.responseText);
1684
                hasil = results.data;
1685
            }
1686
        });
1687
        //end
1688

    
1689
        if (hasil.length > 0) {
1690

    
1691
            Ext.each(hasil, function (rec) {
1692
                var null_ = null;
1693
                if (rec.IsPrimaryKey == true) {
1694
                    null_ = false;
1695
                }
1696
                if (rec.IsRequired == true) {
1697
                    null_ = false;
1698
                } else {
1699
                    null_ = true;
1700
                }
1701

    
1702
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
1703
                    if (rec.LookupGrid == 1) {
1704
                        switch (rec.FormatRef) {
1705
                            case "file":
1706
                                cols_.push({
1707
                                    xtype: 'minovapicturecolumn',
1708
                                    text: rec.HeaderTitle,
1709
                                    dataIndex: rec.FieldName,
1710
                                    width: 100,
1711
                                    //filter: {
1712
                                    //    type: 'image',
1713
                                    //    itemDefaults: {
1714
                                    //        emptyText: 'Search for...'
1715
                                    //    }
1716
                                    //}
1717
                                });
1718
                                break
1719
                            case "date":
1720
                                cols_.push({
1721
                                    xtype: 'minovadatecolumn',
1722
                                    text: rec.HeaderTitle,
1723
                                    dataIndex: rec.FieldName,
1724
                                    width: 100,
1725
                                    filter: {
1726
                                        type: 'date',
1727
                                        itemDefaults: {
1728
                                            emptyText: 'Search for...'
1729
                                        }
1730
                                    }
1731
                                });
1732
                                break
1733
                            case "amount":
1734
                                cols_.push({
1735
                                    xtype: 'minovacurrancycolumn',
1736
                                    text: rec.HeaderTitle,
1737
                                    dataIndex: rec.FieldName,
1738
                                    align: 'right',
1739
                                    width: 300,
1740
                                    filter: {
1741
                                        type: 'number',
1742
                                        itemDefaults: {
1743
                                            emptyText: 'Search for...'
1744
                                        }
1745
                                    }
1746
                                });
1747
                                break
1748
                            case "amountencrypt":
1749
                                cols_.push({
1750
                                    xtype: 'minovaamountcolumn',
1751
                                    text: rec.HeaderTitle,
1752
                                    dataIndex: rec.FieldName,
1753
                                    align: 'right',
1754
                                    width: 300,
1755
                                    filter: {
1756
                                        type: 'string',
1757
                                        itemDefaults: {
1758
                                            emptyText: 'Search for...'
1759
                                        }
1760
                                    }
1761
                                });
1762
                                break
1763
                            case "datetime":
1764
                                cols_.push({
1765
                                    xtype: 'minovadatetimecolumn',
1766
                                    text: rec.HeaderTitle,
1767
                                    dataIndex: rec.FieldName,
1768
                                    width: 140,
1769
                                    filter: {
1770
                                        type: 'string',
1771
                                        itemDefaults: {
1772
                                            emptyText: 'Search for...'
1773
                                        }
1774
                                    }
1775
                                });
1776
                                break
1777
                            default:
1778
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
1779
                                    cols_.push({
1780
                                        text: rec.HeaderTitle,
1781
                                        dataIndex: rec.FieldName,
1782
                                        width: 100,
1783
                                        filter: {
1784
                                            type: 'string',
1785
                                            itemDefaults: {
1786
                                                emptyText: 'Search for...'
1787
                                            }
1788
                                        }
1789
                                    });
1790
                                } else if (rec.SearchType == '2') {
1791
                                    cols_.push({
1792
                                        xtype: 'minovalookupcolumn',
1793
                                        text: rec.HeaderTitle,
1794
                                        tableName: rec.TableRef,
1795
                                        dataIndex: rec.FieldName,
1796
                                        filter: {
1797
                                            itemDefaults: {
1798
                                                emptyText: 'Search for...'
1799
                                            }
1800
                                        }
1801
                                    });
1802
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
1803
                                    if (rec.TableRef != null) {
1804
                                        var valueField = null;
1805
                                        var displayValue = null;
1806
                                        Ext.Ajax.request({
1807
                                            async: false,
1808
                                            method: 'POST',
1809
                                            url: '/UserControl/GetStore',
1810
                                            params: {
1811
                                                tableName: 'SDATATABLEFIELD',
1812
                                                param: 'TableName[equal]' + rec.TableRef
1813
                                            },
1814
                                            success: function (response) {
1815
                                                var results = Ext.decode(response.responseText);
1816
                                                data_ = results.data;
1817
                                                if (data_ != undefined) {
1818
                                                    valueField_ = $.grep(data_, function (r) {
1819
                                                        return r.ValueField == '1'
1820
                                                    });
1821
                                                    valueField = valueField_[0].FieldName
1822
                                                    displayValue_ = $.grep(data_, function (r) {
1823
                                                        return r.DisplayValue == '1'
1824
                                                    });
1825
                                                    displayValue = displayValue_[0].FieldName
1826
                                                }
1827
                                            }
1828
                                        });
1829
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
1830
                                        var count_ = 0;
1831
                                        if (store_) {
1832
                                            count_ = store_.count();
1833
                                        }
1834
                                        if (count_ == 0) {
1835
                                            Ext.create('Ext.data.Store', {
1836
                                                storeId: 'store_' + rec.FieldName,
1837
                                                //autoLoad: true,
1838
                                                proxy: {
1839
                                                    method: 'POST',
1840
                                                    type: 'ajax',
1841
                                                    url: '/UserControl/GetStore',
1842
                                                    extraParams: {
1843
                                                        tableName: rec.TableRef,
1844
                                                        param: rec.ParamCombo
1845
                                                    },
1846
                                                    reader: {
1847
                                                        type: 'json',
1848
                                                        root: 'data',
1849
                                                        totalProperty: 'data[0].TotalCount'
1850
                                                    }
1851
                                                }
1852
                                            })
1853
                                        }
1854
                                        cols_.push({
1855
                                            xtype: 'minovacombocolumn',
1856
                                            text: rec.HeaderTitle,
1857
                                            dataIndex: rec.FieldName,
1858
                                            valueField: valueField,
1859
                                            displayField: displayValue,
1860
                                            store: 'store_' + rec.FieldName,
1861
                                            filter: {
1862
                                                type: 'list',
1863
                                                itemDefaults: {
1864
                                                    emptyText: 'Search for...'
1865
                                                }
1866
                                            }
1867
                                        });
1868
                                    }
1869

    
1870
                                } else {
1871
                                    cols_.push({
1872
                                        text: rec.HeaderTitle,
1873
                                        dataIndex: rec.FieldName,
1874
                                        filter: {
1875
                                            itemDefaults: {
1876
                                                emptyText: 'Search for...'
1877
                                            }
1878
                                        }
1879
                                    });
1880
                                }
1881
                                break
1882
                        }
1883
                    } else {
1884
                        cols_.push({
1885
                            text: rec.HeaderTitle,
1886
                            dataIndex: rec.FieldName,
1887
                            hidden: true,
1888
                            filter: {
1889
                                itemDefaults: {
1890
                                    emptyText: 'Search for...'
1891
                                }
1892
                            }
1893
                        });
1894
                    }
1895

    
1896
                } else {
1897
                    if (rec.GridView == 1) {
1898
                        switch (rec.FormatRef) {
1899
                            case "action":
1900
                                cols_.push({
1901
                                    text: rec.HeaderTitle,
1902
                                    width: 100,
1903
                                    xtype: 'actioncolumn',
1904
                                    tooltip: 'View Data',
1905
                                    name: rec.FieldName,
1906
                                    itemId: me.tableName + rec.FieldName,
1907
                                    align: 'center',
1908
                                    iconCls: 'fa-edit',
1909
                                    renderer: function (value, metadata, record) {
1910
                                        metadata.tdStyle = 'font-family: FontAwesome'
1911
                                    },
1912
                                    handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
1913

    
1914
                                        this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
1915
                                    }
1916
                                });
1917
                                break
1918
                            case "file":
1919
                                cols_.push({
1920
                                    xtype: 'minovapicturecolumn',
1921
                                    text: rec.HeaderTitle,
1922
                                    dataIndex: rec.FieldName,
1923
                                    width: 100,
1924
                                    //filter: {
1925
                                    //    type: '',
1926
                                    //    itemDefaults: {
1927
                                    //        emptyText: 'Search for...'
1928
                                    //    }
1929
                                    //}
1930
                                });
1931
                                break
1932
                            case "date":
1933
                                cols_.push({
1934
                                    xtype: 'minovadatecolumn',
1935
                                    text: rec.HeaderTitle,
1936
                                    dataIndex: rec.FieldName,
1937
                                    width: 100,
1938
                                    filter: {
1939
                                        type: 'date',
1940
                                        itemDefaults: {
1941
                                            emptyText: 'Search for...'
1942
                                        }
1943
                                    }
1944
                                });
1945
                                break
1946
                            case "amountencrypt":
1947
                                cols_.push({
1948
                                    xtype: 'minovaamountcolumn',
1949
                                    text: rec.HeaderTitle,
1950
                                    dataIndex: rec.FieldName,
1951
                                    align: 'right',
1952
                                    width: 300,
1953
                                    filter: {
1954
                                        type: 'string',
1955
                                        itemDefaults: {
1956
                                            emptyText: 'Search for...'
1957
                                        }
1958
                                    }
1959
                                });
1960
                                break
1961
                            case "amount":
1962
                                cols_.push({
1963
                                    xtype: 'minovacurrancycolumn',
1964
                                    text: rec.HeaderTitle,
1965
                                    dataIndex: rec.FieldName,
1966
                                    align: 'right',
1967
                                    width: 300,
1968
                                    filter: {
1969
                                        type: 'number',
1970
                                        itemDefaults: {
1971
                                            emptyText: 'Search for...'
1972
                                        }
1973
                                    }
1974
                                });
1975
                                break
1976
                            case "datetime":
1977
                                cols_.push({
1978
                                    xtype: 'minovadatetimecolumn',
1979
                                    text: rec.HeaderTitle,
1980
                                    dataIndex: rec.FieldName,
1981
                                    width: 140,
1982
                                    filter: {
1983
                                        type: 'string',
1984
                                        itemDefaults: {
1985
                                            emptyText: 'Search for...'
1986
                                        }
1987
                                    }
1988
                                });
1989
                                break
1990
                            default:
1991
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
1992
                                    cols_.push({
1993
                                        text: rec.HeaderTitle,
1994
                                        dataIndex: rec.FieldName,
1995
                                        width: 100,
1996
                                        filter: {
1997
                                            type: 'string',
1998
                                            itemDefaults: {
1999
                                                emptyText: 'Search for...'
2000
                                            }
2001
                                        }
2002
                                    });
2003
                                } else if (rec.TableRef != "") {
2004
                                    if (rec.TableRef != null) {
2005
                                        var valueField = null;
2006
                                        var displayValue = null;
2007
                                        Ext.Ajax.request({
2008
                                            async: false,
2009
                                            method: 'POST',
2010
                                            url: '/UserControl/GetStore',
2011
                                            params: {
2012
                                                tableName: 'SDATATABLEFIELD',
2013
                                                param: 'TableName[equal]' + rec.TableRef
2014
                                            },
2015
                                            success: function (response) {
2016
                                                var results = Ext.decode(response.responseText);
2017
                                                data_ = results.data;
2018
                                                //if (data_ != undefined) {
2019
                                                if (data_.length > 0) {
2020
                                                    valueField_ = $.grep(data_, function (r) {
2021
                                                        return r.ValueField == '1'
2022
                                                    });
2023
                                                    valueField = valueField_[0].FieldName
2024
                                                    displayValue_ = $.grep(data_, function (r) {
2025
                                                        return r.DisplayValue == '1'
2026
                                                    });
2027
                                                    displayValue = displayValue_[0].FieldName
2028
                                                } else {
2029
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
2030
                                                }
2031
                                            }
2032
                                        });
2033
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2034
                                        var count_ = 0;
2035
                                        if (store_) {
2036
                                            count_ = store_.count();
2037
                                        }
2038
                                        if (count_ == 0) {
2039
                                            Ext.create('Ext.data.Store', {
2040
                                                storeId: 'store_' + rec.FieldName,
2041
                                                autoLoad: false,
2042
                                                proxy: {
2043
                                                    method: 'POST',
2044
                                                    type: 'ajax',
2045
                                                    url: '/UserControl/GetStore',
2046
                                                    extraParams: {
2047
                                                        tableName: rec.TableRef,
2048
                                                        param: rec.ParamCombo
2049
                                                    },
2050
                                                    reader: {
2051
                                                        type: 'json',
2052
                                                        root: 'data',
2053
                                                        totalProperty: 'data[0].TotalCount'
2054
                                                    }
2055
                                                }
2056
                                            })
2057
                                        }
2058
                                        cols_.push({
2059
                                            xtype: 'minovacombocolumn',
2060
                                            text: rec.HeaderTitle,
2061
                                            dataIndex: rec.FieldName,
2062
                                            valueField: valueField,
2063
                                            displayField: displayValue,
2064
                                            store: 'store_' + rec.FieldName,
2065
                                            filter: {
2066
                                                type: 'list',
2067
                                                itemDefaults: {
2068
                                                    emptyText: 'Search for...'
2069
                                                }
2070
                                            }
2071
                                        });
2072
                                    }
2073

    
2074
                                } else if (rec.FixedValue != "") {
2075
                                    cols_.push({
2076
                                        xtype: 'minovacombocolumnfixvalue',
2077
                                        text: rec.HeaderTitle,
2078
                                        dataIndex: rec.FieldName,
2079
                                        fixedValue: rec.FixedValue,
2080
                                        filter: {
2081
                                            type: 'list',
2082
                                            itemDefaults: {
2083
                                                emptyText: 'Search for...'
2084
                                            }
2085
                                        }
2086
                                    });
2087
                                } else {
2088
                                    cols_.push({
2089
                                        text: rec.HeaderTitle,
2090
                                        dataIndex: rec.FieldName,
2091
                                        filter: {
2092
                                            itemDefaults: {
2093
                                                emptyText: 'Search for...'
2094
                                            }
2095
                                        }
2096
                                    });
2097
                                }
2098
                                break
2099
                        }
2100
                    } else {
2101
                        cols_.push({
2102
                            text: rec.HeaderTitle,
2103
                            dataIndex: rec.FieldName,
2104
                            hidden: true,
2105
                            filter: {
2106
                                itemDefaults: {
2107
                                    emptyText: 'Search for...'
2108
                                }
2109
                            }
2110
                        });
2111
                    }
2112

    
2113
                }
2114
            });
2115
        };
2116
        var param_ = me.param;
2117
        if (param_ == undefined) {
2118
            param_ = ''
2119
        }
2120
        var jsStoreGrid = new Ext.data.Store({
2121
            storeId: me.storename,
2122
            autoLoad: autoLoad,
2123
            pageSize: me.pagesize,
2124
            proxy: {
2125
                method: 'POST',
2126
                type: 'ajax',
2127
                url: '/UserControl/GetStorePagingAuth',
2128
                extraParams: {
2129
                    tableName: me.tableName,
2130
                    param: param_,
2131
                    menuId: MinovaUtil.GetMenuID()
2132
                },
2133
                reader: {
2134
                    type: 'json',
2135
                    root: 'data',
2136
                    totalProperty: 'totalRecords'
2137
                }
2138
            },
2139
        });
2140
        Ext.applyIf(me, {
2141
            autoScroll: true,
2142
            enableLocking: locking,
2143
            lockedGridConfig: {
2144
                header: false,
2145
                collapsible: true,
2146
                width: widthLock,
2147
                forceFit: locking,
2148
                listeners: {
2149
                    render: function (grid) {
2150
                        var pagingToolbar = grid.child('pagingtoolbar');
2151
                        if (pagingToolbar) {
2152
                            grid.remove(pagingToolbar, true);
2153
                        }
2154
                    }
2155
                }
2156
            },
2157
            listeners: {
2158
                viewready: function () {
2159
                    if (autoLoad == true) {
2160
                        this.getStore().loadPage(1);
2161
                    }
2162
                },
2163
                beforeedit: function () {
2164
                    return false;
2165
                },
2166
            },
2167
            lockedViewConfig: {
2168
                scroll: 'horizontal'
2169
            },
2170
            viewConfig: {
2171
                emptyText: 'No Data Display',
2172
                deferEmptyText: false,
2173
                //Add Nana For Autosize Column Mode
2174
                listeners: {
2175
                    refresh: function (dataview) {
2176
                        Ext.each(dataview.panel.columns, function (column) {
2177
                            //if (column.autoSizeColumn == false)
2178
                            //	column.autoSizeColumn = true;
2179
                            column.autoSize();
2180
                            //dataview.store.reload();
2181
                        })
2182
                    },
2183
                    afterrender: function (dataview) {
2184
                        Ext.defer(function () {
2185
                            dataview.store.reload();
2186
                        }, 2000, this);
2187
                        //dataview.store.reload();
2188
                    }
2189
                },
2190
                render: function (comp) {
2191
                    comp.getStore().reload();					
2192
                }
2193
            },
2194
            //for chekbox
2195
            selModel: {
2196
                //type: 'cellmodel'
2197
            },
2198
            selType: checkSelection,
2199
            columns: cols_,
2200

    
2201
            store: jsStoreGrid,
2202

    
2203
            plugins: [{
2204
                ptype: 'gridfilters'
2205
            }
2206
            ],
2207

    
2208
        });
2209
        me.callParent(arguments);
2210
    }
2211

    
2212
});
2213

    
2214
Ext.define('MinovaUtil.MinovaES.MinovaGrid2', {
2215
    extend: 'Ext.grid.Panel',
2216
    requires: ['Ext.grid.RowNumberer'],
2217
    alias: 'widget.minovagrid2',
2218
    //alias: ['widget.minovagrid2', 'widget.minovagrid'],
2219
    //alias: ['widget.minovagrid2', 'widget.minovagrid'],
2220
    alternateClassName: 'Ext.grid.MinovaGrid',
2221
    //controller:'orm-manage2-controller',
2222
    tableName: undefined,
2223
    isLookup: undefined,
2224
    param: undefined,
2225
    pagesize: undefined,
2226
    storename: undefined,
2227
    layoutType: undefined,
2228
    enableLocking: true,
2229
    autoLoad: undefined,
2230
    multiSelect: undefined,
2231
    getTableName: function () {
2232
        return this.tableName;
2233
    },
2234

    
2235
    initComponent: function () {
2236
        var me = this;
2237
        var cols_ = [];
2238
        var fieldeditor = {};
2239
        var hasil = null;
2240
        var autoLoad = true;
2241
        var LangID = localStorage.LangId;
2242
        var fielGrid = 'rec.GridView == 1';
2243
        var locking = true;
2244
        var checkSelection = '';
2245
        var widthLock = 250;
2246
        if (me.multiSelect) {
2247
            locking = false;
2248
            checkSelection = 'checkboxmodel';
2249
            widthLock = 40;
2250
        }
2251
        //var _url = 'GetAllField';
2252
        if (me.autoLoad == false) {
2253
            autoLoad = false;
2254
        }
2255
        parameter = null;
2256
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
2257
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
2258
            fielGrid = 'rec.LookupGrid == 1';
2259
            locking = false;
2260

    
2261
        } else {
2262
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
2263
            //autoLoad = false;
2264
            //_url = 'GetAllFieldGridLookUp';
2265
        };
2266

    
2267
        //Ext.Ajax.request({
2268
        //	async : false,
2269
        //	method : 'POST',
2270
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
2271
        //	success : function (response) {
2272
        //		var results = Ext.decode(response.responseText);
2273
        //		hasil = results.data;
2274
        //	}
2275
        //});
2276
        //hamid03102016
2277

    
2278
        Ext.Ajax.request({
2279
            async: false,
2280
            method: 'POST',
2281
            url: '/UserControl/GetStore',
2282
            params: {
2283
                tableName: 'PDSBS0007',
2284
                param: parameter
2285
            },
2286
            success: function (response) {
2287
                var results = Ext.decode(response.responseText);
2288
                hasil = results.data;
2289
            }
2290
        });
2291
        //end
2292

    
2293
        if (hasil.length > 0) {
2294

    
2295
            Ext.each(hasil, function (rec) {
2296
                var null_ = null;
2297
                if (rec.IsPrimaryKey == true) {
2298
                    null_ = false;
2299
                }
2300
                if (rec.IsRequired == true) {
2301
                    null_ = false;
2302
                } else {
2303
                    null_ = true;
2304
                }
2305

    
2306
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
2307
                    if (rec.LookupGrid == 1) {
2308
                        switch (rec.FormatRef) {
2309
                            case "file":
2310
                                cols_.push({
2311
                                    xtype: 'minovapicturecolumn',
2312
                                    text: rec.HeaderTitle,
2313
                                    dataIndex: rec.FieldName,
2314
                                    width: 100,
2315
                                    //filter: {
2316
                                    //    type: 'image',
2317
                                    //    itemDefaults: {
2318
                                    //        emptyText: 'Search for...'
2319
                                    //    }
2320
                                    //}
2321
                                });
2322
                                break
2323
                            case "date":
2324
                                cols_.push({
2325
                                    xtype: 'minovadatecolumn',
2326
                                    text: rec.HeaderTitle,
2327
                                    dataIndex: rec.FieldName,
2328
                                    width: 100,
2329
                                    filter: {
2330
                                        type: 'date',
2331
                                        itemDefaults: {
2332
                                            emptyText: 'Search for...'
2333
                                        }
2334
                                    }
2335
                                });
2336
                                break
2337
                            case "amount":
2338
                                cols_.push({
2339
                                    xtype: 'minovacurrancycolumn',
2340
                                    text: rec.HeaderTitle,
2341
                                    dataIndex: rec.FieldName,
2342
                                    align: 'right',
2343
                                    width: 300,
2344
                                    filter: {
2345
                                        type: 'number',
2346
                                        itemDefaults: {
2347
                                            emptyText: 'Search for...'
2348
                                        }
2349
                                    }
2350
                                });
2351
                                break
2352
                            case "amountencrypt":
2353
                                cols_.push({
2354
                                    xtype: 'minovaamountcolumn',
2355
                                    text: rec.HeaderTitle,
2356
                                    dataIndex: rec.FieldName,
2357
                                    align: 'right',
2358
                                    width: 300,
2359
                                    filter: {
2360
                                        type: 'string',
2361
                                        itemDefaults: {
2362
                                            emptyText: 'Search for...'
2363
                                        }
2364
                                    }
2365
                                });
2366
                                break
2367
                            case "datetime":
2368
                                cols_.push({
2369
                                    xtype: 'minovadatetimecolumn',
2370
                                    text: rec.HeaderTitle,
2371
                                    dataIndex: rec.FieldName,
2372
                                    width: 140,
2373
                                    filter: {
2374
                                        type: 'string',
2375
                                        itemDefaults: {
2376
                                            emptyText: 'Search for...'
2377
                                        }
2378
                                    }
2379
                                });
2380
                                break
2381
                            default:
2382
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2383
                                    cols_.push({
2384
                                        text: rec.HeaderTitle,
2385
                                        dataIndex: rec.FieldName,
2386
                                        width: 100,
2387
                                        filter: {
2388
                                            type: 'string',
2389
                                            itemDefaults: {
2390
                                                emptyText: 'Search for...'
2391
                                            }
2392
                                        }
2393
                                    });
2394
                                } else if (rec.SearchType == '2') {
2395
                                    cols_.push({
2396
                                        xtype: 'minovalookupcolumn',
2397
                                        text: rec.HeaderTitle,
2398
                                        tableName: rec.TableRef,
2399
                                        dataIndex: rec.FieldName,
2400
                                        filter: {
2401
                                            itemDefaults: {
2402
                                                emptyText: 'Search for...'
2403
                                            }
2404
                                        }
2405
                                    });
2406
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
2407
                                    if (rec.TableRef != null) {
2408
                                        var valueField = null;
2409
                                        var displayValue = null;
2410
                                        Ext.Ajax.request({
2411
                                            async: false,
2412
                                            method: 'POST',
2413
                                            url: '/UserControl/GetStore',
2414
                                            params: {
2415
                                                tableName: 'SDATATABLEFIELD',
2416
                                                param: 'TableName[equal]' + rec.TableRef
2417
                                            },
2418
                                            success: function (response) {
2419
                                                var results = Ext.decode(response.responseText);
2420
                                                data_ = results.data;
2421
                                                if (data_ != undefined) {
2422
                                                    valueField_ = $.grep(data_, function (r) {
2423
                                                        return r.ValueField == '1'
2424
                                                    });
2425
                                                    valueField = valueField_[0].FieldName
2426
                                                    displayValue_ = $.grep(data_, function (r) {
2427
                                                        return r.DisplayValue == '1'
2428
                                                    });
2429
                                                    displayValue = displayValue_[0].FieldName
2430
                                                }
2431
                                            }
2432
                                        });
2433
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2434
                                        var count_ = 0;
2435
                                        if (store_) {
2436
                                            count_ = store_.count();
2437
                                        }
2438
                                        if (count_ == 0) {
2439
                                            Ext.create('Ext.data.Store', {
2440
                                                storeId: 'store_' + rec.FieldName,
2441
                                                //autoLoad: true,
2442
                                                proxy: {
2443
                                                    method: 'POST',
2444
                                                    type: 'ajax',
2445
                                                    url: '/UserControl/GetStore',
2446
                                                    extraParams: {
2447
                                                        tableName: rec.TableRef,
2448
                                                        param: rec.ParamCombo
2449
                                                    },
2450
                                                    reader: {
2451
                                                        type: 'json',
2452
                                                        root: 'data',
2453
                                                        totalProperty: 'data[0].TotalCount'
2454
                                                    }
2455
                                                }
2456
                                            })
2457
                                        }
2458
                                        cols_.push({
2459
                                            xtype: 'minovacombocolumn',
2460
                                            text: rec.HeaderTitle,
2461
                                            dataIndex: rec.FieldName,
2462
                                            valueField: valueField,
2463
                                            displayField: displayValue,
2464
                                            store: 'store_' + rec.FieldName,
2465
                                            filter: {
2466
                                                type: 'list',
2467
                                                itemDefaults: {
2468
                                                    emptyText: 'Search for...'
2469
                                                }
2470
                                            }
2471
                                        });
2472
                                    }
2473

    
2474
                                } else {
2475
                                    cols_.push({
2476
                                        text: rec.HeaderTitle,
2477
                                        dataIndex: rec.FieldName,
2478
                                        filter: {
2479
                                            itemDefaults: {
2480
                                                emptyText: 'Search for...'
2481
                                            }
2482
                                        }
2483
                                    });
2484
                                }
2485
                                break
2486
                        }
2487
                    } else {
2488
                        cols_.push({
2489
                            text: rec.HeaderTitle,
2490
                            dataIndex: rec.FieldName,
2491
                            hidden: true,
2492
                            filter: {
2493
                                itemDefaults: {
2494
                                    emptyText: 'Search for...'
2495
                                }
2496
                            }
2497
                        });
2498
                    }
2499

    
2500
                } else {
2501
                    if (rec.GridView == 1) {
2502
                        switch (rec.FormatRef) {
2503
                            case "action":
2504
                                cols_.push({
2505
                                    text: rec.HeaderTitle,
2506
                                    width: 100,
2507
                                    xtype: 'actioncolumn',
2508
                                    tooltip: 'View Data',
2509
                                    name: rec.FieldName,
2510
                                    itemId: me.tableName + rec.FieldName,
2511
                                    align: 'center',
2512
                                    iconCls: 'fa-edit',
2513
                                    renderer: function (value, metadata, record) {
2514
                                        metadata.tdStyle = 'font-family: FontAwesome'
2515
                                    },
2516
                                    handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
2517

    
2518
                                        this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
2519
                                    }
2520
                                });
2521
                                break
2522
                            case "file":
2523
                                cols_.push({
2524
                                    xtype: 'minovapicturecolumn',
2525
                                    text: rec.HeaderTitle,
2526
                                    dataIndex: rec.FieldName,
2527
                                    width: 100,
2528
                                    //filter: {
2529
                                    //    type: '',
2530
                                    //    itemDefaults: {
2531
                                    //        emptyText: 'Search for...'
2532
                                    //    }
2533
                                    //}
2534
                                });
2535
                                break
2536
                            case "date":
2537
                                cols_.push({
2538
                                    xtype: 'minovadatecolumn',
2539
                                    text: rec.HeaderTitle,
2540
                                    dataIndex: rec.FieldName,
2541
                                    width: 100,
2542
                                    filter: {
2543
                                        type: 'date',
2544
                                        itemDefaults: {
2545
                                            emptyText: 'Search for...'
2546
                                        }
2547
                                    }
2548
                                });
2549
                                break
2550
                            case "amountencrypt":
2551
                                cols_.push({
2552
                                    xtype: 'minovaamountcolumn',
2553
                                    text: rec.HeaderTitle,
2554
                                    dataIndex: rec.FieldName,
2555
                                    align: 'right',
2556
                                    width: 300,
2557
                                    filter: {
2558
                                        type: 'string',
2559
                                        itemDefaults: {
2560
                                            emptyText: 'Search for...'
2561
                                        }
2562
                                    }
2563
                                });
2564
                                break
2565
                            case "amount":
2566
                                cols_.push({
2567
                                    xtype: 'minovacurrancycolumn',
2568
                                    text: rec.HeaderTitle,
2569
                                    dataIndex: rec.FieldName,
2570
                                    align: 'right',
2571
                                    width: 300,
2572
                                    filter: {
2573
                                        type: 'number',
2574
                                        itemDefaults: {
2575
                                            emptyText: 'Search for...'
2576
                                        }
2577
                                    }
2578
                                });
2579
                                break
2580
                            case "datetime":
2581
                                cols_.push({
2582
                                    xtype: 'minovadatetimecolumn',
2583
                                    text: rec.HeaderTitle,
2584
                                    dataIndex: rec.FieldName,
2585
                                    width: 140,
2586
                                    filter: {
2587
                                        type: 'string',
2588
                                        itemDefaults: {
2589
                                            emptyText: 'Search for...'
2590
                                        }
2591
                                    }
2592
                                });
2593
                                break
2594
                            default:
2595
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
2596
                                    cols_.push({
2597
                                        text: rec.HeaderTitle,
2598
                                        dataIndex: rec.FieldName,
2599
                                        width: 100,
2600
                                        filter: {
2601
                                            type: 'string',
2602
                                            itemDefaults: {
2603
                                                emptyText: 'Search for...'
2604
                                            }
2605
                                        }
2606
                                    });
2607
                                } else if (rec.TableRef != "") {
2608
                                    if (rec.TableRef != null) {
2609
                                        var valueField = null;
2610
                                        var displayValue = null;
2611
                                        Ext.Ajax.request({
2612
                                            async: false,
2613
                                            method: 'POST',
2614
                                            url: '/UserControl/GetStore',
2615
                                            params: {
2616
                                                tableName: 'SDATATABLEFIELD',
2617
                                                param: 'TableName[equal]' + rec.TableRef
2618
                                            },
2619
                                            success: function (response) {
2620
                                                var results = Ext.decode(response.responseText);
2621
                                                data_ = results.data;
2622
                                                //if (data_ != undefined) {
2623
                                                if (data_.length > 0) {
2624
                                                    valueField_ = $.grep(data_, function (r) {
2625
                                                        return r.ValueField == '1'
2626
                                                    });
2627
                                                    valueField = valueField_[0].FieldName
2628
                                                    displayValue_ = $.grep(data_, function (r) {
2629
                                                        return r.DisplayValue == '1'
2630
                                                    });
2631
                                                    displayValue = displayValue_[0].FieldName
2632
                                                } else {
2633
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
2634
                                                }
2635
                                            }
2636
                                        });
2637
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
2638
                                        var count_ = 0;
2639
                                        if (store_) {
2640
                                            count_ = store_.count();
2641
                                        }
2642
                                        if (count_ == 0) {
2643
                                            Ext.create('Ext.data.Store', {
2644
                                                storeId: 'store_' + rec.FieldName,
2645
                                                autoLoad: false,
2646
                                                proxy: {
2647
                                                    method: 'POST',
2648
                                                    type: 'ajax',
2649
                                                    url: '/UserControl/GetStore',
2650
                                                    extraParams: {
2651
                                                        tableName: rec.TableRef,
2652
                                                        param: rec.ParamCombo
2653
                                                    },
2654
                                                    reader: {
2655
                                                        type: 'json',
2656
                                                        root: 'data',
2657
                                                        totalProperty: 'data[0].TotalCount'
2658
                                                    }
2659
                                                }
2660
                                            })
2661
                                        }
2662
                                        cols_.push({
2663
                                            xtype: 'minovacombocolumn',
2664
                                            text: rec.HeaderTitle,
2665
                                            dataIndex: rec.FieldName,
2666
                                            valueField: valueField,
2667
                                            displayField: displayValue,
2668
                                            store: 'store_' + rec.FieldName,
2669
                                            filter: {
2670
                                                type: 'list',
2671
                                                itemDefaults: {
2672
                                                    emptyText: 'Search for...'
2673
                                                }
2674
                                            }
2675
                                        });
2676
                                    }
2677

    
2678
                                } else if (rec.FixedValue != "") {
2679
                                    cols_.push({
2680
                                        xtype: 'minovacombocolumnfixvalue',
2681
                                        text: rec.HeaderTitle,
2682
                                        dataIndex: rec.FieldName,
2683
                                        fixedValue: rec.FixedValue,
2684
                                        filter: {
2685
                                            type: 'list',
2686
                                            itemDefaults: {
2687
                                                emptyText: 'Search for...'
2688
                                            }
2689
                                        }
2690
                                    });
2691
                                } else {
2692
                                    cols_.push({
2693
                                        text: rec.HeaderTitle,
2694
                                        dataIndex: rec.FieldName,
2695
                                        filter: {
2696
                                            itemDefaults: {
2697
                                                emptyText: 'Search for...'
2698
                                            }
2699
                                        }
2700
                                    });
2701
                                }
2702
                                break
2703
                        }
2704
                    } else {
2705
                        cols_.push({
2706
                            text: rec.HeaderTitle,
2707
                            dataIndex: rec.FieldName,
2708
                            hidden: true,
2709
                            filter: {
2710
                                itemDefaults: {
2711
                                    emptyText: 'Search for...'
2712
                                }
2713
                            }
2714
                        });
2715
                    }
2716

    
2717
                }
2718
            });
2719
        };
2720
        var param_ = me.param;
2721
        if (param_ == undefined) {
2722
            param_ = ''
2723
        }
2724
        var jsStoreGrid = new Ext.data.Store({
2725
            storeId: me.storename,
2726
            autoLoad: autoLoad,
2727
            pageSize: me.pagesize,
2728
            proxy: {
2729
                method: 'POST',
2730
                type: 'ajax',
2731
                url: '/UserControl/GetStorePagingAuth',
2732
                extraParams: {
2733
                    tableName: me.tableName,
2734
                    param: param_,
2735
                    menuId: MinovaUtil.GetMenuID()
2736
                },
2737
                reader: {
2738
                    type: 'json',
2739
                    root: 'data',
2740
                    totalProperty: 'totalRecords'
2741
                }
2742
            },
2743
        });
2744
        Ext.applyIf(me, {
2745
            autoScroll: true,
2746
            enableLocking: locking,
2747
            lockedGridConfig: {
2748
                header: false,
2749
                collapsible: true,
2750
                width: widthLock,
2751
                forceFit: locking,
2752
                listeners: {
2753
                    render: function (grid) {
2754
                        var pagingToolbar = grid.child('pagingtoolbar');
2755
                        if (pagingToolbar) {
2756
                            grid.remove(pagingToolbar, true);
2757
                        }
2758
                    }
2759
                }
2760
            },
2761
            listeners: {
2762
                viewready: function () {
2763
                    if (autoLoad == true) {
2764
                        this.getStore().loadPage(1);
2765
                    }
2766
                },
2767
                beforeedit: function () {
2768
                    return false;
2769
                },
2770
            },
2771
            lockedViewConfig: {
2772
                scroll: 'horizontal'
2773
            },
2774
            viewConfig: {
2775
                emptyText: 'No Data Display',
2776
                deferEmptyText: false,
2777
                //Add Nana For Autosize Column Mode
2778
                listeners: {
2779
                    refresh: function (dataview) {
2780
                        Ext.each(dataview.panel.columns, function (column) {
2781
                            //if (column.autoSizeColumn == false)
2782
                            //	column.autoSizeColumn = true;
2783
                            column.autoSize();
2784
                            //dataview.store.reload();
2785
                        })
2786
                    }
2787
                },
2788
                render: function (comp) {
2789
                    comp.getStore().reload();					
2790
                }
2791
            },
2792
            //for chekbox
2793
            selModel: {
2794
                //type: 'cellmodel'
2795
            },
2796
            selType: checkSelection,
2797
            columns: cols_,
2798

    
2799
            store: jsStoreGrid,
2800

    
2801
            plugins: [{
2802
                ptype: 'gridfilters'
2803
            }
2804
            ],
2805

    
2806
        });
2807
        me.callParent(arguments);
2808
    }
2809

    
2810
});
2811
Ext.define('MinovaUtil.MinovaES.MinovaGrid', {
2812
    extend: 'Ext.grid.Panel',
2813
    requires: ['Ext.grid.RowNumberer'],
2814
    alias: 'widget.minovagrid',
2815
    //alternateClassName : 'Ext.grid.MinovaGrid',
2816
    tableName: undefined,
2817
    isLookup: undefined,
2818
    param: undefined,
2819
    pagesize: undefined,
2820
    storename: undefined,
2821
    layoutType: undefined,
2822
    enableLocking: true,
2823

    
2824
    tbar: [{
2825
        xtype: 'button',
2826
        text: 'Action',
2827
        name: 'actionBtn',
2828
        //scale: 'medium',
2829
        menu: [{
2830
            text: 'Add',
2831
            name: 'Add_',
2832
            action: 'CRUDaddNewRecord',
2833
            style: 'font-family: FontAwesome',
2834
            iconCls: 'fa-plus-circle',
2835
            handler: function () {
2836
                var layout = null;
2837
                var tolbar = this.up();
2838
                var name = '';
2839
                var tableName = tolbar.up().up().up().tableName;
2840
                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0];
2841
                var titleMain = mpnl.getTitle();
2842
                var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
2843
                if (pnl) {
2844
                    layout = pnl.getLayoutType();
2845
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
2846
                    pnl.setLastTitle(titleMain);
2847
                    mpnl.setTitle('Add ' + titleMain);
2848
                } else {
2849
                    pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
2850
                    layout = pnl.getLayoutType();
2851
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
2852
                    pnl.setLastTitle(titleMain);
2853
                    mpnl.setTitle('Add ' + titleMain);
2854
                }
2855
                if (layout == 'L003') {
2856
                    var _grid = "MinovaGridFormGrid" + tableName;
2857
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
2858
                    var _formEdit = "MinovaGridFormEdit" + tableName;
2859
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2860
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2861
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2862
                    g.setHidden(true);
2863
                    formDisplay.setHidden(true);
2864
                    formEdit.reset();
2865
                    formEdit.setActionSubmit(0)
2866
                    formEdit.setSubmitProc(true)
2867
                    formEdit.setHidden(false);
2868
                    var heigh = pnl.getLastheightform();
2869
                    var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
2870
                    if (pDetail) {
2871
                        // pDetail.setHeight(heigh + 100);
2872
                    } else {
2873
                        pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
2874
                        var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2875
                        var mainPnl = mainPnl_.getHeight();
2876
                        //pDetail.setHeight(mainPnl + 100);
2877

    
2878
                    }
2879

    
2880
                    var emp = formEdit.getForm().findField("EmployeeID");
2881
                    if (emp) {
2882
                        emp.setValue(getParam("EmployeeID"))
2883
                        emp.setHidden(true);
2884
                    }
2885

    
2886
                } else {
2887
                    var _grid = "MinovaGridFormGrid" + tableName;
2888
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
2889
                    var _formEdit = "MinovaGridFormEdit" + tableName;
2890
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2891
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2892
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2893
                    formEdit.setActionSubmit(0)
2894
                    formDisplay.setHidden(true);
2895
                    formDisplay.setTitle("Add");
2896

    
2897
                    formEdit.setTitle("Add - " + titleMain);
2898
                    formEdit.reset();
2899
                    formEdit.setSubmitProc(true)
2900
                    formEdit.setHidden(false);
2901
                    var emp = formEdit.getForm().findField("EmployeeID");
2902
                    if (emp) {
2903
                        emp.setValue(Ext.ComponentQuery.query('[name=EmployeeID]')[0].getValue())
2904
                        emp.setHidden(true);
2905
                    }
2906

    
2907
                }
2908
            }
2909
        }, {
2910
            text: 'Copy',
2911
            name: 'Copy_',
2912
            iconCls: 'fa-copy',
2913
            style: 'font-family: FontAwesome',
2914
            handler: function () {
2915
                var layout = null;
2916
                var tolbar = this.up();
2917
                var name = '';
2918
                var tableName = tolbar.up().up().up().tableName;
2919
                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0];
2920
                var titleMain = mpnl.getTitle();
2921
                var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
2922

    
2923
                if (pnl) {
2924
                    layout = pnl.getLayoutType();
2925
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
2926
                    pnl.setLastTitle(titleMain);
2927
                    mpnl.setTitle('Copy ' + titleMain);
2928
                } else {
2929
                    pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
2930
                    layout = pnl.getLayoutType();
2931
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
2932
                    pnl.setLastTitle(titleMain);
2933
                    mpnl.setTitle('Copy ' + titleMain);
2934
                }
2935
                if (layout == 'L003') {
2936
                    var _grid = "MinovaGridFormGrid" + tableName;
2937
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
2938
                    var _formEdit = "MinovaGridFormEdit" + tableName;
2939
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2940
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2941
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2942
                    g.setHidden(true);
2943
                    formDisplay.setHidden(true);
2944
                    formEdit.reset();
2945
                    formEdit.setActionSubmit(0)
2946
                    formEdit.setSubmitProc(true)
2947
                    formEdit.setHidden(false);
2948
                    var heigh = pnl.getLastheightform();
2949
                    var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
2950
                    if (pDetail) {
2951
                        //pDetail.setHeight(heigh + 100);
2952
                    } else {
2953
                        pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
2954
                        var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2955
                        var mainPnl = mainPnl_.getHeight();
2956
                        //pDetail.setHeight(mainPnl + 100);
2957

    
2958
                    }
2959
                    Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2960

    
2961
                    var emp = formEdit.getForm().findField("EmployeeID");
2962
                    if (emp) {
2963
                        emp.setValue(getParam("EmployeeID"))
2964
                        emp.setHidden(true);
2965
                    }
2966
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
2967
                    if (selection) {
2968
                        formDisplay.getForm().setValues(selection.data);
2969
                        formEdit.getForm().setValues(selection.data);
2970
                    }
2971

    
2972
                } else {
2973
                    var _grid = "MinovaGridFormGrid" + tableName;
2974
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
2975
                    var _formEdit = "MinovaGridFormEdit" + tableName;
2976
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
2977
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
2978
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
2979
                    formEdit.setActionSubmit(0)
2980
                    formDisplay.setHidden(true);
2981
                    formDisplay.setTitle("Add");
2982

    
2983
                    formEdit.setTitle("Copy - " + titleMain);
2984
                    formEdit.reset();
2985
                    formEdit.setSubmitProc(true)
2986
                    formEdit.setHidden(false);
2987
                    var emp = formEdit.getForm().findField("EmployeeID");
2988
                    if (emp) {
2989
                        emp.setValue(Ext.ComponentQuery.query('[name=EmployeeID]')[0].getValue())
2990
                        emp.setHidden(true);
2991
                    }
2992
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
2993
                    if (selection) {
2994
                        formDisplay.getForm().setValues(selection.data);
2995
                        formEdit.getForm().setValues(selection.data);
2996
                        formEdit.setSubmitProc(true);
2997
                        formEdit.setActionSubmit(0);
2998
                    }
2999

    
3000
                }
3001
            }
3002
        }, {
3003
            text: 'Edit',
3004
            name: 'Edit_',
3005
            iconCls: 'fa-edit',
3006
            style: 'font-family: FontAwesome',
3007
            handler: function () {
3008
                var layout = null;
3009
                var tolbar = this.up();
3010
                var name = '';
3011
                var tableName = tolbar.up().up().up().tableName;
3012

    
3013
                var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
3014
                if (pnl) {
3015
                    layout = pnl.getLayoutType();
3016
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3017

    
3018
                } else {
3019
                    pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
3020
                    layout = pnl.getLayoutType();
3021
                    pnl.setLastpage('MinovaGridFormGrid' + tableName);
3022
                }
3023

    
3024
                if (layout == 'L003') {
3025
                    var _grid = "MinovaGridFormGrid" + tableName;
3026
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3027
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3028
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3029
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3030
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3031

    
3032
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3033
                    if (selection) {
3034
                        formDisplay.getForm().setValues(selection.data);
3035
                        formEdit.getForm().setValues(selection.data);
3036
                        formDisplay.setHidden(true);
3037
                        formEdit.setSubmitProc(true);
3038
                        formEdit.setActionSubmit(1);
3039
                        formEdit.setHidden(false);
3040
                        formEdit.setHidden(false);
3041
                        g.setHidden(true);
3042
                        var heigh = pnl.getLastheightform();
3043
                        var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
3044
                        if (pDetail) {
3045
                            pDetail.setHeight(heigh + 100);
3046
                        } else {
3047
                            pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
3048
                            var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
3049
                            var mainPnl = mainPnl_.getHeight();
3050
                            //pDetail.setHeight(mainPnl + 100);
3051

    
3052
                        }
3053

    
3054
                        var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
3055
                        if (p) {
3056
                            var lastTitile = p.getTitle();
3057
                            pnl.setLastTitle(lastTitile);
3058
                            p.setTitle('Edit - ' + lastTitile)
3059

    
3060
                        }
3061
                    }
3062
                } else {
3063
                    var _grid = "MinovaGridFormGrid" + tableName;
3064
                    var _formDisplay = "MinovaGridFormDisplay" + tableName;
3065
                    var _formEdit = "MinovaGridFormEdit" + tableName;
3066
                    var g = Ext.ComponentQuery.query('[name=' + _grid + ']')[0];
3067
                    var formDisplay = Ext.ComponentQuery.query('[name=' + _formDisplay + ']')[0];
3068
                    var formEdit = Ext.ComponentQuery.query('[name=' + _formEdit + ']')[0];
3069

    
3070
                    var selection = tolbar.up().up().up().getView().getSelectionModel().getSelection()[0];
3071
                    if (selection) {
3072
                        formDisplay.getForm().setValues(selection.data);
3073
                        formEdit.getForm().setValues(selection.data);
3074
                        formDisplay.setTitle("Edit");
3075
                        formEdit.setTitle("Edit");
3076
                        if (layout == 'L003') {
3077
                            g.setHidden(true);
3078
                        }
3079

    
3080
                        formDisplay.setHidden(true);
3081
                        formEdit.setActionSubmit(1)
3082
                        formEdit.setSubmitProc(true)
3083
                        formEdit.setHidden(false);
3084

    
3085
                        var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
3086
                        var lastTitile = mpnl.getTitle();
3087
                        formEdit.setTitle('Edit - ' + lastTitile);
3088
                        //mpnl.setTitle('Edit ' + lastTitile);
3089
                    }
3090
                }
3091
            }
3092
        }, {
3093
            text: 'Delete',
3094
            name: 'Delete_',
3095
            iconCls: 'fa-trash-o',
3096
            style: 'font-family: FontAwesome',
3097
        }
3098
        ]
3099
    }, {
3100
        xtype: 'tbfill'
3101
    }, {
3102
        text: 'Clear Filters',
3103
        tooltip: 'Clear all filters',
3104
        name: 'clearbtn',
3105
        handler: function () {
3106
            var tolbar = this.up()
3107
            var grid_ = tolbar.up()
3108
            grid_.filters.clearFilters()
3109
        }
3110
    }, ],
3111

    
3112
    getTableName: function () {
3113
        return this.tableName;
3114
    },
3115

    
3116
    initComponent: function () {
3117
        var me = this;
3118
        var cols_ = [];
3119
        var fieldeditor = {};
3120
        var hasil = null;
3121
        var autoLoad = true;
3122
        var LangID = MinovaUtil.GetLangID();
3123
        //var _url = 'GetAllField';
3124

    
3125
        //if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3126
        //	autoLoad = false;
3127
        //    _url = 'GetAllFieldGridLookUp';
3128

    
3129
        //};
3130
        //Ext.Ajax.request({
3131
        //	async : false,
3132
        //	method : 'POST',
3133
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
3134
        //	success : function (response) {
3135
        //		var results = Ext.decode(response.responseText);
3136
        //		hasil = results.data;
3137
        //	}
3138
        //});
3139
        //hamid03102016
3140
        //if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
3141
        parameter = null;
3142
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
3143
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
3144
        } else {
3145
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
3146
        }
3147
        Ext.Ajax.request({
3148
            async: false,
3149
            method: 'POST',
3150
            url: '/UserControl/GetStore',
3151
            params: {
3152
                tableName: 'PDSBS0007',
3153
                param: parameter
3154
            },
3155
            success: function (response) {
3156
                var results = Ext.decode(response.responseText);
3157
                hasil = results.data;
3158
            }
3159
        });
3160
        //end
3161
        if (hasil.length > 0) {
3162
            Ext.each(hasil, function (rec) {
3163
                var null_ = null;
3164
                if (rec.IsPrimaryKey == true) {
3165
                    null_ = false;
3166
                }
3167
                if (rec.IsRequired == true) {
3168
                    null_ = false;
3169
                } else {
3170
                    null_ = true;
3171
                }
3172
                if (rec.GridView == 1) {
3173
                    switch (rec.FormatRef) {
3174
                        case "date":
3175
                            cols_.push({
3176
                                xtype: 'minovadatecolumn',
3177
                                text: rec.HeaderTitle,
3178
                                dataIndex: rec.FieldName,
3179
                                width: 100,
3180
                                filter: {
3181
                                    type: 'date',
3182
                                    itemDefaults: {
3183
                                        emptyText: 'Search for...'
3184
                                    }
3185
                                }
3186
                            });
3187
                            break
3188
                        case "amountencrypt":
3189
                            cols_.push({
3190
                                xtype: 'minovaamountcolumn',
3191
                                text: rec.HeaderTitle,
3192
                                dataIndex: rec.FieldName,
3193
                                align: 'right',
3194
                                width: 100,
3195
                                filter: {
3196
                                    type: 'string',
3197
                                    itemDefaults: {
3198
                                        emptyText: 'Search for...'
3199
                                    }
3200
                                }
3201
                            });
3202
                            break
3203
                        case "amount":
3204
                            cols_.push({
3205
                                xtype: 'minovacurrancycolumn',
3206
                                text: rec.HeaderTitle,
3207
                                dataIndex: rec.FieldName,
3208
                                align: 'right',
3209
                                width: 100,
3210
                                filter: {
3211
                                    type: 'number',
3212
                                    itemDefaults: {
3213
                                        emptyText: 'Search for...'
3214
                                    }
3215
                                }
3216
                            });
3217
                            break
3218
                        case "datetime":
3219
                            cols_.push({
3220
                                xtype: 'minovadatetimecolumn',
3221
                                text: rec.HeaderTitle,
3222
                                dataIndex: rec.FieldName,
3223
                                width: 140,
3224
                                filter: {
3225
                                    type: 'string',
3226
                                    itemDefaults: {
3227
                                        emptyText: 'Search for...'
3228
                                    }
3229
                                }
3230
                            });
3231
                            break
3232
                        default:
3233
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
3234
                                cols_.push({
3235
                                    text: rec.HeaderTitle,
3236
                                    dataIndex: rec.FieldName,
3237
                                    width: 100,
3238
                                    filter: {
3239
                                        type: 'string',
3240
                                        itemDefaults: {
3241
                                            emptyText: 'Search for...'
3242
                                        }
3243
                                    }
3244
                                });
3245
                            } else if (rec.SearchType == '2') {
3246
                                cols_.push({
3247
                                    xtype: 'minovalookupcolumn',
3248
                                    text: rec.HeaderTitle,
3249
                                    tableName: rec.TableRef,
3250
                                    dataIndex: rec.FieldName,
3251
                                    filter: {
3252
                                        itemDefaults: {
3253
                                            emptyText: 'Search for...'
3254
                                        }
3255
                                    }
3256
                                });
3257
                            } else if (rec.TableRef != "") {
3258
                                if (rec.TableRef != null) {
3259
                                    var valueField = null;
3260
                                    Ext.Ajax.request({
3261
                                        async: false,
3262
                                        method: 'POST',
3263
                                        url: '/UserControl/GetStore',
3264
                                        params: {
3265
                                            tableName: 'SDATATABLEFIELD',
3266
                                            param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
3267
                                        },
3268
                                        success: function (response) {
3269
                                            var results = Ext.decode(response.responseText);
3270
                                            data_ = results.data[0];
3271
                                            if (data_ != undefined) {
3272
                                                valueField = data_.FieldName;
3273
                                            }
3274
                                        }
3275
                                    });
3276

    
3277
                                    displayValue = null;
3278
                                    Ext.Ajax.request({
3279
                                        async: false,
3280
                                        method: 'POST',
3281
                                        url: '/UserControl/GetStore',
3282
                                        params: {
3283
                                            tableName: 'SDATATABLEFIELD',
3284
                                            param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
3285
                                        },
3286
                                        success: function (response) {
3287
                                            var results = Ext.decode(response.responseText);
3288
                                            data_ = results.data[0];
3289
                                            if (data_ != undefined) {
3290
                                                displayValue = data_.FieldName;
3291
                                                //console.log(data_)
3292
                                            }
3293
                                        }
3294
                                    });
3295
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3296
                                    var count_ = 0;
3297
                                    if (store_) {
3298
                                        count_ = store_.count();
3299
                                    }
3300
                                    if (count_ == 0) {
3301
                                        Ext.create('Ext.data.Store', {
3302
                                            storeId: 'store_' + rec.FieldName,
3303
                                            autoLoad: true,
3304
                                            proxy: {
3305
                                                method: 'POST',
3306
                                                type: 'ajax',
3307
                                                url: '/UserControl/GetStore',
3308
                                                extraParams: {
3309
                                                    tableName: rec.TableRef,
3310
                                                    param: rec.ParamCombo
3311
                                                },
3312
                                                reader: {
3313
                                                    type: 'json',
3314
                                                    root: 'data',
3315
                                                    totalProperty: 'data[0].TotalCount'
3316
                                                }
3317
                                            }
3318
                                        })
3319
                                    }
3320
                                    cols_.push({
3321
                                        xtype: 'minovacombocolumn',
3322
                                        text: rec.HeaderTitle,
3323
                                        dataIndex: rec.FieldName,
3324
                                        valueField: valueField,
3325
                                        displayField: displayValue,
3326
                                        store: 'store_' + rec.FieldName,
3327
                                        filter: {
3328
                                            type: 'list',
3329
                                            itemDefaults: {
3330
                                                emptyText: 'Search for...'
3331
                                            }
3332
                                        }
3333
                                    });
3334
                                }
3335

    
3336
                            } else {
3337
                                cols_.push({
3338
                                    text: rec.HeaderTitle,
3339
                                    dataIndex: rec.FieldName,
3340
                                    filter: {
3341
                                        itemDefaults: {
3342
                                            emptyText: 'Search for...'
3343
                                        }
3344
                                    }
3345
                                });
3346
                            }
3347
                            break
3348
                    }
3349
                } else {
3350
                    cols_.push({
3351
                        text: rec.HeaderTitle,
3352
                        dataIndex: rec.FieldName,
3353
                        hidden: true,
3354
                        filter: {
3355
                            itemDefaults: {
3356
                                emptyText: 'Search for...'
3357
                            }
3358
                        }
3359
                    });
3360
                }
3361
            });
3362
        };
3363
        var param_ = me.param;
3364
        if (param_ == undefined) {
3365
            param_ = ''
3366
        }
3367
        var jsStoreGrid = new Ext.data.Store({
3368
            storeId: me.storename,
3369
            autoLoad: autoLoad,
3370
            pageSize: me.pagesize,
3371
            proxy: {
3372
                method: 'POST',
3373
                type: 'ajax',
3374
                url: '/UserControl/GetStorePaging',
3375
                extraParams: {
3376
                    tableName: me.tableName,
3377
                    param: param_
3378
                },
3379
                reader: {
3380
                    type: 'json',
3381
                    root: 'data',
3382
                    totalProperty: 'totalRecords'
3383
                }
3384
            }
3385
        });
3386
        Ext.applyIf(me, {
3387
            autoScroll: true,
3388
            enableLocking: true,
3389
            lockedGridConfig: {
3390
                header: false,
3391
                collapsible: true,
3392
                width: 250,
3393
                forceFit: true,
3394
                listeners: {
3395
                    render: function (grid) {
3396
                        var pagingToolbar = grid.child('pagingtoolbar');
3397
                        if (pagingToolbar) {
3398
                            grid.remove(pagingToolbar, true);
3399
                        }
3400
                    }
3401
                }
3402
            },
3403
            listeners: {
3404
                viewready: function () {
3405
                    if (autoLoad == true) {
3406
                        this.getStore().loadPage(1);
3407
                    }
3408

    
3409
                },
3410
                beforeedit: function () {
3411
                    return false;
3412
                }
3413
            },
3414
            lockedViewConfig: {
3415
                scroll: 'horizontal'
3416
            },
3417
            viewConfig: {
3418
                emptyText: 'No Data Display',
3419
                deferEmptyText: false,
3420
                //add Nana for Autosize Column Mode
3421
                listeners: {
3422
                    refresh: function (dataview) {
3423
                        Ext.each(dataview.panel.columns, function (column) {
3424
                            if (column.autoSizeColumn == false)
3425
                                column.autoSizeColumn = true;
3426
                            column.autoSize();
3427
                        })
3428
                    }
3429
                }
3430
            },
3431
            columns: cols_,
3432

    
3433
            store: jsStoreGrid,
3434

    
3435
            plugins: [{
3436
                ptype: 'gridfilters'
3437
            }, {
3438
                ptype: 'rowediting',
3439
                clicksToEdit: 2,
3440
                listeners: {
3441
                    edit: function (editor, context, eOpts) {}
3442
                }
3443
            }, ]
3444
        });
3445
        me.callParent(arguments);
3446
    }
3447

    
3448
});
3449
/*MinovaGrid Report Generator*/
3450
Ext.define('MinovaUtil.MinovaES.MinovaRptGeneratorGrid', {
3451
    extend: 'Ext.grid.Panel',
3452
    requires: ['Ext.grid.RowNumberer', 'Ext.grid.feature.Grouping'],
3453
    alias: 'widget.minovareportgeneratorgrid',
3454
    storeOutput: undefined,
3455
    storeName: undefined,
3456
    filter: undefined,
3457
    tableName: undefined,
3458
    pagesize: undefined,
3459
    autoLoad: undefined,
3460
    initComponent: function () {
3461
        var me = this;
3462
        var store = me.storeOutput;
3463
        var cols = [];
3464
        var groupField = '';
3465
        var autoLoad = true;
3466
        if (me.autoLoad == false) {
3467
            autoLoad = false;
3468
        }
3469
        if (store.length > 0) {
3470
            Ext.each(store, function (rec) {
3471
                var isHide = false;
3472
                if (rec.IsGrouping == "YES") {
3473
                    groupField = rec.FieldName;
3474
                    isHide = true;
3475
                }
3476
                var format = rec.FormatRef;
3477
                if (format != null && format != undefined)
3478
                    format = format.toLowerCase();
3479
                switch (format) {
3480
                    case "file":
3481
                        cols.push({
3482
                            xtype: 'minovapicturecolumn',
3483
                            text: rec.HeaderTitle,
3484
                            dataIndex: rec.FieldName,
3485
                            hidden: isHide,
3486
                            width: 100
3487
                        });
3488
                        break
3489
                    case "date":
3490
                        cols.push({
3491
                            xtype: 'minovadatecolumn',
3492
                            text: rec.HeaderTitle,
3493
                            dataIndex: rec.FieldName,
3494
                            hidden: isHide,
3495
                            width: 100
3496
                        });
3497
                        break
3498
                    case "amount":
3499
                        cols.push({
3500
                            xtype: 'minovacurrancycolumn',
3501
                            text: rec.HeaderTitle,
3502
                            align: 'right',
3503
                            dataIndex: rec.FieldName,
3504
                            width: 150,
3505
                            hidden: isHide,
3506
                            summaryType: rec.Aggregator,
3507
                            summaryRenderer: function (value) {
3508
                                return Ext.util.Format.number(value, '0,000.00');
3509
                            }
3510
                        });
3511
                        break
3512
                    case "amountencrypt":
3513
                        cols.push({
3514
                            xtype: 'minovaamountcolumn',
3515
                            align: 'right',
3516
                            text: rec.HeaderTitle,
3517
                            dataIndex: rec.FieldName,
3518
                            width: 150,
3519
                            hidden: isHide,
3520
                            summaryType: rec.Aggregator,
3521
                            summaryRenderer: function (value) {
3522
                                if (rec.Aggregator == "sum") {
3523
                                    var str = Ext.StoreManager.lookup("store" + me.tableName);
3524
                                    var records = str.data.items;
3525
                                    var total = 0,
3526
                                    len = records.length;
3527
                                    if (len > 0) {
3528
                                        for (var i = 0; i < len; ++i) {
3529
                                            var nilai = records[i].get(rec.FieldName);
3530
                                            Ext.Ajax.request({
3531
                                                async: false,
3532
                                                method: 'POST',
3533
                                                url: '/Devt/DecryptData',
3534
                                                params: {
3535
                                                    dt: nilai
3536
                                                },
3537
                                                success: function (response) {
3538
                                                    var results = Ext.decode(response.responseText);
3539
                                                    nilai = results.data;
3540
                                                    total += parseFloat(nilai);
3541
                                                }
3542
                                            });
3543
                                        }
3544
                                        Ext.util.Format.thousandSeparator = ".";
3545
                                        return Ext.util.Format.number(total, '0,000');
3546
                                    }
3547
                                    return 0;
3548
                                } else if (rec.Aggregator == "average") {
3549
                                    var str = Ext.StoreManager.lookup("store" + me.tableName);
3550
                                    var records = str.data.items;
3551
                                    var len = records.length,
3552
                                    sum = 0;
3553
                                    if (len > 0) {
3554
                                        for (var i = 0; i < len; ++i) {
3555
                                            var nilai = records[i].get(rec.FieldName);
3556
                                            Ext.Ajax.request({
3557
                                                async: false,
3558
                                                method: 'POST',
3559
                                                url: '/Devt/DecryptData',
3560
                                                params: {
3561
                                                    dt: nilai
3562
                                                },
3563
                                                success: function (response) {
3564
                                                    var results = Ext.decode(response.responseText);
3565
                                                    nilai = results.data;
3566
                                                    sum += parseFloat(nilai);
3567
                                                }
3568
                                            });
3569
                                        }
3570
                                        var rs = sum / len;
3571
                                        Ext.util.Format.thousandSeparator = ".";
3572
                                        return Ext.util.Format.number(rs, '0,000');
3573
                                    }
3574
                                    return 0;
3575
                                } else {
3576
                                    return value;
3577
                                }
3578
                            }
3579
                        });
3580
                        break
3581
                    case "datetime":
3582
                        cols.push({
3583
                            xtype: 'minovadatetimecolumn',
3584
                            text: rec.HeaderTitle,
3585
                            dataIndex: rec.FieldName,
3586
                            width: 150,
3587
                            hidden: isHide
3588
                        });
3589
                        break
3590
                    default:
3591
                        if (rec.TableRef != "" && rec.TableRef != null) {
3592
                            var valueField = null;
3593
                            var displayValue = null;
3594
                            Ext.Ajax.request({
3595
                                async: false,
3596
                                method: 'POST',
3597
                                url: '/UserControl/GetStore',
3598
                                params: {
3599
                                    tableName: 'SDATATABLEFIELD',
3600
                                    param: 'TableName[equal]' + rec.TableRef
3601
                                },
3602
                                success: function (response) {
3603
                                    var results = Ext.decode(response.responseText);
3604
                                    data_ = results.data;
3605
                                    if (data_.length > 0) {
3606
                                        valueField_ = $.grep(data_, function (r) {
3607
                                            return r.ValueField == '1'
3608
                                        });
3609
                                        valueField = valueField_[0].FieldName
3610
                                        displayValue_ = $.grep(data_, function (r) {
3611
                                            return r.DisplayValue == '1'
3612
                                        });
3613
                                        displayValue = displayValue_[0].FieldName
3614
                                    } else {
3615
                                        MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
3616
                                    }
3617
                                }
3618
                            });
3619
                            var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3620
                            var count_ = 0;
3621
                            if (store_) {
3622
                                count_ = store_.count();
3623
                            }
3624
                            if (count_ == 0) {
3625
                                Ext.create('Ext.data.Store', {
3626
                                    storeId: 'store_' + rec.FieldName,
3627
                                    autoLoad: false,
3628
                                    proxy: {
3629
                                        method: 'POST',
3630
                                        type: 'ajax',
3631
                                        url: '/UserControl/GetStore',
3632
                                        extraParams: {
3633
                                            tableName: rec.TableRef,
3634
                                            param: ""
3635
                                        },
3636
                                        reader: {
3637
                                            type: 'json',
3638
                                            root: 'data',
3639
                                            totalProperty: 'data[0].TotalCount'
3640
                                        }
3641
                                    }
3642
                                })
3643
                            }
3644
                            Ext.StoreMgr.lookup('store_' + rec.FieldName).load();
3645
                            var stror = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3646
                            cols.push({
3647
                                xtype: 'minovacombocolumn',
3648
                                text: rec.HeaderTitle,
3649
                                dataIndex: rec.FieldName,
3650
                                valueField: valueField,
3651
                                displayField: displayValue,
3652
                                store: 'store_' + rec.FieldName,
3653
                                width: 200,
3654
                                hidden: isHide,
3655
                                renderer: function (val) {
3656
                                    var stor = stror;
3657
                                    if (stor.getCount() === 0) {}
3658
                                    var index = stor.find(valueField, val);
3659
                                    if (index != -1) {
3660
                                        var rec = stor.getAt(index);
3661
                                        return val + ' - ' + rec.get(displayValue);
3662
                                    } else {
3663
                                        return val;
3664
                                    }
3665
                                }
3666
                            });
3667
                        } else if (rec.FixedValue != "" && rec.FixedValue != null) {
3668
                            cols.push({
3669
                                xtype: 'minovacombocolumnfixvalue',
3670
                                text: rec.HeaderTitle,
3671
                                dataIndex: rec.FieldName,
3672
                                fixedValue: rec.FixedValue,
3673
                                width: 100,
3674
                                hidden: isHide
3675
                            });
3676
                        } else {
3677
                            if (rec.DataType == "0") {
3678
                                cols.push({
3679
                                    text: rec.HeaderTitle,
3680
                                    dataIndex: rec.FieldName,
3681
                                    width: 150,
3682
                                    hidden: isHide
3683
                                });
3684
                            } else {
3685
                                cols.push({
3686
                                    text: rec.HeaderTitle,
3687
                                    dataIndex: rec.FieldName,
3688
                                    width: 150,
3689
                                    hidden: isHide,
3690
                                    summaryType: rec.Aggregator,
3691
                                });
3692
                            }
3693
                        }
3694
                        break
3695
                }
3696
            });
3697
            var featuretype = "summary";
3698
            if (groupField != "") {
3699
                featuretype = "groupingsummary";
3700
            }
3701
            var param = me.filter;
3702
            if (param == undefined) {
3703
                param = ''
3704
            }
3705
            var jsStoreGrid = new Ext.data.Store({
3706
                storeId: me.storeName,
3707
                autoLoad: autoLoad,
3708
                pageSize: me.pagesize,
3709
                proxy: {
3710
                    method: 'POST',
3711
                    type: 'ajax',
3712
                    url: '/UserControl/GetStorePagingAuth',
3713
                    extraParams: {
3714
                        tableName: me.tableName,
3715
                        param: param,
3716
                        menuId: MinovaUtil.GetMenuID()
3717
                    },
3718
                    reader: {
3719
                        type: 'json',
3720
                        root: 'data',
3721
                        totalProperty: 'totalRecords'
3722
                    }
3723
                },
3724
                groupField: groupField
3725
            });
3726
            Ext.applyIf(me, {
3727
                autoScroll: true,
3728
                enableLocking: false,
3729
                lockedGridConfig: {
3730
                    header: false,
3731
                    collapsible: true,
3732
                    width: 250,
3733
                    forceFit: false,
3734
                    listeners: {
3735
                        render: function (grid) {
3736
                            var pagingToolbar = grid.child('pagingtoolbar');
3737
                            if (pagingToolbar) {
3738
                                grid.remove(pagingToolbar, true);
3739
                            }
3740
                        }
3741
                    }
3742
                },
3743
                listeners: {
3744
                    viewready: function () {
3745
                        if (autoLoad == true) {
3746
                            this.getStore().loadPage(1);
3747
                        }
3748
                    },
3749
                    beforeedit: function () {
3750
                        return false;
3751
                    }
3752
                },
3753
                lockedViewConfig: {
3754
                    scroll: 'horizontal'
3755
                },
3756
                viewConfig: {
3757
                    emptyText: 'No Data Display',
3758
                    deferEmptyText: false
3759
                },
3760
                selModel: {},
3761
                columns: cols,
3762
                store: jsStoreGrid,
3763
                features: [{
3764
                    ftype: 'groupingsummary'
3765
                }
3766
                ],
3767
                plugins: [{
3768
                    ptype: 'gridfilters'
3769
                }
3770
                ]
3771
            });
3772
        }
3773
        me.callParent(arguments);
3774
    }
3775
});
3776
/*MinovaGrouping Grid*/
3777
Ext.define('MinovaUtil.MinovaES.MinovaGroupingGrid', {
3778
    extend: 'Ext.grid.Panel',
3779
    requires: ['Ext.grid.RowNumberer', 'Ext.grid.feature.Grouping'],
3780
    alias: 'widget.minovagroupinggrid',
3781
    tableName: undefined,
3782
    isLookup: undefined,
3783
    param: undefined,
3784
    pagesize: undefined,
3785
    storeName: undefined,
3786
    layoutType: undefined,
3787
    enableLocking: true,
3788
    autoLoad: undefined,
3789
    multiSelect: undefined,
3790
    getTableName: function () {
3791
        return this.tableName;
3792
    },
3793
    initComponent: function () {
3794
        var me = this;
3795
        var cols_ = [];
3796
        var fieldeditor = {};
3797
        var hasil = null;
3798
        var autoLoad = true;
3799
        var LangID = localStorage.LangId;
3800
        var fielGrid = 'rec.GridView == 1';
3801
        var locking = true;
3802
        var checkSelection = '';
3803
        var widthLock = 250;
3804
        var GroupField = '';
3805
        if (me.multiSelect) {
3806
            locking = false;
3807
            checkSelection = 'checkboxmodel';
3808
            widthLock = 40;
3809
        }
3810
        if (me.autoLoad == false) {
3811
            autoLoad = false;
3812
        }
3813
        parameter = null;
3814
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3815
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
3816
            fielGrid = 'rec.LookupGrid == 1';
3817
            locking = false;
3818
        } else {
3819
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
3820
        };
3821

    
3822
        Ext.Ajax.request({
3823
            async: false,
3824
            method: 'POST',
3825
            url: '/UserControl/GetStore',
3826
            params: {
3827
                tableName: 'PDSBS0007',
3828
                param: parameter
3829
            },
3830
            success: function (response) {
3831
                var results = Ext.decode(response.responseText);
3832
                hasil = results.data;
3833
            }
3834
        });
3835
        if (hasil.length > 0) {
3836
            Ext.each(hasil, function (rec) {
3837
                var null_ = null;
3838
                if (rec.SearchFunction == "group") {
3839
                    GroupField = rec.FieldName;
3840
                }
3841
                if (rec.IsPrimaryKey == true) {
3842
                    null_ = false;
3843
                }
3844
                if (rec.IsRequired == true) {
3845
                    null_ = false;
3846
                } else {
3847
                    null_ = true;
3848
                }
3849
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
3850
                    if (rec.LookupGrid == 1) {
3851
                        switch (rec.FormatRef) {
3852
                            case "date":
3853
                                cols_.push({
3854
                                    xtype: 'minovadatecolumn',
3855
                                    text: rec.HeaderTitle,
3856
                                    dataIndex: rec.FieldName,
3857
                                    width: 100,
3858
                                    filter: {
3859
                                        type: 'date',
3860
                                        itemDefaults: {
3861
                                            emptyText: 'Search for...'
3862
                                        }
3863
                                    }
3864
                                });
3865
                                break
3866
                            case "amount":
3867
                                cols_.push({
3868
                                    xtype: 'minovacurrancycolumn',
3869
                                    text: rec.HeaderTitle,
3870
                                    align: 'right',
3871
                                    dataIndex: rec.FieldName,
3872
                                    width: 100,
3873
                                    filter: {
3874
                                        type: 'number',
3875
                                        itemDefaults: {
3876
                                            emptyText: 'Search for...'
3877
                                        }
3878
                                    }
3879
                                });
3880
                                break
3881
                            case "amountencrypt":
3882
                                cols_.push({
3883
                                    xtype: 'minovaamountcolumn',
3884
                                    align: 'right',
3885
                                    text: rec.HeaderTitle,
3886
                                    dataIndex: rec.FieldName,
3887
                                    width: 100,
3888
                                    filter: {
3889
                                        type: 'string',
3890
                                        itemDefaults: {
3891
                                            emptyText: 'Search for...'
3892
                                        }
3893
                                    }
3894
                                });
3895
                                break
3896
                            case "datetime":
3897
                                cols_.push({
3898
                                    xtype: 'minovadatetimecolumn',
3899
                                    text: rec.HeaderTitle,
3900
                                    dataIndex: rec.FieldName,
3901
                                    width: 140,
3902
                                    filter: {
3903
                                        type: 'string',
3904
                                        itemDefaults: {
3905
                                            emptyText: 'Search for...'
3906
                                        }
3907
                                    }
3908
                                });
3909
                                break
3910
                            default:
3911
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
3912
                                    cols_.push({
3913
                                        text: rec.HeaderTitle,
3914
                                        dataIndex: rec.FieldName,
3915
                                        width: 100,
3916
                                        filter: {
3917
                                            type: 'string',
3918
                                            itemDefaults: {
3919
                                                emptyText: 'Search for...'
3920
                                            }
3921
                                        }
3922
                                    });
3923
                                } else if (rec.TableRef != "") {
3924
                                    if (rec.TableRef != null) {
3925
                                        var valueField = null;
3926
                                        var displayValue = null;
3927
                                        Ext.Ajax.request({
3928
                                            async: false,
3929
                                            method: 'POST',
3930
                                            url: '/UserControl/GetStore',
3931
                                            params: {
3932
                                                tableName: 'SDATATABLEFIELD',
3933
                                                param: 'TableName[equal]' + rec.TableRef
3934
                                            },
3935
                                            success: function (response) {
3936
                                                var results = Ext.decode(response.responseText);
3937
                                                data_ = results.data;
3938
                                                if (data_ != undefined) {
3939
                                                    valueField_ = $.grep(data_, function (r) {
3940
                                                        return r.ValueField == '1'
3941
                                                    });
3942
                                                    valueField = valueField_[0].FieldName
3943
                                                    displayValue_ = $.grep(data_, function (r) {
3944
                                                        return r.DisplayValue == '1'
3945
                                                    });
3946
                                                    displayValue = displayValue_[0].FieldName
3947
                                                }
3948
                                            }
3949
                                        });
3950
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
3951
                                        var count_ = 0;
3952
                                        if (store_) {
3953
                                            count_ = store_.count();
3954
                                        }
3955
                                        if (count_ == 0) {
3956
                                            Ext.create('Ext.data.Store', {
3957
                                                storeId: 'store_' + rec.FieldName,
3958
                                                //autoLoad: true,
3959
                                                proxy: {
3960
                                                    method: 'POST',
3961
                                                    type: 'ajax',
3962
                                                    url: '/UserControl/GetStore',
3963
                                                    extraParams: {
3964
                                                        tableName: rec.TableRef,
3965
                                                        param: rec.ParamCombo
3966
                                                    },
3967
                                                    reader: {
3968
                                                        type: 'json',
3969
                                                        root: 'data',
3970
                                                        totalProperty: 'data[0].TotalCount'
3971
                                                    }
3972
                                                }
3973
                                            })
3974
                                        }
3975
                                        cols_.push({
3976
                                            xtype: 'minovacombocolumn',
3977
                                            text: rec.HeaderTitle,
3978
                                            dataIndex: rec.FieldName,
3979
                                            valueField: valueField,
3980
                                            displayField: displayValue,
3981
                                            store: 'store_' + rec.FieldName,
3982
                                            filter: {
3983
                                                type: 'list',
3984
                                                itemDefaults: {
3985
                                                    emptyText: 'Search for...'
3986
                                                }
3987
                                            }
3988
                                        });
3989
                                    }
3990
                                } else {
3991
                                    cols_.push({
3992
                                        text: rec.HeaderTitle,
3993
                                        dataIndex: rec.FieldName,
3994
                                        filter: {
3995
                                            itemDefaults: {
3996
                                                emptyText: 'Search for...'
3997
                                            }
3998
                                        }
3999
                                    });
4000
                                }
4001
                                break
4002
                        }
4003
                    } else {
4004
                        cols_.push({
4005
                            text: rec.HeaderTitle,
4006
                            dataIndex: rec.FieldName,
4007
                            hidden: true,
4008
                            filter: {
4009
                                itemDefaults: {
4010
                                    emptyText: 'Search for...'
4011
                                }
4012
                            }
4013
                        });
4014
                    }
4015

    
4016
                } else {
4017
                    if (rec.GridView == 1) {
4018
                        switch (rec.FormatRef) {
4019
                            case "date":
4020
                                cols_.push({
4021
                                    xtype: 'minovadatecolumn',
4022
                                    text: rec.HeaderTitle,
4023
                                    dataIndex: rec.FieldName,
4024
                                    width: 100,
4025
                                    flex: 1,
4026
                                    filter: {
4027
                                        type: 'date',
4028
                                        itemDefaults: {
4029
                                            emptyText: 'Search for...'
4030
                                        }
4031
                                    }
4032
                                });
4033
                                break
4034
                            case "amountencrypt":
4035
                                cols_.push({
4036
                                    xtype: 'minovaamountcolumn',
4037
                                    align: 'right',
4038
                                    text: rec.HeaderTitle,
4039
                                    dataIndex: rec.FieldName,
4040
                                    width: 100,
4041
                                    flex: 1,
4042
                                    filter: {
4043
                                        type: 'string',
4044
                                        itemDefaults: {
4045
                                            emptyText: 'Search for...'
4046
                                        }
4047
                                    }
4048
                                });
4049
                                break
4050
                            case "amount":
4051
                                cols_.push({
4052
                                    xtype: 'minovacurrancycolumn',
4053
                                    text: rec.HeaderTitle,
4054
                                    align: 'right',
4055
                                    dataIndex: rec.FieldName,
4056
                                    width: 100,
4057
                                    flex: 1,
4058
                                    filter: {
4059
                                        type: 'number',
4060
                                        itemDefaults: {
4061
                                            emptyText: 'Search for...'
4062
                                        }
4063
                                    }
4064
                                });
4065
                                break
4066
                            case "datetime":
4067
                                cols_.push({
4068
                                    xtype: 'minovadatetimecolumn',
4069
                                    text: rec.HeaderTitle,
4070
                                    dataIndex: rec.FieldName,
4071
                                    width: 140,
4072
                                    flex: 1,
4073
                                    filter: {
4074
                                        type: 'string',
4075
                                        itemDefaults: {
4076
                                            emptyText: 'Search for...'
4077
                                        }
4078
                                    }
4079
                                });
4080
                                break
4081
                            default:
4082
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
4083
                                    cols_.push({
4084
                                        text: rec.HeaderTitle,
4085
                                        dataIndex: rec.FieldName,
4086
                                        width: 100,
4087
                                        flex: 1,
4088
                                        filter: {
4089
                                            type: 'string',
4090
                                            itemDefaults: {
4091
                                                emptyText: 'Search for...'
4092
                                            }
4093
                                        }
4094
                                    });
4095
                                } else if (rec.TableRef != "") {
4096
                                    if (rec.TableRef != null) {
4097
                                        var valueField = null;
4098
                                        var displayValue = null;
4099
                                        Ext.Ajax.request({
4100
                                            async: false,
4101
                                            method: 'POST',
4102
                                            url: '/UserControl/GetStore',
4103
                                            params: {
4104
                                                tableName: 'SDATATABLEFIELD',
4105
                                                param: 'TableName[equal]' + rec.TableRef
4106
                                            },
4107
                                            success: function (response) {
4108
                                                var results = Ext.decode(response.responseText);
4109
                                                data_ = results.data;
4110
                                                if (data_ != undefined) {
4111
                                                    valueField_ = $.grep(data_, function (r) {
4112
                                                        return r.ValueField == '1'
4113
                                                    });
4114
                                                    valueField = valueField_[0].FieldName
4115
                                                    displayValue_ = $.grep(data_, function (r) {
4116
                                                        return r.DisplayValue == '1'
4117
                                                    });
4118
                                                    displayValue = displayValue_[0].FieldName
4119
                                                }
4120
                                            }
4121
                                        });
4122
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
4123
                                        var count_ = 0;
4124
                                        if (store_) {
4125
                                            count_ = store_.count();
4126
                                        }
4127
                                        if (count_ == 0) {
4128
                                            Ext.create('Ext.data.Store', {
4129
                                                storeId: 'store_' + rec.FieldName,
4130
                                                autoLoad: false,
4131
                                                proxy: {
4132
                                                    method: 'POST',
4133
                                                    type: 'ajax',
4134
                                                    url: '/UserControl/GetStore',
4135
                                                    extraParams: {
4136
                                                        tableName: rec.TableRef,
4137
                                                        param: rec.ParamCombo
4138
                                                    },
4139
                                                    reader: {
4140
                                                        type: 'json',
4141
                                                        root: 'data',
4142
                                                        totalProperty: 'data[0].TotalCount'
4143
                                                    }
4144
                                                }
4145
                                            })
4146
                                        }
4147
                                        cols_.push({
4148
                                            xtype: 'minovacombocolumn',
4149
                                            text: rec.HeaderTitle,
4150
                                            dataIndex: rec.FieldName,
4151
                                            valueField: valueField,
4152
                                            displayField: displayValue,
4153
                                            store: 'store_' + rec.FieldName,
4154
                                            flex: 1,
4155
                                            filter: {
4156
                                                type: 'list',
4157
                                                itemDefaults: {
4158
                                                    emptyText: 'Search for...'
4159
                                                }
4160
                                            }
4161
                                        });
4162
                                    }
4163

    
4164
                                } else {
4165
                                    cols_.push({
4166
                                        text: rec.HeaderTitle,
4167
                                        dataIndex: rec.FieldName,
4168
                                        flex: 1,
4169
                                        filter: {
4170
                                            itemDefaults: {
4171
                                                emptyText: 'Search for...'
4172
                                            }
4173
                                        }
4174
                                    });
4175
                                }
4176
                                break
4177
                        }
4178
                    } else {
4179
                        cols_.push({
4180
                            text: rec.HeaderTitle,
4181
                            dataIndex: rec.FieldName,
4182
                            hidden: true,
4183
                            filter: {
4184
                                itemDefaults: {
4185
                                    emptyText: 'Search for...'
4186
                                }
4187
                            }
4188
                        });
4189
                    }
4190

    
4191
                }
4192
            });
4193
        }
4194
        var param_ = me.param;
4195
        if (param_ == undefined) {
4196
            param_ = ''
4197
        }
4198
        var jsStoreGrid = new Ext.data.Store({
4199
            storeId: me.storeName,
4200
            autoLoad: autoLoad,
4201
            pageSize: me.pagesize,
4202
            proxy: {
4203
                method: 'POST',
4204
                type: 'ajax',
4205
                url: '/UserControl/GetStorePagingAuth',
4206
                extraParams: {
4207
                    tableName: me.tableName,
4208
                    param: param_,
4209
                    menuId: MinovaUtil.GetMenuID()
4210
                },
4211
                reader: {
4212
                    type: 'json',
4213
                    root: 'data',
4214
                    totalProperty: 'totalRecords'
4215
                }
4216
            },
4217
            groupField: GroupField,
4218
            //sorters: ['tipe','cuisine','name'],
4219
        });
4220
        Ext.applyIf(me, {
4221
            autoScroll: true,
4222
            enableLocking: locking,
4223
            lockedGridConfig: {
4224
                header: false,
4225
                collapsible: true,
4226
                width: widthLock,
4227
                forceFit: locking,
4228
                listeners: {
4229
                    render: function (grid) {
4230
                        var pagingToolbar = grid.child('pagingtoolbar');
4231
                        if (pagingToolbar) {
4232
                            grid.remove(pagingToolbar, true);
4233
                        }
4234
                    }
4235
                }
4236
            },
4237
            listeners: {
4238
                viewready: function () {
4239
                    if (autoLoad == true) {
4240
                        this.getStore().loadPage(1);
4241
                    }
4242

    
4243
                },
4244
                beforeedit: function () {
4245
                    return false;
4246
                }
4247
            },
4248
            lockedViewConfig: {
4249
                scroll: 'horizontal'
4250
            },
4251
            viewConfig: {
4252
                emptyText: 'No Data Display',
4253
                deferEmptyText: false,
4254
                listeners: {
4255
                    refresh: function (dataview) {
4256
                        Ext.each(dataview.panel.columns, function (column) {
4257
                            if (column.autoSizeColumn == false)
4258
                                column.autoSizeColumn = true;
4259
                            column.autoSize();
4260
                        })
4261
                    }
4262
                }
4263
            },
4264
            selModel: {},
4265
            selType: checkSelection,
4266
            columns: cols_,
4267
            store: jsStoreGrid,
4268
            features: [{
4269
                ftype: 'grouping'
4270
            }
4271
            ],
4272
            plugins: [{
4273
                ptype: 'gridfilters'
4274
            }
4275
            ]
4276
        });
4277
        me.callParent(arguments);
4278
    }
4279
});
4280
/*Form ESS Generator*/
4281
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm', {
4282
    extend: 'Ext.form.Panel',
4283
    alias: ['widget.MinovaWorkflowForm', 'widget.minovaworkflowform', 'widget.workflowform'],
4284
    formname: this.name,
4285
    bizprocid: undefined,
4286
    taskid: undefined,
4287
    tableName: undefined,
4288
    titleform: undefined,
4289
    resizable: true,
4290
    border: false,
4291
    autoScroll: true,
4292
    minHeight: 20,
4293
    layout: 'column',
4294
    listeners: {
4295
        render: function () {
4296
            if (this.titleform != undefined) {
4297
                this.setTitle(this.titleform);
4298
            }
4299
        },
4300
    },
4301
    defaults: {
4302
        layout: 'form',
4303
        xtype: 'container',
4304
        defaultType: 'textfield',
4305
        style: 'width: 50%',
4306
    },
4307
    initComponent: function () {
4308
        var col1 = [];
4309
        var col2 = [];
4310
        var me = this;
4311
        var LangID = localStorage.LangId;
4312
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
4313
        var formname_ = me.name;
4314
        var nameTable_ = me.tableName;
4315
        Ext.Ajax.request({
4316
            async: false,
4317
            method: 'POST',
4318
            url: '/UserControl/GetStore',
4319
            params: {
4320
                tableName: 'PDSWFSTRUCTUREFIELD',
4321
                param: parameter
4322
            },
4323
            success: function (response) {
4324
                var results = Ext.decode(response.responseText);
4325
                hasil = results.data;
4326
            }
4327
        });
4328
        if (hasil.length > 0) {
4329
            Ext.each(hasil, function (rec) {
4330
                var formfield = undefined;
4331
                var readonly = false;
4332
                var ishidden = false;
4333
                var allowblank = true;
4334
                var startDt = null;
4335
                var endDt = null;
4336
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
4337
                    startDt = 'StartDate';
4338
                    endDt = 'EndDate';
4339
                }
4340
                if (rec.IsReadOnly == '1') {
4341
                    readonly = true;
4342
                }
4343
                if (rec.IsRequired == '1') {
4344
                    allowblank = false;
4345
                }
4346
                if (rec.IsVisible == '0') {
4347
                    ishidden = true;
4348
                }
4349
                if (rec.SearchType == "") //textfield
4350
                {
4351
                    switch (rec.FormatRef) {
4352
                        case "date":
4353
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
4354
                                formfield = new Ext.form.DateField({
4355
                                    allowBlank: allowblank,
4356
                                    fieldLabel: rec.ScreenCaption,
4357
                                    readOnly: readonly,
4358
                                    msgTarget: 'side',
4359
                                    labelCls: 'label-minova',
4360
                                    labelWidth: 150,
4361
                                    hidden: ishidden,
4362
                                    name: rec.FieldName,
4363
                                    submitFormat: 'Ymd',
4364
                                    value: rec.DefaultValue,
4365
                                    anchor: '100%',
4366
                                    vtype: 'daterange',
4367
                                    start: startDt,
4368
                                    end: endDt,
4369
                                    formname: formname_,
4370
                                    nameTable: nameTable_,
4371
                                    hideMode: 'visibility',
4372
                                    listeners: {
4373
                                        change: function (val) {
4374
                                            var _label = val.name;
4375
                                            var _form = val.formname;
4376
                                            var _Value = val.getValue();
4377
                                            var target = rec.TriggerCombo;
4378
                                            var custumFunc = rec.SelectFunction;
4379
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4380
                                                Ext.Ajax.request({
4381
                                                    async: false,
4382
                                                    method: 'POST',
4383
                                                    url: '/UserControl/GetStore',
4384
                                                    params: {
4385
                                                        tableName: 'PCMFUNC',
4386
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4387
                                                    },
4388
                                                    success: function (response) {
4389
                                                        var results = Ext.decode(response.responseText);
4390
                                                        data_ = results.data[0];
4391
                                                        if (data_ != undefined) {
4392
                                                            custumFunc = data_.FunctionCode;
4393
                                                        }
4394
                                                    }
4395
                                                });
4396
                                            }
4397
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4398
                                            if (frm) {
4399
                                                if (custumFunc) {
4400
                                                    eval(custumFunc)
4401
                                                }
4402
                                            }
4403
                                        }
4404
                                    }
4405
                                });
4406
                            } else {
4407
                                formfield = new Ext.form.DateField({
4408
                                    allowBlank: allowblank,
4409
                                    fieldLabel: rec.ScreenCaption,
4410
                                    readOnly: readonly,
4411
                                    msgTarget: 'side',
4412
                                    labelCls: 'label-minova',
4413
                                    labelWidth: 150,
4414
                                    hidden: ishidden,
4415
                                    name: rec.FieldName,
4416
                                    submitFormat: 'Ymd',
4417
                                    value: rec.DefaultValue,
4418
                                    anchor: '100%',
4419
                                    formname: formname_,
4420
                                    nameTable: nameTable_,
4421
                                    hideMode: 'visibility',
4422
                                    listeners: {
4423
                                        change: function (val) {
4424
                                            var _label = val.name;
4425
                                            var _form = val.formname;
4426
                                            var _Value = val.getValue();
4427
                                            var target = rec.TriggerCombo;
4428
                                            var custumFunc = rec.SelectFunction;
4429
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4430
                                                Ext.Ajax.request({
4431
                                                    async: false,
4432
                                                    method: 'POST',
4433
                                                    url: '/UserControl/GetStore',
4434
                                                    params: {
4435
                                                        tableName: 'PCMFUNC',
4436
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4437
                                                    },
4438
                                                    success: function (response) {
4439
                                                        var results = Ext.decode(response.responseText);
4440
                                                        data_ = results.data[0];
4441
                                                        if (data_ != undefined) {
4442
                                                            custumFunc = data_.FunctionCode;
4443
                                                        }
4444
                                                    }
4445
                                                });
4446
                                            }
4447
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4448
                                            if (frm) {
4449
                                                if (custumFunc) {
4450
                                                    eval(custumFunc)
4451
                                                }
4452
                                            }
4453
                                        }
4454
                                    }
4455
                                });
4456
                            }
4457
                            break;
4458
                        case "time":
4459
                            formfield = new Ext.form.TimeField({
4460
                                allowBlank: allowblank,
4461
                                fieldLabel: rec.ScreenCaption,
4462
                                readOnly: readonly,
4463
                                labelCls: 'label-minova',
4464
                                labelWidth: 150,
4465
                                hidden: ishidden,
4466
                                name: rec.FieldName,
4467
                                msgTarget: 'side',
4468
                                format: 'Hi',
4469
                                submitFormat: 'Hi',
4470
                                increment: 5,
4471
                                value: rec.DefaultValue,
4472
                                anchor: '100%',
4473
                                formname: formname_,
4474
                                nameTable: nameTable_,
4475
                                listeners: {
4476
                                    change: function (val) {
4477
                                        var _label = val.name;
4478
                                        var _form = val.formname;
4479
                                        var _Value = val.getValue();
4480
                                        var target = rec.TriggerCombo;
4481
                                        var custumFunc = rec.SelectFunction;
4482
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4483
                                            Ext.Ajax.request({
4484
                                                async: false,
4485
                                                method: 'POST',
4486
                                                url: '/UserControl/GetStore',
4487
                                                params: {
4488
                                                    tableName: 'PCMFUNC',
4489
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
4490
                                                },
4491
                                                success: function (response) {
4492
                                                    var results = Ext.decode(response.responseText);
4493
                                                    data_ = results.data[0];
4494
                                                    if (data_ != undefined) {
4495
                                                        custumFunc = data_.FunctionCode;
4496
                                                    }
4497
                                                }
4498
                                            });
4499
                                        }
4500
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4501
                                        if (frm) {
4502
                                            if (custumFunc) {
4503
                                                eval(custumFunc)
4504
                                            }
4505
                                        }
4506
                                    }
4507
                                }
4508
                            });
4509
                            break;
4510
                        case "amount":
4511
                            formfield = new Ext.form.TextField({
4512
                                allowBlank: allowblank,
4513
                                fieldLabel: rec.ScreenCaption,
4514
                                readOnly: readonly,
4515
                                labelCls: 'label-minova',
4516
                                labelWidth: 150,
4517
                                hidden: ishidden,
4518
                                name: rec.FieldName,
4519
                                msgTarget: 'side',
4520
                                value: rec.DefaultValue,
4521
                                maxLength: rec.Length,
4522
                                anchor: '100%',
4523
                                formname: formname_,
4524
                                nameTable: nameTable_,
4525
                                fieldStyle: 'text-align:right;',
4526
                                listeners: {
4527
                                    change: function (val) {
4528
                                        var _label = val.name;
4529
                                        var _form = val.formname;
4530
                                        var _Value = val.getValue();
4531
                                        var target = rec.TriggerCombo;
4532
                                        var custumFunc = rec.SelectFunction;
4533
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4534
                                            Ext.Ajax.request({
4535
                                                async: false,
4536
                                                method: 'POST',
4537
                                                url: '/UserControl/GetStore',
4538
                                                params: {
4539
                                                    tableName: 'PCMFUNC',
4540
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4541
                                                },
4542
                                                success: function (response) {
4543
                                                    var results = Ext.decode(response.responseText);
4544
                                                    data_ = results.data[0];
4545
                                                    if (data_ != undefined) {
4546
                                                        custumFunc = data_.FunctionCode;
4547
                                                    }
4548
                                                }
4549
                                            });
4550
                                        }
4551
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4552
                                        if (frm) {
4553
                                            if (custumFunc) {
4554
                                                eval(custumFunc)
4555
                                            }
4556
                                        }
4557
                                    }
4558
                                }
4559
                            });
4560
                            break;
4561
                        case "file":
4562
                            formfield = new MinovaUtil.MinovaES.UploadFile({
4563
                                allowBlank: allowblank,
4564
                                fieldLabel: rec.ScreenCaption,
4565
                                readOnly: readonly,
4566
                                readOnlyCls: 'minova-readonly',
4567
                                hidden: ishidden,
4568
                                labelCls: 'label-minova',
4569
                                name: rec.FieldName,
4570
                                msgTarget: 'side',
4571
                                fieldname: rec.FieldName,
4572
                                IsPrimaryKey: rec.IsPrimaryKey,
4573
                                tableName: rec.TableRef,
4574
                                triggerCls: 'x-form-search-trigger',
4575
                                formtarget: me.formname,
4576
                                anchor: '100%',
4577
                                formname: formname_,
4578
                                nameTable: nameTable_,
4579
                                listeners: {
4580
                                    change: function (val) {
4581
                                        var _label = val.name;
4582
                                        var _form = val.formname;
4583
                                        var _Value = val.getValue();
4584
                                        var target = rec.TriggerCombo;
4585
                                        var custumFunc = rec.SelectFunction;
4586
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4587
                                            Ext.Ajax.request({
4588
                                                async: false,
4589
                                                method: 'POST',
4590
                                                url: '/UserControl/GetStore',
4591
                                                params: {
4592
                                                    tableName: 'PCMFUNC',
4593
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4594
                                                },
4595
                                                success: function (response) {
4596
                                                    var results = Ext.decode(response.responseText);
4597
                                                    data_ = results.data[0];
4598
                                                    if (data_ != undefined) {
4599
                                                        custumFunc = data_.FunctionCode;
4600
                                                    }
4601
                                                }
4602
                                            });
4603
                                        }
4604
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4605
                                        if (frm) {
4606
                                            if (target) {
4607
                                                var f = frm.getForm().findField(target)
4608
                                                _store = f.getStore();
4609
                                                var _tbl = _store.proxy.extraParams.tableName;
4610
                                                var oldParam = _store.proxy.extraParams.param;
4611
                                                _store.proxy.extraParams = {
4612
                                                    tableName: _tbl,
4613
                                                    param: _label + '[=]' + _Value
4614
                                                };
4615
                                                _store.load();
4616
                                            }
4617
                                            if (custumFunc) {
4618
                                                eval(custumFunc)
4619
                                            }
4620
                                        }
4621
                                    }
4622
                                }
4623
                            });
4624
                            break;
4625
                        default:
4626
                            if (rec.DataType == 0) {
4627
                                if (rec.Length > 250) {
4628
                                    formfield = new Ext.form.TextArea({
4629
                                        allowBlank: allowblank,
4630
                                        fieldLabel: rec.ScreenCaption,
4631
                                        readOnly: readonly,
4632
                                        labelCls: 'label-minova',
4633
                                        labelWidth: 150,
4634
                                        hidden: ishidden,
4635
                                        name: rec.FieldName,
4636
                                        msgTarget: 'side',
4637
                                        value: rec.DefaultValue,
4638
                                        maxLength: rec.Length,
4639
                                        anchor: '100%',
4640
                                        formname: formname_,
4641
                                        nameTable: nameTable_,
4642
                                        listeners: {
4643
                                            change: function (val) {
4644
                                                var _label = val.name;
4645
                                                var _form = val.formname;
4646
                                                var _Value = val.getValue();
4647
                                                var target = rec.TriggerCombo;
4648
                                                var custumFunc = rec.SelectFunction;
4649
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4650
                                                    Ext.Ajax.request({
4651
                                                        async: false,
4652
                                                        method: 'POST',
4653
                                                        url: '/UserControl/GetStore',
4654
                                                        params: {
4655
                                                            tableName: 'PCMFUNC',
4656
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4657
                                                        },
4658
                                                        success: function (response) {
4659
                                                            var results = Ext.decode(response.responseText);
4660
                                                            data_ = results.data[0];
4661
                                                            if (data_ != undefined) {
4662
                                                                custumFunc = data_.FunctionCode;
4663
                                                            }
4664
                                                        }
4665
                                                    });
4666
                                                }
4667
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4668
                                                if (frm) {
4669
                                                    if (custumFunc) {
4670
                                                        eval(custumFunc)
4671
                                                    }
4672
                                                }
4673
                                            }
4674
                                        }
4675
                                    });
4676
                                } else {
4677
                                    if (rec.FixedValue != '') {
4678
                                        var storeData = [];
4679
                                        var str = rec.FixedValue;
4680
                                        var hasil = str.split('||');
4681
                                        hasil.forEach(function (h) {
4682
                                            store_ = h.split('=')
4683
                                            storeData.push({
4684
                                                code: store_[0],
4685
                                                desc: store_[1],
4686
                                            });
4687
                                        });
4688
                                        formfield = new Ext.form.ComboBox({
4689
                                            allowBlank: allowblank,
4690
                                            fieldLabel: rec.ScreenCaption,
4691
                                            forceSelection: true,
4692
                                            readOnly: readonly,
4693
                                            labelCls: 'label-minova',
4694
                                            labelWidth: 150,
4695
                                            hidden: ishidden,
4696
                                            name: rec.FieldName,
4697
                                            msgTarget: 'side',
4698
                                            value: rec.DefaultValue,
4699
                                            anchor: '100%',
4700
                                            formname: formname_,
4701
                                            nameTable: nameTable_,
4702
                                            formtarget: me.formname,
4703
                                            store: Ext.create('Ext.data.Store', {
4704
                                                storeId: 'store' + rec.FieldName,
4705
                                                autoLoad: true,
4706
                                                data: storeData
4707

    
4708
                                            }),
4709
                                            listeners: {
4710
                                                change: function (val) {
4711
                                                    var _label = val.name;
4712
                                                    var _form = val.formtarget;
4713
                                                    var _Value = val.getValue();
4714
                                                    var target = rec.TriggerCombo;
4715
                                                    var custumFunc = rec.SelectFunction;
4716
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4717
                                                    if (frm) {
4718
                                                        if (target) {
4719
                                                            var f = frm.getForm().findField(target)
4720
                                                            _store = f.getStore();
4721
                                                            var _tbl = _store.proxy.extraParams.tableName;
4722
                                                            var oldParam = _store.proxy.extraParams.param;
4723
                                                            _store.proxy.extraParams = {
4724
                                                                tableName: _tbl,
4725
                                                                param: _label + '[=]' + _Value
4726
                                                            };
4727
                                                            _store.load();
4728
                                                        }
4729
                                                        if (custumFunc) {
4730
                                                            eval(custumFunc)
4731
                                                        }
4732
                                                    }
4733
                                                }
4734
                                            },
4735
                                            queryMode: 'local',
4736
                                            valueField: 'code',
4737
                                            displayField: 'desc',
4738
                                        });
4739
                                    } else {
4740
                                        formfield = new Ext.form.TextField({
4741
                                            allowBlank: allowblank,
4742
                                            fieldLabel: rec.ScreenCaption,
4743
                                            readOnly: readonly,
4744
                                            labelCls: 'label-minova',
4745
                                            labelWidth: 150,
4746
                                            hidden: ishidden,
4747
                                            name: rec.FieldName,
4748
                                            msgTarget: 'side',
4749
                                            value: rec.DefaultValue,
4750
                                            maxLength: rec.Length,
4751
                                            anchor: '100%',
4752
                                            formname: formname_,
4753
                                            nameTable: nameTable_,
4754
                                            listeners: {
4755
                                                change: function (val) {
4756
                                                    var _label = val.name;
4757
                                                    var _form = val.formname;
4758
                                                    var _Value = val.getValue();
4759
                                                    var target = rec.TriggerCombo;
4760
                                                    var custumFunc = rec.SelectFunction;
4761
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4762
                                                        Ext.Ajax.request({
4763
                                                            async: false,
4764
                                                            method: 'POST',
4765
                                                            url: '/UserControl/GetStore',
4766
                                                            params: {
4767
                                                                tableName: 'PCMFUNC',
4768
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4769
                                                            },
4770
                                                            success: function (response) {
4771
                                                                var results = Ext.decode(response.responseText);
4772
                                                                data_ = results.data[0];
4773
                                                                if (data_ != undefined) {
4774
                                                                    custumFunc = data_.FunctionCode;
4775
                                                                }
4776
                                                            }
4777
                                                        });
4778
                                                    }
4779
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4780
                                                    if (frm) {
4781
                                                        if (custumFunc) {
4782
                                                            eval(custumFunc)
4783
                                                        }
4784
                                                    }
4785
                                                }
4786
                                            }
4787
                                        });
4788
                                    }
4789
                                }
4790
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
4791
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
4792
                                    allowBlank: allowblank,
4793
                                    fieldLabel: rec.ScreenCaption,
4794
                                    readOnly: readonly,
4795
                                    labelCls: 'label-minova',
4796
                                    labelWidth: 150,
4797
                                    msgTarget: 'side',
4798
                                    hidden: ishidden,
4799
                                    name: rec.FieldName,
4800
                                    value: rec.DefaultValue,
4801
                                    maxLength: rec.Length,
4802
                                    anchor: '100%',
4803
                                    formname: formname_,
4804
                                    nameTable: nameTable_,
4805
                                    fieldStyle: 'text-align:right;',
4806
                                    listeners: {
4807
                                        change: function (val) {
4808
                                            var _label = val.name;
4809
                                            var _form = val.formname;
4810
                                            var _Value = val.getValue();
4811
                                            var target = rec.TriggerCombo;
4812
                                            var custumFunc = rec.SelectFunction;
4813
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4814
                                                Ext.Ajax.request({
4815
                                                    async: false,
4816
                                                    method: 'POST',
4817
                                                    url: '/UserControl/GetStore',
4818
                                                    params: {
4819
                                                        tableName: 'PCMFUNC',
4820
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4821
                                                    },
4822
                                                    success: function (response) {
4823
                                                        var results = Ext.decode(response.responseText);
4824
                                                        data_ = results.data[0];
4825
                                                        if (data_ != undefined) {
4826
                                                            custumFunc = data_.FunctionCode;
4827
                                                        }
4828
                                                    }
4829
                                                });
4830
                                            }
4831
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4832
                                            if (frm) {
4833
                                                if (target) {
4834
                                                    var f = frm.getForm().findField(target)
4835
                                                    _store = f.getStore();
4836
                                                    var _tbl = _store.proxy.extraParams.tableName;
4837
                                                    var oldParam = _store.proxy.extraParams.param;
4838
                                                    _store.proxy.extraParams = {
4839
                                                        tableName: _tbl,
4840
                                                        param: _label + '[=]' + _Value
4841
                                                    };
4842
                                                    _store.load();
4843
                                                }
4844
                                                if (custumFunc) {
4845
                                                    eval(custumFunc)
4846
                                                }
4847
                                            }
4848
                                        }
4849
                                    }
4850
                                });
4851
                            } else if (rec.DataType == 3) {
4852
                                formfield = new Ext.form.TextField({
4853
                                    allowBlank: allowblank,
4854
                                    fieldLabel: rec.ScreenCaption,
4855
                                    readOnly: readonly,
4856
                                    labelCls: 'label-minova',
4857
                                    labelWidth: 150,
4858
                                    msgTarget: 'side',
4859
                                    hidden: ishidden,
4860
                                    name: rec.FieldName,
4861
                                    value: rec.DefaultValue,
4862
                                    maxLength: rec.Length,
4863
                                    precision: rec.Prec,
4864
                                    anchor: '100%',
4865
                                    formname: formname_,
4866
                                    nameTable: nameTable_,
4867
                                    fieldStyle: 'text-align:right;',
4868
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
4869
                                    listeners: {
4870
                                        change: function (val) {
4871
                                            var _label = val.name;
4872
                                            var _form = val.formname;
4873
                                            var _Value = val.getValue();
4874
                                            var target = rec.TriggerCombo;
4875
                                            var custumFunc = rec.SelectFunction;
4876
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
4877
                                                Ext.Ajax.request({
4878
                                                    async: false,
4879
                                                    method: 'POST',
4880
                                                    url: '/UserControl/GetStore',
4881
                                                    params: {
4882
                                                        tableName: 'PCMFUNC',
4883
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
4884
                                                    },
4885
                                                    success: function (response) {
4886
                                                        var results = Ext.decode(response.responseText);
4887
                                                        data_ = results.data[0];
4888
                                                        if (data_ != undefined) {
4889
                                                            custumFunc = data_.FunctionCode;
4890
                                                        }
4891
                                                    }
4892
                                                });
4893
                                            }
4894
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4895
                                            if (frm) {
4896
                                                if (target) {
4897
                                                    var f = frm.getForm().findField(target)
4898
                                                    _store = f.getStore();
4899
                                                    var _tbl = _store.proxy.extraParams.tableName;
4900
                                                    var oldParam = _store.proxy.extraParams.param;
4901
                                                    _store.proxy.extraParams = {
4902
                                                        tableName: _tbl,
4903
                                                        param: _label + '[=]' + _Value
4904
                                                    };
4905
                                                    _store.load();
4906
                                                }
4907
                                                if (custumFunc) {
4908
                                                    eval(custumFunc)
4909
                                                }
4910
                                            }
4911
                                        }
4912
                                    }
4913
                                });
4914
                            }
4915
                    }
4916
                } else if (rec.SearchType != "") {
4917
                    if (rec.SearchType == "0") //combobox
4918
                    {
4919
                        valueField = null;
4920
                        displayValue = null;
4921
						if (rec.TableRef != "") {
4922
							Ext.Ajax.request({
4923
								async: false,
4924
								method: 'POST',
4925
								url: '/UserControl/GetStore',
4926
								params: {
4927
									tableName: 'SDATATABLEFIELD',
4928
									param: 'TableName[equal]' + rec.TableRef
4929
								},
4930
								success: function (response) {
4931
									var results = Ext.decode(response.responseText);
4932
									data_ = results.data;
4933
									if (data_ != undefined) {
4934
										valueField_ = $.grep(data_, function (r) {
4935
											return r.ValueField == '1'
4936
										});
4937
										if (valueField_.length > 0) {
4938
											valueField = valueField_[0].FieldName
4939
										}
4940
										displayValue_ = $.grep(data_, function (r) {
4941
											return r.DisplayValue == '1'
4942
										});
4943
										if (displayValue_.length > 0) {
4944
											displayValue = displayValue_[0].FieldName
4945
										}
4946
									}
4947
								}
4948
							});
4949
						}
4950
                        formfield = new Ext.form.ComboBox({
4951
                            allowBlank: allowblank,
4952
                            fieldLabel: rec.ScreenCaption,
4953
                            forceSelection: true,
4954
							anyMatch: true,
4955
                            readOnly: readonly,
4956
                            labelCls: 'label-minova',
4957
                            labelWidth: 150,
4958
                            hidden: ishidden,
4959
                            msgTarget: 'side',
4960
                            name: rec.FieldName,
4961
                            formname: formname_,
4962
                            nameTable: nameTable_,
4963
                            value: rec.DefaultValue,
4964
                            width: '95%',
4965
                            store: Ext.create('Ext.data.Store', {
4966
                                storeId: 'store' + rec.FieldName,
4967
                                autoLoad: false,
4968
                                proxy: {
4969
                                    method: 'POST',
4970
                                    type: 'ajax',
4971
                                    url: '/UserControl/GetStore',
4972
                                    extraParams: {
4973
                                        tableName: rec.TableRef,
4974
                                        param: rec.ParamCombo
4975
                                    },
4976
                                    reader: {
4977
                                        type: 'json',
4978
                                        root: 'data',
4979
                                        totalProperty: 'data[0].TotalCount'
4980
                                    }
4981
                                }
4982
                            }),
4983
                            formtarget: formname_,
4984
                            listeners: {
4985
                                afterrender: function (f) {
4986
                                    var store_ = f.getStore();
4987
                                    store_.load();
4988
                                },
4989
                                change: function (val) {
4990
                                    var _label = val.name;
4991
                                    var _form = val.formtarget;
4992
                                    var _Value = val.getValue();
4993
                                    var target = rec.TriggerCombo;
4994
                                    var custumFunc = rec.SelectFunction;
4995
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
4996
                                    if (frm) {
4997

    
4998
                                        if (target) {
4999
                                            var f = frm.getForm().findField(target)
5000
                                            _store = f.getStore();
5001
                                            var _tbl = _store.proxy.extraParams.tableName;
5002
                                            var oldParam = _store.proxy.extraParams.param;
5003
                                            _store.proxy.extraParams = {
5004
                                                tableName: _tbl,
5005
                                                param: _label + '[=]' + _Value
5006
                                            };
5007
                                            _store.load();
5008
                                        }
5009
                                        if (custumFunc) {
5010
                                            eval(custumFunc)
5011
                                        }
5012
                                    }
5013
                                }
5014
                            },
5015
                            queryMode: 'local',
5016
                            displayField: displayValue,
5017
                            valueField: valueField,
5018
                        });
5019
                    } else if (rec.SearchType == '2') //Lookup
5020
                    {
5021
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
5022
                            allowBlank: allowblank,
5023
                            fieldLabel: rec.ScreenCaption,
5024
                            readOnly: readonly,
5025
                            IsPrimaryKey: rec.IsPrimaryKey,
5026
                            msgTarget: 'side',
5027
                            labelCls: 'label-minova',
5028
                            labelWidth: 150,
5029
                            hidden: ishidden,
5030
                            name: rec.FieldName,
5031
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
5032
                            triggerCls: 'x-form-search-trigger',
5033
                            vtype: 'alphanum', // disable space
5034
                            formtarget: me.formname, // nama form  yang akan di set value-nya
5035
                            anchor: '100%',
5036
                            formname: formname_,
5037
                            nameTable: nameTable_,
5038
                            LookupFunction: rec.LookupFunction,
5039
                            SearchFunction: rec.SearchFunction,
5040
                            listeners: {
5041
                                change: function (val) {
5042
                                    var _label = val.name;
5043
                                    var _form = val.formname;
5044
                                    var _Value = val.getValue();
5045
                                    var target = rec.TriggerCombo;
5046
                                    var custumFunc = rec.SelectFunction;
5047
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5048
                                        Ext.Ajax.request({
5049
                                            async: false,
5050
                                            method: 'POST',
5051
                                            url: '/UserControl/GetStore',
5052
                                            params: {
5053
                                                tableName: 'PCMFUNC',
5054
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5055
                                            },
5056
                                            success: function (response) {
5057
                                                var results = Ext.decode(response.responseText);
5058
                                                data_ = results.data[0];
5059
                                                if (data_ != undefined) {
5060
                                                    custumFunc = data_.FunctionCode;
5061
                                                }
5062
                                            }
5063
                                        });
5064
                                    }
5065
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5066
                                    if (frm) {
5067

    
5068
                                        if (target) {
5069
                                            var f = frm.getForm().findField(target)
5070
                                            _store = f.getStore();
5071
                                            var _tbl = _store.proxy.extraParams.tableName;
5072
                                            var oldParam = _store.proxy.extraParams.param;
5073
                                            _store.proxy.extraParams = {
5074
                                                tableName: _tbl,
5075
                                                param: _label + '[=]' + _Value
5076
                                            };
5077
                                            _store.load();
5078
                                        }
5079

    
5080
                                        if (custumFunc) {
5081
                                            eval(custumFunc)
5082
                                        }
5083

    
5084
                                    }
5085

    
5086
                                },
5087

    
5088
                            },
5089
                        });
5090
                    } else if (rec.SearchType == '3') //lookup tree
5091
                    {
5092
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
5093
                            allowBlank: allowblank,
5094
                            fieldLabel: rec.ScreenCaption,
5095
                            readOnly: readonly,
5096
                            IsPrimaryKey: rec.IsPrimaryKey,
5097
                            labelCls: 'label-minova',
5098
                            labelWidth: 150,
5099
                            hidden: ishidden,
5100
                            name: rec.FieldName,
5101
                            msgTarget: 'side',
5102
                            triggerCls: 'x-form-search-trigger',
5103
                            treeSructure: rec.SearchFunction, //'O-O-P',
5104
                            objClassValue: rec.ParamCombo, //'O',
5105
                            formname: formname_,
5106
                            targetField: rec.FieldName,
5107
                            nameTable: nameTable_,
5108
                            editable: false,
5109
                            anchor: '100%',
5110
                            listeners: {
5111
                                change3: function (val) {
5112
                                    var _label = val.name;
5113
                                    var _form = val.formname;
5114
                                    var _Value = val.getValue();
5115
                                    var target = rec.TriggerCombo;
5116
                                    var custumFunc = rec.SelectFunction;
5117
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5118
                                        Ext.Ajax.request({
5119
                                            async: false,
5120
                                            method: 'POST',
5121
                                            url: '/UserControl/GetStore',
5122
                                            params: {
5123
                                                tableName: 'PCMFUNC',
5124
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5125
                                            },
5126
                                            success: function (response) {
5127
                                                var results = Ext.decode(response.responseText);
5128
                                                data_ = results.data[0];
5129
                                                if (data_ != undefined) {
5130
                                                    custumFunc = data_.FunctionCode;
5131
                                                }
5132
                                            }
5133
                                        });
5134
                                    }
5135
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5136
                                    if (frm) {
5137

    
5138
                                        if (target) {
5139
                                            var f = frm.getForm().findField(target)
5140
                                            _store = f.getStore();
5141
                                            var _tbl = _store.proxy.extraParams.tableName;
5142
                                            var oldParam = _store.proxy.extraParams.param;
5143
                                            _store.proxy.extraParams = {
5144
                                                tableName: _tbl,
5145
                                                param: _label + '[=]' + _Value
5146
                                            };
5147
                                            _store.load();
5148
                                        }
5149
                                        if (custumFunc) {
5150
                                            eval(custumFunc)
5151
                                        }
5152
                                    }
5153
                                },
5154
                                blur: function (val) {
5155
                                    //if(val.value.split('-').length != 2){
5156
                                    var _label = val.name;
5157
                                    var _form = val.formname;
5158
                                    var _Value = val.getValue();
5159
                                    var target = rec.TriggerCombo;
5160
                                    var custumFunc = rec.SelectFunction;
5161
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5162
                                        Ext.Ajax.request({
5163
                                            async: false,
5164
                                            method: 'POST',
5165
                                            url: '/UserControl/GetStore',
5166
                                            params: {
5167
                                                tableName: 'PCMFUNC',
5168
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5169
                                            },
5170
                                            success: function (response) {
5171
                                                var results = Ext.decode(response.responseText);
5172
                                                data_ = results.data[0];
5173
                                                if (data_ != undefined) {
5174
                                                    custumFunc = data_.FunctionCode;
5175
                                                }
5176
                                            }
5177
                                        });
5178
                                    }
5179
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
5180
                                    if (frm) {
5181

    
5182
                                        if (target) {
5183
                                            var f = frm.getForm().findField(target)
5184
                                            _store = f.getStore();
5185
                                            var _tbl = _store.proxy.extraParams.tableName;
5186
                                            var oldParam = _store.proxy.extraParams.param;
5187
                                            _store.proxy.extraParams = {
5188
                                                tableName: _tbl,
5189
                                                param: _label + '[=]' + _Value
5190
                                            };
5191
                                            _store.load();
5192
                                        }
5193
                                        if (custumFunc) {
5194
                                            eval(custumFunc)
5195
                                        }
5196
                                    }
5197
                                    //}
5198
                                }
5199

    
5200
                            }
5201
                        });
5202
                    }
5203
                }
5204
                if (isDesk) {
5205
                    if (rec.ColumnNo == 1) {
5206
                        col1.push(formfield);
5207
                    } else {
5208
                        col2.push(formfield);
5209
                    }
5210
                } else {
5211
                    col1.push(formfield);
5212
                }
5213

    
5214
            });
5215
        }
5216
        Ext.applyIf(me, {
5217
            items: [{
5218
                //width: 450,
5219
                style: 'width: 50%',
5220
                items: col1
5221
            }, {
5222
                //width: 450,
5223
                style: 'width: 50%',
5224
                items: col2
5225
            }
5226
            ],
5227
        });
5228
        this.callParent();
5229
    }
5230
});
5231
/*Gird ESS Generator*/
5232
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowGrid', {
5233
    extend: 'Ext.grid.Panel',
5234
    requires: ['Ext.grid.RowNumberer'],
5235
    alias: 'widget.minovaworkflowgrid',
5236
    alternateClassName: 'Ext.grid.MinovaGrid',
5237
    tableName: undefined,
5238
    param: undefined,
5239
    pagesize: undefined,
5240
    storeName: undefined,
5241
    enableLocking: true,
5242
    autoLoad: undefined,
5243
    multiSelect: undefined,
5244
    formname: this.name,
5245
    bizprocid: undefined,
5246
    taskid: undefined,
5247
    initComponent: function () {
5248
        var me = this;
5249
        var cols_ = [];
5250
        var fieldeditor = {};
5251
        var hasil = null;
5252
        var autoLoad = true;
5253
        var locking = true;
5254
        var widthLock = 250;
5255
        if (me.autoLoad == false) {
5256
            autoLoad = false;
5257
        }
5258
        var LangID = MinovaUtil.GetLangID();
5259
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
5260
        Ext.Ajax.request({
5261
            async: false,
5262
            method: 'POST',
5263
            url: '/UserControl/GetStore',
5264
            params: {
5265
                tableName: 'PDSWFSTRUCTUREFIELD',
5266
                param: parameter
5267
            },
5268
            success: function (response) {
5269
                var results = Ext.decode(response.responseText);
5270
                hasil = results.data;
5271
            }
5272
        });
5273

    
5274
        if (hasil.length > 0) {
5275
            Ext.each(hasil, function (rec) {
5276
                var readonly = false;
5277
                var ishidden = false;
5278
                var allowblank = true;
5279
                var null_ = null;
5280
                if (rec.IsReadOnly == '1') {
5281
                    readonly = true;
5282
                }
5283
                if (rec.IsRequired == '1') {
5284
                    allowblank = false;
5285
                }
5286
                if (rec.IsVisible == '1') {
5287
                    switch (rec.FormatRef) {
5288
                        case "date":
5289
                            cols_.push({
5290
                                xtype: 'minovadatecolumn',
5291
                                text: rec.HeaderTitle,
5292
                                dataIndex: rec.FieldName,
5293
                                width: 100
5294
                            });
5295
                            break
5296
                        case "amountencrypt":
5297
                            cols_.push({
5298
                                xtype: 'minovaamountcolumn',
5299
                                align: 'right',
5300
                                text: rec.HeaderTitle,
5301
                                dataIndex: rec.FieldName,
5302
                                width: 100
5303
                            });
5304
                            break
5305
                        case "amount":
5306
                            cols_.push({
5307
                                xtype: 'minovacurrancycolumn',
5308
                                align: 'right',
5309
                                text: rec.HeaderTitle,
5310
                                dataIndex: rec.FieldName,
5311
                                width: 100,
5312
                                filter: {
5313
                                    type: 'number',
5314
                                    itemDefaults: {
5315
                                        emptyText: 'Search for...'
5316
                                    }
5317
                                }
5318
                            });
5319
                            break
5320
                        case "datetime":
5321
                            cols_.push({
5322
                                xtype: 'minovadatetimecolumn',
5323
                                text: rec.HeaderTitle,
5324
                                dataIndex: rec.FieldName,
5325
                                width: 140,
5326
                                filter: {
5327
                                    type: 'string',
5328
                                    itemDefaults: {
5329
                                        emptyText: 'Search for...'
5330
                                    }
5331
                                }
5332
                            });
5333
                            break
5334
                        default:
5335
                            if (rec.TableRef != "") {
5336
                                if (rec.TableRef != null) {
5337
                                    var valueField = null;
5338
                                    var displayValue = null;
5339
                                    Ext.Ajax.request({
5340
                                        async: false,
5341
                                        method: 'POST',
5342
                                        url: '/UserControl/GetStore',
5343
                                        params: {
5344
                                            tableName: 'SDATATABLEFIELD',
5345
                                            param: 'TableName[equal]' + rec.TableRef
5346
                                        },
5347
                                        success: function (response) {
5348
                                            var results = Ext.decode(response.responseText);
5349
                                            data_ = results.data;
5350

    
5351
                                            if (data_ != undefined) {
5352
                                                if (data_.length > 0) {
5353
                                                    valueField_ = $.grep(data_, function (r) {
5354
                                                        return r.ValueField == '1'
5355
                                                    });
5356
                                                    valueField = valueField_[0].FieldName
5357
                                                    displayValue_ = $.grep(data_, function (r) {
5358
                                                        return r.DisplayValue == '1'
5359
                                                    });
5360
                                                    displayValue = displayValue_[0].FieldName
5361
                                                }
5362
                                            }
5363
                                        }
5364
                                    });
5365
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
5366
                                    var count_ = 0;
5367
                                    if (store_) {
5368
                                        count_ = store_.count();
5369
                                    }
5370
                                    if (count_ == 0) {
5371
                                        Ext.create('Ext.data.Store', {
5372
                                            storeId: 'store_' + rec.FieldName,
5373
                                            autoLoad: false,
5374
                                            proxy: {
5375
                                                method: 'POST',
5376
                                                type: 'ajax',
5377
                                                url: '/UserControl/GetStore',
5378
                                                extraParams: {
5379
                                                    tableName: rec.TableRef,
5380
                                                    param: rec.ParamCombo
5381
                                                },
5382
                                                reader: {
5383
                                                    type: 'json',
5384
                                                    root: 'data',
5385
                                                    totalProperty: 'data[0].TotalCount'
5386
                                                }
5387
                                            }
5388
                                        })
5389
                                    }
5390
                                    cols_.push({
5391
                                        xtype: 'minovacombocolumn',
5392
                                        text: rec.HeaderTitle,
5393
                                        dataIndex: rec.FieldName,
5394
                                        valueField: valueField,
5395
                                        displayField: displayValue,
5396
                                        store: 'store_' + rec.FieldName,
5397
                                        filter: {
5398
                                            type: 'list',
5399
                                            itemDefaults: {
5400
                                                emptyText: 'Search for...'
5401
                                            }
5402
                                        }
5403
                                    });
5404
                                }
5405
                            } else {
5406
                                cols_.push({
5407
                                    text: rec.HeaderTitle,
5408
                                    dataIndex: rec.FieldName,
5409
                                    filter: {
5410
                                        itemDefaults: {
5411
                                            emptyText: 'Search for...'
5412
                                        }
5413
                                    }
5414
                                });
5415
                            }
5416
                            break
5417
                    }
5418
                } else {
5419
                    cols_.push({
5420
                        text: rec.HeaderTitle,
5421
                        dataIndex: rec.FieldName,
5422
                        hidden: true,
5423
                        filter: {
5424
                            itemDefaults: {
5425
                                emptyText: 'Search for...'
5426
                            }
5427
                        }
5428
                    });
5429
                }
5430
            });
5431
        };
5432
        var param_ = me.param;
5433
        if (param_ == undefined) {
5434
            param_ = ''
5435
        }
5436
        var jsStoreGrid = new Ext.data.Store({
5437
            storeId: me.storeName,
5438
            autoLoad: autoLoad,
5439
            pageSize: 10,
5440
            proxy: {
5441
                method: 'POST',
5442
                type: 'ajax',
5443
                url: '/UserControl/GetStorePagingAuth',
5444
                extraParams: {
5445
                    tableName: me.tableName,
5446
                    param: param_,
5447
                    menuId: MinovaUtil.GetMenuID()
5448
                },
5449
                reader: {
5450
                    type: 'json',
5451
                    root: 'data',
5452
                    totalProperty: 'totalRecords'
5453
                }
5454
            }
5455
        });
5456
        Ext.applyIf(me, {
5457
            autoScroll: true,
5458
            enableLocking: locking,
5459
            lockedGridConfig: {
5460
                header: false,
5461
                collapsible: true,
5462
                width: widthLock,
5463
                forceFit: locking,
5464
                listeners: {
5465
                    render: function (grid) {
5466
                        var pagingToolbar = grid.child('pagingtoolbar');
5467
                        if (pagingToolbar) {
5468
                            grid.remove(pagingToolbar, true);
5469
                        }
5470
                    }
5471
                }
5472
            },
5473
            listeners: {
5474
                viewready: function () {
5475
                    if (autoLoad == true) {
5476
                        this.getStore().loadPage(1);
5477
                    }
5478

    
5479
                },
5480
                beforeedit: function () {
5481
                    return false;
5482
                }
5483
            },
5484
            lockedViewConfig: {
5485
                scroll: 'horizontal'
5486
            },
5487
            viewConfig: {
5488
                emptyText: 'No Data Display',
5489
                deferEmptyText: false,
5490
                listeners: {
5491
                    refresh: function (dataview) {
5492
                        Ext.each(dataview.panel.columns, function (column) {
5493
                            if (column.autoSizeColumn == false)
5494
                                column.autoSizeColumn = true;
5495
                            column.autoSize();
5496
                        })
5497
                    }
5498
                }
5499
            },
5500
            columns: cols_,
5501
            store: jsStoreGrid,
5502
            plugins: [{
5503
                ptype: 'gridfilters'
5504
            }
5505
            ]
5506
        });
5507
        this.callParent();
5508
    }
5509
});
5510
/*EditableGrid ESS Generator*/
5511
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid', {
5512
    extend: 'Ext.form.Panel',
5513
    alias: ['widget.minovaworkfloweditablegrid', 'widget.workfloweditablegrid1'],
5514
    requires: [
5515
		'Ext.grid.plugin.CellEditing',
5516
		'Ext.grid.RowNumberer',
5517
		'Ext.grid.Panel',
5518
    ],
5519
    anchor: '100%',
5520
    tableName: undefined,
5521
    hideButton: undefined,
5522
    multiSelect: undefined,
5523
    formname: this.name,
5524
    bizprocid: undefined,
5525
    bizflowid: undefined,
5526
    taskid: undefined,
5527
	features: undefined,
5528
    minHeight: 200,
5529
    maxHeight: 400,
5530
    initComponent: function () {
5531
        var me = this;
5532
        var isLookup = me.isLookup;
5533
        var hide_ = false;
5534
        var widthLock = 250;
5535
        var checkSelection = '';
5536
        if (me.hideButton == true) {
5537
            hide_ = true;
5538
        }
5539
        if (me.multiSelect) {
5540
            locking = false;
5541
            checkSelection = 'checkboxmodel';
5542
            widthLock = 40;
5543
        }
5544
        var tableName = me.tableName;
5545
		var features = me.features;
5546
        var cols = [];
5547
        var fieldStore = [];
5548
        var _url = 'GetAllField';
5549
        var hasil = null;
5550
        var height = me.height;
5551
        var storeID = 'store' + me.tableName;
5552
        var gridName = 'grid' + me.name;
5553
        if (me.storeName) {
5554
            storeID = me.storeName;
5555
        }
5556
        var LangID = MinovaUtil.GetLangID();
5557
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
5558
        Ext.Ajax.request({
5559
            async: false,
5560
            method: 'POST',
5561
            url: '/UserControl/GetStore',
5562
            params: {
5563
                tableName: 'PDSWFSTRUCTUREFIELD',
5564
                param: parameter
5565
            },
5566
            success: function (response) {
5567
                var results = Ext.decode(response.responseText);
5568
                hasil = results.data;
5569
            }
5570
        });
5571
        cols.push({
5572
            xtype: 'rownumberer'
5573
        });
5574
        var addData = 'var data={';
5575
        if (hasil.length > 0) {
5576
            Ext.each(hasil, function (rec) {
5577
                fieldStore.push(rec.FieldName);
5578
                if (rec.FieldName != 'Sequence') {
5579
                    addData = addData + rec.FieldName + ":" + "'',";
5580
                }
5581
                var null_ = null;
5582
                var ReadOnly_ = false;
5583
                if (rec.IsRequired == '1') {
5584
                    null_ = false;
5585
                } else {
5586
                    null_ = true;
5587
                }
5588
                var Hidden_ = false;
5589
                if (rec.IsReadOnly == '1') {
5590
                    ReadOnly_ = true;
5591
                }
5592
                if (rec.IsVisible == '1') {
5593
                    switch (rec.FormatRef) {
5594
                        case "date":
5595
                            cols.push({
5596
                                xtype: 'minovadatecolumn',
5597
                                hidden: Hidden_,
5598
                                text: rec.HeaderTitle,
5599
                                dataIndex: rec.FieldName,
5600
                                filter: {
5601
                                    itemDefaults: {
5602
                                        emptyText: 'Search for...',
5603
                                    }
5604
                                },
5605
                                editor: {
5606
                                    allowBlank: null_,
5607
                                    xtype: 'datefield',
5608
                                    hideMode: 'visibility',
5609
                                    readOnly: ReadOnly_,
5610
                                    id: tableName + rec.FieldName,
5611
                                    fieldGrid: rec.FieldName,
5612
                                    nameTable: rec.TableName,
5613
                                    value: rec.DefaultValue
5614
                                }
5615
                            });
5616
                            break
5617
                        case "amount":
5618
                            cols.push({
5619
                                xtype: 'minovacurrancycolumn',
5620
                                align: 'right',
5621
                                text: rec.HeaderTitle,
5622
                                dataIndex: rec.FieldName,
5623
                                hidden: Hidden_,
5624
                                filter: {
5625
                                    itemDefaults: {
5626
                                        emptyText: 'Search for...'
5627
                                    }
5628
                                },
5629
                                editor: {
5630
                                    allowBlank: null_,
5631
                                    xtype: 'minovacurrencyfield',
5632
                                    readOnly: ReadOnly_,
5633
                                    id: tableName + rec.FieldName,
5634
                                    nameTable: rec.TableName,
5635
                                    fieldGrid: rec.FieldName,
5636
                                    fieldStyle: 'text-align:right;',
5637
                                    value: '0'
5638
                                }
5639
                            });
5640
                            break
5641
                        default:
5642
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
5643
                                cols.push({
5644
                                    text: rec.HeaderTitle,
5645
                                    dataIndex: rec.FieldName,
5646
                                    width: 100,
5647
                                    filter: {
5648
                                        type: 'string',
5649
                                        itemDefaults: {
5650
                                            emptyText: 'Search for...'
5651
                                        }
5652
                                    }
5653
                                });
5654
                            } else if (rec.SearchType == '0') {
5655
                                var valueField = null;
5656
                                var displayValue = null;
5657
                                var TableRef = undefined;
5658
                                if (rec.TableRef != '') {
5659
                                    TableRef = rec.TableRef;
5660
                                    Ext.Ajax.request({
5661
                                        async: false,
5662
                                        method: 'POST',
5663
                                        url: '/UserControl/GetStore',
5664
                                        params: {
5665
                                            tableName: 'SDATATABLEFIELD',
5666
                                            param: 'TableName[equal]' + rec.TableRef
5667
                                        },
5668
                                        success: function (response) {
5669
                                            var results = Ext.decode(response.responseText);
5670
                                            data_ = results.data;
5671
                                            if (data_ != undefined) {
5672
                                                valueField_ = $.grep(data_, function (r) {
5673
                                                    return r.ValueField == '1'
5674
                                                });
5675
                                                valueField = valueField_[0].FieldName
5676
                                                displayValue_ = $.grep(data_, function (r) {
5677
                                                    return r.DisplayValue == '1'
5678
                                                });
5679
                                                displayValue = displayValue_[0].FieldName
5680
                                            }
5681
                                        }
5682
                                    });
5683
                                }
5684
                                Ext.create('Ext.data.Store', {
5685
                                    storeId: 'store_' + me.tableName + rec.FieldName,
5686
                                    autoLoad: true,
5687
                                    proxy: {
5688
                                        method: 'POST',
5689
                                        type: 'ajax',
5690
                                        url: '/UserControl/GetStoreAuth',
5691
                                        extraParams: {
5692
                                            tableName: TableRef,
5693
                                            param: rec.ParamCombo,
5694
                                            menuId: MinovaUtil.GetMenuID()
5695
                                        },
5696
                                        reader: {
5697
                                            type: 'json',
5698
                                            root: 'data',
5699
                                            totalProperty: 'data[0].TotalCount'
5700
                                        }
5701
                                    }
5702
                                });
5703
                                cols.push({
5704
                                    //xtype : 'minovacombocolumn',
5705
                                    hidden: Hidden_,
5706
                                    text: rec.HeaderTitle,
5707
                                    dataIndex: rec.FieldName,
5708
                                    //valueField : valueField,
5709
                                    //displayField : displayValue,
5710
                                    //store : 'store_' + me.tableName + rec.FieldName,
5711
                                    editor: {
5712
                                        allowBlank: null_,
5713
                                        xtype: 'minovacombobox',
5714
                                        readOnly: ReadOnly_,
5715
                                        id: rec.TableName + rec.FieldName,
5716
                                        nameTable: rec.TableName,
5717
                                        fieldGrid: rec.FieldName,
5718
                                        valueField: valueField,
5719
                                        displayField: displayValue,
5720
                                        store: 'store_' + me.tableName + rec.FieldName,
5721
                                        value: rec.DefaultValue
5722
                                    },
5723
                                    renderer: function (value) {
5724
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
5725
                                        var index = store.find(valueField, value);
5726
                                        var val = "";
5727
                                        if (index != -1) {
5728
                                            var rc = store.getAt(index);
5729
                                            val = rc.get(displayValue);
5730
                                        } else {
5731
                                            val = value;
5732
                                        }
5733
                                        return val;
5734
                                    },
5735
                                    filter: {
5736
                                        type: 'list',
5737
                                        itemDefaults: {
5738
                                            emptyText: 'Search for...'
5739
                                        }
5740
                                    }
5741
                                });
5742
                            } else if (rec.SearchType == '5') {							
5743
                                var valueField = null;
5744
                                var displayValue = null;
5745
                                var AdditionaldisplayValue = null;
5746
                                var TableRef = undefined;
5747
                                if (rec.TableRef != '') {
5748
                                    TableRef = rec.TableRef;
5749
                                    Ext.Ajax.request({
5750
                                        async: false,
5751
                                        method: 'POST',
5752
                                        url: '/UserControl/GetStore',
5753
                                        params: {
5754
                                            tableName: 'SDATATABLEFIELD',
5755
                                            param: 'TableName[equal]' + rec.TableRef
5756
                                        },
5757
                                        success: function (response) {
5758
                                            var results = Ext.decode(response.responseText);
5759
                                            data_ = results.data;
5760
                                            if (data_ != undefined) {
5761
                                                valueField_ = $.grep(data_, function (r) {
5762
                                                    return r.ValueField == '1'
5763
                                                });
5764
                                                if (valueField_.length > 0) {
5765
                                                    valueField = valueField_[0].FieldName
5766
                                                }
5767

    
5768
                                                displayValue_ = $.grep(data_, function (r) {
5769
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
5770
                                                });
5771
                                                if (displayValue_.length > 0) {
5772
                                                    displayValue = displayValue_[0].FieldName;
5773
                                                }
5774
                                                if (displayValue_.length >= 2) {
5775
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
5776
                                                }
5777
                                            }
5778
                                        }
5779
                                    });
5780
                                }
5781
                                Ext.create('Ext.data.Store', {
5782
                                    storeId: 'store_' + me.tableName + rec.FieldName,
5783
                                    autoLoad: true,
5784
                                    proxy: {
5785
                                        method: 'POST',
5786
                                        type: 'ajax',
5787
                                        url: '/UserControl/GetStoreAuth',
5788
                                        extraParams: {
5789
                                            tableName: TableRef,
5790
                                            param: rec.ParamCombo,
5791
                                            menuId: MinovaUtil.GetMenuID()
5792
                                        },
5793
                                        reader: {
5794
                                            type: 'json',
5795
                                            root: 'data',
5796
                                            totalProperty: 'data[0].TotalCount'
5797
                                        }
5798
                                    }
5799
                                });
5800
                                cols.push({
5801
                                    //xtype : 'minovacombocolumn',
5802
                                    hidden: Hidden_,
5803
                                    text: rec.HeaderTitle,
5804
                                    dataIndex: rec.FieldName,
5805
                                    //valueField : valueField,
5806
                                    //displayField : displayValue,
5807
                                    //store : 'store_' + me.tableName + rec.FieldName,
5808
                                    tpl: Ext.create('Ext.XTemplate',
5809
                                            '<ul class="x-list-plain"><tpl for=".">',
5810
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
5811
                                            '</tpl></ul>'),
5812
                                    displayTpl: Ext.create('Ext.XTemplate',
5813
                                        '<tpl for=".">',
5814
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
5815
                                        '</tpl>'),
5816
                                    editor: {
5817
                                        allowBlank: null_,
5818
                                        xtype: 'combobox',
5819
                                        readOnly: ReadOnly_,
5820
                                        id: rec.TableName + rec.FieldName,
5821
                                        nameTable: rec.TableName,
5822
                                        fieldGrid: rec.FieldName,
5823
                                        valueField: valueField,
5824
                                        displayField: displayValue,
5825
                                        store: 'store_' + me.tableName + rec.FieldName,
5826
                                        value: rec.DefaultValue,
5827
                                        tpl: Ext.create('Ext.XTemplate',
5828
                                            '<ul class="x-list-plain"><tpl for=".">',
5829
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
5830
                                            '</tpl></ul>'),
5831
                                        displayTpl: Ext.create('Ext.XTemplate',
5832
                                            '<tpl for=".">',
5833
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
5834
                                            '</tpl>')
5835
                                    },
5836
                                    renderer: function (value) {
5837
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
5838
                                        var index = store.find(valueField, value);
5839
                                        var val = "";
5840
                                        if (index != -1) {
5841
                                            var rc = store.getAt(index);
5842
                                            //val = rc.get(displayValue);
5843
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
5844
                                        } else {
5845
                                            val = value;
5846
                                        }
5847
                                        return val;
5848
                                    },
5849
                                    filter: {
5850
                                        type: 'list',
5851
                                        itemDefaults: {
5852
                                            emptyText: 'Search for...'
5853
                                        }
5854
                                    }
5855
                                });
5856
                            } else if (rec.SearchType == '2') {
5857
                                var triger = (rec.TriggerCombo).split('$');
5858
                                var targetField_ = triger[0];
5859
                                var fieldValue_ = triger[1];
5860
                                cols.push({
5861
                                    text: rec.HeaderTitle,
5862
                                    hidden: Hidden_,
5863
                                    dataIndex: rec.FieldName,
5864
                                    filter: {
5865
                                        itemDefaults: {
5866
                                            emptyText: 'Search for...'
5867
                                        }
5868
                                    },
5869
                                    editor: {
5870
                                        allowBlank: null_,
5871
                                        xtype: 'minovalookupgrid',
5872
                                        readOnly: ReadOnly_,
5873
                                        isGrid: true,
5874
                                        fieldTarget: targetField_,
5875
                                        fieldValue: fieldValue_,
5876
                                        isGrid: true,
5877
                                        id: tableName + rec.FieldName,
5878
                                        tableName: rec.TableRef,
5879
                                        triggerCls: 'x-form-search-trigger',
5880
                                        vtype: 'alphanum',
5881
                                        nameTable: rec.TableName,
5882
                                        fieldGrid: rec.FieldName,
5883
                                        listeners: {
5884
                                            change: function (val) {
5885
                                                var custumFunc = rec.SelectFunction;
5886
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5887
                                                    Ext.Ajax.request({
5888
                                                        async: false,
5889
                                                        method: 'POST',
5890
                                                        url: '/UserControl/GetStore',
5891
                                                        params: {
5892
                                                            tableName: 'PCMFUNC',
5893
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5894
                                                        },
5895
                                                        success: function (response) {
5896
                                                            var results = Ext.decode(response.responseText);
5897
                                                            data_ = results.data[0];
5898
                                                            if (data_ != undefined) {
5899
                                                                custumFunc = data_.FunctionCode;
5900
                                                            }
5901
                                                        }
5902
                                                    });
5903
                                                }
5904
                                                if (custumFunc) {
5905
                                                    eval(custumFunc)
5906
                                                }
5907
                                            }
5908
                                        }
5909
                                    }
5910
                                });
5911
                            } else if (rec.SearchType == '3') {
5912
                                cols.push({
5913
                                    text: rec.HeaderTitle,
5914
                                    hidden: Hidden_,
5915
                                    dataIndex: rec.FieldName,
5916
                                    filter: {
5917
                                        itemDefaults: {
5918
                                            emptyText: 'Search for...'
5919
                                        }
5920
                                    },
5921
                                    editor: {
5922
                                        allowBlank: null_,
5923
                                        xtype: 'MinovaLookupTree',
5924
                                        readOnly: ReadOnly_,
5925
                                        id: tableName + rec.FieldName,
5926
                                        tableName: rec.TableRef,
5927
                                        triggerCls: 'x-form-search-trigger',
5928
                                        vtype: 'alphanum',
5929
                                        treeSructure: rec.SearchFunction,
5930
                                        objClassValue: rec.ParamCombo,
5931
                                        nameTable: rec.TableName,
5932
                                        fieldGrid: rec.FieldName,
5933
                                        listeners: {
5934
                                            change: function (val) {
5935
                                                var custumFunc = rec.SelectFunction;
5936
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5937
                                                    Ext.Ajax.request({
5938
                                                        async: false,
5939
                                                        method: 'POST',
5940
                                                        url: '/UserControl/GetStore',
5941
                                                        params: {
5942
                                                            tableName: 'PCMFUNC',
5943
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5944
                                                        },
5945
                                                        success: function (response) {
5946
                                                            var results = Ext.decode(response.responseText);
5947
                                                            data_ = results.data[0];
5948
                                                            if (data_ != undefined) {
5949
                                                                custumFunc = data_.FunctionCode;
5950
                                                            }
5951
                                                        }
5952
                                                    });
5953
                                                }
5954
                                                if (custumFunc) {
5955
                                                    eval(custumFunc)
5956
                                                }
5957
                                            }
5958
                                        }
5959
                                    }
5960
                                });
5961
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
5962
                                var triger = (rec.TriggerCombo).split('&');
5963
                                var targetField_ = triger[0];
5964
                                var fieldValue_ = triger[0];
5965
                                cols.push({
5966
                                    text: rec.HeaderTitle,
5967
                                    hidden: Hidden_,
5968
                                    dataIndex: rec.FieldName,
5969
                                    filter: {
5970
                                        itemDefaults: {
5971
                                            emptyText: 'Search for...'
5972
                                        }
5973
                                    },
5974
                                    editor: {
5975
                                        allowBlank: null_,
5976
                                        xtype: 'lookupemployee',
5977
                                        readOnly: ReadOnly_,
5978
                                        isGrid: true,
5979
                                        fieldTarget: targetField_,
5980
                                        fieldValue: fieldValue_,
5981
                                        isGrid: true,
5982
                                        id: tableName + rec.FieldName,
5983
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
5984
                                        triggerCls: 'x-form-search-trigger',
5985
                                        vtype: 'alphanum', // disable space
5986
                                        nameTable: rec.TableName,
5987
                                        fieldGrid: rec.FieldName,
5988
                                        listeners: {
5989
                                            change: function (val) {
5990
                                                var custumFunc = rec.SelectFunction;
5991
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
5992
                                                    Ext.Ajax.request({
5993
                                                        async: false,
5994
                                                        method: 'POST',
5995
                                                        url: '/UserControl/GetStore',
5996
                                                        params: {
5997
                                                            tableName: 'PCMFUNC',
5998
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
5999
                                                        },
6000
                                                        success: function (response) {
6001
                                                            var results = Ext.decode(response.responseText);
6002
                                                            data_ = results.data[0];
6003
                                                            if (data_ != undefined) {
6004
                                                                custumFunc = data_.FunctionCode;
6005
                                                            }
6006
                                                        }
6007
                                                    });
6008
                                                }
6009
                                                if (custumFunc) {
6010
                                                    eval(custumFunc)
6011
                                                }
6012
                                            }
6013
                                        }
6014
                                    }
6015
                                });
6016
                            } else if (rec.SearchType == '4' && isLookup != true) {
6017
                                cols.push({
6018
                                    text: rec.HeaderTitle,
6019
                                    hidden: Hidden_,
6020
                                    dataIndex: rec.FieldName,
6021
                                    filter: {
6022
                                        itemDefaults: {
6023
                                            emptyText: 'Search for...'
6024
                                        }
6025
                                    },
6026
                                    editor: {
6027
                                        allowBlank: null_,
6028
                                        xtype: 'lookupemployee',
6029
                                        readOnly: ReadOnly_,
6030
                                        isGrid: true,
6031
                                        fieldTarget: targetField_,
6032
                                        fieldValue: fieldValue_,
6033
                                        isGrid: true,
6034
                                        id: tableName + rec.FieldName,
6035
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
6036
                                        triggerCls: 'x-form-search-trigger',
6037
                                        vtype: 'alphanum', // disable space
6038
                                        nameTable: rec.TableName,
6039
                                        fieldGrid: rec.FieldName,
6040
                                        listeners: {
6041
                                            change: function (val) {
6042
                                                var custumFunc = rec.SelectFunction;
6043
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6044
                                                    Ext.Ajax.request({
6045
                                                        async: false,
6046
                                                        method: 'POST',
6047
                                                        url: '/UserControl/GetStore',
6048
                                                        params: {
6049
                                                            tableName: 'PCMFUNC',
6050
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6051
                                                        },
6052
                                                        success: function (response) {
6053
                                                            var results = Ext.decode(response.responseText);
6054
                                                            data_ = results.data[0];
6055
                                                            if (data_ != undefined) {
6056
                                                                custumFunc = data_.FunctionCode;
6057
                                                            }
6058
                                                        }
6059
                                                    });
6060
                                                }
6061
                                                if (custumFunc) {
6062
                                                    eval(custumFunc)
6063
                                                }
6064
                                            }
6065
                                        }
6066
                                    }
6067
                                });
6068
                            } else if (rec.FixedValue != '') { // add by taufan
6069
                                cols.push({
6070
                                    text: rec.HeaderTitle,
6071
                                    hidden: Hidden_,
6072
                                    dataIndex: rec.FieldName,
6073
                                    filter: {
6074
                                        itemDefaults: {
6075
                                            emptyText: 'Search for...'
6076
                                        }
6077
                                    },
6078
                                    editor: {
6079
                                        allowBlank: null_,
6080
                                        xtype: 'minovafixvalue',
6081
                                        readOnly: ReadOnly_,
6082
                                        id: rec.TableName + rec.FieldName,
6083
                                        name: rec.TableName + rec.FieldName,
6084
                                        nameTable: rec.TableName,
6085
                                        fieldGrid: rec.FieldName,
6086
                                        fixedValue: rec.FixedValue,
6087
                                        valueField: 'code',
6088
                                        displayField: 'desc',
6089
                                        value: rec.DefaultValue
6090
                                    },
6091
                                    renderer: function (value) {
6092
                                        var val = "";
6093
                                        var storeData = [];
6094
                                        var str = rec.FixedValue;
6095
                                        var hasil = str.split('||');
6096
                                        hasil.forEach(function (h) {
6097
                                            store_ = h.split('=')
6098
                                            storeData.push({
6099
                                                code: store_[0],
6100
                                                desc: store_[1]
6101
                                            });
6102
                                        });
6103
                                        var item = storeData.find(x => x.code == value);
6104
                                        if (item != undefined) {
6105
                                            val = item.desc;
6106
                                        }
6107
                                        return val;
6108
                                    }
6109
                                });
6110
                            } else {
6111
                                cols.push({
6112
                                    text: rec.HeaderTitle,
6113
                                    hidden: Hidden_,
6114
									cellWrap: true,
6115
                                    dataIndex: rec.FieldName,
6116
                                    filter: {
6117
                                        itemDefaults: {
6118
                                            emptyText: 'Search for...'
6119
                                        }
6120
                                    },
6121
                                    editor: {
6122
                                        allowBlank: null_,
6123
                                        xtype: 'textareafield',
6124
                                        readOnly: ReadOnly_,
6125
                                        id: tableName + rec.FieldName,
6126
                                        nameTable: rec.TableName,
6127
                                        fieldGrid: rec.FieldName,
6128
                                        value: rec.DefaultValue,
6129
										grow: true,
6130
										listeners: {
6131
                                           
6132
											change: function (val) {
6133
                                                var custumFunc = null;
6134
                                                Ext.Ajax.request({
6135
                                                    async: false,
6136
                                                    method: 'POST',
6137
                                                    url: '/UserControl/GetStore',
6138
                                                    params: {
6139
                                                        tableName: 'SDATATABLEFIELD',
6140
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
6141
                                                    },
6142
                                                    success: function (response) {
6143
                                                        var results = Ext.decode(response.responseText);
6144
                                                        data_ = results.data[0];
6145
                                                        if (data_ != undefined) {
6146
                                                            custumFunc = data_.SelectFunction;
6147
                                                            //console.log(data_)
6148
                                                        }
6149
                                                    }
6150
                                                });
6151

    
6152
                                                if (custumFunc) {
6153
                                                    eval(custumFunc)
6154
                                                }
6155
                                            }
6156
											}
6157
                                        },
6158
										 /*
6159
										renderer: function (v) {
6160
											result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
6161
											result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
6162
											return result
6163
										}*/	
6164
                                });
6165
                            }
6166
                            break
6167
                    }
6168
                } else {
6169
                    cols.push({
6170
                        text: rec.HeaderTitle,
6171
                        hidden: Hidden_,
6172
                        dataIndex: rec.FieldName,
6173
                        hidden: true,
6174
                        editor: {
6175
                            allowBlank: true,
6176
                            xtype: 'textfield',
6177
                            readOnly: ReadOnly_,
6178
                            id: tableName + rec.FieldName,
6179
                            nameTable: rec.TableName,
6180
                            fieldGrid: rec.FieldName,
6181
                            value: rec.DefaultValue
6182
                        },
6183
                        filter: {
6184
                            itemDefaults: {
6185
                                emptyText: 'Search for...'
6186
                            }
6187
                        }
6188
                    });
6189
                }
6190
            });
6191

    
6192
        };
6193
        addData = addData + "}";
6194
        Ext.applyIf(me, {
6195
            items: [{
6196
                xtype: 'grid',
6197
                id: gridName,
6198
                name: gridName,
6199
                height: height,
6200
                addFlag: true,
6201
                deleteFlag: true,
6202
                minHeight: me.minHeight,
6203
                maxHeight: me.maxHeight,
6204
                store: Ext.create('Ext.data.Store', {
6205
                    storeId: storeID,
6206
                    fields: fieldStore,
6207
					//groupField: 'QuestionGroup',
6208
					grouper: {
6209
						sortProperty: 'SeqQuest',
6210
						groupFn: function (record) {
6211
							return record.get('QuestionGroup');
6212
						}
6213
					},
6214
                    proxy: {
6215
                        method: 'POST',
6216
                        type: 'ajax',
6217
                        url: '',
6218
                        reader: {
6219
                            type: 'json',
6220
                            root: 'data'
6221
                        }
6222
                    }
6223
                }),
6224
                dockedItems: [{
6225
                    xtype: 'toolbar',
6226
                    items: [{
6227
                        text: 'Add',
6228
                        hidden: hide_,
6229
                        name: tableName + 'Add',
6230
                        iconCls: 'fa-plus-circle',
6231
                        style: 'font-family: FontAwesome',
6232
                        handler: function () {
6233
                            var grid = Ext.getCmp(gridName);
6234
                            if (grid.addFlag === true) {
6235
                                var store = Ext.StoreMgr.lookup(storeID)
6236
                                idx = store.getCount();
6237
                                var action = getParam('action');
6238
                                var data = '';
6239
                                var Sequence = 0;
6240
                                if (idx == 0) {
6241
                                    Sequence = 1;
6242
                                } else {
6243
                                    Sequence = 1 + idx;
6244
                                }
6245
                                var seq = 'Sequence';
6246
                                var SequenceValue = Sequence;
6247
                                eval(addData);
6248
                                data[seq] = SequenceValue;
6249
                                store.insert(idx, data);
6250
                            }
6251
                        }
6252
                    }, {
6253
                        text: 'Delete',
6254
                        hidden: hide_,
6255
                        name: tableName + 'DeleteText',
6256
                        iconCls: 'fa-trash-o',
6257
                        style: 'font-family: FontAwesome',
6258
                        handler: function () {
6259
                            var grid = Ext.getCmp(gridName);
6260
                            if (grid.deleteFlag === true) {
6261
                                var me = this,
6262
                                store = Ext.StoreMgr.lookup(storeID)
6263
                                var grid = Ext.getCmp(gridName);
6264
                                Ext.MessageBox.show({
6265
                                    title: 'Remove tab',
6266
                                    msg: "This will remove. Do you want to continue?",
6267
                                    buttons: Ext.MessageBox.YESNO,
6268
                                    fn: function (choice) {
6269
                                        console.log(choice);
6270
                                        if (choice === 'yes') {
6271
                                            var selection = grid.getView().getSelectionModel().getSelection()[0];
6272
                                            if (selection) {
6273
                                                store.remove(selection);
6274
                                            }
6275
                                        }
6276
                                    }
6277
                                });
6278
                            }
6279
                        }
6280
                    }
6281
                    ]
6282
                }
6283
                ],
6284
                columns: cols,
6285
				selModel: 'rowmodel', //YN
6286
                selType: checkSelection,
6287
                plugins: {
6288
                    ptype: 'rowediting',
6289
                    pluginId: 'rowEditing',
6290
                    clicksToEdit: 1,//0
6291
                    listeners: {}
6292
                },
6293
				features: features,
6294
				viewConfig: {
6295
					listeners: {
6296
						refresh: function (dataview) {
6297
							Ext.each(dataview.panel.columns, function (column) {
6298
								column.autoSize();
6299
							})
6300
						}
6301
					}
6302
				}
6303
            }
6304
            ]
6305
        });
6306
        me.callParent(arguments);
6307
    }
6308
});
6309
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid1', {
6310
    extend: 'Ext.form.Panel',
6311
    alias: ['widget.minovaworkfloweditablegrid1', 'widget.workfloweditablegrid1'],
6312
    requires: [
6313
		'Ext.grid.plugin.CellEditing',
6314
		'Ext.grid.Panel',
6315
    ],
6316
    anchor: '100%',
6317
    tableName: undefined,
6318
    hideButton: undefined,
6319
    multiSelect: undefined,
6320
    formname: this.name,
6321
    bizprocid: undefined,
6322
    bizflowid: undefined,
6323
    taskid: undefined,
6324
    initComponent: function () {
6325
        var me = this;
6326
        var hide_ = false;
6327
        var widthLock = 250;
6328
        var checkSelection = '';
6329

    
6330
        if (me.hideButton == true) {
6331
            hide_ = true;
6332
        }
6333
        if (me.multiSelect) {
6334
            locking = false;
6335
            checkSelection = 'checkboxmodel';
6336
            widthLock = 40;
6337
        }
6338
        var tableName = me.tableName;
6339
        var cols = [];
6340
        var fieldStore = [];
6341
        var _url = 'GetAllField';
6342
        var hasil = null;
6343
        var height = me.height;
6344
        var storeID = 'store' + me.tableName;
6345
        var gridName = 'grid' + me.name;
6346
        if (me.storeName) {
6347
            storeID = me.storeName;
6348
        }
6349
        var LangID = MinovaUtil.GetLangID();
6350
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
6351
        Ext.Ajax.request({
6352
            async: false,
6353
            method: 'POST',
6354
            url: '/UserControl/GetStore',
6355
            params: {
6356
                tableName: 'PDSWFSTRUCTUREFIELD',
6357
                param: parameter
6358
            },
6359
            success: function (response) {
6360
                var results = Ext.decode(response.responseText);
6361
                hasil = results.data;
6362
            }
6363
        });
6364
        if (hasil.length > 0) {
6365
            Ext.each(hasil, function (rec) {
6366
                fieldStore.push(rec.FieldName)
6367
                var readonly = false;
6368
                var ishidden = false;
6369
                var allowblank = true;
6370
                if (rec.IsReadOnly == '1') {
6371
                    readonly = true;
6372
                }
6373
                if (rec.IsRequired == '1') {
6374
                    allowblank = false;
6375
                }
6376
                if (rec.IsVisible == '1') {
6377
                    switch (rec.FormatRef) {
6378
                        case "date":
6379
                            cols.push({
6380
                                xtype: 'minovadatecolumn',
6381
                                text: rec.HeaderTitle,
6382
                                dataIndex: rec.FieldName,
6383
                                editor: {
6384
                                    allowBlank: allowblank,
6385
                                    xtype: 'datefield',
6386
                                    hideMode: 'visibility',
6387
                                    readOnly: readonly,
6388
                                    name: 'grid' + tableName + rec.FieldName,
6389
                                    id: 'grid' + tableName + rec.FieldName,
6390
                                    value: rec.DefaultValue,
6391
                                    formname: me.formname,
6392
                                    listeners: {
6393
                                        change: function (val) {
6394
                                            var _label = val.name;
6395
                                            var _form = val.formname;
6396
                                            var _Value = val.getValue();
6397
                                            var target = rec.TriggerCombo;
6398
                                            var custumFunc = rec.SelectFunction;
6399
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6400
                                                Ext.Ajax.request({
6401
                                                    async: false,
6402
                                                    method: 'POST',
6403
                                                    url: '/UserControl/GetStore',
6404
                                                    params: {
6405
                                                        tableName: 'PCMFUNC',
6406
                                                        param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
6407
                                                    },
6408
                                                    success: function (response) {
6409
                                                        var results = Ext.decode(response.responseText);
6410
                                                        data_ = results.data[0];
6411
                                                        if (data_ != undefined) {
6412
                                                            custumFunc = data_.FunctionCode;
6413
                                                        }
6414
                                                    }
6415
                                                });
6416
                                            }
6417
                                            var frm = Ext.ComponentQuery.query('[name=' + _form + ']')[0];
6418
                                            if (frm) {
6419
                                                if (custumFunc) {
6420
                                                    eval(custumFunc)
6421
                                                }
6422
                                            }
6423
                                        }
6424
                                    }
6425
                                }
6426
                            });
6427
                            break;
6428
                        case "amount":
6429
                            cols.push({
6430
                                xtype: 'minovacurrancycolumn',
6431
                                align: 'right',
6432
                                text: rec.HeaderTitle,
6433
                                dataIndex: rec.FieldName,
6434
                                editor: {
6435
                                    allowBlank: allowblank,
6436
                                    xtype: 'textfield',
6437
                                    readOnly: readonly,
6438
                                    name: 'grid' + tableName + rec.FieldName,
6439
                                    id: 'grid' + tableName + rec.FieldName,
6440
                                    value: rec.DefaultValue
6441
                                }
6442
                            });
6443
                            break;
6444
                        case "time":
6445
                            cols.push({
6446
                                text: rec.HeaderTitle,
6447
                                dataIndex: rec.FieldName,
6448
                                editor: {
6449
                                    allowBlank: allowblank,
6450
                                    xtype: 'timefield',
6451
                                    readOnly: readonly,
6452
                                    name: 'grid' + tableName + rec.FieldName,
6453
                                    id: 'grid' + tableName + rec.FieldName,
6454
                                    msgTarget: 'side',
6455
                                    format: 'Hi',
6456
                                    submitFormat: 'Hi',
6457
                                    increment: 5,
6458
                                    value: rec.DefaultValue,
6459
                                    formname: me.formname,
6460
                                    listeners: {
6461
                                        change: function (val) {
6462
                                            var _label = val.name;
6463
                                            var _form = val.formname;
6464
                                            var _Value = val.getValue();
6465
                                            var target = rec.TriggerCombo;
6466
                                            var custumFunc = rec.SelectFunction;
6467
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6468
                                                Ext.Ajax.request({
6469
                                                    async: false,
6470
                                                    method: 'POST',
6471
                                                    url: '/UserControl/GetStore',
6472
                                                    params: {
6473
                                                        tableName: 'PCMFUNC',
6474
                                                        param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
6475
                                                    },
6476
                                                    success: function (response) {
6477
                                                        var results = Ext.decode(response.responseText);
6478
                                                        data_ = results.data[0];
6479
                                                        if (data_ != undefined) {
6480
                                                            custumFunc = data_.FunctionCode;
6481
                                                        }
6482
                                                    }
6483
                                                });
6484
                                            }
6485
                                            var frm = Ext.ComponentQuery.query('[name=' + _form + ']')[0];
6486
                                            if (frm) {
6487
                                                if (custumFunc) {
6488
                                                    eval(custumFunc)
6489
                                                }
6490
                                            }
6491
                                        }
6492
                                    }
6493
                                }
6494
                            });
6495
                            break;
6496
                        default:
6497
                            if (rec.SearchType != "") {
6498
                                if (rec.SearchType == "0") {
6499
                                    var valueField = null;
6500
                                    var displayValue = null;
6501
                                    var TableRef = undefined;
6502
                                    if (rec.TableRef != '') {
6503
                                        TableRef = rec.TableRef;
6504
                                        Ext.Ajax.request({
6505
                                            async: false,
6506
                                            method: 'POST',
6507
                                            url: '/UserControl/GetStore',
6508
                                            params: {
6509
                                                tableName: 'SDATATABLEFIELD',
6510
                                                param: 'TableName[equal]' + rec.TableRef
6511
                                            },
6512
                                            success: function (response) {
6513
                                                var results = Ext.decode(response.responseText);
6514
                                                data_ = results.data;
6515
                                                if (data_ != undefined) {
6516
                                                    valueField_ = $.grep(data_, function (r) {
6517
                                                        return r.ValueField == '1'
6518
                                                    });
6519
                                                    valueField = valueField_[0].FieldName
6520
                                                    displayValue_ = $.grep(data_, function (r) {
6521
                                                        return r.DisplayValue == '1'
6522
                                                    });
6523
                                                    displayValue = displayValue_[0].FieldName
6524
                                                }
6525
                                            }
6526
                                        });
6527
                                    }
6528
                                    //create Store
6529
                                    Ext.create('Ext.data.Store', {
6530
                                        storeId: 'store_' + me.tableName + rec.FieldName,
6531
                                        autoLoad: true,
6532
                                        proxy: {
6533
                                            method: 'POST',
6534
                                            type: 'ajax',
6535
                                            url: '/UserControl/GetStore',
6536
                                            extraParams: {
6537
                                                tableName: TableRef,
6538
                                                param: rec.ParamCombo
6539
                                            },
6540
                                            reader: {
6541
                                                type: 'json',
6542
                                                root: 'data',
6543
                                                totalProperty: 'data[0].TotalCount'
6544
                                            }
6545
                                        }
6546
                                    });
6547
                                    cols.push({
6548
                                        xtype: 'minovacombocolumn',
6549
                                        text: rec.HeaderTitle,
6550
                                        dataIndex: rec.FieldName,
6551
                                        valueField: valueField,
6552
                                        displayField: displayValue,
6553
                                        store: 'store_' + me.tableName + rec.FieldName,
6554
                                        editor: {
6555
                                            allowBlank: allowblank,
6556
                                            xtype: 'combobox',
6557
                                            readOnly: readonly,
6558
                                            name: 'grid' + tableName + rec.FieldName,
6559
                                            id: 'grid' + tableName + rec.FieldName,
6560
                                            valueField: valueField,
6561
                                            displayField: displayValue,
6562
                                            store: 'store_' + me.tableName + rec.FieldName,
6563
                                            value: rec.DefaultValue,
6564
                                            formname: me.formname,
6565
                                            listeners: {
6566
                                                change: function (val) {
6567
                                                    var _label = val.name;
6568
                                                    var _form = val.formname;
6569
                                                    var _Value = val.getValue();
6570
                                                    var target = rec.TriggerCombo;
6571
                                                    var custumFunc = rec.SelectFunction;
6572
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6573
                                                        Ext.Ajax.request({
6574
                                                            async: false,
6575
                                                            method: 'POST',
6576
                                                            url: '/UserControl/GetStore',
6577
                                                            params: {
6578
                                                                tableName: 'PCMFUNC',
6579
                                                                param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
6580
                                                            },
6581
                                                            success: function (response) {
6582
                                                                var results = Ext.decode(response.responseText);
6583
                                                                data_ = results.data[0];
6584
                                                                if (data_ != undefined) {
6585
                                                                    custumFunc = data_.FunctionCode;
6586
                                                                }
6587
                                                            }
6588
                                                        });
6589
                                                    }
6590
                                                    var frm = Ext.ComponentQuery.query('[name=' + _form + ']')[0];
6591
                                                    if (frm) {
6592
                                                        if (custumFunc) {
6593
                                                            eval(custumFunc)
6594
                                                        }
6595
                                                    }
6596
                                                }
6597
                                            }
6598
                                        }
6599
                                    });
6600
                                } else if (rec.SearchType == "2") {
6601
                                    cols.push({
6602
                                        text: rec.HeaderTitle,
6603
                                        dataIndex: rec.FieldName,
6604
                                        editor: {
6605
                                            xtype: 'minovalookupgrid',
6606
                                            allowBlank: allowblank,
6607
                                            readOnly: readonly,
6608
                                            msgTarget: 'side',
6609
                                            labelCls: 'label-minova',
6610
                                            labelWidth: 150,
6611
                                            name: 'grid' + tableName + rec.FieldName,
6612
                                            id: 'grid' + tableName + rec.FieldName,
6613
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
6614
                                            triggerCls: 'x-form-search-trigger',
6615
                                            vtype: 'alphanum', // disable space
6616
                                            formtarget: me.formname, // nama form  yang akan di set value-nya
6617
                                            anchor: '100%',
6618
                                            formname: me.formname,
6619
                                            listeners: {
6620
                                                change: function (val) {
6621
                                                    var _label = val.name;
6622
                                                    var _form = val.formname;
6623
                                                    var _Value = val.getValue();
6624
                                                    var target = rec.TriggerCombo;
6625
                                                    var custumFunc = rec.SelectFunction;
6626
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6627
                                                        Ext.Ajax.request({
6628
                                                            async: false,
6629
                                                            method: 'POST',
6630
                                                            url: '/UserControl/GetStore',
6631
                                                            params: {
6632
                                                                tableName: 'PCMFUNC',
6633
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6634
                                                            },
6635
                                                            success: function (response) {
6636
                                                                var results = Ext.decode(response.responseText);
6637
                                                                data_ = results.data[0];
6638
                                                                if (data_ != undefined) {
6639
                                                                    custumFunc = data_.FunctionCode;
6640
                                                                }
6641
                                                            }
6642
                                                        });
6643
                                                    }
6644
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6645
                                                    if (frm) {
6646
                                                        if (target) {
6647
                                                            var f = frm.getForm().findField(target)
6648
                                                            _store = f.getStore();
6649
                                                            var _tbl = _store.proxy.extraParams.tableName;
6650
                                                            var oldParam = _store.proxy.extraParams.param;
6651
                                                            _store.proxy.extraParams = {
6652
                                                                tableName: _tbl,
6653
                                                                param: _label + '[=]' + _Value
6654
                                                            };
6655
                                                            _store.load();
6656
                                                        }
6657
                                                        if (custumFunc) {
6658
                                                            eval(custumFunc)
6659
                                                        }
6660

    
6661
                                                    }
6662

    
6663
                                                },
6664

    
6665
                                            }
6666
                                        }
6667
                                    });
6668
                                } else if (rec.SearchType == "3") {
6669
                                    cols.push({
6670
                                        text: rec.HeaderTitle,
6671
                                        dataIndex: rec.FieldName,
6672
                                        editor: {
6673
                                            xtype: 'minovalookuptree',
6674
                                            allowBlank: allowblank,
6675
                                            fieldLabel: rec.ScreenCaption,
6676
                                            readOnly: readonly,
6677
                                            labelCls: 'label-minova',
6678
                                            labelWidth: 150,
6679
                                            name: 'grid' + tableName + rec.FieldName,
6680
                                            id: 'grid' + tableName + rec.FieldName,
6681
                                            msgTarget: 'side',
6682
                                            triggerCls: 'x-form-search-trigger',
6683
                                            treeSructure: rec.SearchFunction, //'O-O-P',
6684
                                            objClassValue: rec.ParamCombo, //'O',
6685
                                            formname: me.formname,
6686
                                            targetField: rec.FieldName,
6687
                                            anchor: '100%',
6688
                                            listeners: {
6689
                                                change: function (val) {
6690
                                                    var _label = val.name;
6691
                                                    var _form = val.formname;
6692
                                                    var _Value = val.getValue();
6693
                                                    var target = rec.TriggerCombo;
6694
                                                    var custumFunc = rec.SelectFunction;
6695
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6696
                                                        Ext.Ajax.request({
6697
                                                            async: false,
6698
                                                            method: 'POST',
6699
                                                            url: '/UserControl/GetStore',
6700
                                                            params: {
6701
                                                                tableName: 'PCMFUNC',
6702
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6703
                                                            },
6704
                                                            success: function (response) {
6705
                                                                var results = Ext.decode(response.responseText);
6706
                                                                data_ = results.data[0];
6707
                                                                if (data_ != undefined) {
6708
                                                                    custumFunc = data_.FunctionCode;
6709
                                                                }
6710
                                                            }
6711
                                                        });
6712
                                                    }
6713
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6714
                                                    if (frm) {
6715

    
6716
                                                        if (target) {
6717
                                                            var f = frm.getForm().findField(target)
6718
                                                            _store = f.getStore();
6719
                                                            var _tbl = _store.proxy.extraParams.tableName;
6720
                                                            var oldParam = _store.proxy.extraParams.param;
6721
                                                            _store.proxy.extraParams = {
6722
                                                                tableName: _tbl,
6723
                                                                param: _label + '[=]' + _Value
6724
                                                            };
6725
                                                            _store.load();
6726
                                                        }
6727
                                                        if (custumFunc) {
6728
                                                            eval(custumFunc)
6729
                                                        }
6730
                                                    }
6731
                                                }
6732
                                            }
6733
                                        }
6734
                                    });
6735
                                } else if (rec.SearchType == "4") {
6736
                                    cols.push({
6737
                                        text: rec.HeaderTitle,
6738
                                        dataIndex: rec.FieldName,
6739
                                        editor: {
6740
                                            xtype: 'lookupemployee',
6741
                                            allowBlank: allowblank,
6742
                                            fieldLabel: rec.ScreenCaption,
6743
                                            readOnly: readonly,
6744
                                            labelCls: 'label-minova',
6745
                                            name: 'grid' + tableName + rec.FieldName,
6746
                                            id: 'grid' + tableName + rec.FieldName,
6747
                                            msgTarget: 'side',
6748
                                            fieldname: rec.FieldName,
6749
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
6750
                                            triggerCls: 'x-form-search-trigger',
6751
                                            vtype: 'alphanum', // disable space
6752
                                            formtarget: formname, // nama form  yang akan di set value-nya
6753
                                            isLookup: isLookup,
6754
                                            anchor: '100%',
6755
                                            formname: formname,
6756
                                            listeners: {
6757
                                                change: function (val) {
6758
                                                    var _label = val.name;
6759
                                                    var _form = val.formname;
6760
                                                    var _Value = val.getValue();
6761
                                                    var target = rec.TriggerCombo;
6762
                                                    var custumFunc = rec.SelectFunction;
6763
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6764
                                                        Ext.Ajax.request({
6765
                                                            async: false,
6766
                                                            method: 'POST',
6767
                                                            url: '/UserControl/GetStore',
6768
                                                            params: {
6769
                                                                tableName: 'PCMFUNC',
6770
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6771
                                                            },
6772
                                                            success: function (response) {
6773
                                                                var results = Ext.decode(response.responseText);
6774
                                                                data_ = results.data[0];
6775
                                                                if (data_ != undefined) {
6776
                                                                    custumFunc = data_.FunctionCode;
6777
                                                                }
6778
                                                            }
6779
                                                        });
6780
                                                    }
6781
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6782
                                                    if (frm) {
6783

    
6784
                                                        if (target) {
6785
                                                            var f = frm.getForm().findField(target)
6786
                                                            _store = f.getStore();
6787
                                                            var _tbl = _store.proxy.extraParams.tableName;
6788
                                                            var oldParam = _store.proxy.extraParams.param;
6789
                                                            _store.proxy.extraParams = {
6790
                                                                tableName: _tbl,
6791
                                                                param: _label + '[=]' + _Value
6792
                                                            };
6793
                                                            _store.load();
6794
                                                        }
6795
                                                        if (custumFunc) {
6796
                                                            eval(custumFunc)
6797
                                                        }
6798

    
6799
                                                    }
6800

    
6801
                                                },
6802

    
6803
                                            },
6804
                                        }
6805
                                    });
6806
                                }
6807
                            } else {
6808
                                if (rec.FixedValue != "") {
6809
                                    var storeData = [];
6810
                                    var str = rec.FixedValue;
6811
                                    var hasil = str.split('||');
6812
                                    hasil.forEach(function (h) {
6813
                                        store_ = h.split('=')
6814
                                        storeData.push({
6815
                                            code: store_[0],
6816
                                            desc: store_[1],
6817
                                        });
6818
                                    });
6819
                                    cols.push({
6820
                                        xtype: 'minovacombocolumn',
6821
                                        text: rec.HeaderTitle,
6822
                                        dataIndex: rec.FieldName,
6823
                                        valueField: valueField,
6824
                                        displayField: displayValue,
6825
                                        store: Ext.create('Ext.data.Store', {
6826
                                            storeId: 'store' + rec.FieldName,
6827
                                            autoLoad: true,
6828
                                            data: storeData
6829

    
6830
                                        }),
6831
                                        editor: {
6832
                                            xtype: 'combobox',
6833
                                            allowBlank: allowblank,
6834
                                            forceSelection: true,
6835
                                            readOnly: readonly,
6836
                                            labelCls: 'label-minova',
6837
                                            labelWidth: 150,
6838
                                            name: 'grid' + tableName + rec.FieldName,
6839
                                            id: 'grid' + tableName + rec.FieldName,
6840
                                            msgTarget: 'side',
6841
                                            value: rec.DefaultValue,
6842
                                            anchor: '100%',
6843
                                            formname: me.formname,
6844
                                            formtarget: me.formname,
6845
                                            store: Ext.create('Ext.data.Store', {
6846
                                                storeId: 'store' + rec.FieldName,
6847
                                                autoLoad: true,
6848
                                                data: storeData
6849

    
6850
                                            }),
6851
                                            listeners: {
6852
                                                change: function (val) {
6853
                                                    var _label = val.name;
6854
                                                    var _form = val.formtarget;
6855
                                                    var _Value = val.getValue();
6856
                                                    var target = rec.TriggerCombo;
6857
                                                    var custumFunc = rec.SelectFunction;
6858
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6859
                                                    if (frm) {
6860
                                                        if (target) {
6861
                                                            var f = frm.getForm().findField(target)
6862
                                                            _store = f.getStore();
6863
                                                            var _tbl = _store.proxy.extraParams.tableName;
6864
                                                            var oldParam = _store.proxy.extraParams.param;
6865
                                                            _store.proxy.extraParams = {
6866
                                                                tableName: _tbl,
6867
                                                                param: _label + '[=]' + _Value
6868
                                                            };
6869
                                                            _store.load();
6870
                                                        }
6871
                                                        if (custumFunc) {
6872
                                                            eval(custumFunc)
6873
                                                        }
6874
                                                    }
6875
                                                }
6876
                                            },
6877
                                            queryMode: 'local',
6878
                                            valueField: 'code',
6879
                                            displayField: 'desc',
6880
                                        }
6881
                                    })
6882
                                } else {
6883
                                    cols.push({
6884
                                        text: rec.HeaderTitle,
6885
                                        dataIndex: rec.FieldName,
6886
                                        editor: {
6887
                                            allowBlank: allowblank,
6888
                                            xtype: 'textfield',
6889
                                            readOnly: readonly,
6890
                                            name: 'grid' + tableName + rec.FieldName,
6891
                                            id: 'grid' + tableName + rec.FieldName,
6892
                                            value: rec.DefaultValue
6893
                                        }
6894
                                    });
6895
                                }
6896
                            }
6897
                            break;
6898
                    }
6899
                } else {
6900
                    cols.push({
6901
                        text: rec.HeaderTitle,
6902
                        dataIndex: rec.FieldName,
6903
                        hidden: true,
6904
                        editor: {
6905
                            allowBlank: true,
6906
                            xtype: 'textfield',
6907
                            readOnly: false,
6908
                            name: 'grid' + tableName + rec.FieldName,
6909
                            id: 'grid' + tableName + rec.FieldName,
6910
                        }
6911
                    });
6912
                }
6913
            });
6914
        };
6915

    
6916
        this.editing = Ext.create('Ext.grid.plugin.CellEditing');
6917
        Ext.applyIf(me, {
6918
            items: [{
6919
                xtype: 'grid',
6920
                id: gridName,
6921
                name: gridName,
6922
                height: height,
6923
                store: Ext.create('Ext.data.Store', {
6924
                    storeId: storeID,
6925
                    fields: fieldStore,
6926
                    proxy: {
6927
                        method: 'POST',
6928
                        type: 'ajax',
6929
                        url: '',
6930
                        reader: {
6931
                            type: 'json',
6932
                            root: 'data'
6933
                        }
6934
                    }
6935
                }),
6936
                dockedItems: [{
6937
                    xtype: 'toolbar',
6938
                    items: [{
6939
                        text: 'Add',
6940
                        hidden: hide_,
6941
                        name: tableName + 'Add',
6942
                        iconCls: 'fa-plus-circle',
6943
                        style: 'font-family: FontAwesome',
6944
                        handler: function () {
6945
                            var store = Ext.StoreMgr.lookup(storeID)
6946
                            idx = store.getCount();
6947
                            var action = getParam('action');
6948
                            var data = '';
6949
                            var Sequence = 0;
6950
                            if (idx == 0) {
6951
                                Sequence = 1;
6952
                            } else {
6953
                                Sequence = 1 + idx;
6954
                            }
6955
                            data = {
6956
                                Sequence: Sequence
6957
                            };
6958
                            store.insert(idx, data);
6959
                        }
6960
                    }, {
6961
                        text: 'Delete',
6962
                        hidden: hide_,
6963
                        name: tableName + 'DeleteText',
6964
                        iconCls: 'fa-trash-o',
6965
                        style: 'font-family: FontAwesome',
6966
                        handler: function () {
6967
                            var me = this,
6968
                            store = Ext.StoreMgr.lookup(storeID);
6969
                            var grid = Ext.getCmp(gridName);
6970
                            Ext.MessageBox.show({
6971
                                title: 'Remove tab',
6972
                                msg: "This will remove. Do you want to continue?",
6973
                                buttons: Ext.MessageBox.YESNO,
6974
                                fn: function (choice) {
6975
                                    console.log(choice);
6976
                                    if (choice === 'yes') {
6977
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
6978
                                        if (selection) {
6979
                                            store.remove(selection);
6980
                                        }
6981
                                    }
6982
                                }
6983
                            });
6984
                        }
6985
                    }
6986
                    ]
6987
                }
6988
                ],
6989
                columns: cols,
6990
                selType: checkSelection,
6991
                plugins: [this.editing],
6992
                // plugins: {
6993
                // ptype: 'rowediting',
6994
                // pluginId: 'rowEditing',
6995
                // clicksToEdit: 0,
6996
                // listeners: {
6997
                // }
6998
                // }
6999
            }
7000
            ]
7001
        });
7002
        me.callParent(arguments);
7003
    }
7004
});
7005
Ext.define('MinovaUtil.MinovaES.MinovaForm', {
7006
    extend: 'Ext.form.Panel',
7007
    alias: ['widget.minovaForm', 'widget.minovaform'],
7008
    tableName: undefined,
7009
    param: undefined,
7010
    titleform: undefined,
7011
    formname: this.name,
7012
    isLookup: undefined,
7013
    hidebutton: undefined,
7014
    //frame: true,
7015
    resizable: true,
7016
    border: false,
7017
    autoScroll: true,
7018
    minHeight: 20,
7019
    layout: 'column',
7020
    submitproc: undefined, //true if stil edit ,add
7021
    actionsubmit: undefined,
7022
    iseditform: undefined,
7023
    isFormReadOnly: undefined, // true== form di read only default false
7024
    isDisplay: undefined, // true if display only and false or undefined or empety if form can be edit
7025
    searchcustomization: undefined,
7026
    getIsFormReadOnly: function () {
7027
        return this.isFormReadOnly;
7028
    },
7029
    setIsFormReadOnly: function (value) {
7030
        var me = this;
7031
        me.isFormReadOnly = value;
7032
        return me;
7033
    },
7034
    getIsEditform: function () {
7035
        return this.iseditform;
7036
    },
7037
    setIsEditform: function (value) {
7038
        var me = this;
7039
        me.iseditform = value;
7040
        return me;
7041
    },
7042
    getActionSubmit: function () {
7043
        return this.actionsubmit;
7044
    },
7045
    setActionSubmit: function (value) {
7046
        var me = this;
7047
        me.actionsubmit = value;
7048
        return me;
7049
    },
7050
    getSubmitProc: function () {
7051
        return this.submitnproc;
7052
    },
7053
    setSubmitProc: function (value) {
7054
        var me = this;
7055
        me.submitnproc = value;
7056
        return me;
7057
    },
7058
    listeners: {
7059
        render: function () {
7060
            if (this.isLookup == 1 || this.isLookup == 'Y' || this.hidebutton == 1 || this.hidebutton == 'Y') {
7061
                var v = Ext.ComponentQuery.query('[name=formLookupFilter]')[0];
7062
                if (v) {
7063
                    v.setMaxHeight(200);
7064
                }
7065

    
7066
            }
7067
            if (this.titleform != undefined) {
7068
                this.setTitle(this.titleform);
7069
            }
7070
        },
7071

    
7072
    },
7073
    defaults: {
7074
        layout: 'form',
7075
        xtype: 'container',
7076
        defaultType: 'textfield',
7077
        style: 'width: 50%',
7078
        //height: 1000
7079
    },
7080
    initComponent: function () {
7081
        var col1 = [];
7082
        var col2 = [];
7083
        var me = this;
7084
        LangID = localStorage.LangId;
7085
        isLookup = me.isLookup;
7086
        //var _url = 'GetAllField';
7087

    
7088
        if (isLookup == 1 || isLookup == true || isLookup == 'Y') {}
7089
        isDisplay = me.isDisplay;
7090
        var hasil = null;
7091
        //hamid 200916
7092
        //Ext.Ajax.request({
7093
        //	async : false,
7094
        //	method : 'POST',
7095
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
7096
        //	success : function (response) {
7097
        //		var results = Ext.decode(response.responseText);
7098
        //		hasil = results.data;
7099
        //	}
7100
        //});
7101
        //end
7102

    
7103

    
7104
        //hamid
7105
        //if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
7106
        parameter = null;
7107
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7108
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupFilter='1'"
7109
        } else if (me.searchcustomization == true) {
7110
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',IsCustomizationFilter='1'"
7111
        } else {
7112
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
7113
        }
7114
        Ext.Ajax.request({
7115
            async: false,
7116
            method: 'POST',
7117
            url: '/UserControl/GetStore',
7118
            params: {
7119
                tableName: 'PDSBS0007',
7120
                param: parameter
7121
            },
7122
            success: function (response) {
7123
                var results = Ext.decode(response.responseText);
7124
                hasil = results.data;
7125
            }
7126
        });
7127
        //end
7128
        if (hasil.length > 0) {
7129
            // hasil = hasil.sort(MinovaUtil.SortBy("Sequence"))
7130
            var me = this;
7131
            Ext.each(hasil, function (rec) {
7132
                var null_ = null;
7133
                if (rec.IsPrimaryKey == true) {
7134
                    null_ = false;
7135
                }
7136
                if (rec.IsRequired == true) {
7137
                    null_ = false;
7138
                } else {
7139
                    null_ = true;
7140
                }
7141
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, isDisplay, me.tableName, me.isLookup);
7142
                var descField = undefined;
7143
                //if (isDisplay == true && rec.SearchType !='') {
7144
                //    descField = new Ext.form.Display({
7145
                //        fieldCode:'codeDisplay'+rec.name+rec.tableName,
7146
                //        allowBlank: true,
7147
                //        fieldLabel: 'Desc ' + rec.ScreenCaption,
7148
                //        readOnly: true,
7149
                //        maxLength: rec.Length,
7150
                //        anchor: '100%',
7151
                //        submitValue: false
7152
                //    });
7153
                //}
7154
                //else {
7155
                //    if (rec.SearchType == '2') {// lookup
7156
                //        descField = new Ext.form.TextField({
7157
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7158
                //            allowBlank: true,
7159
                //            fieldLabel: 'Desc ' + rec.ScreenCaption,
7160
                //            readOnly: true,
7161
                //            maxLength: rec.Length,
7162
                //            anchor: '100%',
7163
                //            submitValue: false
7164
                //        });
7165
                //    }
7166
                //    if (rec.SearchType == '3') {// tree
7167
                //        descField = new Ext.form.TextField({
7168
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7169
                //            allowBlank: true,
7170
                //            fieldLabel: 'Desc ' + rec.ScreenCaption,
7171
                //            readOnly: true,
7172
                //            maxLength: rec.Length,
7173
                //            anchor: '100%',
7174
                //            submitValue: false
7175
                //        });
7176
                //    }
7177
                //    if (rec.SearchType == '4' && me.isLookup != true) {
7178
                //        descField = new Ext.form.TextField({
7179
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7180
                //            allowBlank: true,
7181
                //            fieldLabel: 'Full Name',
7182
                //            readOnly: true,
7183
                //            maxLength: rec.Length,
7184
                //            anchor: '100%',
7185
                //            submitValue: false
7186
                //        });
7187
                //    }
7188

    
7189
                //}
7190

    
7191
                if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7192
                    col1.push(formfield);
7193
                    if (descField) {
7194
                        col1.push(descField)
7195
                    }
7196
                } else {
7197
                    if (isDesk) {
7198
                        if (rec.ColumnNo == 1) {
7199
                            col1.push(formfield);
7200
                            if (descField) {
7201
                                col1.push(descField)
7202
                            }
7203
                        } else {
7204
                            col2.push(formfield);
7205
                            if (descField) {
7206
                                col2.push(descField)
7207
                            }
7208
                        }
7209
                    } else {
7210
                        col1.push(formfield);
7211
                        if (descField) {
7212
                            col1.push(descField)
7213
                        }
7214
                    }
7215

    
7216
                }
7217

    
7218
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
7219
                    formfieldKey = new Ext.form.TextField({
7220
                        hidden: true,
7221
                        name: "Key_" + rec.FieldName,
7222
                    });
7223
                    col2.push(formfieldKey);
7224
                }
7225

    
7226
            });
7227
            //console.log(col1);
7228
        }
7229
        Ext.applyIf(me, {
7230
            items: [{
7231
                //width: 450,
7232
                style: 'width: 50%',
7233
                items: col1
7234
            }, {
7235
                //width: 450,
7236
                style: 'width: 50%',
7237
                items: col2
7238
            }
7239
            ],
7240
        });
7241
        this.callParent();
7242
    }
7243
});
7244

    
7245
Ext.define('MinovaUtil.MinovaES.MinovaGridForm', {
7246
    extend: 'Ext.form.Panel',
7247
    alias: ['widget.minovagridform', 'widget.MinovaGridForm'],
7248
    tableName: undefined, //nama tabel
7249
    param: undefined, //param query
7250
    pagesize: undefined,
7251
    storename: undefined,
7252
    titleform: undefined,
7253
    titlegrid: undefined,
7254
    heightgrid: undefined,
7255
    heightform: undefined,
7256
    iseditform: undefined,
7257
    lastheightform: undefined,
7258
    layoutType: undefined,
7259
    lastpage: undefined,
7260
    lastTitle: undefined,
7261
    getLastTitle: function () {
7262
        return this.lastTitle;
7263
    },
7264
    setLastTitle: function (value) {
7265
        var me = this;
7266
        me.lastTitle = value;
7267
        return me;
7268
    },
7269
    getLastpage: function () {
7270
        return this.lastpage;
7271
    },
7272
    setLastpage: function (value) {
7273
        var me = this;
7274
        me.lastpage = value;
7275
        return me;
7276
    },
7277
    getLayoutType: function () {
7278
        return this.layoutType;
7279
    },
7280
    setLayoutType: function (value) {
7281
        var me = this;
7282
        me.layoutType = value;
7283
        return me;
7284
    },
7285
    getLastheightform: function () {
7286
        return this.lastheightform;
7287
    },
7288
    setLastheightform: function (value) {
7289
        var me = this;
7290
        me.lastheightform = value;
7291
        return me;
7292
    },
7293

    
7294
    getIsEditform: function () {
7295
        return this.iseditform;
7296
    },
7297
    setIsEditform: function (value) {
7298
        var me = this;
7299
        me.iseditform = value;
7300
        return me;
7301
    },
7302
    initComponent: function () {
7303
        var me = this;
7304
        var storename = me.storename;
7305
        if (storename == "" || storename == undefined) {
7306
            storename = "store" + me.tableName;
7307
        }
7308
        var tableName = me.tableName;
7309
        Ext.applyIf(me, {
7310
            items: [{
7311
                layoutType: "MinovaGridForm",
7312
                title: me.titlegrid,
7313
                xtype: "minovagrid",
7314
                tableName: tableName, // nama tebel/dataset
7315
                name: "MinovaGridFormGrid" + tableName, //name bebeas
7316
                param: me.param, // parameter filteran
7317
                pagesize: me.pagesize, // jumlah record yang muncul per page
7318
                storename: storename, //nama store bebas
7319
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7320
                height: 330,
7321
                bodyPadding: 0,
7322
                dockedItems: [{
7323
                    xtype: 'pagingtoolbar',
7324
                    store: storename, // harus sama dengan naa store diatas
7325
                    dock: 'bottom', //posisi paging
7326
                    pageSize: me.pagesize,
7327
                    displayInfo: true
7328
                }
7329
                ],
7330

    
7331
                listeners: {
7332
                    viewready: function () {
7333
                        //alert('ready')
7334
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7335
                        formEdit.setHidden(true);
7336

    
7337
                        if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7338
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7339
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7340
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7341
                        } else {
7342
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7343
                            //Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7344
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7345
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7346
                        }
7347
                    },
7348
                    selectionchange: function () {
7349
                        //case md
7350
                        var layout = null;
7351
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7352
                        if (pnl) {
7353
                            layout = pnl.getLayoutType();
7354

    
7355
                        }
7356
                        //end case
7357

    
7358
                        if (layout == 'L003') {
7359
                            var selection = this.getView().getSelectionModel().getSelection()[0];
7360
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7361
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7362
                            if (selection) {
7363
                                formDisplay.getForm().setValues(selection.data);
7364
                                formEdit.getForm().setValues(selection.data);
7365
                            }
7366

    
7367
                        }
7368
                    },
7369
                    itemdblclick: function () {
7370
                        var me = this;
7371
                        //case md
7372
                        var layout = null;
7373
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7374
                        if (pnl) {
7375
                            layout = pnl.getLayoutType();
7376

    
7377
                        } else {
7378
                            pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7379
                            layout = pnl.getLayoutType();
7380
                        }
7381
                        //end case
7382
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7383
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7384
                        var submit_ = formEdit.getSubmitProc();
7385
                        var selection = me.getView().getSelectionModel().getSelection()[0];
7386
                        if (submit_ == undefined) {
7387
                            submit_ = false;
7388
                        }
7389
                        if (submit_ == false) {
7390

    
7391
                            formDisplay.getForm().setValues(selection.data);
7392
                            formEdit.getForm().setValues(selection.data);
7393
                            if (layout == 'L003') {
7394
                                formDisplay.setHidden(false);
7395
                                Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + this.tableName + ']')[0].setHidden(true);
7396
                                var heigh = pnl.getLastheightform();
7397

    
7398
                                var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7399
                                if (pDetail) {
7400
                                    pDetail.setHeight(heigh + 100);
7401
                                } else {
7402
                                    pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7403
                                    var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
7404
                                    var mainPnl = mainPnl_.getHeight();
7405
                                    //pDetail.setHeight(mainPnl + 100);
7406

    
7407
                                }
7408
                            } else {
7409
                                formDisplay.setTitle("View")
7410
                                formEdit.setTitle("Edit")
7411
                            }
7412
                        } else {
7413
                            alert('still process')
7414
                        }
7415

    
7416
                    },
7417
                    beforeedit: function () {
7418
                        return false;
7419
                    }
7420
                }
7421
            }, {
7422
                xtype: 'minovaform',
7423
                name: "MinovaGridFormDisplay" + tableName,
7424
                tableName: tableName, // nama tabel /dataset
7425
                isLookup: '', // 1 or 'Y' for lookup
7426
                isDisplay: true, // true== form is displayfield
7427
                buttons: [{
7428
                    text: 'Edit',
7429
                    name: 'Edit' + tableName,
7430
                    iconCls: 'fa-edit',
7431
                    style: 'font-family: FontAwesome',
7432
                    handler: function () {
7433

    
7434
                        f = this.up().up();
7435
                        f.setSubmitProc(false);
7436
                        f.setHidden(true);
7437
                        //f.setActionSubmit(1);
7438
                        Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7439
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7440
                        formEdit.setSubmitProc(true);
7441
                        formEdit.setHidden(false);
7442
                        formEdit.setActionSubmit(1);
7443
                        var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7444
                        if (p) {
7445
                            var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7446
                            var lastTitile = p.getTitle();
7447
                            pnl.setLastTitle(lastTitile);
7448
                            p.setTitle('Edit - ' + lastTitile)
7449

    
7450
                        }
7451

    
7452
                    }
7453
                }, {
7454
                    text: 'Back to Grid',
7455
                    name: 'Edit' + tableName,
7456
                    iconCls: 'fa-reply',
7457
                    style: 'font-family: FontAwesome',
7458
                    handler: function () {
7459
                        var layout = null;
7460
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7461
                        if (pnl) {
7462
                            layout = pnl.getLayoutType();
7463

    
7464
                        }
7465

    
7466
                        f = this.up().up();
7467
                        f.setSubmitProc(false);
7468
                        f.setHidden(true);
7469
                        Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7470
                        Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0].setHidden(true);
7471

    
7472
                        if (layout == 'L003') {
7473
                            var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7474
                            grid_.setHidden(false);
7475
                            Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7476
                            Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7477
                        }
7478
                    }
7479
                }
7480
                ],
7481
            }, {
7482
                xtype: 'minovaform',
7483
                name: "MinovaGridFormEdit" + tableName,
7484
                tableName: tableName, // nama tabel /dataset
7485
                isLookup: '', // 1 or 'Y' for lookup
7486
                isDisplay: false, // true== form is displayfield
7487
                buttons: [{
7488
                    text: 'Save',
7489
                    name: 'btnSaveMD',
7490
                    name: 'Save' + tableName,
7491
                    iconCls: 'fa-save',
7492
                    style: 'font-family: FontAwesome',
7493
                    handler: function () {
7494
                        f = this.up().up();
7495
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7496

    
7497
                        if (formEdit.getForm().isValid()) {
7498

    
7499
                            if (Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]) {
7500
                                var action_ = formEdit.getActionSubmit();
7501
                                var main_ = Ext.ComponentQuery.query('[name=mainORM]')[0];
7502
                                var record = main_.getRecordSelect();
7503

    
7504
                                if (record == undefined) {
7505
                                    var treeDetail = Ext.ComponentQuery.query('[name=treeDetail]')[0];
7506
                                    treeDetail.getSelectionModel().select(0);
7507
                                    record = treeDetail.getView().getSelectionModel().getSelection()[0];
7508

    
7509
                                }
7510
                                var frmValue = formEdit.getValues();
7511
                                var InitStartDate = 'InitStartDate';
7512
                                var InitStartDateValue = record.get('StartDate');
7513
                                frmValue[InitStartDate] = InitStartDateValue;
7514

    
7515
                                var InitEndDate = 'InitEndDate';
7516
                                var InitEndDateValue = record.get('EndDate');
7517
                                frmValue[InitEndDate] = InitEndDateValue;
7518

    
7519
                                var InitParentObject = 'InitParentObject';
7520
                                var InitParentObjectValue = record.get('ObjectId');
7521
                                if (InitParentObjectValue == undefined) {
7522
                                    InitParentObjectValue = "";
7523
                                }
7524
                                frmValue[InitParentObject] = InitParentObjectValue;
7525

    
7526
                                var InitParentClass = 'InitParentClass';
7527
                                var InitParentClassValue = record.get('ObjectType');
7528
                                if (InitParentClassValue == undefined) {
7529
                                    InitParentClassValue = "";
7530
                                }
7531
                                frmValue[InitParentClass] = InitParentClassValue;
7532
                                var frmValue_ = Ext.encode(frmValue);
7533

    
7534
                                Ext.Ajax.request({
7535
                                    method: 'POST',
7536
                                    url: '/Devt/SaveMaintainORM',
7537
                                    params: {
7538
                                        tableName: f.tableName,
7539
                                        data: frmValue_,
7540
                                        action: action_,
7541
                                        /*
7542
                                        InitStartDate: InitStartDate,
7543
                                        InitEndaDate: InitEndaDate,
7544
                                        InitParentObject: InitParentObject,
7545
                                        InitParentClass: InitParentClass
7546
                                         */
7547
                                    },
7548
                                    waitMsg: 'Saving Data...',
7549
                                    success: function (response) {
7550
                                        var result = Ext.decode(response.responseText);
7551
                                        if (result.success) {
7552
                                            MinovaMessage('Not Null', '000006', '', 'S')
7553

    
7554
                                            var pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7555
                                            if (pnl) {
7556
                                                Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0].setHeight(394);
7557
                                                layout = pnl.getLayoutType();
7558
                                                pnl.setLastpage(undefined);
7559
                                                var last = 'MinovaGridFormGrid' + f.tableName;
7560
                                                var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7561

    
7562
                                                var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7563
                                                formEdit.setSubmitProc(false);
7564
                                                formEdit.setHidden(true);
7565
                                                grid_.setHidden(false);
7566
                                                grid_.getStore().reload()
7567

    
7568
                                            }
7569
                                            if (layout == 'L003') {
7570
                                                var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7571
                                                grid_.setHidden(false);
7572
                                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7573
                                                var detail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7574
                                                if (detail) {
7575
                                                    detail.setHeight(grid_.getHeight() + 100)
7576
                                                } else {
7577
                                                    var p = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7578
                                                    var p_ = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7579
                                                    p_.setTitle(p.getLastTitle());
7580
                                                }
7581

    
7582
                                            }
7583

    
7584
                                        } else {
7585
                                            MinovaMessage('Not Null', '000005', result.message.text, 'E')
7586
                                        }
7587
                                        var grid = Ext.ComponentQuery.query('[name=gridMenuMDOrm]')[0];
7588
                                        var s = grid.getStore();
7589
                                        s.removeAll();
7590
                                        var ObjectType = getParam("ObjectType");
7591
                                        var Lang = null;
7592
                                        Ext.Ajax.request({
7593
                                            async: false,
7594
                                            method: 'POST',
7595
                                            url: '/Devt/GetLangID',
7596
                                            success: function (response) {
7597
                                                Lang = response.responseText;
7598
                                            }
7599
                                        });
7600
                                        Ext.Ajax.request({
7601
                                            async: true,
7602
                                            method: 'POST',
7603
                                            url: '/UserControl/GetStore',
7604
                                            params: {
7605
                                                tableName: 'PHRCM0006',
7606
                                                param: 'Language[equal]' + Lang + ',ObjectClass[equal]' + ObjectType
7607

    
7608
                                            },
7609
                                            success: function (response) {
7610
                                                var results = Ext.decode(response.responseText);
7611
                                                var data_ = results.data;
7612
                                                s.loadData(results.data);
7613
                                                // console.log(data_)
7614
                                            }
7615
                                        });
7616
                                    },
7617
                                    failure: function (response) {
7618
                                        var result = Ext.decode(response.responseText);
7619
                                        console.log(result);
7620
                                    }
7621
                                });
7622
                            } else {
7623
                                var frmValue = Ext.encode(formEdit.getValues());
7624
                                Ext.Ajax.request({
7625
                                    method: 'POST',
7626
                                    url: '/Devt/SaveTable',
7627
                                    params: {
7628
                                        tableName: f.tableName,
7629
                                        data: frmValue,
7630
                                        action: formEdit.getActionSubmit()
7631
                                    },
7632
                                    waitMsg: 'Saving Data...',
7633
                                    success: function (response) {
7634
                                        var result = Ext.decode(response.responseText);
7635
                                        if (result.success) {
7636
                                            MinovaMessage('Not Null', '000006', '', 'S')
7637

    
7638
                                            var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7639

    
7640
                                            if (pnl) {
7641
                                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(394);
7642
                                                layout = pnl.getLayoutType();
7643
                                                pnl.setLastpage(undefined);
7644
                                                var last = 'MinovaGridFormGrid' + f.tableName;
7645
                                                var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7646

    
7647
                                                var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7648
                                                formEdit.setSubmitProc(false);
7649
                                                formEdit.setHidden(true);
7650
                                                grid_.setHidden(false);
7651
                                                grid_.getStore().reload()
7652
                                                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7653
                                                mpnl.setTitle(pnl.getLastTitle());
7654

    
7655
                                            }
7656
                                            if (layout == 'L003') {
7657
                                                var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7658
                                                grid_.setHidden(false);
7659
                                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7660
                                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7661
                                            }
7662

    
7663
                                        } else {
7664
                                            MinovaMessage('Not Null', '000005', result.message.text, 'E')
7665
                                        }
7666
                                    },
7667
                                    failure: function (response) {
7668
                                        var result = Ext.decode(response.responseText);
7669
                                        //console.log(result);
7670
                                    }
7671
                                });
7672
                            }
7673

    
7674
                        }
7675
                    }
7676
                }, {
7677
                    text: 'Delete',
7678
                    iconCls: 'fa-trash-o',
7679
                    name: 'Delete',
7680
                    style: 'font-family: FontAwesome',
7681
                    action: 'CRUDdelete',
7682
                    handler: function () {
7683
                        //add fungsi Delete
7684
                        f = this.up().up();
7685
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7686
                        var frmValue = Ext.encode(formEdit.getValues());
7687
                        if (formEdit.getForm().isValid()) {
7688
                            Ext.Ajax.request({
7689
                                method: 'POST',
7690
                                url: '/Devt/SaveTable',
7691
                                params: {
7692
                                    tableName: f.tableName,
7693
                                    data: frmValue,
7694
                                    action: 2
7695
                                },
7696
                                waitMsg: 'Saving Data...',
7697
                                success: function (response) {
7698
                                    var result = Ext.decode(response.responseText);
7699
                                    if (result.success) {
7700
                                        MinovaMessage('Not Null', '000006', '', 'S')
7701

    
7702
                                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7703
                                        if (pnl) {
7704
                                            layout = pnl.getLayoutType();
7705
                                            pnl.setLastpage(undefined);
7706

    
7707
                                        }
7708
                                        if (layout == 'L003') {
7709
                                            var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7710
                                            grid_.setHidden(false);
7711
                                            Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7712
                                            Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7713
                                        }
7714

    
7715
                                    } else {
7716
                                        MinovaMessage('Not Null', '000005', result.message.text, 'E')
7717
                                    }
7718
                                },
7719
                                failure: function (response) {
7720
                                    var result = Ext.decode(response.responseText);
7721
                                    //console.log(result);
7722
                                }
7723
                            });
7724
                        }
7725
                    }
7726

    
7727
                }, {
7728
                    text: 'Cancel',
7729
                    iconCls: 'fa-reply',
7730
                    style: 'font-family: FontAwesome',
7731
                    handler: function () {
7732
                        f = this.up().up();
7733
                        f.setSubmitProc(false);
7734
                        f.setHidden(true);
7735
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7736

    
7737
                        if (pnl) {
7738
                            //'L001'=grid L002 =heder detail L003=card L004=custom
7739
                            layout = pnl.getLayoutType();
7740
                            var last = 'MinovaGridFormGrid' + f.tableName;
7741
                            var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0];
7742
                            grid_.setHidden(false);
7743
                            pnl.setLastpage(undefined);
7744
                            var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7745
                            mpnl.setTitle(pnl.getLastTitle());
7746
                            if (layout == 'L003') {
7747
                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(400);
7748
                            } else {
7749
                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7750
                            }
7751
                        } else {
7752
                            // Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7753
                            var mdDetail = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7754
                            layout = mdDetail.getLayoutType();
7755
                            if (layout == 'L003') {
7756
                                var panelDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7757
                                Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + tableName + ']')[0].setHidden(false)
7758

    
7759
                                panelDetail.setHeight(400);
7760
                            } else {
7761
                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7762
                            }
7763
                        }
7764

    
7765
                    }
7766
                }
7767
                ],
7768
            }
7769
            ]
7770
        });
7771
        me.callParent(arguments);
7772
    }
7773
});
7774

    
7775
Ext.define('MinovaUtil.MinovaES.MinovaGridCard', {
7776
    extend: 'Ext.form.Panel',
7777
    alias: ['widget.minovagridcard', 'widget.MinovaGridCard'],
7778
    tableName: undefined, //nama tabel
7779
    param: undefined, //param query
7780
    //hidebutton: undefined,
7781
    pagesize: undefined,
7782
    storename: undefined,
7783
    titleform: undefined,
7784
    titlegrid: undefined,
7785
    heightgrid: undefined,
7786
    heightform: undefined,
7787
    iseditform: undefined,
7788

    
7789
    getIsEditform: function () {
7790
        return this.iseditform;
7791
    },
7792
    setIsEditform: function (value) {
7793
        var me = this;
7794
        me.iseditform = value;
7795
        return me;
7796
    },
7797
    initComponent: function () {
7798
        var me = this;
7799
        var storename = me.storename;
7800
        if (storename == "" || storename == undefined) {
7801
            storename = "store" + me.tableName;
7802
        }
7803
        var tableName = me.tableName;
7804
        Ext.applyIf(me, {
7805
            items: [{
7806
                layoutType: "MinovaGridCard",
7807
                //title: me.titlegrid,
7808
                xtype: "minovagrid",
7809
                tableName: tableName, // nama tebel/dataset
7810
                name: "MinovaGridCardGrid" + tableName, //name bebeas
7811
                param: me.param, // parameter filteran
7812
                pagesize: me.pagesize, // jumlah record yang muncul per page
7813
                storename: storename, //nama store bebas
7814
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7815
                height: 330,
7816
                bodyPadding: 0,
7817
                dockedItems: [{
7818
                    xtype: 'pagingtoolbar',
7819
                    store: storename, // harus sama dengan naa store diatas
7820
                    dock: 'bottom', //posisi paging
7821
                    pageSize: me.pagesize,
7822
                    displayInfo: true
7823
                }
7824
                ],
7825

    
7826
                listeners: {
7827
                    viewready: function () {
7828
                        if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7829
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7830
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7831
                        } else {
7832
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7833
                            //Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7834
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7835
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7836
                        }
7837
                        //case orm
7838
                        if (this.layoutType == "MinovaGridCard") {
7839
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7840
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7841
                            formDisplay.setHidden(true);
7842
                            formEdit.setHidden(true);
7843
                        } else if (this.layoutType == "MinovaGridForm") {
7844
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7845
                            formEdit.setHidden(true);
7846
                        } else {
7847
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7848
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7849
                            formDisplay.setHidden(true);
7850
                            formEdit.setHidden(true);
7851
                        }
7852

    
7853
                    },
7854
                    itemdblclick: function () {
7855
                        //alert('a')
7856
                        var me = this;
7857

    
7858
                        var formDisplay = undefined;
7859
                        var formEdit = undefined;
7860
                        //case md orm
7861

    
7862
                        if (this.layoutType == "MinovaGridCard") {
7863
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7864
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7865
                        } else if (this.layoutType == "MinovaGridForm") {
7866
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7867
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7868
                            // formDisplay.setHidden(true);
7869

    
7870
                        } else {
7871
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7872
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7873

    
7874
                        }
7875
                        var submit_ = formEdit.getSubmitProc();
7876
                        var selection = me.getView().getSelectionModel().getSelection()[0];
7877
                        if (submit_ == undefined) {
7878
                            submit_ = false;
7879
                        }
7880
                        if (submit_ == false) {
7881

    
7882
                            if (this.layoutType == "MinovaGridCard") {
7883

    
7884
                                formDisplay.getForm().setValues(selection.data);
7885
                                formEdit.getForm().setValues(selection.data);
7886
                                formDisplay.setHidden(false);
7887
                                formEdit.setHidden(true);
7888
                                this.setHidden(true);
7889
                            } else if (this.layoutType == "MinovaGridForm") {
7890
                                formEdit.setHidden(true);
7891
                                formDisplay.getForm().setValues(selection.data);
7892
                                formEdit.getForm().setValues(selection.data);
7893
                            } else {
7894
                                formDisplay.setHidden(true);
7895
                                formEdit.setHidden(true);
7896

    
7897
                                formDisplay.getForm().setValues(selection.data);
7898
                                formEdit.getForm().setValues(selection.data);
7899
                            }
7900
                            // untuk case ORM
7901
                            var display_ = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + tableName + ']')[0].getHeight();
7902
                            if (display_) {
7903
                                var pnlORM = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0]
7904
                                var pnlMD = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7905
                                if (pnlORM) {
7906
                                    pnlORM.setHeight(pnl + 100);
7907
                                }
7908
                                if (pnlMD) {
7909
                                    Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0].setHeight(pnlMD + 600);
7910
                                    Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(pnlMD + 600);
7911
                                }
7912
                            }
7913
                            //end case ORM and MD
7914
                        } else {
7915
                            alert('still process')
7916
                        }
7917

    
7918
                    },
7919
                    beforeedit: function () {
7920
                        return false;
7921
                    }
7922
                }
7923
            }, {
7924
                xtype: 'minovaform',
7925
                name: "MinovaGridCardDisplay" + tableName,
7926
                tableName: tableName, // nama tabel /dataset
7927
                isLookup: '', // 1 or 'Y' for lookup
7928
                isDisplay: true, // true== form is displayfield
7929
                buttons: [{
7930
                    text: 'Edit',
7931
                    name: 'Edit' + tableName,
7932
                    iconCls: 'fa-edit',
7933
                    style: 'font-family: FontAwesome',
7934
                    handler: function () {
7935
                        f = this.up().up();
7936
                        f.setSubmitProc(false);
7937
                        f.setHidden(true);
7938
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
7939
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(true);
7940
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(false);
7941

    
7942
                    }
7943
                }, {
7944
                    text: 'Back to Grid',
7945
                    name: 'Cancel' + tableName,
7946
                    iconCls: 'fa-reply',
7947
                    style: 'font-family: FontAwesome',
7948
                    handler: function () {
7949
                        f = this.up().up();
7950
                        f.setSubmitProc(false);
7951
                        f.setHidden(true);
7952
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
7953
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
7954
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
7955

    
7956
                    }
7957
                }
7958
                ],
7959
            }, {
7960
                xtype: 'minovaform',
7961
                name: "MinovaGridCardEdit" + tableName,
7962
                tableName: tableName, // nama tabel /dataset
7963
                isLookup: '', // 1 or 'Y' for lookup
7964
                isDisplay: false, // true== form is displayfield
7965
                buttons: [{
7966
                    text: 'Save',
7967
                    name: 'Save' + tableName,
7968
                    iconCls: 'fa-save',
7969
                    style: 'font-family: FontAwesome',
7970
                    handler: function () {
7971
                        f = this.up().up();
7972
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0];
7973
                    }
7974
                }, {
7975
                    text: 'Delete',
7976
                    iconCls: 'fa-trash-o',
7977
                    name: 'Delete',
7978
                    style: 'font-family: FontAwesome',
7979
                    action: 'CRUDdelete'
7980
                }, {
7981
                    text: 'Back to Grid',
7982
                    name: 'EditForm' + tableName,
7983
                    iconCls: 'fa-reply',
7984
                    style: 'font-family: FontAwesome',
7985
                    handler: function () {
7986
                        f = this.up().up();
7987
                        f.setSubmitProc(false);
7988
                        f.setHidden(true);
7989
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
7990
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
7991
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
7992

    
7993
                    }
7994
                }
7995
                ],
7996
            }
7997
            ]
7998
        });
7999
        me.callParent(arguments);
8000
    }
8001
});
8002

    
8003
Ext.define('MinovaUtil.MinovaES.MinovaFloatField', {
8004
    extend: 'Ext.form.field.Number',
8005
    alias: 'widget.minovafloatfield',
8006
    hideTrigger: true,
8007
    allowDecimals: true,
8008
    precision: undefined,
8009
    isValid: function () {
8010
        var b = this,
8011
		a = b.disabled,
8012
		c = b.forceValidation || !a;
8013
        return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8014
    },
8015
    setValue: function (v) {
8016
        this.setRawValue(this.getFormattedValue(v));
8017
    },
8018
    getValue: function () {
8019
        var val = this.removeFormat(this.getRawValue());
8020
        this.value = val;
8021
        return val;
8022
    },
8023
    getSubmitValue: function () {
8024
        return this.removeFormat(this.getRawValue());
8025
    },
8026
    removeFormat: function (v) {
8027
        if (Ext.isEmpty(v))
8028
            return v;
8029
        else {
8030
            v = v.replace(Ext.util.Format.currencySign, '');
8031
            v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8032
            return v;
8033
        }
8034
    },
8035
    onFocus: function () {
8036
        this.setRawValue(this.removeFormat(this.getRawValue()));
8037
    },
8038
    onBlur: function () {
8039
        this.setRawValue(this.getFormattedValue(this.getValue()));
8040
    },
8041
    getFormattedValue: function (v) {
8042
        var prec = '';
8043
        if (this.precision != '' && this.precision > 0) {
8044
            for (var i = 0; i < this.precision; i++) {
8045
                prec = prec + '0'
8046
            }
8047
        }
8048
        return Ext.util.Format.number(v, '0,000.' + prec);
8049
    }
8050
});
8051
Ext.define('MinovaUtil.MinovaES.MinovaNumberField', {
8052
    extend: 'Ext.form.field.Number',
8053
    alias: 'widget.minovanumberfield',
8054
    //hideTrigger: true,
8055
    isValid: function () {
8056
        var b = this,
8057
		a = b.disabled,
8058
		c = b.forceValidation || !a;
8059
        return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8060
    },
8061
    setValue: function (v) {
8062
        this.setRawValue(this.getFormattedValue(v));
8063
    },
8064
    getValue: function () {
8065
        var val = this.removeFormat(this.getRawValue());
8066
        this.value = val;
8067
        return val;
8068
    },
8069
    getSubmitValue: function () {
8070
        return this.removeFormat(this.getRawValue());
8071
    },
8072
    removeFormat: function (v) {
8073
        if (Ext.isEmpty(v))
8074
            return v;
8075
        else {
8076
            v = v.replace(Ext.util.Format.currencySign, '');
8077
            v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8078
            return v;
8079
        }
8080
    },
8081
    onFocus: function () {
8082
        this.setRawValue(this.removeFormat(this.getRawValue()));
8083
    },
8084
    onBlur: function () {
8085
        this.setRawValue(this.getFormattedValue(this.getValue()));
8086
    },
8087
    getFormattedValue: function (v) {
8088
        return Ext.util.Format.number(v, '0,000');
8089
    }
8090
});
8091

    
8092
Ext.define('MinovaUtil.MinovaES.SysDateTime', {
8093
    extend: 'Ext.form.field.Text',
8094
    alias: ['widget.minovasysdatetime'],
8095
    undefinedText: '&#160;',
8096
    setValue: function (v) {
8097
        var value = v;
8098
        var hasil = null;
8099
        /*
8100
		if (value === undefined) {
8101
		return this.undefinedText;
8102
		}
8103
		if (value === null) {
8104
		return this.setRawValue(null);
8105
		}
8106
		 */
8107
        //hamid 200916
8108
        //if (value != null || value != "" || value != undefined) {
8109
        //    return this.setRawValue(null);
8110
        if (value == "" || value == null) {
8111
            return this.setRawValue("");
8112
            //end
8113
        } else {
8114
            var d = value.substring(6, 8);
8115
            var m = value.substring(4, 6);
8116
            var y = value.substring(0, 4);
8117
            var h = value.substring(8, 10);
8118
            var mt = value.substring(10, 12);
8119
            var s = value.substring(12, 14);
8120
            hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
8121
        }
8122

    
8123
        this.setRawValue(hasil);
8124
    },
8125
    getRawValue: function () {
8126
        return this.getValue();
8127
    },
8128
    getValue: function () {
8129
        var value = this.rawValue;
8130
        var hasil = null;
8131
        if (value != undefined) {
8132
            var d = value.substring(0, 2);
8133
            var m = value.substring(3, 5);
8134
            var y = value.substring(6, 10);
8135
            var h = value.substring(14, 16);
8136
            var mt = value.substring(17, 19);
8137
            var s = value.substring(20, 22);
8138
            hasil = y + m + d + h + mt + s;
8139
        }
8140
        return hasil;
8141
    }
8142
});
8143
Ext.define('MinovaUtil.MinovaES.MinovaDateTime', {
8144
    extend: 'Ext.form.field.Trigger',
8145
    alias: ['widget.minovadatetime', 'widget.MinovaDateTime'],
8146
    tableName: undefined,
8147
    param: undefined,
8148
    anchor: '50%',
8149
    initComponent: function () {
8150
        var me = this;
8151
        Ext.applyIf(me, {});
8152
        me.callParent(arguments);
8153
    },
8154
    onTriggerClick: function () {
8155
        Ext.create('Ext.window.Window', {
8156
            title: 'Hello',
8157
            modal: true,
8158
            layout: 'fit',
8159
            dockedItems: [{
8160
                xtype: 'toolbar',
8161
                dock: 'bottom',
8162
                align: 'center',
8163
                items: [{
8164
                    xtype: 'tbspacer'
8165
                }, {
8166
                    xtype: 'button',
8167
                    text: 'Today'
8168
                }, {
8169
                    xtype: 'tbspacer'
8170
                }, ]
8171
            }
8172
            ],
8173
            items: [{
8174
                xtype: 'panel',
8175
                layout: 'hbox',
8176
                items: [{
8177
                    xtype: 'datepicker',
8178
                    name: 'date',
8179
                    showToday: false,
8180
                    handler: function (picker, date) {}
8181

    
8182
                }, {
8183
                    xtype: 'sliderfield',
8184
                    width: 60,
8185
                    name: 'hour',
8186
                    labelAlign: 'top',
8187
                    fieldLabel: 'Hour',
8188
                    value: 0,
8189
                    increment: 1,
8190
                    minValue: 0,
8191
                    maxValue: 24,
8192
                    margin: '10 5 3 20',
8193
                    renderTo: Ext.getBody(),
8194
                }, {
8195
                    xtype: 'sliderfield',
8196
                    width: 60,
8197
                    name: 'minute',
8198
                    labelAlign: 'top',
8199
                    fieldLabel: 'Minute',
8200
                    value: 0,
8201
                    increment: 1,
8202
                    minValue: 0,
8203
                    maxValue: 60,
8204
                    margin: '10 5 3 20',
8205
                    renderTo: Ext.getBody(),
8206
                }, {
8207
                    xtype: 'sliderfield',
8208
                    width: 60,
8209
                    name: 'second',
8210
                    labelAlign: 'top',
8211
                    fieldLabel: 'Second',
8212
                    value: 0,
8213
                    increment: 1,
8214
                    minValue: 0,
8215
                    maxValue: 60,
8216
                    margin: '10 5 3 20',
8217
                    renderTo: Ext.getBody(),
8218
                }
8219
                ]
8220
            }
8221
            ]
8222
        }).show();
8223
    }
8224
});
8225

    
8226
Ext.define('MinovaUtil.MinovaES.MinovaMDORM', {
8227
    extend: 'Ext.form.Panel',
8228
    alias: ['widget.minovamdorm'],
8229

    
8230
    //controller: 'sample',
8231
    controller: 'orm-manage-controller',
8232
    tableName: undefined, //nama tabel
8233
    param: undefined, //param query
8234
    pagesize: undefined,
8235
    storename: undefined,
8236
    titleform: undefined,
8237
    titlegrid: undefined,
8238
    heightgrid: undefined,
8239
    heightform: undefined,
8240
    iseditform: undefined,
8241
    lastheightform: undefined,
8242
    layoutType: undefined,
8243
    lastpage: undefined,
8244
    lastTitle: undefined,
8245
    getLastTitle: function () {
8246
        return this.lastTitle;
8247
    },
8248
    setLastTitle: function (value) {
8249
        var me = this;
8250
        me.lastTitle = value;
8251
        return me;
8252
    },
8253
    getLastpage: function () {
8254
        return this.lastpage;
8255
    },
8256
    setLastpage: function (value) {
8257
        var me = this;
8258
        me.lastpage = value;
8259
        return me;
8260
    },
8261
    getLayoutType: function () {
8262
        return this.layoutType;
8263
    },
8264
    setLayoutType: function (value) {
8265
        var me = this;
8266
        me.layoutType = value;
8267
        return me;
8268
    },
8269
    getLastheightform: function () {
8270
        return this.lastheightform;
8271
    },
8272
    setLastheightform: function (value) {
8273
        var me = this;
8274
        me.lastheightform = value;
8275
        return me;
8276
    },
8277

    
8278
    getIsEditform: function () {
8279
        return this.iseditform;
8280
    },
8281
    setIsEditform: function (value) {
8282
        var me = this;
8283
        me.iseditform = value;
8284
        return me;
8285
    },
8286
    initComponent: function () {
8287
        var me = this;
8288
        var userAction = MinovaUtil.GetActionMenu();
8289
        var crudBtn = true;
8290
        if (userAction == '1') {
8291
            crudBtn = false
8292
        }
8293
        var storename = me.storename;
8294
        if (storename == "" || storename == undefined) {
8295
            storename = "store" + me.tableName;
8296
        }
8297
        var tableName = me.tableName;
8298
        Ext.applyIf(me, {
8299
            items: [{
8300
                layoutType: "MinovaGridForm",
8301
                title: me.titlegrid,
8302
                xtype: "minovagridmd",
8303
                tableName: tableName, // nama tebel/dataset
8304
                name: "MinovaGridFormGrid", //name bebeas
8305
                param: me.param, // parameter filteran
8306
                pagesize: me.pagesize, // jumlah record yang muncul per page
8307
                storename: storename, //nama store bebas
8308
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
8309
                height: 330,
8310
                bodyPadding: 0,
8311
                tbar: [{
8312
                    xtype: 'button',
8313
                    text: 'Action',
8314
                    hidden: crudBtn,
8315
                    name: 'actionGrid',
8316
                    menu: [{
8317
                        text: 'Add',
8318
                        action: 'addGrid',
8319
                        name: 'addGridORM',
8320
                        action: 'CRUDaddNewRecord',
8321
                        style: 'font-family: FontAwesome',
8322
                        itemId: 'AddData',
8323
                        iconCls: 'fa-plus-circle',
8324

    
8325
                    }, {
8326
                        text: 'Copy',
8327
                        action: 'copyGrid',
8328
                        name: 'CopyGridORM',
8329
                        iconCls: 'fa-copy',
8330
                        style: 'font-family: FontAwesome',
8331
                    }, {
8332
                        text: 'Edit',
8333
                        action: 'editGrid',
8334
                        name: 'EditGridORM',
8335
                        iconCls: 'fa-edit',
8336
                        style: 'font-family: FontAwesome',
8337
                    }, {
8338
                        text: 'Delete',
8339
                        name: 'DeleteGridORM',
8340
                        hidden: true,
8341
                        iconCls: 'fa-trash-o',
8342
                        style: 'font-family: FontAwesome',
8343
                    }
8344
                    ]
8345
                }, {
8346
                    xtype: 'tbfill'
8347
                }, {
8348
                    text: 'Clear Filters',
8349
                    tooltip: 'Clear all filters',
8350
                    name: 'clearbtn',
8351
                    handler: function () {
8352
                        var tolbar = this.up()
8353
                        var grid_ = tolbar.up()
8354
                        grid_.filters.clearFilters()
8355
                    }
8356
                }, ],
8357

    
8358
                dockedItems: [{
8359
                    xtype: 'pagingtoolbar',
8360
                    store: storename, // harus sama dengan naa store diatas
8361
                    dock: 'bottom', //posisi paging
8362
                    pageSize: me.pagesize,
8363
                    displayInfo: true
8364
                }
8365
                ],
8366
                listeners: {
8367
                    afterrender: function (me) {
8368
                        if (MinovaUtil.GetActionMenu() == "1") {}
8369
                        else {}
8370
                    },
8371

    
8372
                },
8373

    
8374
            }, {
8375
                xtype: 'minovaform',
8376
                name: "MinovaGridFormDisplay",
8377
                //name: "MinovaGridFormEdit",
8378
                border: false,
8379
                tableName: tableName, // nama tabel /dataset
8380
                isLookup: '', // 1 or 'Y' for lookup
8381
                isDisplay: true, // true== form is displayfield
8382
                /*
8383
                buttons: [{
8384
                text: 'Edit',
8385
                name: 'EditDisplay',
8386
                iconCls: 'fa-edit',
8387
                style: 'font-family: FontAwesome',
8388
                }, {
8389
                text: 'Back to Grid',
8390
                name: 'BackGrid',
8391
                iconCls: 'fa-reply',
8392
                style: 'font-family: FontAwesome',
8393
                }
8394
                ],
8395
                 */
8396
            }, {
8397
                xtype: 'minovaform',
8398
                //name: "MinovaGridFormDisplay",
8399
                name: "MinovaGridFormEdit",
8400
                border: false,
8401
                tableName: tableName, // nama tabel /dataset
8402
                isLookup: '', // 1 or 'Y' for lookup
8403
                isDisplay: false, // true== form is displayfield
8404
                /*
8405
                buttons: [{
8406
                text: 'Save',
8407
                name: 'btnSaveMD',
8408
                iconCls: 'fa-save',
8409
                style: 'font-family: FontAwesome',
8410
                }, {
8411
                text: 'Delete',
8412
                iconCls: 'fa-trash-o',
8413
                name: 'btnDeleteMD',
8414
                style: 'font-family: FontAwesome',
8415
                action: 'CRUDdelete',
8416
                }, {
8417
                text: 'Cancel',
8418
                name: 'btnCancelMD',
8419
                iconCls: 'fa-reply',
8420
                style: 'font-family: FontAwesome',
8421
                }
8422
                ],
8423
                 */
8424
            }
8425
            ]
8426

    
8427
        });
8428
        me.callParent(arguments);
8429
    }
8430
});
8431

    
8432
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMD', {
8433
    extend: 'Ext.form.Panel',
8434
    alias: ['widget.MinovaHeadermd', 'widget.MinovaHeaderMD'],
8435
    allTableName: undefined,
8436
    param: undefined,
8437
    //frame: true,
8438
    resizable: true,
8439
    autoScroll: true,
8440
    minHeight: 20,
8441
    layout: 'column',
8442
    name: 'HeaderMD',
8443
    getAllTableName: function () {
8444
        return this.allTableName;
8445
    },
8446
    setAllTableName: function (value) {
8447
        var me = this;
8448
        me.allTableName = value;
8449
        return me;
8450
    },
8451
    listeners: {
8452
        afterrender: function (me) {
8453

    
8454
            var nowDate = MinovaUtil.GetNowDate()
8455
            var allTbl = me.getAllTableName();
8456
            //alert(allTbl);
8457
            var splitTable = allTbl.split(',')
8458
            splitTable.forEach(function (tbl) {
8459
                // console.log(tbl);
8460
                //set values form
8461
                var nowDate = MinovaUtil.GetNowDate();
8462
                parameter = null;
8463
                if (me.isEmployee == true) {
8464
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
8465
                } else {
8466
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8467
                }
8468
                Ext.Ajax.request({
8469
                    method: 'POST',
8470
                    //async: false,
8471
                    url: '/UserControl/GetStore',
8472
                    params: {
8473
                        tableName: tbl,
8474
                        param: parameter
8475
                    },
8476
                    success: function (response) {
8477
                        var results = Ext.decode(response.responseText);
8478
                        hasil = results.data;
8479
                        //console.log(hasil)
8480
                        if (hasil.length > 0) {
8481
                            me.getForm().setValues(hasil[0]);
8482

    
8483
                            //console.log(me)
8484
                        }
8485

    
8486
                    }
8487
                });
8488
            });
8489

    
8490
            //setTimeout(function () {
8491
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
8492
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
8493
            //}, 100);
8494

    
8495
        },
8496

    
8497
    },
8498

    
8499
    initComponent: function () {
8500
        var me = this;
8501
        var col1 = [];
8502
        var col2 = [];
8503
        var hasil = null;
8504
        //get moduletype
8505
        //var ModuleType = 'PA';
8506
        //var ModuleType = MinovaUtil.GetModuleType()
8507
        //get Lang
8508
        var LangId = localStorage.LangId;
8509
        var allTable = null;
8510
        var tbl = null;
8511
        var tblTemp = null;
8512
        var nowDate = MinovaUtil.GetNowDate();
8513
        //var Photo_ = 'nophoto.gif';
8514
        var Photo = 'nophoto.gif';
8515
        tableName = null;
8516
        parameter = null;
8517
        // get Photo
8518
        //hamid200916
8519
        if (me.isEmployee == true) {
8520
            tableName = 'PHRPA0001';
8521
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
8522
        } else {
8523
            tableName = 'PHRRC0001';
8524
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8525
        }
8526
        Ext.Ajax.request({
8527
            method: 'POST',
8528
            async: false,
8529
            url: '/UserControl/GetStore',
8530
            params: {
8531
                tableName: tableName,
8532
                param: parameter
8533
            },
8534
            success: function (response) {
8535
                var results = Ext.decode(response.responseText);
8536
                hasil = results.data;
8537
                if (hasil.length > 0) {
8538
                    dataPhoto = hasil[0].Picture
8539
                    if (dataPhoto != "") {
8540
                        Photo = dataPhoto;
8541
                    }
8542
                }
8543

    
8544
            }
8545
        });
8546

    
8547
        var hasil = undefined;
8548
        Ext.Ajax.request({
8549
            async: false,
8550
            method: 'POST',
8551
            url: '/UserControl/GetStore',
8552
            params: {
8553
                tableName: 'PDSBS0009',
8554
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
8555
            },
8556
            success: function (response) {
8557
                hasil = Ext.decode(response.responseText).data;
8558

    
8559
            }
8560
        });
8561

    
8562
        //sorting results
8563
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
8564
        if (hasil.length > 0) {
8565
            Ext.each(hasil, function (rec) {
8566
                tblTemp = rec.TableName;
8567
                if (tbl != tblTemp) {
8568
                    tbl = tblTemp;
8569
                    if (allTable == null) {
8570
                        allTable = tbl
8571
                    } else {
8572
                        allTable = allTable + ',' + tbl
8573
                    }
8574

    
8575
                }
8576
                // build form
8577
                if (rec.TableRef != '') {
8578
                    valueField = null;
8579
                    displayValue = null;
8580
                    Ext.Ajax.request({
8581
                        async: false,
8582
                        method: 'POST',
8583
                        url: '/UserControl/GetStore',
8584
                        params: {
8585
                            tableName: 'SDATATABLEFIELD',
8586
                            param: 'TableName[equal]' + rec.TableRef
8587
                        },
8588
                        success: function (response) {
8589
                            var results = Ext.decode(response.responseText);
8590
                            data_ = results.data;
8591
                            if (data_ != undefined) {
8592
                                valueField_ = $.grep(data_, function (r) {
8593
                                    return r.ValueField == '1'
8594
                                });
8595
                                if (valueField_.length > 0) {
8596
                                    valueField = valueField_[0].FieldName
8597
                                }
8598

    
8599
                                displayValue_ = $.grep(data_, function (r) {
8600
                                    return r.DisplayValue == '1'
8601
                                });
8602
                                if (displayValue_.length > 0) {
8603
                                    displayValue = displayValue_[0].FieldName
8604
                                }
8605
                            }
8606
                        }
8607
                    });
8608

    
8609
                    formfield = new Ext.form.Display({
8610
                        fieldLabel: rec.ScreenCaption,
8611
                        name: rec.FieldName,
8612
                        //value: rec.DefaultValue,
8613
                        padding: 0,
8614
                        labelCls: 'label-minova',
8615
                        labelWidth: 150,
8616
                        anchor: '80%',
8617
                        store: Ext.create('Ext.data.Store', {
8618
                            storeId: 'storeDisplay' + rec.FieldName,
8619
                            //autoLoad: true,
8620
                            proxy: {
8621
                                method: 'POST',
8622
                                type: 'ajax',
8623
                                extraParams: {
8624
                                    tableName: rec.TableRef,
8625
                                    param: ''
8626
                                },
8627
                                reader: {
8628
                                    type: 'json',
8629
                                    root: 'data',
8630
                                    totalProperty: 'data[0].TotalCount'
8631
                                }
8632
                            }
8633
                        }),
8634
                        listeners: {
8635
                            afterrender: function (f) {
8636
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
8637
                                var ParamCombo = rec.ParamCombo;
8638
                                var param = '';
8639
                                //if (ParamCombo != '') {
8640
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
8641
                                    var splitParam = ParamCombo.split(']');
8642
                                    switch (rec.FieldName) {
8643
                                        case 'Position':
8644
                                            ParamCombo = 'P'
8645
                                            break;
8646
                                        case 'CostCenter':
8647
                                            ParamCombo = 'CC'
8648
                                            break;
8649
                                        case 'Organization':
8650
                                            ParamCombo = 'O'
8651
                                            break;
8652
                                        case 'Job':
8653
                                            ParamCombo = 'J'
8654
                                            break;
8655
                                    }
8656
                                    //if (splitParam.length == 1) {
8657
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
8658
                                    //} else {
8659
                                    //    param = ParamCombo;
8660
                                    //}
8661
                                }
8662
                                //}
8663
                                Ext.Ajax.request({
8664
                                    method: 'POST',
8665
                                    async: false,
8666
                                    url: '/UserControl/GetStore',
8667
                                    params: {
8668
                                        tableName: rec.TableRef,
8669
                                        param: param
8670
                                    },
8671
                                    success: function (response) {
8672
                                        var results = Ext.decode(response.responseText);
8673

    
8674
                                        //dt = results.data;
8675
                                        store.loadData(results.data);
8676

    
8677
                                    }
8678
                                });
8679
                            },
8680
                            change: function (f) {
8681
                                //alert(this.valueField, value);
8682
                                var display = this.displayField;
8683
                                var value = this.getValue();
8684
                                var st = f.store
8685
                                var r = st.findRecord(f.valueField, f.value)
8686
                                if (r != null) {
8687
                                    f.setRawValue(r.get(f.displayField))
8688
                                } else {
8689
                                    f.setRawValue(f.value);
8690

    
8691
                                }
8692
                            }
8693

    
8694
                        },
8695
                        queryMode: 'local',
8696
                        displayField: displayValue,
8697
                        valueField: valueField,
8698
                    });
8699
                } else {
8700
                    formfield = new Ext.form.Display({
8701
                        fieldLabel: rec.ScreenCaption,
8702
                        name: rec.FieldName,
8703
                        labelCls: 'label-minova',
8704
                        labelWidth: 150,
8705
                        //value: rec.DefaultValue,
8706
                        padding: 0,
8707
                        anchor: '80%'
8708
                    });
8709
                }
8710
                if (isDesk) {
8711
                    if (rec.Column == 1) {
8712
                        col1.push(formfield);
8713
                    } else {
8714
                        col2.push(formfield);
8715
                    }
8716
                } else {
8717
                    col1.push(formfield);
8718
                }
8719

    
8720
            });
8721
            //set allTable
8722
            this.setAllTableName(allTable);
8723
        }
8724

    
8725
        Ext.applyIf(me, {
8726
            items: [{
8727
                bodyPadding: 0,
8728
                width: 400,
8729
                margin: '10 5 3 30',
8730
                items: col1
8731
            }, {
8732
                bodyPadding: 0,
8733
                width: 400,
8734
                margin: '10 5 3 30',
8735
                items: col2
8736
            }, {
8737
                width: 150,
8738
                //margin: '10 5 3 30',
8739
                items: [{
8740
                    xtype: 'image',
8741
                    id: 'imageusermd',
8742
                    name: 'imageusermd',
8743
                    width: 120,
8744
                    height: 150,
8745
                    padding: 5,
8746
                    border: true,
8747
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
8748
                }
8749
                ]
8750
            }
8751
            ],
8752
        });
8753
        me.callParent(arguments);
8754

    
8755
    }
8756
});
8757
/*Add Taufan (Header Master Data For ERP)*/
8758
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDLogistic', {
8759
    extend: 'Ext.form.Panel',
8760
    alias: ['widget.MinovaHeadermdLogistic', 'widget.MinovaHeaderMDLogistic', 'widget.minovaheadermdlogistic'],
8761
    tablenameheader: undefined,
8762
    keyid: undefined,
8763
    allTableName: undefined,
8764
    param: undefined,
8765
    resizable: true,
8766
    autoScroll: true,
8767
    minHeight: 20,
8768
    layout: 'column',
8769
    name: 'HeaderMDLogistic',
8770
    getAllTableName: function () {
8771
        return this.allTableName;
8772
    },
8773
    setAllTableName: function (value) {
8774
        var me = this;
8775
        me.allTableName = value;
8776
        return me;
8777
    },
8778
    listeners: {
8779
        afterrender: function (me) {
8780
            var nowDate = MinovaUtil.GetNowDate()
8781
            var allTbl = me.getAllTableName();
8782
            var splitTable = allTbl.split(',')
8783
            splitTable.forEach(function (tbl) {
8784
                var nowDate = MinovaUtil.GetNowDate();
8785
                var parameter = me.keyid + '[=]' + getParam("KeyValue");
8786
                Ext.Ajax.request({
8787
                    method: 'POST',
8788
                    url: '/UserControl/GetStore',
8789
                    params: {
8790
                        tableName: tbl,
8791
                        param: parameter
8792
                    },
8793
                    success: function (response) {
8794
                        var results = Ext.decode(response.responseText);
8795
                        hasil = results.data;
8796
                        if (hasil.length > 0) {
8797
                            me.getForm().setValues(hasil[0]);
8798
                        }
8799
                    }
8800
                });
8801
            });
8802
        }
8803
    },
8804
    initComponent: function () {
8805
        var me = this;
8806
        var col1 = [];
8807
        var col2 = [];
8808
        var hasil = null;
8809
        var LangId = localStorage.LangId;
8810
        var allTable = null;
8811
        var tbl = null;
8812
        var tblTemp = null;
8813
        var nowDate = MinovaUtil.GetNowDate();
8814
        var Photo = 'nophoto.gif';
8815
        var hasil = undefined;
8816
        var parameter = me.keyid + '[=]' + getParam("KeyValue");
8817
        Ext.Ajax.request({
8818
            method: 'POST',
8819
            async: false,
8820
            url: '/UserControl/GetStore',
8821
            params: {
8822
                tableName: me.tablenameheader,
8823
                param: parameter
8824
            },
8825
            success: function (response) {
8826
                var results = Ext.decode(response.responseText);
8827
                hasil = results.data;
8828
                if (hasil.length > 0) {
8829
                    dataPhoto = hasil[0].Photo
8830
                    if (dataPhoto != "") {
8831
                        Photo = dataPhoto;
8832
                    }
8833
                }
8834
            }
8835
        });
8836
        Ext.Ajax.request({
8837
            async: false,
8838
            method: 'POST',
8839
            url: '/UserControl/GetStore',
8840
            params: {
8841
                tableName: 'PDSBS0009',
8842
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
8843
            },
8844
            success: function (response) {
8845
                hasil = Ext.decode(response.responseText).data;
8846
            }
8847
        });
8848
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
8849
        if (hasil.length > 0) {
8850
            Ext.each(hasil, function (rec) {
8851
                tblTemp = rec.TableName;
8852
                if (tbl != tblTemp) {
8853
                    tbl = tblTemp;
8854
                    if (allTable == null) {
8855
                        allTable = tbl
8856
                    } else {
8857
                        allTable = allTable + ',' + tbl
8858
                    }
8859
                }
8860
                if (rec.TableRef != '') {
8861
                    valueField = null;
8862
                    displayValue = null;
8863
                    Ext.Ajax.request({
8864
                        async: false,
8865
                        method: 'POST',
8866
                        url: '/UserControl/GetStore',
8867
                        params: {
8868
                            tableName: 'SDATATABLEFIELD',
8869
                            param: 'TableName[equal]' + rec.TableRef
8870
                        },
8871
                        success: function (response) {
8872
                            var results = Ext.decode(response.responseText);
8873
                            data_ = results.data;
8874
                            if (data_ != undefined) {
8875
                                valueField_ = $.grep(data_, function (r) {
8876
                                    return r.ValueField == '1'
8877
                                });
8878
                                if (valueField_.length > 0) {
8879
                                    valueField = valueField_[0].FieldName
8880
                                }
8881
                                displayValue_ = $.grep(data_, function (r) {
8882
                                    return r.DisplayValue == '1'
8883
                                });
8884
                                if (displayValue_.length > 0) {
8885
                                    displayValue = displayValue_[0].FieldName
8886
                                }
8887
                            }
8888
                        }
8889
                    });
8890

    
8891
                    formfield = new Ext.form.Display({
8892
                        fieldLabel: rec.ScreenCaption,
8893
                        name: rec.FieldName,
8894
                        padding: 0,
8895
                        labelCls: 'label-minova',
8896
                        labelWidth: 150,
8897
                        anchor: '80%',
8898
                        store: Ext.create('Ext.data.Store', {
8899
                            storeId: 'storeDisplay' + rec.FieldName,
8900
                            proxy: {
8901
                                method: 'POST',
8902
                                type: 'ajax',
8903
                                extraParams: {
8904
                                    tableName: rec.TableRef,
8905
                                    param: ''
8906
                                },
8907
                                reader: {
8908
                                    type: 'json',
8909
                                    root: 'data',
8910
                                    totalProperty: 'data[0].TotalCount'
8911
                                }
8912
                            }
8913
                        }),
8914
                        listeners: {
8915
                            afterrender: function (f) {
8916
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
8917
                                var ParamCombo = rec.ParamCombo;
8918
                                var param = '';
8919
                                Ext.Ajax.request({
8920
                                    method: 'POST',
8921
                                    async: false,
8922
                                    url: '/UserControl/GetStore',
8923
                                    params: {
8924
                                        tableName: rec.TableRef,
8925
                                        param: param
8926
                                    },
8927
                                    success: function (response) {
8928
                                        var results = Ext.decode(response.responseText);
8929
                                        store.loadData(results.data);
8930
                                    }
8931
                                });
8932
                            },
8933
                            change: function (f) {
8934
                                var display = this.displayField;
8935
                                var value = this.getValue();
8936
                                var st = f.store
8937
                                var r = st.findRecord(f.valueField, f.value)
8938
                                if (r != null) {
8939
                                    f.setRawValue(r.get(f.displayField))
8940
                                } else {
8941
                                    f.setRawValue(f.value);
8942
                                }
8943
                            }
8944
                        },
8945
                        queryMode: 'local',
8946
                        displayField: displayValue,
8947
                        valueField: valueField,
8948
                    });
8949
                } else {
8950
                    formfield = new Ext.form.Display({
8951
                        fieldLabel: rec.ScreenCaption,
8952
                        name: rec.FieldName,
8953
                        labelCls: 'label-minova',
8954
                        labelWidth: 150,
8955
                        padding: 0,
8956
                        anchor: '80%'
8957
                    });
8958
                }
8959
                if (isDesk) {
8960
                    if (rec.Column == 1) {
8961
                        col1.push(formfield);
8962
                    } else {
8963
                        col2.push(formfield);
8964
                    }
8965
                } else {
8966
                    col1.push(formfield);
8967
                }
8968

    
8969
            });
8970
            this.setAllTableName(allTable);
8971
        }
8972
        Ext.applyIf(me, {
8973
            items: [{
8974
                bodyPadding: 0,
8975
                width: 400,
8976
                margin: '10 5 3 30',
8977
                items: col1
8978
            }, {
8979
                bodyPadding: 0,
8980
                width: 400,
8981
                margin: '10 5 3 30',
8982
                items: col2
8983
            }, {
8984
                width: 150,
8985
                items: [{
8986
                    xtype: 'image',
8987
                    id: 'imageusermd',
8988
                    name: 'imageusermd',
8989
                    width: 120,
8990
                    height: 150,
8991
                    padding: 5,
8992
                    border: true,
8993
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
8994
                }
8995
                ]
8996
            }
8997
            ]
8998
        });
8999
        me.callParent(arguments);
9000
    }
9001
});
9002
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateTimeColumn', {
9003
    extend: 'Ext.grid.column.Column',
9004
    alias: ['widget.minovadatetimecolumn'],
9005
    alternateClassName: 'Ext.grid.MinovaDateTimeColumn',
9006
    undefinedText: '&#160;',
9007
    defaultRenderer: function (value) {
9008
        //hamid200916
9009
        //if (value === undefined) {
9010
        if (value === "") {
9011
            return this.undefinedText;
9012
            //end
9013
        }
9014

    
9015
        var d = value.substring(6, 8);
9016
        var m = value.substring(4, 6);
9017
        var y = value.substring(0, 4);
9018
        var h = value.substring(8, 10);
9019
        var mt = value.substring(10, 12);
9020
        var s = value.substring(12, 14);
9021
        var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
9022
        return hasil;
9023
    }
9024
});
9025
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateColumn', {
9026
    extend: 'Ext.grid.column.Column',
9027
    alias: ['widget.minovadatecolumn'],
9028
    alternateClassName: 'Ext.grid.MinovaDateColumn',
9029
    undefinedText: '&#160;',
9030
    defaultRenderer: function (value) {
9031
        if (value === "" || value === undefined || value === null) {
9032
            return "";
9033
        }
9034
        var d = value.substring(6, 8);
9035
        var m = value.substring(4, 6);
9036
        var y = value.substring(0, 4);
9037
        var hasil = d + '/' + m + '/' + y;
9038
        return hasil;
9039
    }
9040
});
9041
Ext.define('MinovaUtil.MinovaES.MinovaComboColumn', {
9042
    extend: 'Ext.grid.column.Column',
9043
    alias: ['widget.minovacombocolumn'],
9044
    initComponent: function () {
9045
        this.callParent(arguments);
9046
    },
9047
    defaultRenderer: function (value) {
9048
        if (typeof(this.store) !== 'object') {
9049
            Ext.data.StoreManager.lookup(this.store).load();
9050
            this.store = Ext.data.StoreManager.lookup(this.store);
9051
        }
9052
        var idx = this.store.findExact(this.valueField, value);
9053
        if (this.store.getAt(idx)) {
9054
            var result = this.store.getAt(idx).get(this.displayField);
9055
            value = result ? result : value;
9056
        }
9057
        return value;
9058
    }
9059
});
9060
//atien
9061
Ext.define('MinovaUtil.MinovaES.MinovaAmountColumn', {
9062
    extend: 'Ext.grid.column.Column',
9063
    alias: ['widget.minovaamountcolumn'],
9064
    initComponent: function () {
9065
        this.callParent(arguments);
9066
    },
9067
    defaultRenderer: function (value) {
9068
        if (value != "") {
9069
            Ext.Ajax.request({
9070
                async: false,
9071
                method: 'POST',
9072
                url: '/Devt/DecryptData',
9073
                params: {
9074
                    dt: value
9075

    
9076
                },
9077
                success: function (response) {
9078
                    var results = Ext.decode(response.responseText);
9079
                    value = results.data;
9080
                    Ext.util.Format.thousandSeparator = "."
9081

    
9082
                    value = Ext.util.Format.number(value, '0,000');
9083
                }
9084
            });
9085
        }
9086

    
9087
        return value;
9088
    }
9089
});
9090
//end amount column
9091
//hamid200916
9092
Ext.define('MinovaUtil.MinovaES.MinovaMDApplicant', {
9093
    extend: 'Ext.form.Panel',
9094
    alias: ['widget.minovamdApp', 'widget.MinovaMDApplicant'],
9095
    controller: 'recruitment-controller',
9096
    tableName: undefined, //nama tabel
9097
    param: undefined, //param query
9098
    pagesize: undefined,
9099
    storename: undefined,
9100
    titleform: undefined,
9101
    titlegrid: undefined,
9102
    heightgrid: undefined,
9103
    heightform: undefined,
9104
    iseditform: undefined,
9105
    lastheightform: undefined,
9106
    layoutType: undefined,
9107
    lastpage: undefined,
9108
    lastTitle: undefined,
9109
    getLastTitle: function () {
9110
        return this.lastTitle;
9111
    },
9112
    setLastTitle: function (value) {
9113
        var me = this;
9114
        me.lastTitle = value;
9115
        return me;
9116
    },
9117
    getLastpage: function () {
9118
        return this.lastpage;
9119
    },
9120
    setLastpage: function (value) {
9121
        var me = this;
9122
        me.lastpage = value;
9123
        return me;
9124
    },
9125
    getLayoutType: function () {
9126
        return this.layoutType;
9127
    },
9128
    setLayoutType: function (value) {
9129
        var me = this;
9130
        me.layoutType = value;
9131
        return me;
9132
    },
9133
    getLastheightform: function () {
9134
        return this.lastheightform;
9135
    },
9136
    setLastheightform: function (value) {
9137
        var me = this;
9138
        me.lastheightform = value;
9139
        return me;
9140
    },
9141

    
9142
    getIsEditform: function () {
9143
        return this.iseditform;
9144
    },
9145
    setIsEditform: function (value) {
9146
        var me = this;
9147
        me.iseditform = value;
9148
        return me;
9149
    },
9150
    initComponent: function () {
9151
        var me = this;
9152
        var storename = me.storename;
9153
        if (storename == "" || storename == undefined) {
9154
            storename = "store" + me.tableName;
9155
        }
9156
        var isHired = false;
9157
        nowDate = MinovaUtil.GetNowDate();
9158
        Ext.Ajax.request({
9159
            async: false,
9160
            method: 'POST',
9161
            url: '/UserControl/GetStore',
9162
            params: {
9163
                tableName: 'PHRRC0002',
9164
                param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
9165

    
9166
            },
9167
            success: function (response) {
9168
                var results = Ext.decode(response.responseText);
9169
                dataForm = results.data;
9170
                //cek is hired or blacklist
9171
                dataForm_ = $.grep(dataForm, function (r) {
9172
                    return r.ApplicantStatus == '05'
9173
                });
9174
                if (dataForm_.length == 0) {
9175
                    dataForm_ = $.grep(dataForm, function (r) {
9176
                        return r.ApplicantStatus == '99'
9177
                    });
9178
                }
9179
                if (dataForm_ != null && dataForm_.length > 0) {
9180
                    isHired = true;
9181
                }
9182
            }
9183
        });
9184

    
9185
        var tableName = me.tableName;
9186
        Ext.applyIf(me, {
9187
            items: [{
9188
                layoutType: "MinovaGridForm",
9189
                title: me.titlegrid,
9190
                xtype: "minovagrid1",
9191
                tableName: tableName, // nama tebel/dataset
9192
                name: "MinovaGridFormGrid",
9193
                param: me.param, // parameter filteran
9194
                pagesize: me.pagesize, // jumlah record yang muncul per page
9195
                storename: storename, //nama store bebas
9196
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9197
                height: 330,
9198
                bodyPadding: 0,
9199
                tbar: [{
9200

    
9201
                    xtype: 'button',
9202
                    text: 'Action',
9203
                    name: 'actionGrid',
9204
                    hidden: isHired,
9205
                    menu: [{
9206
                        text: 'Add',
9207
                        name: 'addGrid',
9208
                        action: 'CRUDaddNewRecord',
9209
                        style: 'font-family: FontAwesome',
9210
                        itemId: 'AddData',
9211
                        iconCls: 'fa-plus-circle',
9212
                        hidden: isHired
9213

    
9214
                    }, {
9215
                        text: 'Copy',
9216
                        name: 'CopyGrid',
9217
                        iconCls: 'fa-copy',
9218
                        style: 'font-family: FontAwesome',
9219
                        hidden: isHired
9220
                    }, {
9221
                        text: 'Edit',
9222
                        name: 'EditGrid',
9223
                        iconCls: 'fa-edit',
9224
                        style: 'font-family: FontAwesome',
9225
                        hidden: isHired
9226
                    }, {
9227
                        text: 'Delete',
9228
                        name: 'DeleteGrid',
9229
                        hidden: true,
9230
                        iconCls: 'fa-trash-o',
9231
                        style: 'font-family: FontAwesome',
9232
                    }
9233
                    ],
9234
                    listeners: {
9235
                        afterender: function () {
9236
                            var me = this;
9237
                            nowDate = MinovaUtil.GetNowDate();
9238
                            var isHired = false;
9239
                            Ext.Ajax.request({
9240
                                async: false,
9241
                                method: 'POST',
9242
                                url: '/UserControl/GetStore',
9243
                                params: {
9244
                                    tableName: 'PHRRC0027',
9245
                                    param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID") + ',ActivityType[=]8'
9246

    
9247
                                },
9248
                                success: function (response) {
9249
                                    var results = Ext.decode(response.responseText);
9250
                                    dataForm = results.data;
9251
                                    if (dataForm != null) {
9252
                                        isHired = true;
9253
                                    }
9254
                                }
9255
                            });
9256
                            if (isHired) {
9257
                                me.setHidden(true);
9258
                            } else {
9259
                                me.setHidden(false);
9260
                            }
9261

    
9262
                        },
9263

    
9264
                    },
9265
                }, {
9266
                    xtype: 'tbfill'
9267
                }, {
9268
                    text: 'Clear Filters',
9269
                    tooltip: 'Clear all filters',
9270
                    name: 'clearbtn',
9271
                    handler: function () {
9272
                        var tolbar = this.up()
9273
                        var grid_ = tolbar.up()
9274
                        grid_.filters.clearFilters()
9275
                    }
9276
                }, ],
9277

    
9278
                dockedItems: [{
9279
                    xtype: 'pagingtoolbar',
9280
                    store: storename, // harus sama dengan naa store diatas
9281
                    dock: 'bottom', //posisi paging
9282
                    pageSize: me.pagesize,
9283
                    displayInfo: true
9284
                }
9285
                ],
9286

    
9287
            }, {
9288
                xtype: 'minovaform',
9289
                name: "MinovaGridFormDisplay",
9290
                tableName: tableName, // nama tabel /dataset
9291
                isLookup: '', // 1 or 'Y' for lookup
9292
                isDisplay: true, // true== form is displayfield
9293
            }, {
9294
                xtype: 'minovaform',
9295
                name: "MinovaGridFormEdit",
9296
                tableName: tableName, // nama tabel /dataset
9297
                isLookup: '', // 1 or 'Y' for lookup
9298
                isDisplay: false, // true== form is displayfield
9299
            }
9300
            ]
9301
        });
9302
        me.callParent(arguments);
9303
    }
9304
});
9305
//end
9306

    
9307
Ext.define('MinovaUtil.MinovaES.MinovaMD', {
9308
    extend: 'Ext.form.Panel',
9309
    alias: ['widget.minovamd', 'widget.MinovaMD'],
9310
    controller: 'pa-controller',
9311
    tableName: undefined, //nama tabel
9312
    param: undefined, //param query
9313
    pagesize: undefined,
9314
    storename: undefined,
9315
    titleform: undefined,
9316
    titlegrid: undefined,
9317
    heightgrid: undefined,
9318
    heightform: undefined,
9319
    iseditform: undefined,
9320
    lastheightform: undefined,
9321
    layoutType: undefined,
9322
    lastpage: undefined,
9323
    lastTitle: undefined,
9324
    getLastTitle: function () {
9325
        return this.lastTitle;
9326
    },
9327
    setLastTitle: function (value) {
9328
        var me = this;
9329
        me.lastTitle = value;
9330
        return me;
9331
    },
9332
    getLastpage: function () {
9333
        return this.lastpage;
9334
    },
9335
    setLastpage: function (value) {
9336
        var me = this;
9337
        me.lastpage = value;
9338
        return me;
9339
    },
9340
    getLayoutType: function () {
9341
        return this.layoutType;
9342
    },
9343
    setLayoutType: function (value) {
9344
        var me = this;
9345
        me.layoutType = value;
9346
        return me;
9347
    },
9348
    getLastheightform: function () {
9349
        return this.lastheightform;
9350
    },
9351
    setLastheightform: function (value) {
9352
        var me = this;
9353
        me.lastheightform = value;
9354
        return me;
9355
    },
9356

    
9357
    getIsEditform: function () {
9358
        return this.iseditform;
9359
    },
9360
    setIsEditform: function (value) {
9361
        var me = this;
9362
        me.iseditform = value;
9363
        return me;
9364
    },
9365
    initComponent: function () {
9366
        var me = this;
9367
        var storename = me.storename;
9368
        if (storename == "" || storename == undefined) {
9369
            storename = "store" + me.tableName;
9370
        }
9371
        var tableName = me.tableName;
9372
        Ext.applyIf(me, {
9373
            items: [{
9374
                layoutType: "MinovaGridForm",
9375
                title: me.titlegrid,
9376
                xtype: "minovagrid1",
9377
                tableName: tableName, // nama tebel/dataset
9378
                name: "MinovaGridFormGrid",
9379
                param: me.param, // parameter filteran
9380
                pagesize: me.pagesize, // jumlah record yang muncul per page
9381
                storename: storename, //nama store bebas
9382
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9383
                height: 330,
9384
                bodyPadding: 0,
9385
                tbar: [{
9386
                    xtype: 'button',
9387
                    text: 'Action',
9388
                    name: 'actionGrid',
9389
                    menu: [{
9390
                        text: 'Add',
9391
                        name: 'addGrid',
9392
                        action: 'CRUDaddNewRecord',
9393
                        style: 'font-family: FontAwesome',
9394
                        itemId: 'AddData',
9395
                        iconCls: 'fa-plus-circle',
9396

    
9397
                    }, {
9398
                        text: 'Copy',
9399
                        name: 'CopyGrid',
9400
                        iconCls: 'fa-copy',
9401
                        style: 'font-family: FontAwesome',
9402
                    }, {
9403
                        text: 'Edit',
9404
                        name: 'EditGrid',
9405
                        iconCls: 'fa-edit',
9406
                        style: 'font-family: FontAwesome',
9407
                    }, {
9408
                        text: 'Delete',
9409
                        name: 'DeleteGrid',
9410
                        hidden: true,
9411
                        iconCls: 'fa-trash-o',
9412
                        style: 'font-family: FontAwesome',
9413
                    }
9414
                    ]
9415
                }, {
9416
                    xtype: 'tbfill'
9417
                }, {
9418
                    text: 'Clear Filters',
9419
                    tooltip: 'Clear all filters',
9420
                    name: 'clearbtn',
9421
                    handler: function () {
9422
                        var tolbar = this.up()
9423
                        var grid_ = tolbar.up()
9424
                        grid_.filters.clearFilters()
9425
                    }
9426
                }, ],
9427

    
9428
                dockedItems: [{
9429
                    xtype: 'pagingtoolbar',
9430
                    store: storename, // harus sama dengan naa store diatas
9431
                    dock: 'bottom', //posisi paging
9432
                    pageSize: me.pagesize,
9433
                    displayInfo: true
9434
                }
9435
                ],
9436

    
9437
            }, {
9438
                xtype: 'minovaform',
9439
                name: "MinovaGridFormDisplay",
9440
                tableName: tableName, // nama tabel /dataset
9441
                isLookup: '', // 1 or 'Y' for lookup
9442
                isDisplay: true, // true== form is displayfield
9443
            }, {
9444
                xtype: 'minovaform',
9445
                name: "MinovaGridFormEdit",
9446
                tableName: tableName, // nama tabel /dataset
9447
                isLookup: '', // 1 or 'Y' for lookup
9448
                isDisplay: false, // true== form is displayfield
9449
            }
9450
            ]
9451
        });
9452
        me.callParent(arguments);
9453
    }
9454
});
9455

    
9456
Ext.define('MinovaUtil.MinovaES.MinovaCustomization', {
9457
    extend: 'Ext.form.Panel',
9458
    alias: ['widget.minovacustomization', 'widget.MinovaCustomization'],
9459
    controller: 'treeCustomization',
9460
    tableName: undefined, //nama tabel
9461
    param: undefined, //param query
9462
    pagesize: undefined,
9463
    storename: undefined,
9464
    titleform: undefined,
9465
    titlegrid: undefined,
9466
    heightgrid: undefined,
9467
    heightform: undefined,
9468
    iseditform: undefined,
9469
    lastheightform: undefined,
9470
    layoutType: undefined,
9471
    lastpage: undefined,
9472
    lastTitle: undefined,
9473
    collapsibleForm: undefined,
9474
    getLastTitle: function () {
9475
        return this.lastTitle;
9476
    },
9477
    setLastTitle: function (value) {
9478
        var me = this;
9479
        me.lastTitle = value;
9480
        return me;
9481
    },
9482
    getLastpage: function () {
9483
        return this.lastpage;
9484
    },
9485
    setLastpage: function (value) {
9486
        var me = this;
9487
        me.lastpage = value;
9488
        return me;
9489
    },
9490
    getLayoutType: function () {
9491
        return this.layoutType;
9492
    },
9493
    setLayoutType: function (value) {
9494
        var me = this;
9495
        me.layoutType = value;
9496
        return me;
9497
    },
9498
    getLastheightform: function () {
9499
        return this.lastheightform;
9500
    },
9501
    setLastheightform: function (value) {
9502
        var me = this;
9503
        me.lastheightform = value;
9504
        return me;
9505
    },
9506

    
9507
    getIsEditform: function () {
9508
        return this.iseditform;
9509
    },
9510
    setIsEditform: function (value) {
9511
        var me = this;
9512
        me.iseditform = value;
9513
        return me;
9514
    },
9515
    initComponent: function () {
9516
        var me = this;
9517
        var storename = me.storename;
9518
        if (storename == "" || storename == undefined) {
9519
            storename = "store" + me.tableName;
9520
        }
9521
        var tableName = me.tableName;
9522
        var collapsibleForm_ = me.collapsibleForm;
9523
        // if (!collapsibleForm_) {
9524
        //  collapsibleForm_ = false;
9525
        //}
9526
        Ext.applyIf(me, {
9527
            items: [{
9528
                layoutType: "MinovaGridForm",
9529
                title: me.titlegrid,
9530
                xtype: "minovagrid1",
9531
                tableName: tableName, // nama tebel/dataset
9532
                name: "MinovaGridFormGrid",
9533
                param: me.param, // parameter filteran
9534
                pagesize: me.pagesize, // jumlah record yang muncul per page
9535
                storename: storename, //nama store bebas
9536
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9537
                height: 480,
9538
                bodyPadding: 0,
9539
                tbar: [{
9540
                    xtype: 'button',
9541
                    text: 'Action',
9542
                    name: 'actionGrid',
9543
                    menu: [{
9544
                        text: 'Add',
9545
                        name: 'addGrid',
9546
                        action: 'CRUDaddNewRecord',
9547
                        style: 'font-family: FontAwesome',
9548
                        itemId: 'AddData',
9549
                        iconCls: 'fa-plus-circle',
9550

    
9551
                    }, {
9552
                        text: 'Copy',
9553
                        name: 'CopyGrid',
9554
                        iconCls: 'fa-copy',
9555
                        style: 'font-family: FontAwesome',
9556
                    }, {
9557
                        text: 'Edit',
9558
                        name: 'EditGrid',
9559
                        iconCls: 'fa-edit',
9560
                        style: 'font-family: FontAwesome',
9561
                    }, {
9562
                        text: 'Delete',
9563
                        name: 'DeleteGrid',
9564
                        hidden: true,
9565
                        iconCls: 'fa-trash-o',
9566
                        style: 'font-family: FontAwesome',
9567
                    }
9568
                    ]
9569
                }, {
9570
                    xtype: 'tbfill'
9571
                }, {
9572
                    text: 'Search',
9573
                    tooltip: 'Search',
9574
                    tableName: tableName,
9575
                    name: 'btnSearchCust',
9576
                    handler: function () {
9577
                        //var tolbar = this.up()
9578
                        //var grid_ = tolbar.up()
9579
                        //alert(this.tableName)
9580

    
9581
                    }
9582

    
9583
                }, {
9584
                    text: 'Import/Export',
9585
                    tooltip: 'Import/Export',
9586
                    name: 'Import/Exportbtn',
9587

    
9588
                }, {
9589
                    text: 'Clear Filters',
9590
                    tooltip: 'Clear all filters',
9591
                    name: 'clearbtn',
9592
                    handler: function () {
9593
                        var tolbar = this.up()
9594
                        var grid_ = tolbar.up()
9595
                        grid_.filters.clearFilters()
9596
                    }
9597
                }
9598
                ],
9599

    
9600
                dockedItems: [{
9601
                    xtype: 'pagingtoolbar',
9602
                    store: storename, // harus sama dengan naa store diatas
9603
                    dock: 'bottom', //posisi paging
9604
                    pageSize: me.pagesize,
9605
                    displayInfo: true
9606
                }
9607
                ],
9608

    
9609
            }, {
9610
                xtype: 'minovaform',
9611
                //layout: 'anchor',
9612
                height: '200',
9613
                collapsible: collapsibleForm_,
9614
                name: "MinovaGridFormDisplay",
9615
                tableName: tableName, // nama tabel /dataset
9616
                isLookup: '', // 1 or 'Y' for lookup
9617
                isDisplay: true, // true== form is displayfield
9618
            }, {
9619
                xtype: 'minovaform',
9620
                //layout:'anchor',
9621
                collapsible: collapsibleForm_,
9622
                name: "MinovaGridFormEdit",
9623
                tableName: tableName, // nama tabel /dataset
9624
                isLookup: '', // 1 or 'Y' for lookup
9625
                isDisplay: false, // true== form is displayfield
9626
            }
9627
            ]
9628
        });
9629
        me.callParent(arguments);
9630
    }
9631
});
9632

    
9633
Ext.define('MinovaUtil.view.override.Panel', {
9634
    override: 'Ext.panel.Panel',
9635

    
9636
    print: function (pnl) {
9637

    
9638
        if (!pnl) {
9639
            pnl = this;
9640
        }
9641

    
9642
        // instantiate hidden iframe
9643

    
9644
        var iFrameId = "printerFrame";
9645
        var printFrame = Ext.get(iFrameId);
9646

    
9647
        if (printFrame == null) {
9648
            printFrame = Ext.getBody().appendChild({
9649
                id: iFrameId,
9650
                tag: 'iframe',
9651
                cls: 'x-hidden',
9652
                style: {
9653
                    display: "none"
9654
                }
9655
            });
9656
        }
9657

    
9658
        var cw = printFrame.dom.contentWindow;
9659

    
9660
        // instantiate application stylesheets in the hidden iframe
9661

    
9662
        var stylesheets = "";
9663
        for (var i = 0; i < document.styleSheets.length; i++) {
9664
            stylesheets += Ext.String.format('<link rel="stylesheet" href="{0}" />', document.styleSheets[i].href);
9665
        }
9666

    
9667
        // various style overrides
9668
        stylesheets += ''.concat(
9669
			"<style>",
9670
			".x-panel-body {overflow: visible !important;}",
9671
			// experimental - page break after embedded panels
9672
			// .x-panel {page-break-after: always; margin-top: 10px}",
9673
			"</style>");
9674

    
9675
        // get the contents of the panel and remove hardcoded overflow properties
9676
        var markup = pnl.getEl().dom.innerHTML;
9677
        while (markup.indexOf('overflow: auto;') >= 0) {
9678
            markup = markup.replace('overflow: auto;', '');
9679
        }
9680

    
9681
        var str = Ext.String.format('<html><head>{0}</head><body>{1}</body></html>', stylesheets, markup);
9682

    
9683
        // output to the iframe
9684
        cw.document.open();
9685
        cw.document.write(str);
9686
        cw.document.close();
9687

    
9688
        // remove style attrib that has hardcoded height property
9689
        cw.document.getElementsByTagName('DIV')[0].removeAttribute('style');
9690

    
9691
        // print the iframe
9692
        cw.print();
9693

    
9694
        // destroy the iframe
9695
        Ext.fly(iFrameId).destroy();
9696

    
9697
    }
9698
});
9699

    
9700
Ext.define('MinovaUtil.MinovaES.MinovaRptForm', {
9701
    extend: 'Ext.form.Panel',
9702
    alias: ['widget.MinovaRptForm', 'widget.minovarptform'],
9703
    ReportID: undefined,
9704
    SelectionType: undefined,
9705
    layout: 'column',
9706
    //frame : true,
9707
    defaults: {
9708
        layout: 'form',
9709
        xtype: 'container',
9710
        defaultType: 'textfield',
9711
        style: 'width: 50%',
9712
        //height: 1000
9713
    },
9714
    initComponent: function () {
9715
        var col1 = [];
9716
        var col2 = [];
9717
        var me = this;
9718
        var hasil = null;
9719
        var hideButton_ = me.hideButton;
9720
        Ext.Ajax.request({
9721
            async: false,
9722
            method: 'POST',
9723
            url: '/UserControl/GetStore',
9724
            params: {
9725
                tableName: 'PDSBS0006',
9726
                //param : "ReportID='" + me.ReportID + "' and SelectionType='" + me.SelectionType + "' and LangId='" + localStorage.LangId + "'"
9727
                param: "ReportID='" + me.ReportID + "',SelectionType='" + me.SelectionType + "',LangId='" + localStorage.LangId + "'"
9728
            },
9729
            success: function (response) {
9730
                var results = Ext.decode(response.responseText);
9731
                hasil = results.data;
9732
                //count = hasil.length
9733
            }
9734
        });
9735
        if (hasil.length > 0) {
9736
            hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
9737
            var me = this;
9738
            Ext.each(hasil, function (rec) {
9739
                var null_ = true;
9740
                if (rec.IsRequired == '1') {
9741
                    null_ = false;
9742
                } else {
9743
                    null_ = true;
9744
                }
9745
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, false, me.tableName, me.isLookup);
9746
                if (isDesk) {
9747
                    if (rec.ColumnNo == 1) {
9748
                        col1.push(formfield);
9749
                    } else {
9750
                        col2.push(formfield);
9751
                    }
9752
                } else {
9753
                    col1.push(formfield);
9754
                }
9755
            });
9756

    
9757
        }
9758
        Ext.applyIf(me, {
9759
            items: [{
9760
                style: 'width: 50%',
9761
                items: col1
9762
            }, {
9763
                style: 'width: 50%',
9764
                items: col2
9765
            }
9766
            ],
9767
        });
9768
        this.callParent();
9769
    }
9770
});
9771

    
9772
Ext.define('MinovaUtil.MinovaES.MinovaRptSimple', {
9773
    extend: 'Ext.form.Panel',
9774
    alias: ['widget.MinovaRptSimple', 'widget.minovarptsimple'],
9775
    //layout: 'column',
9776
    controller: 'basereports-controller',
9777
    ReportID: undefined,
9778
    hideButton: undefined,
9779
    reportLayout: 'simple',
9780
    getReportLayout: function () {
9781
        return this.reportLayout;
9782
    },
9783
    setReportLayout: function (value) {
9784
        var me = this;
9785
        me.reportLayout = value;
9786
        return me;
9787
    },
9788

    
9789
    initComponent: function () {
9790
        var me = this;
9791
        var ReportID = me.ReportID;
9792
        var hideButton_ = me.hideButton;
9793
        var hide_ = false;
9794
        if (hideButton_) {
9795
            hide_ = true;
9796
        }
9797
        Ext.applyIf(me, {
9798
            items: [{
9799
                //title: 'Report Selection',
9800
                xtype: 'minovarptform',
9801
                hideButton: hide_,
9802
                name: 'minovarptsimple',
9803
                ReportID: ReportID,
9804
                SelectionType: '1',
9805
                bodyPadding: 10,
9806
                buttons: [{
9807
                    text: 'Search',
9808
                    name: 'SearchRpt',
9809
                    hidden: hide_
9810
                }, {
9811
                    text: 'Variant',
9812
                    style: 'font-family: FontAwesome',
9813
                    hidden: hide_,
9814
                    menu: [{
9815
                        text: 'Load Variant',
9816
                        name: 'loadvariant',
9817

    
9818
                    }, {
9819
                        text: 'Save Variant',
9820
                        name: 'savevariant',
9821

    
9822
                    }
9823
                    ],
9824

    
9825
                }
9826
                ],
9827

    
9828
            },
9829
				//{
9830
				//    title: 'Result',
9831
				//    height: 530,
9832
				//    collapsible: false,
9833
				//    name: 'resultPanel',
9834
				//    layout: 'fit',
9835
				//    html: '<div  id="formMdDiv"></div>',
9836
				//}
9837
            ],
9838
        });
9839
        this.callParent();
9840
    }
9841
});
9842

    
9843
Ext.define('MinovaUtil.MinovaES.MinovaRptAdvance', {
9844
    extend: 'Ext.form.Panel',
9845
    alias: ['widget.MinovaRptAdvance', 'widget.minovarptadvance'],
9846
    //layout: 'column',
9847
    controller: 'basereports-controller',
9848
    ReportID: undefined,
9849
    reportLayout: 'advance',
9850
    hideButton: undefined,
9851
    getReportLayout: function () {
9852
        return this.reportLayout;
9853
    },
9854
    setReportLayout: function (value) {
9855
        var me = this;
9856
        me.reportLayout = value;
9857
        return me;
9858
    },
9859

    
9860
    initComponent: function () {
9861
        var me = this;
9862
        var ReportID = me.ReportID;
9863
        var hideButton_ = me.hideButton;
9864
        var hide_ = false;
9865
        if (hideButton_) {
9866
            hide_ = true;
9867
        }
9868
        Ext.applyIf(me, {
9869
            items: [{
9870
                //title: 'Report Selection',
9871
                xtype: 'minovarptform',
9872
                hideButton: hide_,
9873
                name: 'minovarptadvance',
9874
                ReportID: ReportID,
9875
                SelectionType: '2',
9876
                bodyPadding: 10,
9877
                buttons: [{
9878
                    text: 'Search',
9879
                    name: 'SearchRpt',
9880
                    hidden: hide_
9881
                }, {
9882
                    text: 'Variant',
9883
                    hidden: hide_,
9884
                    style: 'font-family: FontAwesome',
9885
                    menu: [{
9886
                        text: 'Load Variant',
9887
                        name: 'loadvariant',
9888

    
9889
                    }, {
9890
                        text: 'Save Variant',
9891
                        name: 'savevariant',
9892

    
9893
                    }
9894
                    ],
9895

    
9896
                }
9897
                ],
9898

    
9899
            },
9900
				//{
9901
				//    title: 'Result',
9902
				//    height: 530,
9903
				//    collapsible: false,
9904
				//    name: 'resultPanel',
9905
				//    layout: 'fit',
9906
				//    html: '<div  id="formMdDiv"></div>',
9907
				//}
9908
            ],
9909
        });
9910
        this.callParent();
9911
    }
9912
});
9913

    
9914
Ext.define('MinovaUtil.MinovaES.MinovaRptAll', {
9915
    extend: 'Ext.form.Panel',
9916
    alias: ['widget.MinovaRptAll', 'widget.minovarptall'],
9917
    //layout: 'column',
9918
    controller: 'basereports-controller',
9919
    ReportID: undefined,
9920
    titleSimle: undefined,
9921
    titleAdvance: undefined,
9922
    reportLayout: 'all',
9923
    hideButton: undefined,
9924
    getReportLayout: function () {
9925
        return this.reportLayout;
9926
    },
9927
    setReportLayout: function (value) {
9928
        var me = this;
9929
        me.reportLayout = value;
9930
        return me;
9931
    },
9932

    
9933
    initComponent: function () {
9934
        var me = this;
9935
        var ReportID = me.ReportID;
9936
        var hideButton_ = me.hideButton;
9937
        var hide_ = false;
9938
        if (hideButton_) {
9939
            hide_ = true;
9940
        }
9941
        Ext.applyIf(me, {
9942
            items: [{
9943
                xtype: 'tabpanel',
9944
                name: 'mainTab',
9945
                buttons: [{
9946
                    text: 'Search',
9947
                    name: 'SearchRpt',
9948
                    hidden: hide_,
9949
                }, {
9950
                    text: 'Variant',
9951
                    hidden: hide_,
9952
                    style: 'font-family: FontAwesome',
9953
                    menu: [{
9954
                        text: 'Load Variant',
9955
                        name: 'loadvariant',
9956

    
9957
                    }, {
9958
                        text: 'Save Variant',
9959
                        name: 'savevariant',
9960

    
9961
                    }
9962
                    ],
9963

    
9964
                }
9965
                ],
9966

    
9967
                items: [{
9968
                    title: 'Simple',
9969
                    xtype: 'minovarptform',
9970
                    hideButton: hide_,
9971
                    name: 'simpleForm',
9972
                    ReportID: ReportID,
9973
                    SelectionType: '1',
9974
                    bodyPadding: 10,
9975

    
9976
                }, {
9977
                    title: 'Advance',
9978
                    xtype: 'minovarptform',
9979
                    hideButton: hide_,
9980
                    name: 'advanceForm',
9981
                    ReportID: ReportID,
9982
                    SelectionType: '2',
9983
                    bodyPadding: 10,
9984

    
9985
                }
9986
                ]
9987
            },
9988
				//{
9989
				//    title: 'Result',
9990
				//    height: 530,
9991
				//    collapsible: false,
9992
				//    name: 'resultPanel',
9993
				//    layout: 'fit',
9994
				//    html: '<div  id="formMdDiv"></div>',
9995
				//}
9996

    
9997
            ],
9998
        });
9999
        this.callParent();
10000
    }
10001
});
10002

    
10003
Ext.define('MinovaUtil.MinovaES.MinovaGridRpt', {
10004
    extend: 'Ext.grid.Panel',
10005
    requires: ['Ext.grid.RowNumberer'],
10006
    alias: 'widget.minovagridrpt',
10007
    alternateClassName: 'Ext.grid.MinovaGridRpt',
10008
    tableName: undefined,
10009
    param: undefined,
10010
    //pagesize: undefined,
10011
    storename: undefined,
10012
    //layoutType: undefined,
10013
    enableLocking: true,
10014
    tbar: [{
10015
        xtype: 'tbfill'
10016
    }, {
10017
        text: 'Clear Filters',
10018
        tooltip: 'Clear all filters',
10019
        name: 'clearbtn',
10020
        handler: function () {
10021
            var tolbar = this.up()
10022
            var grid_ = tolbar.up()
10023
            grid_.filters.clearFilters()
10024
        }
10025
    }, ],
10026
    getTableName: function () {
10027
        return this.tableName;
10028
    },
10029

    
10030
    initComponent: function () {
10031
        var me = this;
10032
        var cols_ = [];
10033
        var fieldeditor = {};
10034
        var hasil = null;
10035
        var autoLoad = true;
10036
        var _url = 'GetAllField';
10037

    
10038
        Ext.Ajax.request({
10039
            async: false,
10040
            method: 'POST',
10041
            url: '/Devt/' + _url + '?tableName=' + me.tableName,
10042
            success: function (response) {
10043
                var results = Ext.decode(response.responseText);
10044
                hasil = results.data;
10045
            }
10046
        });
10047
        var structure = undefined;
10048
        Ext.Ajax.request({
10049
            async: false,
10050
            method: 'POST',
10051
            url: '/UserControl/GetStore',
10052
            params: {
10053
                tableName: 'SDATATABLEFIELD',
10054
                param: 'TableName[equal]' + me.tableName
10055

    
10056
            },
10057
            success: function (response) {
10058
                var results = Ext.decode(response.responseText);
10059
                data_ = results.data;
10060
                if (data_ != undefined) {
10061
                    structure = data_;
10062
                }
10063
            }
10064
        });
10065
        if (hasil.length > 0) {
10066
            Ext.each(hasil, function (rec) {
10067
                // get field will be summary
10068

    
10069
                var summaryType = undefined;
10070
                if (structure != undefined) {
10071
                    _field = $.grep(structure, function (r) {
10072
                        return r.FieldName == rec.FieldName
10073
                    });
10074
                    summaryType = _field[0].SummaryType
10075
                }
10076

    
10077
                var null_ = null;
10078
                if (rec.IsPrimaryKey == true) {
10079
                    null_ = false;
10080
                }
10081
                if (rec.IsRequired == true) {
10082
                    null_ = false;
10083
                } else {
10084
                    null_ = true;
10085
                }
10086
                if (rec.GridView == 1) {
10087
                    switch (rec.FormatRef) {
10088
                        case "date":
10089
                            cols_.push({
10090
                                xtype: 'minovadatecolumn',
10091
                                text: rec.HeaderTitle,
10092
                                dataIndex: rec.FieldName,
10093
                                summaryType: summaryType,
10094
                                width: 100,
10095
                                filter: {
10096
                                    type: 'date',
10097
                                    itemDefaults: {
10098
                                        emptyText: 'Search for...'
10099
                                    }
10100
                                }
10101
                            });
10102
                            break
10103
                        case "amount":
10104
                            cols_.push({
10105
                                xtype: 'minovacurrancycolumn',
10106
                                align: 'right',
10107
                                text: rec.HeaderTitle,
10108
                                dataIndex: rec.FieldName,
10109
                                summaryType: summaryType,
10110
                                width: 100,
10111
                                filter: {
10112
                                    type: 'number',
10113
                                    itemDefaults: {
10114
                                        emptyText: 'Search for...'
10115
                                    }
10116
                                }
10117
                            });
10118
                            break
10119
                        case "datetime":
10120
                            cols_.push({
10121
                                xtype: 'minovadatetimecolumn',
10122
                                text: rec.HeaderTitle,
10123
                                dataIndex: rec.FieldName,
10124
                                summaryType: summaryType,
10125
                                width: 140,
10126
                                filter: {
10127
                                    type: 'string',
10128
                                    itemDefaults: {
10129
                                        emptyText: 'Search for...'
10130
                                    }
10131
                                }
10132
                            });
10133
                            break
10134
                        default:
10135
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
10136
                                cols_.push({
10137
                                    text: rec.HeaderTitle,
10138
                                    dataIndex: rec.FieldName,
10139
                                    summaryType: summaryType,
10140
                                    width: 100,
10141
                                    filter: {
10142
                                        type: 'string',
10143
                                        itemDefaults: {
10144
                                            emptyText: 'Search for...'
10145
                                        }
10146
                                    }
10147
                                });
10148
                            } else if (rec.TableRef != "") {
10149
                                if (rec.TableRef != null) {
10150
                                    var valueField = null;
10151
                                    var displayValue = null;
10152
                                    Ext.Ajax.request({
10153
                                        async: false,
10154
                                        method: 'POST',
10155
                                        url: '/UserControl/GetStore',
10156
                                        params: {
10157
                                            tableName: 'SDATATABLEFIELD',
10158
                                            param: 'TableName[equal]' + rec.TableRef
10159
                                        },
10160
                                        success: function (response) {
10161
                                            var results = Ext.decode(response.responseText);
10162
                                            data_ = results.data;
10163
                                            if (data_ != undefined) {
10164
                                                valueField_ = $.grep(data_, function (r) {
10165
                                                    return r.ValueField == '1'
10166
                                                });
10167
                                                valueField = valueField_[0].FieldName
10168
                                                displayValue_ = $.grep(data_, function (r) {
10169
                                                    return r.DisplayValue == '1'
10170
                                                });
10171
                                                displayValue = displayValue_[0].FieldName
10172

    
10173
                                            }
10174
                                        }
10175
                                    });
10176
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
10177
                                    var count_ = 0;
10178
                                    if (store_) {
10179
                                        count_ = store_.count();
10180
                                    }
10181
                                    if (count_ == 0) {
10182
                                        Ext.create('Ext.data.Store', {
10183
                                            storeId: 'store_' + rec.FieldName,
10184
                                            autoLoad: true,
10185
                                            proxy: {
10186
                                                method: 'POST',
10187
                                                type: 'ajax',
10188
                                                url: '/UserControl/GetStore',
10189
                                                extraParams: {
10190
                                                    tableName: rec.TableRef,
10191
                                                    param: rec.ParamCombo
10192
                                                },
10193
                                                reader: {
10194
                                                    type: 'json',
10195
                                                    root: 'data',
10196
                                                    totalProperty: 'data[0].TotalCount'
10197
                                                }
10198
                                            }
10199
                                        })
10200
                                    }
10201
                                    cols_.push({
10202
                                        xtype: 'minovacombocolumn',
10203
                                        TableRef: rec.TableRef,
10204
                                        text: rec.HeaderTitle,
10205
                                        summaryType: summaryType,
10206
                                        dataIndex: rec.FieldName,
10207
                                        valueField: valueField,
10208
                                        displayField: displayValue,
10209
                                        store: 'store_' + rec.FieldName,
10210
                                        filter: {
10211
                                            type: 'list',
10212
                                            itemDefaults: {
10213
                                                emptyText: 'Search for...'
10214
                                            }
10215
                                        }
10216
                                    });
10217
                                }
10218

    
10219
                            } else {
10220
                                cols_.push({
10221
                                    text: rec.HeaderTitle,
10222
                                    dataIndex: rec.FieldName,
10223
                                    summaryType: summaryType,
10224
                                    filter: {
10225
                                        itemDefaults: {
10226
                                            emptyText: 'Search for...'
10227
                                        }
10228
                                    }
10229
                                });
10230
                            }
10231
                            break
10232
                    }
10233
                } else {
10234
                    cols_.push({
10235
                        text: rec.HeaderTitle,
10236
                        dataIndex: rec.FieldName,
10237
                        hidden: true,
10238
                        filter: {
10239
                            itemDefaults: {
10240
                                emptyText: 'Search for...'
10241
                            }
10242
                        }
10243
                    });
10244
                }
10245
            });
10246
        };
10247
        var param_ = me.param;
10248
        if (param_ == undefined) {
10249
            param_ = ''
10250
        }
10251
        var jsStoreGrid = new Ext.data.Store({
10252
            storeId: me.storename,
10253
            autoLoad: false,
10254
            //pageSize: me.pagesize,
10255
            proxy: {
10256
                method: 'POST',
10257
                type: 'ajax',
10258
                url: '/UserControl/GetStore',
10259
                //extraParams: {
10260
                //    tableName: me.tableName,
10261
                //    param: param_
10262
                //},
10263
                reader: {
10264
                    type: 'json',
10265
                    root: 'data',
10266
                    totalProperty: 'totalRecords'
10267
                }
10268
            }
10269
        });
10270
        Ext.applyIf(me, {
10271
            autoScroll: true,
10272
            enableLocking: true,
10273
            lockedGridConfig: {
10274
                header: false,
10275
                collapsible: true,
10276
                width: 250,
10277
                forceFit: true,
10278
                listeners: {
10279
                    render: function (grid) {
10280
                        var pagingToolbar = grid.child('pagingtoolbar');
10281
                        if (pagingToolbar) {
10282
                            grid.remove(pagingToolbar, true);
10283
                        }
10284
                    }
10285
                }
10286
            },
10287
            listeners: {
10288
                viewready: function () {
10289
                    if (autoLoad == true) {
10290
                        this.getStore().loadPage(1);
10291
                    }
10292

    
10293
                },
10294
                beforeedit: function () {
10295
                    return false;
10296
                }
10297
            },
10298
            lockedViewConfig: {
10299
                scroll: 'horizontal'
10300
            },
10301
            viewConfig: {
10302
                emptyText: 'No Data Display',
10303
                deferEmptyText: false
10304
            },
10305
            //features: [{
10306
            //    ftype: 'summary'
10307
            //}],
10308
            columns: cols_,
10309

    
10310
            store: jsStoreGrid,
10311

    
10312
            plugins: [{
10313
                ptype: 'gridfilters'
10314
            },
10315

    
10316
            ],
10317

    
10318
        });
10319
        me.callParent(arguments);
10320
    }
10321

    
10322
});
10323

    
10324
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGrid', {
10325
    extend: 'Ext.form.Panel',
10326
    alias: ['widget.MinovaEditAbleGrid', 'widget.Minovaeditablegrid', 'widget.minovaeditablegrid'],
10327
    requires: [
10328
		'Ext.grid.plugin.CellEditing',
10329
		'Ext.grid.RowNumberer',
10330
		'Ext.grid.Panel',
10331
    ],
10332

    
10333
    //renderTo: 'panel-extjs',
10334
    anchor: '100%',
10335
    tableName: undefined,
10336
    hideButton: undefined,
10337
    multiSelect: undefined,
10338
    initComponent: function () {
10339
        var me = this;
10340
        var isLookup = me.isLookup;
10341
        var hide_ = false;
10342
        var widthLock = 250;
10343
        var checkSelection = '';
10344

    
10345
        if (me.hideButton == true) {
10346
            hide_ = true;
10347
        }
10348
        if (me.multiSelect) {
10349
            locking = false;
10350
            checkSelection = 'checkboxmodel';
10351
            widthLock = 40;
10352
        }
10353
        var tableName = me.tableName;
10354
        var cols = [];
10355
        var fieldStore = [];
10356
        var _url = 'GetAllField';
10357
        var hasil = null;
10358
        var height = me.height;
10359
        var storeID = 'store' + me.tableName;
10360
        var gridName = 'grid' + me.name;
10361
        if (me.storeName) {
10362
            storeID = me.storeName;
10363
        }
10364
        var LangID = MinovaUtil.GetLangID();
10365
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
10366
        Ext.Ajax.request({
10367
            async: false,
10368
            method: 'POST',
10369
            url: '/UserControl/GetStore',
10370
            params: {
10371
                tableName: 'PDSBS0007',
10372
                param: parameter
10373
            },
10374
            success: function (response) {
10375
                var results = Ext.decode(response.responseText);
10376
                hasil = results.data;
10377
            }
10378
        });
10379
        cols.push({
10380
            xtype: 'rownumberer'
10381
        });
10382
        var addData = 'var data={';
10383
        if (hasil.length > 0) {
10384
            Ext.each(hasil, function (rec) {
10385
                fieldStore.push(rec.FieldName);
10386
                if (rec.FieldName != 'Sequence') {
10387
                    addData = addData + rec.FieldName + ":" + "'',";
10388
                }
10389

    
10390
                var null_ = null;
10391
                var ReadOnly_ = false;
10392
                if (rec.IsPrimaryKey == true) {
10393
                    null_ = false;
10394
                }
10395
                if (rec.IsRequired == true) {
10396
                    null_ = false;
10397
                } else {
10398
                    null_ = true;
10399
                }
10400
                if (rec.ReadOnly == '1') {
10401
                    ReadOnly_ = true;
10402
                }
10403
                var Hidden_ = false;
10404
                if (rec.ReadOnly == '1') {
10405
                    ReadOnly_ = true;
10406
                }
10407

    
10408
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
10409
                    Hidden_ = true;
10410
                    null_ = true;
10411
                }
10412

    
10413
                if (rec.GridView == 1) {
10414
                    switch (rec.FormatRef) {
10415
                        case "date":
10416
                            cols.push({
10417
                                xtype: 'minovadatecolumn',
10418
                                hidden: Hidden_,
10419
                                text: rec.HeaderTitle,
10420
                                dataIndex: rec.FieldName,
10421
                                filter: {
10422
                                    itemDefaults: {
10423
                                        emptyText: 'Search for...',
10424

    
10425
                                    }
10426
                                },
10427
                                editor: {
10428
                                    allowBlank: null_,
10429
                                    xtype: 'datefield',
10430
                                    hideMode: 'visibility',
10431
                                    readOnly: ReadOnly_,
10432
                                    id: tableName + rec.FieldName,
10433
                                    fieldGrid: rec.FieldName,
10434
                                    nameTable: rec.TableName,
10435
                                }
10436
                            });
10437
                            break
10438
                        case "amount":
10439
                            cols.push({
10440
                                xtype: 'minovacurrancycolumn',
10441
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
10442
                                text: rec.HeaderTitle,
10443
                                align: 'right',
10444
                                dataIndex: rec.FieldName,
10445
                                hidden: Hidden_,
10446
                                filter: {
10447
                                    itemDefaults: {
10448
                                        emptyText: 'Search for...'
10449
                                    }
10450
                                },
10451
                                editor: {
10452
                                    allowBlank: null_,
10453
                                    xtype: 'minovacurrencyfield',
10454
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
10455
                                    //vtype: 'validateDecimal',
10456
                                    readOnly: ReadOnly_,
10457
                                    id: tableName + rec.FieldName,
10458
                                    nameTable: rec.TableName,
10459
                                    fieldGrid: rec.FieldName,
10460
                                    fieldStyle: 'text-align:right;',
10461
                                    value: '0',
10462

    
10463
                                }
10464
                            });
10465
                            break
10466
                        case "time":
10467
                            var DefaultValue = rec.DefaultValue;
10468
                            if (DefaultValue == '') {
10469
                                defaultValue = '00:00';
10470
                            }
10471
                            cols.push({
10472
                                //xtype: 'minovatimecolumn',
10473
                                xtype: 'timefield',
10474
                                format: 'H:i',
10475
                                submitFormat: 'Hi',
10476
                                text: rec.HeaderTitle,
10477
                                dataIndex: rec.FieldName,
10478
                                hidden: Hidden_,
10479
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
10480
                                filter: {
10481
                                    itemDefaults: {
10482
                                        emptyText: 'Search for...'
10483
                                    }
10484
                                },
10485
                                editor: {
10486
                                    allowBlank: null_,
10487
                                    xtype: 'timefield',
10488
                                    readOnly: ReadOnly_,
10489
                                    id: tableName + rec.FieldName,
10490
                                    format: 'H:i',
10491
                                    submitFormat: 'Hi',
10492
                                    increment: 5,
10493
                                    value: DefaultValue,
10494
                                    anchor: '100%',
10495
                                    listeners: {}
10496
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
10497
                                }
10498
                            });
10499
                            break
10500
                            //case "datetime":
10501
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
10502
                            //        cols.push({
10503
                            //            xtype: 'minovadatetimecolumn',
10504
                            //            text: rec.HeaderTitle,
10505
                            //            dataIndex: rec.FieldName,
10506
                            //            filter: {
10507
                            //                itemDefaults: {
10508
                            //                    emptyText: 'Search for...'
10509
                            //                }
10510
                            //            },
10511
                            //            editor: {
10512
                            //                allowBlank: null_,
10513
                            //                xtype: 'textfield',
10514
                            //            }
10515
                            //        });
10516
                            //    }
10517
                            //    break
10518
                        default:
10519
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
10520
                                cols.push({
10521
                                    text: rec.HeaderTitle,
10522
                                    dataIndex: rec.FieldName,
10523
                                    width: 100,
10524
                                    filter: {
10525
                                        type: 'string',
10526
                                        itemDefaults: {
10527
                                            emptyText: 'Search for...'
10528
                                        }
10529
                                    }
10530
                                });
10531
                            } else if (rec.SearchType == '0') {
10532
                                var valueField = null;
10533
                                var displayValue = null;
10534
                                var TableRef = undefined;
10535
                                if (rec.TableRef != '') {
10536
                                    TableRef = rec.TableRef;
10537

    
10538
                                    Ext.Ajax.request({
10539
                                        async: false,
10540
                                        method: 'POST',
10541
                                        url: '/UserControl/GetStore',
10542
                                        params: {
10543
                                            tableName: 'SDATATABLEFIELD',
10544
                                            param: 'TableName[equal]' + rec.TableRef
10545
                                        },
10546
                                        success: function (response) {
10547
                                            var results = Ext.decode(response.responseText);
10548
                                            data_ = results.data;
10549
                                            if (data_ != undefined) {
10550
                                                valueField_ = $.grep(data_, function (r) {
10551
                                                    return r.ValueField == '1'
10552
                                                });
10553
                                                valueField = valueField_[0].FieldName
10554
                                                displayValue_ = $.grep(data_, function (r) {
10555
                                                    return r.DisplayValue == '1'
10556
                                                });
10557
                                                displayValue = displayValue_[0].FieldName
10558
                                            }
10559
                                        }
10560
                                    });
10561

    
10562
                                    //create Store
10563
                                    Ext.create('Ext.data.Store', {
10564
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10565
                                        autoLoad: true,
10566
                                        proxy: {
10567
                                            method: 'POST',
10568
                                            type: 'ajax',
10569
                                            url: '/UserControl/GetStoreAuth',
10570
                                            extraParams: {
10571
                                                tableName: TableRef,
10572
                                                param: rec.ParamCombo,
10573
                                                menuId: MinovaUtil.GetMenuID()
10574
                                            },
10575
                                            reader: {
10576
                                                type: 'json',
10577
                                                root: 'data',
10578
                                                totalProperty: 'data[0].TotalCount'
10579
                                            }
10580
                                        }
10581
                                    });
10582
                                } else if (rec.FixedValue != '') {
10583
                                    var storeData = [];
10584
                                    var str = rec.FixedValue;
10585
                                    var hasil = str.split('||');
10586
                                    hasil.forEach(function (h) {
10587
                                        store_ = h.split('=')
10588
                                        storeData.push({
10589
                                            code: store_[0],
10590
                                            desc: store_[1],
10591

    
10592
                                        });
10593
                                    });
10594

    
10595
                                    valueField = 'code';
10596
                                    displayValue = 'desc';
10597

    
10598
                                    Ext.create('Ext.data.Store', {
10599
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10600
                                        autoLoad: true,
10601
                                        data: storeData
10602
                                    })
10603
                                }
10604

    
10605
                                cols.push({
10606
                                    xtype: 'minovacombocolumn',
10607
                                    hidden: Hidden_,
10608
                                    text: rec.HeaderTitle,
10609
                                    dataIndex: rec.FieldName,
10610
                                    valueField: valueField,
10611
                                    displayField: displayValue,
10612
                                    store: 'store_' + me.tableName + rec.FieldName,
10613
                                    editor: {
10614
                                        allowBlank: null_,
10615
                                        xtype: 'combobox',
10616
                                        readOnly: ReadOnly_,
10617
                                        id: tableName + rec.FieldName,
10618
                                        nameTable: rec.TableName,
10619
                                        fieldGrid: rec.FieldName,
10620
                                        valueField: valueField,
10621
                                        displayField: displayValue,
10622
                                        vtype: 'validateCombobox',
10623
                                        store: 'store_' + me.tableName + rec.FieldName,
10624
                                    },
10625
                                    filter: {
10626
                                        type: 'list',
10627
                                        itemDefaults: {
10628
                                            emptyText: 'Search for...'
10629
                                        }
10630
                                    }
10631
                                });
10632

    
10633
                            } else if (rec.SearchType == '5') {							
10634
                                var valueField = null;
10635
                                var displayValue = null;
10636
                                var AdditionaldisplayValue = null;
10637
                                var TableRef = undefined;
10638
                                if (rec.TableRef != '') {
10639
                                    TableRef = rec.TableRef;
10640
                                    Ext.Ajax.request({
10641
                                        async: false,
10642
                                        method: 'POST',
10643
                                        url: '/UserControl/GetStore',
10644
                                        params: {
10645
                                            tableName: 'SDATATABLEFIELD',
10646
                                            param: 'TableName[equal]' + rec.TableRef
10647
                                        },
10648
                                        success: function (response) {
10649
                                            var results = Ext.decode(response.responseText);
10650
                                            data_ = results.data;
10651
                                            if (data_ != undefined) {
10652
                                                valueField_ = $.grep(data_, function (r) {
10653
                                                    return r.ValueField == '1'
10654
                                                });
10655
                                                if (valueField_.length > 0) {
10656
                                                    valueField = valueField_[0].FieldName
10657
                                                }
10658

    
10659
                                                displayValue_ = $.grep(data_, function (r) {
10660
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
10661
                                                });
10662
                                                if (displayValue_.length > 0) {
10663
                                                    displayValue = displayValue_[0].FieldName;
10664
                                                }
10665
                                                if (displayValue_.length >= 2) {
10666
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
10667
                                                }
10668
                                            }
10669
                                        }
10670
                                    });
10671
                                }
10672
                                Ext.create('Ext.data.Store', {
10673
                                    storeId: 'store_' + me.tableName + rec.FieldName,
10674
                                    autoLoad: true,
10675
                                    proxy: {
10676
                                        method: 'POST',
10677
                                        type: 'ajax',
10678
                                        url: '/UserControl/GetStoreAuth',
10679
                                        extraParams: {
10680
                                            tableName: TableRef,
10681
                                            param: rec.ParamCombo,
10682
                                            menuId: MinovaUtil.GetMenuID()
10683
                                        },
10684
                                        reader: {
10685
                                            type: 'json',
10686
                                            root: 'data',
10687
                                            totalProperty: 'data[0].TotalCount'
10688
                                        }
10689
                                    }
10690
                                });
10691
                                cols.push({
10692
                                    xtype : 'minovacombocolumn',
10693
                                    hidden: Hidden_,
10694
                                    text: rec.HeaderTitle,
10695
                                    dataIndex: rec.FieldName,
10696
                                    valueField : valueField,
10697
                                    displayField : displayValue,
10698
                                    store : 'store_' + me.tableName + rec.FieldName,
10699
                                    tpl: Ext.create('Ext.XTemplate',
10700
                                            '<ul class="x-list-plain"><tpl for=".">',
10701
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10702
                                            '</tpl></ul>'),
10703
                                    displayTpl: Ext.create('Ext.XTemplate',
10704
                                        '<tpl for=".">',
10705
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10706
                                        '</tpl>'),
10707
                                    editor: {
10708
                                        allowBlank: null_,
10709
                                        xtype: 'combobox',
10710
                                        readOnly: ReadOnly_,
10711
                                        id: rec.TableName + rec.FieldName,
10712
                                        nameTable: rec.TableName,
10713
                                        fieldGrid: rec.FieldName,
10714
                                        valueField: valueField,
10715
                                        displayField: displayValue,
10716
                                        store: 'store_' + me.tableName + rec.FieldName,
10717
                                        value: rec.DefaultValue,
10718
                                        tpl: Ext.create('Ext.XTemplate',
10719
                                            '<ul class="x-list-plain"><tpl for=".">',
10720
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10721
                                            '</tpl></ul>'),
10722
                                        displayTpl: Ext.create('Ext.XTemplate',
10723
                                            '<tpl for=".">',
10724
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10725
                                            '</tpl>')
10726
                                    },
10727
                                    renderer: function (value) {
10728
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
10729
                                        var index = store.find(valueField, value);
10730
                                        var val = "";
10731
                                        if (index != -1) {
10732
                                            var rc = store.getAt(index);
10733
                                            //val = rc.get(displayValue);
10734
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
10735
                                        } else {
10736
                                            val = value;
10737
                                        }
10738
                                        return val;
10739
                                    },
10740
                                    filter: {
10741
                                        type: 'list',
10742
                                        itemDefaults: {
10743
                                            emptyText: 'Search for...'
10744
                                        }
10745
                                    }
10746
                                });
10747
                            } else if (rec.SearchType == '2') {
10748
                                var triger = (rec.TriggerCombo).split('$');
10749
                                var targetField_ = triger[0];
10750
                                var fieldValue_ = triger[1];
10751
                                cols.push({
10752
                                    text: rec.HeaderTitle,
10753
                                    hidden: Hidden_,
10754
                                    dataIndex: rec.FieldName,
10755
                                    filter: {
10756
                                        itemDefaults: {
10757
                                            emptyText: 'Search for...'
10758
                                        }
10759
                                    },
10760
                                    editor: {
10761
                                        allowBlank: null_,
10762
                                        xtype: 'minovalookupgrid',
10763
                                        readOnly: ReadOnly_,
10764
                                        isGrid: true,
10765
                                        fieldTarget: targetField_,
10766
                                        fieldValue: fieldValue_,
10767
                                        isGrid: true,
10768
                                        id: tableName + rec.FieldName,
10769
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10770
                                        triggerCls: 'x-form-search-trigger',
10771
                                        vtype: 'alphanum', // disable space
10772
                                        nameTable: rec.TableName,
10773
                                        fieldGrid: rec.FieldName,
10774
                                        LookupFunction: rec.LookupFunction,
10775
                                        listeners: {
10776
                                            change: function (val) {
10777
                                                var custumFunc = rec.SelectFunction;
10778
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10779
                                                    Ext.Ajax.request({
10780
                                                        async: false,
10781
                                                        method: 'POST',
10782
                                                        url: '/UserControl/GetStore',
10783
                                                        params: {
10784
                                                            tableName: 'PCMFUNC',
10785
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10786
                                                        },
10787
                                                        success: function (response) {
10788
                                                            var results = Ext.decode(response.responseText);
10789
                                                            data_ = results.data[0];
10790
                                                            if (data_ != undefined) {
10791
                                                                custumFunc = data_.FunctionCode;
10792
                                                            }
10793
                                                        }
10794
                                                    });
10795
                                                }
10796
                                                if (custumFunc) {
10797
                                                    eval(custumFunc)
10798
                                                }
10799
                                            }
10800
                                        }
10801
                                    }
10802
                                });
10803
                            } else if (rec.SearchType == '3') {
10804
                                cols.push({
10805
                                    text: rec.HeaderTitle,
10806
                                    hidden: Hidden_,
10807
                                    dataIndex: rec.FieldName,
10808
                                    filter: {
10809
                                        itemDefaults: {
10810
                                            emptyText: 'Search for...'
10811
                                        }
10812
                                    },
10813
                                    editor: {
10814
                                        allowBlank: null_,
10815
                                        // xtype: 'minovalookuptreePopup',
10816
                                        xtype: 'MinovaLookupTree',
10817
                                        readOnly: ReadOnly_,
10818
                                        id: tableName + rec.FieldName,
10819
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10820
                                        triggerCls: 'x-form-search-trigger',
10821
                                        vtype: 'alphanum', // disable space
10822
                                        treeSructure: rec.SearchFunction, //'O-O-P',
10823
                                        objClassValue: rec.ParamCombo, //'O',
10824
                                        nameTable: rec.TableName,
10825
                                        fieldGrid: rec.FieldName,
10826
                                        listeners: {
10827
                                            change: function (val) {
10828
                                                var custumFunc = rec.SelectFunction;
10829
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10830
                                                    Ext.Ajax.request({
10831
                                                        async: false,
10832
                                                        method: 'POST',
10833
                                                        url: '/UserControl/GetStore',
10834
                                                        params: {
10835
                                                            tableName: 'PCMFUNC',
10836
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10837
                                                        },
10838
                                                        success: function (response) {
10839
                                                            var results = Ext.decode(response.responseText);
10840
                                                            data_ = results.data[0];
10841
                                                            if (data_ != undefined) {
10842
                                                                custumFunc = data_.FunctionCode;
10843
                                                            }
10844
                                                        }
10845
                                                    });
10846
                                                }
10847
                                                if (custumFunc) {
10848
                                                    eval(custumFunc)
10849
                                                }
10850
                                            }
10851
                                        }
10852
                                    }
10853
                                });
10854
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
10855
                                var triger = (rec.TriggerCombo).split('&');
10856
                                var targetField_ = triger[0];
10857
                                var fieldValue_ = triger[0];
10858
                                cols.push({
10859
                                    text: rec.HeaderTitle,
10860
                                    hidden: Hidden_,
10861
                                    dataIndex: rec.FieldName,
10862
                                    filter: {
10863
                                        itemDefaults: {
10864
                                            emptyText: 'Search for...'
10865
                                        }
10866
                                    },
10867
                                    editor: {
10868
                                        allowBlank: null_,
10869
                                        xtype: 'lookupemployee',
10870
                                        readOnly: ReadOnly_,
10871
                                        isGrid: true,
10872
                                        fieldTarget: targetField_,
10873
                                        fieldValue: fieldValue_,
10874
                                        isGrid: true,
10875
                                        id: tableName + rec.FieldName,
10876
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10877
                                        triggerCls: 'x-form-search-trigger',
10878
                                        vtype: 'alphanum', // disable space
10879
                                        nameTable: rec.TableName,
10880
                                        fieldGrid: rec.FieldName,
10881
                                        listeners: {
10882
                                            change: function (val) {
10883
                                                var custumFunc = rec.SelectFunction;
10884
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10885
                                                    Ext.Ajax.request({
10886
                                                        async: false,
10887
                                                        method: 'POST',
10888
                                                        url: '/UserControl/GetStore',
10889
                                                        params: {
10890
                                                            tableName: 'PCMFUNC',
10891
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10892
                                                        },
10893
                                                        success: function (response) {
10894
                                                            var results = Ext.decode(response.responseText);
10895
                                                            data_ = results.data[0];
10896
                                                            if (data_ != undefined) {
10897
                                                                custumFunc = data_.FunctionCode;
10898
                                                            }
10899
                                                        }
10900
                                                    });
10901
                                                }
10902
                                                if (custumFunc) {
10903
                                                    eval(custumFunc)
10904
                                                }
10905
                                            }
10906
                                        }
10907
                                    }
10908
                                });
10909
                            } else if (rec.SearchType == '4' && isLookup != true) {
10910
                                cols.push({
10911

    
10912
                                    text: rec.HeaderTitle,
10913
                                    hidden: Hidden_,
10914
                                    dataIndex: rec.FieldName,
10915
                                    filter: {
10916
                                        itemDefaults: {
10917
                                            emptyText: 'Search for...'
10918
                                        }
10919
                                    },
10920
                                    editor: {
10921
                                        allowBlank: null_,
10922
                                        xtype: 'lookupemployee',
10923
                                        readOnly: ReadOnly_,
10924
                                        isGrid: true,
10925
                                        fieldTarget: targetField_,
10926
                                        fieldValue: fieldValue_,
10927
                                        isGrid: true,
10928
                                        id: tableName + rec.FieldName,
10929
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10930
                                        triggerCls: 'x-form-search-trigger',
10931
                                        vtype: 'alphanum', // disable space
10932
                                        nameTable: rec.TableName,
10933
                                        fieldGrid: rec.FieldName,
10934
                                        listeners: {
10935
                                            change: function (val) {
10936
                                                var custumFunc = rec.SelectFunction;
10937
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10938
                                                    Ext.Ajax.request({
10939
                                                        async: false,
10940
                                                        method: 'POST',
10941
                                                        url: '/UserControl/GetStore',
10942
                                                        params: {
10943
                                                            tableName: 'PCMFUNC',
10944
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10945
                                                        },
10946
                                                        success: function (response) {
10947
                                                            var results = Ext.decode(response.responseText);
10948
                                                            data_ = results.data[0];
10949
                                                            if (data_ != undefined) {
10950
                                                                custumFunc = data_.FunctionCode;
10951
                                                            }
10952
                                                        }
10953
                                                    });
10954
                                                }
10955
                                                if (custumFunc) {
10956
                                                    eval(custumFunc)
10957
                                                }
10958
                                            }
10959
                                        }
10960
                                    }
10961
                                });
10962
                            } else {
10963
                                if (rec.FieldDataType == 3) { //add by taufan
10964
                                    cols.push({
10965
                                        text: rec.HeaderTitle,
10966
                                        hidden: Hidden_,
10967
                                        dataIndex: rec.FieldName,
10968
                                        filter: {
10969
                                            itemDefaults: {
10970
                                                emptyText: 'Search for...'
10971
                                            }
10972
                                        },
10973
                                        editor: {
10974
                                            allowBlank: null_,
10975
                                            xtype: 'textfield',
10976
                                            readOnly: ReadOnly_,
10977
                                            id: tableName + rec.FieldName,
10978
                                            nameTable: rec.TableName,
10979
                                            fieldGrid: rec.FieldName,
10980
                                            vtype: 'validateDecimal',
10981
                                            maxLength: rec.Length,
10982
                                            precision: rec.Prec,
10983
                                            fieldStyle: 'text-align:right;',
10984
                                            listeners: {
10985
                                                change: function (val) {
10986
                                                    var custumFunc = null;
10987
                                                    Ext.Ajax.request({
10988
                                                        async: false,
10989
                                                        method: 'POST',
10990
                                                        url: '/UserControl/GetStore',
10991
                                                        params: {
10992
                                                            tableName: 'SDATATABLEFIELD',
10993
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
10994
                                                        },
10995
                                                        success: function (response) {
10996
                                                            var results = Ext.decode(response.responseText);
10997
                                                            data_ = results.data[0];
10998
                                                            if (data_ != undefined) {
10999
                                                                custumFunc = data_.SelectFunction;
11000
                                                                //console.log(data_)
11001
                                                            }
11002
                                                        }
11003
                                                    });
11004

    
11005
                                                    if (custumFunc) {
11006
                                                        eval(custumFunc)
11007
                                                    }
11008
                                                }
11009
                                            }
11010
                                        }
11011
                                    });
11012
                                } else {
11013
                                    cols.push({
11014
                                        text: rec.HeaderTitle,
11015
                                        hidden: Hidden_,
11016
                                        dataIndex: rec.FieldName,
11017
                                        filter: {
11018
                                            itemDefaults: {
11019
                                                emptyText: 'Search for...'
11020
                                            }
11021
                                        },
11022
                                        editor: {
11023
                                            allowBlank: null_,
11024
                                            xtype: 'textfield',
11025
                                            readOnly: ReadOnly_,
11026
                                            id: tableName + rec.FieldName,
11027
                                            nameTable: rec.TableName,
11028
                                            fieldGrid: rec.FieldName,
11029
                                            listeners: {
11030
                                                change: function (val) {
11031
                                                    var custumFunc = null;
11032
                                                    Ext.Ajax.request({
11033
                                                        async: false,
11034
                                                        method: 'POST',
11035
                                                        url: '/UserControl/GetStore',
11036
                                                        params: {
11037
                                                            tableName: 'SDATATABLEFIELD',
11038
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11039
                                                        },
11040
                                                        success: function (response) {
11041
                                                            var results = Ext.decode(response.responseText);
11042
                                                            data_ = results.data[0];
11043
                                                            if (data_ != undefined) {
11044
                                                                custumFunc = data_.SelectFunction;
11045
                                                                //console.log(data_)
11046
                                                            }
11047
                                                        }
11048
                                                    });
11049

    
11050
                                                    if (custumFunc) {
11051
                                                        eval(custumFunc)
11052
                                                    }
11053
                                                }
11054
                                            }
11055
                                        }
11056
                                    });
11057
                                }
11058
                            }
11059

    
11060
                            break
11061

    
11062
                    }
11063
                } else {
11064
                    cols.push({
11065
                        text: rec.HeaderTitle,
11066
                        hidden: Hidden_,
11067
                        dataIndex: rec.FieldName,
11068
                        hidden: true,
11069
                        editor: {
11070
                            allowBlank: true,
11071
                            xtype: 'textfield',
11072
                            readOnly: ReadOnly_,
11073
                            id: tableName + rec.FieldName,
11074
                            nameTable: rec.TableName,
11075
                            fieldGrid: rec.FieldName,
11076
                        },
11077
                        filter: {
11078
                            itemDefaults: {
11079
                                emptyText: 'Search for...'
11080
                            }
11081
                        }
11082
                    });
11083
                }
11084
            });
11085

    
11086
        };
11087
        addData = addData + "}";
11088
        Ext.applyIf(me, {
11089
            items: [{
11090
                xtype: 'grid',
11091
                id: gridName,
11092
                name: gridName,
11093
                height: height,
11094
                viewConfig: {
11095
                    emptyText: 'No Data Display',
11096
                    deferEmptyText: false,
11097
                    //Add Nana For Autosize Column Mode
11098
                    listeners: {
11099
                        refresh: function (dataview) {
11100
                            Ext.each(dataview.panel.columns, function (column) {
11101
                                //if (column.autoSizeColumn == false)
11102
                                //	column.autoSizeColumn = true;
11103
                                column.autoSize();
11104
                                //dataview.store.reload();
11105
                            })
11106
                        }
11107
                    },
11108
                    render: function (comp) {
11109
                        comp.getStore().reload();
11110
                        console.log(comp);
11111
                    }
11112
                },
11113
                //store: 'gridStore',
11114
                store: Ext.create('Ext.data.Store', {
11115
                    storeId: storeID,
11116
                    fields: fieldStore,
11117
                    proxy: {
11118
                        method: 'POST',
11119
                        type: 'ajax',
11120
                        url: '',
11121
                        reader: {
11122
                            type: 'json',
11123
                            root: 'data'
11124
                        }
11125
                    }
11126
                }),
11127
                dockedItems: [{
11128
                    xtype: 'toolbar',
11129
                    items: [{
11130
                        text: 'Add',
11131
                        hidden: hide_,
11132
                        name: tableName + 'Add',
11133
                        iconCls: 'fa-plus-circle',
11134
                        style: 'font-family: FontAwesome',
11135
                        handler: function () {
11136
                            var store = Ext.StoreMgr.lookup(storeID)
11137
                            idx = store.getCount();
11138
                            var action = getParam('action');
11139
                            var data = '';
11140
                            var Sequence = 0;
11141
                            if (idx == 0) {
11142
                                Sequence = 1;
11143
                            } else {
11144
                                Sequence = 1 + idx;
11145
                            }
11146
                            //data = {
11147
                            //    Sequence: Sequence
11148
                            //};
11149

    
11150
                            var seq = 'Sequence';
11151
                            var SequenceValue = Sequence;
11152
                            eval(addData);
11153
                            data[seq] = SequenceValue;
11154

    
11155
                            store.insert(idx, data);
11156
                        }
11157

    
11158
                    }, {
11159
                        text: 'Delete',
11160
                        hidden: hide_,
11161
                        name: tableName + 'DeleteText',
11162
                        iconCls: 'fa-trash-o',
11163
                        style: 'font-family: FontAwesome',
11164
                        //disabled: true
11165
                        handler: function () {
11166
                            var me = this,
11167
                            store = Ext.StoreMgr.lookup(storeID)
11168

    
11169
                            var grid = Ext.getCmp(gridName);
11170

    
11171
                            Ext.MessageBox.show({
11172
                                title: 'Remove tab',
11173
                                msg: "This will remove. Do you want to continue?",
11174
                                buttons: Ext.MessageBox.YESNO,
11175
                                fn: function (choice) {
11176
                                    console.log(choice);
11177
                                    if (choice === 'yes') {
11178
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
11179
                                        if (selection) {
11180
                                            store.remove(selection);
11181
                                        }
11182
                                    }
11183
                                    //delete panel.pendingClose;
11184
                                }
11185
                            });
11186
                        }
11187

    
11188
                    }
11189
                    ]
11190
                }
11191
                ],
11192
                columns: cols,
11193
                selType: checkSelection,
11194
                //selType: 'rowmodel',
11195
                plugins: {
11196
                    ptype: 'rowediting',
11197
                    pluginId: 'rowEditing',
11198
                    clicksToEdit: 0,
11199
                    listeners: {
11200
                        //edit: 'onGridEditorEdit'
11201
                    }
11202
                }
11203
            }, ]
11204

    
11205
        });
11206

    
11207
        me.callParent(arguments);
11208
    }
11209
});
11210

    
11211
Ext.define('MinovaUtil.MinovaES.MinovaCellEditGrid', {
11212
    extend: 'Ext.form.Panel',
11213
    alias: ['widget.MinovaCellEditGrid', 'widget.minovacelleditgrid'],
11214
    requires: [
11215
		'Ext.grid.plugin.CellEditing',
11216
		'Ext.grid.Panel',
11217
    ],
11218

    
11219
    //renderTo: 'panel-extjs',
11220
    anchor: '100%',
11221
    tableName: undefined,
11222
    hideButton: undefined,
11223
    multiSelect: undefined,
11224
    initComponent: function () {
11225
        var me = this;
11226
        var isLookup = me.isLookup;
11227
        var hide_ = false;
11228
        var widthLock = 250;
11229
        var checkSelection = '';
11230

    
11231
        if (me.hideButton == true) {
11232
            hide_ = true;
11233
        }
11234
        if (me.multiSelect) {
11235
            locking = false;
11236
            checkSelection = 'checkboxmodel';
11237
            widthLock = 40;
11238
        }
11239
        var tableName = me.tableName;
11240
        var cols = [];
11241
        var fieldStore = [];
11242
        var _url = 'GetAllField';
11243
        var hasil = null;
11244
        var height = me.height;
11245
        var storeID = 'store' + me.tableName;
11246
        var gridName = 'grid' + me.name;
11247
        if (me.storeName) {
11248
            storeID = me.storeName;
11249
        }
11250
        var LangID = MinovaUtil.GetLangID();
11251
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
11252
        Ext.Ajax.request({
11253
            async: false,
11254
            method: 'POST',
11255
            url: '/UserControl/GetStore',
11256
            params: {
11257
                tableName: 'PDSBS0007',
11258
                param: parameter
11259
            },
11260
            success: function (response) {
11261
                var results = Ext.decode(response.responseText);
11262
                hasil = results.data;
11263
            }
11264
        });
11265
        if (hasil.length > 0) {
11266
            Ext.each(hasil, function (rec) {
11267
                fieldStore.push(rec.FieldName)
11268

    
11269
                var null_ = null;
11270
                var ReadOnly_ = false;
11271
                if (rec.IsPrimaryKey == true) {
11272
                    null_ = false;
11273
                }
11274
                if (rec.IsRequired == true) {
11275
                    null_ = false;
11276
                } else {
11277
                    null_ = true;
11278
                }
11279
                if (rec.ReadOnly == '1') {
11280
                    ReadOnly_ = true;
11281
                }
11282
                var Hidden_ = false;
11283
                if (rec.ReadOnly == '1') {
11284
                    ReadOnly_ = true;
11285
                }
11286

    
11287
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
11288
                    Hidden_ = true;
11289
                    null_ = true;
11290
                }
11291

    
11292
                if (rec.GridView == 1) {
11293
                    switch (rec.FormatRef) {
11294
                        case "date":
11295
                            cols.push({
11296
                                xtype: 'minovadatecolumn',
11297
                                hidden: Hidden_,
11298
                                text: rec.HeaderTitle,
11299
                                dataIndex: rec.FieldName,
11300
                                filter: {
11301
                                    itemDefaults: {
11302
                                        emptyText: 'Search for...',
11303

    
11304
                                    }
11305
                                },
11306
                                editor: {
11307
                                    allowBlank: null_,
11308
                                    xtype: 'datefield',
11309
                                    hideMode: 'visibility',
11310
                                    readOnly: ReadOnly_,
11311
                                    id: tableName + rec.FieldName,
11312
                                }
11313
                            });
11314
                            break
11315
                        case "amount":
11316
                            cols.push({
11317
                                xtype: 'minovacurrancycolumn',
11318
                                text: rec.HeaderTitle,
11319
                                align: 'right',
11320
                                dataIndex: rec.FieldName,
11321
                                hidden: Hidden_,
11322
                                filter: {
11323
                                    itemDefaults: {
11324
                                        emptyText: 'Search for...'
11325
                                    }
11326
                                },
11327
                                editor: {
11328
                                    allowBlank: null_,
11329
                                    xtype: 'textfield',
11330
                                    readOnly: ReadOnly_,
11331
                                    id: tableName + rec.FieldName,
11332
                                }
11333
                            });
11334
                            break
11335
                            //case "datetime":
11336
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
11337
                            //        cols.push({
11338
                            //            xtype: 'minovadatetimecolumn',
11339
                            //            text: rec.HeaderTitle,
11340
                            //            dataIndex: rec.FieldName,
11341
                            //            filter: {
11342
                            //                itemDefaults: {
11343
                            //                    emptyText: 'Search for...'
11344
                            //                }
11345
                            //            },
11346
                            //            editor: {
11347
                            //                allowBlank: null_,
11348
                            //                xtype: 'textfield',
11349
                            //            }
11350
                            //        });
11351
                            //    }
11352
                            //    break
11353
                        default:
11354
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
11355
                                cols.push({
11356
                                    text: rec.HeaderTitle,
11357
                                    dataIndex: rec.FieldName,
11358
                                    width: 100,
11359
                                    filter: {
11360
                                        type: 'string',
11361
                                        itemDefaults: {
11362
                                            emptyText: 'Search for...'
11363
                                        }
11364
                                    }
11365
                                });
11366
                            } else if (rec.SearchType == '0') {
11367
                                var valueField = null;
11368
                                var displayValue = null;
11369
                                var TableRef = undefined;
11370
                                if (rec.TableRef != '') {
11371
                                    TableRef = rec.TableRef;
11372

    
11373
                                    Ext.Ajax.request({
11374
                                        async: false,
11375
                                        method: 'POST',
11376
                                        url: '/UserControl/GetStore',
11377
                                        params: {
11378
                                            tableName: 'SDATATABLEFIELD',
11379
                                            param: 'TableName[equal]' + rec.TableRef
11380
                                        },
11381
                                        success: function (response) {
11382
                                            var results = Ext.decode(response.responseText);
11383
                                            data_ = results.data;
11384
                                            if (data_ != undefined) {
11385
                                                valueField_ = $.grep(data_, function (r) {
11386
                                                    return r.ValueField == '1'
11387
                                                });
11388
                                                valueField = valueField_[0].FieldName
11389
                                                displayValue_ = $.grep(data_, function (r) {
11390
                                                    return r.DisplayValue == '1'
11391
                                                });
11392
                                                displayValue = displayValue_[0].FieldName
11393
                                            }
11394
                                        }
11395
                                    });
11396

    
11397
                                    //create Store
11398
                                    Ext.create('Ext.data.Store', {
11399
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11400
                                        autoLoad: true,
11401
                                        proxy: {
11402
                                            method: 'POST',
11403
                                            type: 'ajax',
11404
                                            url: '/UserControl/GetStoreAuth',
11405
                                            extraParams: {
11406
                                                tableName: TableRef,
11407
                                                param: rec.ParamCombo,
11408
                                                menuId: MinovaUtil.GetMenuID()
11409
                                            },
11410
                                            reader: {
11411
                                                type: 'json',
11412
                                                root: 'data',
11413
                                                totalProperty: 'data[0].TotalCount'
11414
                                            }
11415
                                        }
11416
                                    });
11417

    
11418
                                } else if (rec.FixedValue != '') {
11419
                                    var storeData = [];
11420
                                    var str = rec.FixedValue;
11421
                                    var hasil = str.split('||');
11422
                                    hasil.forEach(function (h) {
11423
                                        store_ = h.split('=')
11424
                                        storeData.push({
11425
                                            code: store_[0],
11426
                                            desc: store_[1],
11427

    
11428
                                        });
11429
                                    });
11430

    
11431
                                    valueField = 'code';
11432
                                    displayValue = 'desc';
11433

    
11434
                                    Ext.create('Ext.data.Store', {
11435
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11436
                                        autoLoad: true,
11437
                                        data: storeData
11438
                                    })
11439
                                }
11440

    
11441
                                cols.push({
11442
                                    xtype: 'minovacombocolumn',
11443
                                    hidden: Hidden_,
11444
                                    text: rec.HeaderTitle,
11445
                                    dataIndex: rec.FieldName,
11446
                                    valueField: valueField,
11447
                                    displayField: displayValue,
11448
                                    store: 'store_' + me.tableName + rec.FieldName,
11449
                                    editor: {
11450
                                        allowBlank: null_,
11451
                                        xtype: 'combobox',
11452
                                        readOnly: ReadOnly_,
11453
                                        id: tableName + rec.FieldName,
11454
                                        valueField: valueField,
11455
                                        displayField: displayValue,
11456
                                        store: 'store_' + me.tableName + rec.FieldName,
11457
                                    },
11458
                                    filter: {
11459
                                        type: 'list',
11460
                                        itemDefaults: {
11461
                                            emptyText: 'Search for...'
11462
                                        }
11463
                                    }
11464
                                });
11465

    
11466
                            } else if (rec.SearchType == '5') {							
11467
                                var valueField = null;
11468
                                var displayValue = null;
11469
                                var AdditionaldisplayValue = null;
11470
                                var TableRef = undefined;
11471
                                if (rec.TableRef != '') {
11472
                                    TableRef = rec.TableRef;
11473
                                    Ext.Ajax.request({
11474
                                        async: false,
11475
                                        method: 'POST',
11476
                                        url: '/UserControl/GetStore',
11477
                                        params: {
11478
                                            tableName: 'SDATATABLEFIELD',
11479
                                            param: 'TableName[equal]' + rec.TableRef
11480
                                        },
11481
                                        success: function (response) {
11482
                                            var results = Ext.decode(response.responseText);
11483
                                            data_ = results.data;
11484
                                            if (data_ != undefined) {
11485
                                                valueField_ = $.grep(data_, function (r) {
11486
                                                    return r.ValueField == '1'
11487
                                                });
11488
                                                if (valueField_.length > 0) {
11489
                                                    valueField = valueField_[0].FieldName
11490
                                                }
11491

    
11492
                                                displayValue_ = $.grep(data_, function (r) {
11493
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
11494
                                                });
11495
                                                if (displayValue_.length > 0) {
11496
                                                    displayValue = displayValue_[0].FieldName;
11497
                                                }
11498
                                                if (displayValue_.length >= 2) {
11499
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
11500
                                                }
11501
                                            }
11502
                                        }
11503
                                    });
11504
                                }
11505
                                Ext.create('Ext.data.Store', {
11506
                                    storeId: 'store_' + me.tableName + rec.FieldName,
11507
                                    autoLoad: true,
11508
                                    proxy: {
11509
                                        method: 'POST',
11510
                                        type: 'ajax',
11511
                                        url: '/UserControl/GetStoreAuth',
11512
                                        extraParams: {
11513
                                            tableName: TableRef,
11514
                                            param: rec.ParamCombo,
11515
                                            menuId: MinovaUtil.GetMenuID()
11516
                                        },
11517
                                        reader: {
11518
                                            type: 'json',
11519
                                            root: 'data',
11520
                                            totalProperty: 'data[0].TotalCount'
11521
                                        }
11522
                                    }
11523
                                });
11524
                                cols.push({
11525
                                    xtype : 'minovacombocolumn',
11526
                                    hidden: Hidden_,
11527
                                    text: rec.HeaderTitle,
11528
                                    dataIndex: rec.FieldName,
11529
                                    valueField : valueField,
11530
                                    displayField : displayValue,
11531
                                    store : 'store_' + me.tableName + rec.FieldName,
11532
                                    tpl: Ext.create('Ext.XTemplate',
11533
                                            '<ul class="x-list-plain"><tpl for=".">',
11534
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11535
                                            '</tpl></ul>'),
11536
                                    displayTpl: Ext.create('Ext.XTemplate',
11537
                                        '<tpl for=".">',
11538
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11539
                                        '</tpl>'),
11540
                                    editor: {
11541
                                        allowBlank: null_,
11542
                                        xtype: 'combobox',
11543
                                        readOnly: ReadOnly_,
11544
                                        id: rec.TableName + rec.FieldName,
11545
                                        nameTable: rec.TableName,
11546
                                        fieldGrid: rec.FieldName,
11547
                                        valueField: valueField,
11548
                                        displayField: displayValue,
11549
                                        store: 'store_' + me.tableName + rec.FieldName,
11550
                                        value: rec.DefaultValue,
11551
                                        tpl: Ext.create('Ext.XTemplate',
11552
                                            '<ul class="x-list-plain"><tpl for=".">',
11553
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11554
                                            '</tpl></ul>'),
11555
                                        displayTpl: Ext.create('Ext.XTemplate',
11556
                                            '<tpl for=".">',
11557
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11558
                                            '</tpl>')
11559
                                    },
11560
                                    renderer: function (value) {
11561
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
11562
                                        var index = store.find(valueField, value);
11563
                                        var val = "";
11564
                                        if (index != -1) {
11565
                                            var rc = store.getAt(index);
11566
                                            //val = rc.get(displayValue);
11567
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
11568
                                        } else {
11569
                                            val = value;
11570
                                        }
11571
                                        return val;
11572
                                    },
11573
                                    filter: {
11574
                                        type: 'list',
11575
                                        itemDefaults: {
11576
                                            emptyText: 'Search for...'
11577
                                        }
11578
                                    }
11579
                                });
11580
                            } else if (rec.SearchType == '2') {
11581
                                var triger = (rec.TriggerCombo).split('$');
11582
                                var targetField_ = triger[0];
11583
                                var fieldValue_ = triger[1];
11584
                                cols.push({
11585
                                    text: rec.HeaderTitle,
11586
                                    hidden: Hidden_,
11587
                                    dataIndex: rec.FieldName,
11588
                                    filter: {
11589
                                        itemDefaults: {
11590
                                            emptyText: 'Search for...'
11591
                                        }
11592
                                    },
11593
                                    editor: {
11594
                                        allowBlank: null_,
11595
                                        xtype: 'minovalookupgrid',
11596
                                        readOnly: ReadOnly_,
11597
                                        isGrid: true,
11598
                                        fieldTarget: targetField_,
11599
                                        fieldValue: fieldValue_,
11600
                                        isGrid: true,
11601
                                        id: tableName + rec.FieldName,
11602
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11603
                                        triggerCls: 'x-form-search-trigger',
11604
                                        vtype: 'alphanum', // disable space
11605

    
11606
                                        listeners: {
11607
                                            change: function (val) {
11608
                                                var custumFunc = rec.SelectFunction;
11609
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11610
                                                    Ext.Ajax.request({
11611
                                                        async: false,
11612
                                                        method: 'POST',
11613
                                                        url: '/UserControl/GetStore',
11614
                                                        params: {
11615
                                                            tableName: 'PCMFUNC',
11616
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11617
                                                        },
11618
                                                        success: function (response) {
11619
                                                            var results = Ext.decode(response.responseText);
11620
                                                            data_ = results.data[0];
11621
                                                            if (data_ != undefined) {
11622
                                                                custumFunc = data_.FunctionCode;
11623
                                                            }
11624
                                                        }
11625
                                                    });
11626
                                                }
11627
                                                if (custumFunc) {
11628
                                                    eval(custumFunc)
11629
                                                }
11630
                                            }
11631
                                        }
11632
                                    }
11633
                                });
11634
                            } else if (rec.SearchType == '3') {
11635
                                cols.push({
11636
                                    text: rec.HeaderTitle,
11637
                                    hidden: Hidden_,
11638
                                    dataIndex: rec.FieldName,
11639
                                    filter: {
11640
                                        itemDefaults: {
11641
                                            emptyText: 'Search for...'
11642
                                        }
11643
                                    },
11644
                                    editor: {
11645
                                        allowBlank: null_,
11646
                                        // xtype: 'minovalookuptreePopup',
11647
                                        xtype: 'MinovaLookupTree',
11648
                                        readOnly: ReadOnly_,
11649
                                        id: tableName + rec.FieldName,
11650
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11651
                                        triggerCls: 'x-form-search-trigger',
11652
                                        vtype: 'alphanum', // disable space
11653
                                        treeSructure: rec.SearchFunction, //'O-O-P',
11654
                                        objClassValue: rec.ParamCombo, //'O',
11655
                                        listeners: {
11656
                                            change: function (val) {
11657
                                                var custumFunc = rec.SelectFunction;
11658
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11659
                                                    Ext.Ajax.request({
11660
                                                        async: false,
11661
                                                        method: 'POST',
11662
                                                        url: '/UserControl/GetStore',
11663
                                                        params: {
11664
                                                            tableName: 'PCMFUNC',
11665
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11666
                                                        },
11667
                                                        success: function (response) {
11668
                                                            var results = Ext.decode(response.responseText);
11669
                                                            data_ = results.data[0];
11670
                                                            if (data_ != undefined) {
11671
                                                                custumFunc = data_.FunctionCode;
11672
                                                            }
11673
                                                        }
11674
                                                    });
11675
                                                }
11676
                                                if (custumFunc) {
11677
                                                    eval(custumFunc)
11678
                                                }
11679
                                            }
11680
                                        }
11681
                                    }
11682
                                });
11683
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
11684
                                var triger = (rec.TriggerCombo).split('&');
11685
                                var targetField_ = triger[0];
11686
                                var fieldValue_ = triger[0];
11687
                                cols.push({
11688
                                    text: rec.HeaderTitle,
11689
                                    hidden: Hidden_,
11690
                                    dataIndex: rec.FieldName,
11691
                                    filter: {
11692
                                        itemDefaults: {
11693
                                            emptyText: 'Search for...'
11694
                                        }
11695
                                    },
11696
                                    editor: {
11697
                                        allowBlank: null_,
11698
                                        xtype: 'lookupemployee',
11699
                                        readOnly: ReadOnly_,
11700
                                        isGrid: true,
11701
                                        fieldTarget: targetField_,
11702
                                        fieldValue: fieldValue_,
11703
                                        isGrid: true,
11704
                                        id: tableName + rec.FieldName,
11705
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11706
                                        triggerCls: 'x-form-search-trigger',
11707
                                        vtype: 'alphanum', // disable space
11708
                                        listeners: {
11709
                                            change: function (val) {
11710
                                                var custumFunc = rec.SelectFunction;
11711
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11712
                                                    Ext.Ajax.request({
11713
                                                        async: false,
11714
                                                        method: 'POST',
11715
                                                        url: '/UserControl/GetStore',
11716
                                                        params: {
11717
                                                            tableName: 'PCMFUNC',
11718
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11719
                                                        },
11720
                                                        success: function (response) {
11721
                                                            var results = Ext.decode(response.responseText);
11722
                                                            data_ = results.data[0];
11723
                                                            if (data_ != undefined) {
11724
                                                                custumFunc = data_.FunctionCode;
11725
                                                            }
11726
                                                        }
11727
                                                    });
11728
                                                }
11729
                                                if (custumFunc) {
11730
                                                    eval(custumFunc)
11731
                                                }
11732
                                            }
11733
                                        }
11734
                                    }
11735
                                });
11736
                            } else if (rec.SearchType == '4' && isLookup != true) {
11737
                                cols.push({
11738

    
11739
                                    text: rec.HeaderTitle,
11740
                                    hidden: Hidden_,
11741
                                    dataIndex: rec.FieldName,
11742
                                    filter: {
11743
                                        itemDefaults: {
11744
                                            emptyText: 'Search for...'
11745
                                        }
11746
                                    },
11747
                                    editor: {
11748
                                        allowBlank: null_,
11749
                                        xtype: 'lookupemployee',
11750
                                        readOnly: ReadOnly_,
11751
                                        isGrid: true,
11752
                                        fieldTarget: targetField_,
11753
                                        fieldValue: fieldValue_,
11754
                                        isGrid: true,
11755
                                        id: tableName + rec.FieldName,
11756
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11757
                                        triggerCls: 'x-form-search-trigger',
11758
                                        vtype: 'alphanum', // disable space
11759
                                        listeners: {
11760
                                            change: function (val) {
11761
                                                var custumFunc = rec.SelectFunction;
11762
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11763
                                                    Ext.Ajax.request({
11764
                                                        async: false,
11765
                                                        method: 'POST',
11766
                                                        url: '/UserControl/GetStore',
11767
                                                        params: {
11768
                                                            tableName: 'PCMFUNC',
11769
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11770
                                                        },
11771
                                                        success: function (response) {
11772
                                                            var results = Ext.decode(response.responseText);
11773
                                                            data_ = results.data[0];
11774
                                                            if (data_ != undefined) {
11775
                                                                custumFunc = data_.FunctionCode;
11776
                                                            }
11777
                                                        }
11778
                                                    });
11779
                                                }
11780
                                                if (custumFunc) {
11781
                                                    eval(custumFunc)
11782
                                                }
11783
                                            }
11784
                                        }
11785
                                    }
11786
                                });
11787
                            } else {
11788
                                cols.push({
11789
                                    text: rec.HeaderTitle,
11790
                                    hidden: Hidden_,
11791
                                    dataIndex: rec.FieldName,
11792
                                    filter: {
11793
                                        itemDefaults: {
11794
                                            emptyText: 'Search for...'
11795
                                        }
11796
                                    },
11797
                                    editor: {
11798
                                        allowBlank: null_,
11799
                                        xtype: 'textfield',
11800
                                        readOnly: ReadOnly_,
11801
                                        id: tableName + rec.FieldName,
11802
                                        listeners: {
11803
                                            change: function (val) {
11804
                                                var custumFunc = null;
11805
                                                Ext.Ajax.request({
11806
                                                    async: false,
11807
                                                    method: 'POST',
11808
                                                    url: '/UserControl/GetStore',
11809
                                                    params: {
11810
                                                        tableName: 'SDATATABLEFIELD',
11811
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11812
                                                    },
11813
                                                    success: function (response) {
11814
                                                        var results = Ext.decode(response.responseText);
11815
                                                        data_ = results.data[0];
11816
                                                        if (data_ != undefined) {
11817
                                                            custumFunc = data_.SelectFunction;
11818
                                                            //console.log(data_)
11819
                                                        }
11820
                                                    }
11821
                                                });
11822

    
11823
                                                if (custumFunc) {
11824
                                                    eval(custumFunc)
11825
                                                }
11826
                                            }
11827
                                        }
11828
                                    }
11829
                                });
11830
                            }
11831

    
11832
                            break
11833

    
11834
                    }
11835
                } else {
11836
                    cols.push({
11837
                        text: rec.HeaderTitle,
11838
                        hidden: Hidden_,
11839
                        dataIndex: rec.FieldName,
11840
                        hidden: true,
11841
                        editor: {
11842
                            allowBlank: true,
11843
                            xtype: 'textfield',
11844
                            readOnly: ReadOnly_,
11845
                            id: tableName + rec.FieldName,
11846
                        },
11847
                        filter: {
11848
                            itemDefaults: {
11849
                                emptyText: 'Search for...'
11850
                            }
11851
                        }
11852
                    });
11853
                }
11854
            });
11855
        };
11856

    
11857
        this.cellEditing = new Ext.grid.plugin.CellEditing({
11858
            clicksToEdit: 1
11859
        });
11860
        Ext.applyIf(me, {
11861
            items: [{
11862
                xtype: 'grid',
11863
                id: gridName,
11864
                name: gridName,
11865
                height: height,
11866
                //store: 'gridStore',
11867
                store: Ext.create('Ext.data.Store', {
11868
                    storeId: storeID,
11869
                    fields: fieldStore,
11870
                    proxy: {
11871
                        method: 'POST',
11872
                        type: 'ajax',
11873
                        url: '',
11874
                        reader: {
11875
                            type: 'json',
11876
                            root: 'data'
11877
                        }
11878
                    }
11879
                }),
11880
                viewConfig: {
11881
                    emptyText: 'No Data Display',
11882
                    deferEmptyText: false,
11883
                    //Add Nana For Autosize Column Mode
11884
                    listeners: {
11885
                        refresh: function (dataview) {
11886
                            Ext.each(dataview.panel.columns, function (column) {
11887
                                if (column.autoSizeColumn == false)
11888
                                    column.autoSizeColumn = true;
11889
                                column.autoSize();
11890
                                //dataview.store.reload();
11891
                            })
11892
                        }
11893
                    },
11894
                    render: function (comp) {
11895
                        comp.getStore().reload();
11896
                        console.log(comp);
11897
                    }
11898
                },
11899
                dockedItems: [{
11900
                    xtype: 'toolbar',
11901
                    items: [{
11902
                        text: 'Add',
11903
                        hidden: hide_,
11904
                        name: tableName + 'Add',
11905
                        iconCls: 'fa-plus-circle',
11906
                        style: 'font-family: FontAwesome',
11907
                        handler: function () {
11908
                            var store = Ext.StoreMgr.lookup(storeID)
11909
                            idx = store.getCount();
11910
                            var action = getParam('action');
11911
                            var data = '';
11912
                            var Sequence = 0;
11913
                            if (idx == 0) {
11914
                                Sequence = 1;
11915
                            } else {
11916
                                Sequence = 1 + idx;
11917
                            }
11918
                            data = {
11919
                                Sequence: Sequence
11920
                            };
11921

    
11922
                            store.insert(idx, data);
11923
                        }
11924

    
11925
                    }, {
11926
                        text: 'Delete',
11927
                        hidden: hide_,
11928
                        name: tableName + 'DeleteText',
11929
                        iconCls: 'fa-trash-o',
11930
                        style: 'font-family: FontAwesome',
11931
                        //disabled: true
11932
                        handler: function () {
11933
                            var me = this,
11934
                            store = Ext.StoreMgr.lookup(storeID)
11935

    
11936
                            var grid = Ext.getCmp(gridName);
11937

    
11938
                            Ext.MessageBox.show({
11939
                                title: 'Remove tab',
11940
                                msg: "This will remove. Do you want to continue?",
11941
                                buttons: Ext.MessageBox.YESNO,
11942
                                fn: function (choice) {
11943
                                    console.log(choice);
11944
                                    if (choice === 'yes') {
11945
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
11946
                                        if (selection) {
11947
                                            store.remove(selection);
11948
                                        }
11949
                                    }
11950
                                    //delete panel.pendingClose;
11951
                                }
11952
                            });
11953
                        }
11954

    
11955
                    }
11956
                    ]
11957
                }
11958
                ],
11959
                columns: cols,
11960
                selModel: {
11961
                    type: 'cellmodel'
11962
                },
11963
                plugins: [this.cellEditing],
11964
            }, ]
11965

    
11966
        });
11967

    
11968
        me.callParent(arguments);
11969
    }
11970
});
11971
//hamid200916
11972
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployeelama', {
11973
    extend: 'Ext.panel.Panel',
11974
    alias: 'widget.lookupemployeelama',
11975
    requires: [
11976
		'Ext.data.*',
11977
		'Ext.grid.*',
11978
		'Ext.tree.*',
11979
		'Ext.ux.CheckColumn',
11980
		//'MinovaES.View.sample.samplepopupEMPID'
11981

    
11982
    ],
11983
    formname: undefined,
11984
    fieldname: undefined,
11985
    allowBlank: undefined,
11986
    width: undefined,
11987
    tableName: undefined,
11988
    //bodyStyle: 'padding-left: -20px; padding-bottom: -20px; padding-top: -20px; padding-right: -20px;',
11989
    //padding: '-40px',
11990
    //bodyStyle: 'margin:-20px;',
11991
    //margin: '-20 -20 -20 -20',
11992
    //fieldLabel: undefined,
11993
    //name: undefined,
11994
    //pnl: this.name,
11995
    initComponent: function () {
11996
        var me = this;
11997
        targetField_ = me.fieldname;
11998
        //var nameField_ = me.name;
11999
        //var panelform = this.pnl;
12000
        var nameField_ = me.fieldname;
12001
        var blank = me.allowBlank;
12002
        var width_ = me.width;
12003
        var tableName_ = me.tableName;
12004
        var panelform = "form" + me.name;
12005
        //var fieldLabel_ = me.fieldLabel;
12006
        Ext.applyIf(me, {
12007
            items: [{
12008
                xtype: 'form',
12009
                name: panelform,
12010
                items: [{
12011
                    xtype: 'fieldcontainer',
12012
                    layout: 'hbox',
12013
                    fieldLabel: me.fieldLabel,
12014
                    items: [{
12015
                        xtype: "triggerfield",
12016
                        name: nameField_,
12017
                        width: width_,
12018
                        //anchor: '50%',
12019
                        //editable: true,
12020
                        allowBlank: blank,
12021
                        triggerCls: 'x-form-search-trigger',
12022
                        onTriggerClick: function (e) {
12023
                            //var tableName_ = this.tableName;
12024
                            var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12025
                            var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12026
                            var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12027
                            var EmployeeID_ = EmployeeID.getValue();
12028
                            //var params = "EmployeeID[=]" + EmployeeID.getValue();
12029
                            //var Url = "sample?EmployeeID=" + EmployeeID.getValue();
12030
                            //window.open(Url, "_self");
12031
                            //var selection_ = selection.getValue();
12032
                            //var EmployeeSearch = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12033
                            //var lokup = EmployeeSearch.setValue(selection_);
12034

    
12035
                            var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12036
                            if (count_lookup == 1) {
12037
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12038
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12039
                            } else {
12040
                                //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12041
                                Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12042
                                    //    tableName: tableName_,
12043

    
12044
                                    //}).show()
12045
                                    //_popUploadView.tableName = tableName_;
12046
                                    tableName: tableName_,
12047
                                    targetField: this.name,
12048
                                }).show()
12049
                            }
12050

    
12051
                            //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12052
                            //var a = _popUploadView.show();
12053
                            var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12054
                            text.setValue(EmployeeID_);
12055

    
12056
                            if (EmployeeID_ !== "") {
12057
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12058
                                var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12059
                                store.proxy.extraParams = {
12060
                                    tableName: tableName_, //'PDSEMP0002',
12061
                                    param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12062
                                };
12063
                                store.reload();
12064
                            }
12065
                        },
12066
                        listeners: {
12067
                            specialkey: function (f, e) {
12068
                                if (e.getKey() == e.ENTER) {
12069
                                    //alert("about to submit");
12070
                                    var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12071
                                    var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12072
                                    var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12073
                                    var EmployeeID_ = EmployeeID.getValue();
12074

    
12075
                                    var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12076
                                    if (count_lookup == 1) {
12077
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12078
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12079
                                    } else {
12080
                                        Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12081
                                            tableName: tableName_,
12082
                                            targetField: this.name,
12083
                                        }).show()
12084
                                        //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12085
                                        //_popUploadView.targetField = this.name;
12086
                                        //_popUploadView.show();
12087

    
12088
                                    }
12089
                                    //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12090
                                    //var a = _popUploadView.show();
12091
                                    var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12092
                                    text.setValue(EmployeeID_);
12093

    
12094
                                    if (EmployeeID_ !== "") {
12095
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12096
                                        var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12097
                                        store.proxy.extraParams = {
12098
                                            tableName: tableName_, //'PDSEMP0002',
12099
                                            param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12100
                                        };
12101
                                        store.reload();
12102
                                    }
12103
                                    //myform.getForm().submit();
12104
                                }
12105
                            }
12106
                        }
12107

    
12108
                    }, {
12109
                        xtype: 'tbspacer',
12110
                        width: 5
12111
                    }, {
12112
                        xtype: 'button',
12113
                        name: nameField_,
12114
                        anchor: '50%',
12115
                        text: 'Advance',
12116
                        listeners: {
12117
                            click: function () {
12118
                                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEmployee]').length;
12119
                                if (count_lookup == 1) {
12120
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField = this.name;
12121
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].show();
12122
                                } else {
12123
                                    Ext.create('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12124
                                        tableName: tableName_,
12125
                                        targetField: this.name,
12126
                                    }).show()
12127
                                    //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeAdvance");
12128
                                    //_popUploadView.targetField = this.name;
12129
                                    //_popUploadView.show();
12130

    
12131
                                }
12132
                            }
12133
                        },
12134
                    }
12135
                    ]
12136
                }
12137
                ]
12138
            }
12139
            ]
12140
        });
12141
        me.callParent(arguments);
12142
    }
12143
});
12144

    
12145
Ext.define('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12146
    extend: 'Ext.window.Window',
12147
    alias: 'widget.popup_employeequicksearch',
12148
    requires: [
12149
		// 'MinovaES.controller.sample.ctrlsample',
12150
		//'MinovaES.store.data.TableType',
12151
    ],
12152
    //controller: 'ctrlsample',
12153
    height: '85%',
12154
    width: '42%',
12155
    minWidth: '50%',
12156
    maxWidth: '100%',
12157
    bodyPadding: 0,
12158
    formname: undefined,
12159
    //modal: true,
12160
    title: 'Lookup - EmployeeID',
12161
    name: 'popup_lookupEMPID',
12162
    test: undefined,
12163
    targetField: undefined,
12164
    tableName: undefined,
12165
    afterender: function () {
12166
        test = nameform;
12167
    },
12168
    initComponent: function () {
12169

    
12170
        var me = this;
12171
        var targetField_ = me.targetField;
12172
        var form = me.test;
12173
        var tableName_ = me.tableName;
12174
        Ext.applyIf(me, {
12175
            items: [{
12176
                xtype: 'form',
12177
                name: 'frmSearch',
12178
                width: '100%',
12179
                height: 'auto',
12180
                dockedItems: [{
12181
                    xtype: 'toolbar',
12182
                    dock: 'top',
12183
                    layout: 'vbox',
12184
                    bodyPadding: 10,
12185
                    border: 0,
12186
                    items: [{
12187
                        xtype: 'fieldset',
12188
                        layout: 'hbox',
12189
                        width: '100%',
12190
                        border: 0,
12191
                        padding: 0,
12192
                        items: [{
12193
                            xtype: 'textfield',
12194
                            name: 'EmployeeSearch',
12195
                            fieldLabel: 'Emp ID/ External ID/ Full Name',
12196
                            width: 475,
12197
                            labelWidth: 185,
12198
                            enableKeyEvents: true,
12199
                            listeners: {
12200
                                specialkey: function (f, e) {
12201
                                    if (e.getKey() == e.ENTER) {
12202
                                        var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12203
                                        var emp_ = emp.getValue();
12204
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12205
                                        var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12206
                                        store.proxy.extraParams = {
12207
                                            tableName: tableName_, //'PDSEMP0002',
12208
                                            param: 'EmpID_ExternalID_FullName[like]' + emp_
12209
                                        };
12210
                                        store.reload();
12211
                                    }
12212
                                }
12213
                            }
12214
                        }, {
12215
                            xtype: 'tbspacer',
12216
                            width: 5
12217
                        }, {
12218
                            xtype: 'button',
12219
                            name: 'Search',
12220
                            text: 'Search',
12221
                            handler: function () {
12222
                                var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12223
                                var emp_ = emp.getValue();
12224
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12225
                                var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12226
                                store.proxy.extraParams = {
12227
                                    tableName: tableName_, //'PDSEMP0002',
12228
                                    param: 'EmpID_ExternalID_FullName[like]' + emp_
12229
                                };
12230
                                store.reload();
12231
                            },
12232

    
12233
                        }
12234
                        ]
12235
                    }
12236
                    ]
12237
                }
12238
                ],
12239
            }, {
12240
                items: [{
12241
                    xtype: "minovagrid1",
12242
                    name: "GridEmployeeID",
12243
                    storename: 'lookupEMPID',
12244
                    tableName: tableName_, //'PDSEMP0002',
12245
                    param: '',
12246
                    isLookup: true,
12247
                    pagesize: 25,
12248
                    height: 425,
12249
                    listeners: {
12250
                        beforeedit: function () {
12251
                            return false;
12252
                        },
12253
                        itemdblclick: function () {
12254
                            var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
12255
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12256
                            var Emp_ = selection.data.EmployeeID;
12257
                            //var formSelection = Ext.ComponentQuery.query('[name=' + form + ']')[0];
12258
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12259

    
12260
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
12261
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12262
                            //Ext.ComponentQuery.query('[name=EmployeeiD]')[0].setValue(selection.data.EmployeeID);;
12263
                            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
12264
                        }
12265
                    },
12266
                }, {
12267
                    xtype: 'pagingtoolbar',
12268
                    store: 'lookupEMPID',
12269
                    dock: 'bottom',
12270
                    displayInfo: true
12271
                }
12272
                ]
12273
            }
12274
            ]
12275
        });
12276
        me.callParent(arguments);
12277
    }
12278
});
12279
Ext.define('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12280
    extend: 'Ext.window.Window',
12281
    alias: 'widget.popup_employeeadvance',
12282
    requires: [
12283
		//'MinovaES.controller.sample.ctrlsample',
12284
		//'MinovaES.store.data.TableType',
12285
    ],
12286
    //controller: 'ctrlsample',
12287
    height: '85%',
12288
    width: '42%',
12289
    minWidth: '50%',
12290
    maxWidth: '100%',
12291
    bodyPadding: 10,
12292
    anchor: '50%',
12293
    formname: undefined,
12294
    //modal: true,
12295
    title: 'Lookup - EmployeeID',
12296
    name: 'popup_lookupEmployee',
12297
    test: undefined,
12298
    targetField: undefined,
12299
    tableName: undefined,
12300
    initComponent: function () {
12301
        var me = this;
12302
        var targetField_ = me.targetField;
12303
        var form = me.test;
12304
        var tableName_ = me.tableName;
12305
        Ext.applyIf(me, {
12306
            items: [{
12307
                xtype: 'form',
12308
                name: 'formlookup',
12309
                items: [{
12310
                    xtype: 'minovaform',
12311
                    name: 'frmlookup',
12312
                    tableName: tableName_, //'PDSEMP0001',
12313
                    param: '',
12314
                    isLookup: true,
12315
                    listeners: {
12316
                        onStockFormKeyPress: function (textfield, event, options) {
12317
                            if (event.getKey() == event.ENTER) {
12318
                                alert("test");
12319
                                //Ext.Msg.alert('Keys', 'You pressed the Enter key');
12320
                            }
12321
                        }
12322
                    },
12323
                    buttons: [{
12324
                        text: 'Search',
12325
                        //iconCls : 'fa-edit',
12326
                        //style : 'font-family: FontAwesome',
12327
                        listeners: {
12328
                            click: function () {
12329
                                var store = Ext.data.StoreManager.lookup('lookupStore');
12330
                                var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
12331
                                grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12332
                                var values_ = form.getValues();
12333
                                var fields_ = form.getFields().items;
12334
                                var param_ = '';
12335
                                for (var i = 0; i < fields_.length; i++) {
12336
                                    var val_ = form.getFields().items[i].getValue();
12337
                                    var xtype_ = form.getFields().items[i].xtype;
12338
                                    var oprator_ = '[like]';
12339
                                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
12340
                                        oprator_ = '[Equal]';
12341
                                    }
12342
                                    if (xtype_ == 'datefield') {
12343
                                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
12344
                                            oprator_ = '[LessThanEqual]';
12345
                                        } else {
12346
                                            oprator_ = '[GreaterThanEqual]';
12347
                                        }
12348
                                    }
12349
                                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
12350
                                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
12351
                                    }
12352
                                }
12353
                                store.proxy.extraParams = {
12354
                                    tableName: grid.tableName,
12355
                                    param: param_
12356
                                };
12357
                                store.removeAll();
12358
                                store.reload();
12359
                                store.loadPage(1);
12360
                            },
12361

    
12362
                        }
12363
                    }
12364
                    ]
12365
                }, {
12366
                    xtype: 'minovagrid',
12367
                    name: 'gridlookup',
12368
                    minHeight: 320,
12369
                    height: 250,
12370
                    tableName: tableName_, //'PDSEMP0001',
12371
                    param: '',
12372
                    isLookup: true,
12373
                    storename: 'lookupStore',
12374
                    pagesize: 25,
12375
                    listeners: {
12376
                        beforeedit: function () {
12377
                            return false;
12378
                        },
12379
                        itemdblclick: function () {
12380
                            var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12381
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12382
                            var Emp_ = selection.data.EmployeeID;
12383
                            //var formSelection = Ext.ComponentQuery.query('[name=EmployeeSelection]')[0];
12384
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12385
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField;
12386
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12387
                            Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].hide();
12388

    
12389
                        }
12390
                    },
12391
                    dockedItems: [{
12392
                        xtype: 'pagingtoolbar',
12393
                        store: 'lookupStore',
12394
                        dock: 'bottom',
12395
                        displayInfo: true
12396
                    }
12397
                    ]
12398
                }
12399
                ]
12400
            }
12401
            ]
12402
        });
12403
        me.callParent(arguments);
12404
    }
12405
});
12406
//end hamid
12407

    
12408

    
12409
// lookup tree
12410
Ext.define('MinovaES.view.orm.lookup.minovalookuptreePopup', {
12411
    extend: 'Ext.window.Window',
12412
    alias: 'widget.minovalookuptreePopup',
12413
    requires: [
12414

    
12415
    ],
12416
    height: '50%',
12417
    width: '40%',
12418
    minWidth: '50%',
12419
    maxWidth: '100%',
12420
    bodyPadding: 5,
12421
    modal: true,
12422
    name: 'mainlookupTree',
12423
    objFilter: undefined,
12424
    treeSructure: undefined, // object relationship
12425
    objClassValue: undefined, // object yang akan di input ke field
12426
    formname: undefined, // nama form
12427
    targetField: undefined, // nama field yang akan diset value
12428
    //title:'judul',
12429
    bodyPadding: 0,
12430
    initComponent: function () {
12431
        var me = this;
12432
        var objFilter_ = me.objFilter;
12433
        var treeSructure_ = me.treeSructure;
12434
        var formname_ = me.formname;
12435
        var objClassValue_ = me.objClassValue;
12436
        var targetField_ = me.targetField;
12437
        var AllObjectClass = treeSructure_.split('-');
12438
        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0];
12439
        var StartDate_ = '';
12440
        if (form_) {
12441

    
12442
            if (form_.getForm().findField('StartDate')) {
12443
                StartDate_ = form_.getForm().findField('StartDate').getValue();
12444
            } else {
12445
                StartDate_ = MinovaUtil.GetNowDate();
12446
            }
12447

    
12448
        }
12449

    
12450
        Ext.applyIf(me, {
12451
            items: [{
12452
                //xtype : 'panel',
12453
                items: [{
12454
                    xtype: 'tabpanel',
12455
                    items: [{
12456

    
12457
                        xtype: 'form',
12458
                        title: 'Structured Search',
12459
                        height: '70%',
12460
                        tabConfig: {
12461
                            tooltip: 'Search by tree'
12462
                        },
12463
                        items: [{
12464
                            xtype: 'form',
12465
                            items: [{
12466

    
12467
                                xtype: 'treepanel',
12468
                                rootVisible: false,
12469
                                height: 400,
12470

    
12471
                                name: 'searchByTreePopUp',
12472
                                useArrows: true,
12473
                                animate: false,
12474
                                targetField: targetField_,
12475
                                formname: formname_,
12476
                                root: {
12477
                                    expanded: true,
12478
                                    nodeType: 'async',
12479
                                    ext: 'Favorites',
12480
                                    id: 'null'
12481
                                },
12482
                                listeners: {
12483
                                    afterrender: function (me_) {
12484
                                        me_.mask();
12485
                                        if (treeSructure_ != 'O-O-P') {
12486
                                            var countCol = me_.columns.length;
12487
                                            me_.columns[countCol - 1].setHidden(true);
12488

    
12489
                                        }
12490
                                        if (StartDate_ != '') {
12491
                                            var node = "root";
12492
                                            var ObjectClass_ = treeSructure_.split('-');
12493
                                            //Ext.Ajax.request({
12494
                                            //    method: 'POST',
12495
                                            //    async: false,
12496
                                            //    url: '/UserControl/GetStoreAuth',
12497
                                            //    params: {
12498
                                            //        tableName: "PHROM0001",
12499
                                            //        param: "ObjectClass[=]" + ObjectClass_[0],
12500
                                            //        menuId: MinovaUtil.GetMenuID()
12501
                                            //    },
12502
                                            //    success: function (response) {
12503
                                            //        var results = Ext.decode(response.responseText);
12504
                                            //        var data_ = results.data;
12505
                                            //        if (data_.length > 0 && data_.length == 1) {
12506
                                            //            node = ObjectClass_[0] + data_[0].ObjectID;
12507
                                            //        }
12508

    
12509
                                            //    }
12510
                                            //});
12511

    
12512
                                            Ext.Ajax.request({
12513
                                                async: false,
12514
                                                //url: '/ORM/GetRelObjectTreeAsync?node=' + node + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12515
                                                url: '/ORM/GetRelObjectTreeAsyncAuth?node=' + 'root' + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_ + '&ObjectClass=' + ObjectClass_[0] + '&MenuID=' + /*MinovaUtil.GetMenuID()*/'PM01',
12516
                                                success: function (response) {
12517
                                                    var results = Ext.decode(response.responseText);
12518
                                                    var data_ = results.results;
12519
                                                    //console.log(data_)
12520
                                                    var pnl = Ext.ComponentQuery.query('[name=searchByTreePopUp]')[0];
12521
                                                    pnl.store.setRootNode({
12522
                                                        expanded: true,
12523
                                                        nodetype: 'async',
12524
                                                        children: data_
12525
                                                        //[]
12526
                                                    });
12527
                                                }
12528
                                            });
12529

    
12530
                                        }
12531
                                        me_.unmask();
12532
                                    },
12533
                                    afteritemexpand: function (node, index, item, eOpts) {
12534
                                        var me = this;
12535
                                        var data_ = null;
12536
                                        var idx = 0;
12537
                                        var tree_ = Ext.ComponentQuery.query('treepanel[name=searchByTreePopUp]')[0];
12538
                                        var v = tree_.getView();
12539
                                        tree_.mask('Expanding tree...');
12540
                                        var main_ = Ext.ComponentQuery.query('[name=ORMMain]')[0];
12541
                                        Ext.Ajax.request({
12542
                                            async: false,
12543
                                            url: '/ORM/GetRelObjectTreeAsync?node=' + node.get('Id') + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12544
                                            success: function (response) {
12545
                                                var results = Ext.decode(response.responseText);
12546
                                                data_ = results.results;
12547
                                                console.log(data_)
12548
                                            }
12549
                                        });
12550

    
12551
                                        if (data_.length > 0) {
12552
                                            data_.forEach(function (rec) {
12553

    
12554
                                                console.log(rec.Id)
12555
                                                if (v.store.data.find('Id', rec.Id) == null) {
12556
                                                    node.appendChild(data_[idx])
12557
                                                }
12558
                                                idx++;
12559
                                            })
12560
                                        }
12561

    
12562
                                        setTimeout(function () {
12563

    
12564
                                            tree_.unmask();
12565
                                        }, 200);
12566

    
12567
                                    },
12568
                                    itemdblclick: function (this_, record, item, index, e, eOpts) {
12569
                                        var cek = false;
12570
                                        var class_ = objClassValue_;
12571
                                        var classDt = class_.split(']');
12572
                                        var classVal = "";
12573
                                        if (classDt.length == 1) {
12574
                                            classVal = classDt[0];
12575
                                        }
12576
                                        if (classDt.length > 1) {
12577
                                            classVal = classDt[1];
12578
                                        }
12579
                                        if (classVal == record.data.ObjectType) {
12580
                                            var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12581
                                            var type = 'rc';
12582
                                            if (form_.findField(targetField_).nameTable) {
12583
                                                type = form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase();
12584
                                            }
12585
                                            if (type != "rc") {
12586
                                                if (classVal == 'P' && (MinovaUtil.GetMenuID() == 'PA02' || MinovaUtil.GetMenuID() == 'ESS_MUTATION' || MinovaUtil.GetMenuID() == 'ESS_PROMOTION')) {
12587
                                                    // cek apakah posisis sudah di assign
12588
                                                    var hasil = null;
12589
                                                    Ext.Ajax.request({
12590
                                                        async: false,
12591
                                                        method: 'POST',
12592
                                                        url: '/UserControl/GetStore',
12593
                                                        params: {
12594
                                                            tableName: 'PHROM0002',
12595
                                                            param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[LessThanEqual]' + StartDate_ + ',EndDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectId
12596
                                                        },
12597
                                                        success: function (response) {
12598
                                                            var results = Ext.decode(response.responseText);
12599
                                                            //hasil = results.data[0].RelationshipObject;
12600
                                                            hasil = results.data.length;
12601
                                                            if (hasil == 0) {
12602
                                                                cek = true;
12603
                                                            } else {
12604
                                                                //Ext.Msg.show({
12605
                                                                //    title: 'Warning',
12606
                                                                //    message: MinovaMessageData('OM0001', ''),
12607
                                                                //    buttons: Ext.Msg.OK,
12608
                                                                //     fn: function (choice) {
12609
                                                                //        console.log(choice);
12610
                                                                //        if (choice === 'ok') {
12611
                                                                //        }
12612

    
12613
                                                                //    }
12614
                                                                //});
12615
                                                                //alert(MinovaMessageData('OM0001', ''))
12616
																MinovaMessageError("Position Occupied", "OM0001", "");
12617
                                                            }
12618
                                                            //count = hasil.length
12619
                                                        }
12620
                                                    });
12621
                                                } else {
12622
                                                    cek = true;
12623
                                                }
12624
                                            } else {
12625
                                                cek = true;
12626
                                            }
12627
                                        }
12628
                                        if (cek) {
12629
                                            // set value to form
12630
                                            var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12631
                                            form_.findField(targetField_).setValue('a');
12632
                                            form_.findField(targetField_).valData = 'a';
12633
                                            form_.findField(targetField_).setValue(record.data.Text);
12634
                                            form_.findField(targetField_).valData = record.data.ObjectId;
12635
                                            form_.findField(targetField_).focus();
12636
                                            if (form_.findField(targetField_).nextSibling()) {
12637
                                                form_.findField(targetField_).nextSibling().focus();
12638
                                            } else {
12639
                                                form_.findField(targetField_).blur();
12640
                                            }
12641
                                            Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12642
                                        }
12643

    
12644
                                    }
12645
                                },
12646

    
12647
                                columns: [{
12648
                                    xtype: 'treecolumn',
12649
                                    text: 'Organization Structure',
12650
                                    flex: 2,
12651
                                    sortable: true,
12652
                                    dataIndex: 'TextObject'
12653
                                }, {
12654
                                    text: 'Object ID',
12655
                                    flex: 1,
12656
                                    sortable: true,
12657
                                    dataIndex: 'ObjectId',
12658
                                }, {
12659
                                    text: 'Object Class',
12660
                                    flex: 1,
12661
                                    sortable: true,
12662
                                    dataIndex: 'ObjectType',
12663
                                }, {
12664
                                    text: 'Object Abbr',
12665
                                    flex: 1,
12666
                                    sortable: true,
12667
                                    dataIndex: 'TextObject',
12668
                                }, {
12669
                                    text: 'Start Date',
12670
                                    flex: 1,
12671
                                    sortable: true,
12672
                                    dataIndex: 'StartDate',
12673
                                }, {
12674
                                    text: 'End Date',
12675
                                    flex: 1,
12676
                                    sortable: true,
12677
                                    dataIndex: 'EndDate',
12678
                                }, {
12679
                                    xtype: 'actioncolumn',
12680
                                    text: 'Vacant Status',
12681
                                    flex: 1,
12682
                                    dataIndex: 'IsVacant',
12683
                                    sortable: true,
12684
                                    iconCls: 'fa-child',
12685
                                    renderer: function (value, metadata, record) {
12686
                                        if (record.data.ObjectType == "P") {
12687
                                            var Vacant = record.data.IsVacant;
12688
                                            if (!Vacant) {
12689
                                                metadata.tdStyle = 'font-family: FontAwesome';
12690
                                            }
12691

    
12692
                                        }
12693

    
12694
                                    },
12695
                                }
12696
                                ]
12697

    
12698
                            }
12699
                            ]
12700
                        }
12701
                        ]
12702
                    }, {
12703
                        title: 'Search by Object',
12704
                        height: 400,
12705
                        autoScroll: true,
12706
                        items: [{
12707
                            xtype: 'form',
12708
                            name: 'filterbyObj',
12709
                            margin: '5 5 5 5',
12710
                            buttons: [{
12711
                                text: 'Search',
12712
                                name: 'SearchAssign',
12713
                                handler: function () {
12714
                                    var storeGrid = Ext.StoreMgr.lookup("gridObj");
12715
                                    var form = Ext.ComponentQuery.query('[name=filterbyObj]')[0].getForm();
12716
                                    if (form.isValid()) {
12717
                                        var values_ = form.getValues();
12718
                                        storeGrid.proxy.url = '/ORM/SearchByObject?StartDate=' + values_.StartDate + "&EndDate=99991231" + "&ObjectID=" + values_.ObjectID + "&ObjectClass=" + values_.ObjectClass +
12719
                                            "&ObjectClassTarget=" + values_.ObjectClassTarget + "&ObjectDescription=" + values_.ObjectDescription +
12720
                                            "&Abbreviation=" + values_.Abbreviation + "&MenuID=" + MinovaUtil.GetMenuID() +
12721
                                            "&TreeStructCode=" + values_.TreeStructCode;
12722
                                        storeGrid.load({});
12723
                                        storeGrid.loadPage(1);
12724

    
12725
                                    }
12726

    
12727
                                }
12728
                            }
12729
                            ],
12730
                            items: [{
12731
                                xtype: "datefield",
12732
                                fieldLabel: "Date",
12733
                                name: 'StartDate',
12734
                                submitFormat: 'Ymd',
12735
                                format: 'd/m/Y',
12736
                                value: new Date(),
12737
                                anchor: '50%',
12738
                            }, {
12739
                                xtype: "hidden",
12740
                                fieldLabel: "Date",
12741
                                name: 'ObjectClass',
12742
                                value: AllObjectClass[0],
12743
                                anchor: '50%',
12744
                            }, {
12745
                                xtype: "hidden",
12746
                                fieldLabel: "Date",
12747
                                name: 'EndDate',
12748
                                value: '99991231',
12749
                                anchor: '50%',
12750
                            }, {
12751
                                xtype: "combobox",
12752
                                fieldLabel: "Object Class",
12753
                                name: 'ObjectClassTarget',
12754
                                allowBlank: false,
12755
                                anchor: '50%',
12756
                                displayField: 'desc',
12757
                                valueField: 'code',
12758
                                store: Ext.create('Ext.data.Store', {
12759
                                    storeId: 'storeYesNo',
12760
                                    fields: ['code', 'desc'],
12761
                                    data: [{
12762
                                        "desc": AllObjectClass[0],
12763
                                        "code": AllObjectClass[0]
12764
                                    }, {
12765
                                        "desc": AllObjectClass[2],
12766
                                        "code": AllObjectClass[2]
12767
                                    }
12768
                                    ]
12769
                                }),
12770
                                queryMode: 'local',
12771
                            }, {
12772
                                xtype: "textfield",
12773
                                fieldLabel: "Object ID",
12774
                                name: 'ObjectID',
12775
                                anchor: '50%',
12776
                            }, {
12777
                                xtype: "textfield",
12778
                                fieldLabel: "Object Description",
12779
                                name: 'ObjectDescription',
12780
                                anchor: '50%',
12781
                            }, {
12782
                                xtype: "textfield",
12783
                                fieldLabel: "Abbreviation",
12784
                                name: 'Abbreviation',
12785
                                anchor: '50%',
12786
                            }, {
12787
                                xtype: "hidden",
12788
                                fieldLabel: "MenuID",
12789
                                name: 'MenuID',
12790
                                anchor: '50%',
12791
                                value: MinovaUtil.GetMenuID()
12792
                            }, {
12793
                                xtype: "hidden",
12794
                                fieldLabel: "TreeStructCode",
12795
                                name: 'TreeStructCode',
12796
                                anchor: '50%',
12797
                                value: treeSructure_
12798
                            },
12799
                            ],
12800
                        }, {
12801
                            xtype: "minovagrid1",
12802
                            tableName: 'PDSBS0008',
12803
                            name: "gridbyObject",
12804
                            param: '',
12805
                            autoLoad: false,
12806
                            pagesize: 5,
12807
                            storename: 'gridObj',
12808
                            isLookup: true,
12809
                            height: 250,
12810
                            targetField: targetField_,
12811
                            formname: formname_,
12812
                            bodyPadding: 0,
12813
                            listeners: {
12814
                                afterrender: function (me_) {
12815
                                    if (treeSructure_ != 'O-O-P') {
12816
                                        var countCol = me_.columns.length;
12817
                                        me_.columns[countCol - 1].setHidden(true);
12818

    
12819
                                    }
12820
                                },
12821
                                itemdblclick: function (this_, record, item, index, e, eOpts) {
12822
                                    console.log(record.data);
12823
                                    var cek = false;
12824
                                    if (objClassValue_ == record.data.ObjectClass) {
12825
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12826
                                        if (form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase() != "rc") {
12827
                                            if (objClassValue_ == 'P') {
12828
                                                // cek apakah posisis sudah di assign
12829
                                                var hasil = null;
12830
                                                Ext.Ajax.request({
12831
                                                    async: false,
12832
                                                    method: 'POST',
12833
                                                    url: '/UserControl/GetStore',
12834
                                                    params: {
12835
                                                        tableName: 'PHROM0002',
12836
                                                        param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectID
12837
                                                    },
12838
                                                    success: function (response) {
12839
                                                        var results = Ext.decode(response.responseText);
12840
                                                        //hasil = results.data[0].RelationshipObject;
12841
                                                        hasil = results.data.length;
12842
                                                        if (hasil == 0) {
12843
                                                            cek = true;
12844
                                                        }
12845
                                                        //count = hasil.length
12846
                                                    }
12847
                                                });
12848

    
12849
                                            } else {
12850
                                                cek = true;
12851
                                            }
12852
                                        } else {
12853
                                            cek = true;
12854
                                        }
12855
                                    }
12856
                                    if (cek) {
12857
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12858
                                        //form_.findField(targetField_).setValue(record.data.ObjectID);
12859
                                        //form_.findField(targetField_).valData = record.data.ObjectID + ' - ' + record.data.ObjectDescription;
12860
                                        form_.findField(targetField_).setValue('-');
12861
                                        form_.findField(targetField_).valData = '-';
12862
                                        form_.findField(targetField_).setValue(record.data.ObjectID);
12863
                                        form_.findField(targetField_).valData = record.data.ObjectID;
12864
                                        form_.findField(targetField_).setRawValue(record.data.ObjectID + ' - ' + record.data.ObjectDescription);
12865
                                        Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12866
                                    } else {
12867
                                        alert(MinovaMessageData('OM0001', ''))
12868
                                    }
12869
                                },
12870
                                beforeclick: function () {
12871
                                    return false;
12872
                                }
12873

    
12874
                            },
12875
                            dockedItems: [{
12876
                                xtype: 'pagingtoolbar',
12877
                                store: 'gridObj',
12878
                                dock: 'bottom',
12879
                                displayInfo: true
12880
                            }
12881

    
12882
                            ]
12883
                        },
12884
                        ]
12885

    
12886
                    }
12887
                    ]
12888

    
12889
                }
12890
                ]
12891
            },
12892
            ]
12893

    
12894
        });
12895
        me.callParent(arguments);
12896
    }
12897
});
12898

    
12899
Ext.define('MinovaUtil.MinovaES.MinovaLookupTree', {
12900
    extend: 'Ext.form.field.Trigger',
12901
    alias: ['widget.minovalookuptree', 'widget.MinovaLookupTree'],
12902
    treeSructure: undefined, // object relationship
12903
    objClassValue: undefined, // object yang akan di input ke field
12904
    formname: undefined, // nama form
12905
    targetField: undefined, // nama field yang akan diset value
12906
    initComponent: function () {
12907

    
12908
        this.callParent();
12909
    },
12910
    getValue: function () {
12911
        var me = this;
12912
        var hasil = '';
12913
        if (this.valData) {
12914
            hasil = this.valData.split('-')[0].replace(' ', '');
12915

    
12916
        } else {
12917
            if (me.rawValue != '' && me.rawValue != undefined) {
12918
                hasil = me.rawValue.split('-')[0].replace(' ', '');
12919
            }
12920
        }
12921

    
12922
        return hasil;
12923
    },
12924
    getSubmitValue: function () {
12925
        var me = this;
12926
        var hasil = '';
12927
        if (this.valData) {
12928
            hasil = this.valData.split('-')[0].replace(' ', '');
12929
        } else {
12930
            if (me.rawValue != '' && me.rawValue != undefined) {
12931
                hasil = me.rawValue.split('-')[0].replace(' ', '');
12932
            }
12933
        }
12934

    
12935
        return hasil;
12936
    },
12937
    onTriggerClick: function () {
12938
        var _treeSructure = this.treeSructure;
12939
        var _objClassValue = this.objClassValue;
12940
        var _formname = this.formname;
12941
        var _targetField = this.name;
12942
        var _fieldLabel = this.fieldLabel;
12943
        var _objFilter = this.objFilter;
12944
        var Mainform = Ext.ComponentQuery.query('[name=' + _formname + ']')[0];
12945
        var _StartDate = MinovaUtil.GetNowDate();
12946
        if (Mainform) {
12947
            if (Mainform.getForm().findField('StartDate')) {
12948
                _StartDate = Mainform.getForm().findField('StartDate').getValue();
12949
            }
12950
        }
12951
        //alert(treeSructure_ + ',' + objClassValue_ + ',' + formname_ + ',' + targetField_)
12952
        if (_StartDate != "") {
12953
            Ext.create('MinovaES.view.orm.lookup.minovalookuptreePopup', {
12954
                name: _targetField + 'lookUp',
12955
                treeSructure: _treeSructure, // object relationship
12956
                objClassValue: _objClassValue, // object yang akan di input ke field
12957
                formname: _formname, // nama form
12958
                targetField: _targetField,
12959
                objFilter: _objFilter,
12960
                title: 'Lookup ' + _fieldLabel
12961
            }).show()
12962
        } else {
12963
            MinovaMessage('', 'BS0001', 'Start Date', 'E')
12964
        }
12965

    
12966
    },
12967
});
12968

    
12969
Ext.define('MinovaUtil.MinovaES.LookupEmployee', {
12970
    extend: 'Ext.window.Window',
12971
    alias: 'widget.minovalookupemployee',
12972
    requires: [],
12973
    height: '87%', //'60%'
12974
    width: '41%',
12975
    minWidth: '50%',
12976
    maxWidth: '100%',
12977
    bodyPadding: 0,
12978
    formname: undefined,
12979
    name: 'popup_lookupEMPID',
12980
    test: undefined,
12981
    vtype: 'validateMinovaXss',
12982
    targetField: undefined,
12983
    valueField: undefined,
12984
    tableName: undefined,
12985
    LookupFunction: undefined,
12986
    isGrid: undefined,
12987
    listeners: {
12988
        afterrender: function (f) {
12989
            f.setTitle('Lookup - ' + f.targetField);
12990
        }
12991
    },
12992
    initComponent: function () {
12993
        var me = this;
12994
        var targetField_ = me.targetField;
12995
        var valueField_ = me.valueField;
12996
        var form = me.test;
12997
        var tableName_ = me.tableName;
12998
        var isGrid = me.isGrid_;
12999
        var LookupFunction = me.LookupFunction;
13000
        param_ = null;
13001

    
13002
        var filterParam_ = me.filterParam;
13003
        if (tableName_ == "PDSRC0002") {
13004
            fieldLabel_ = 'App ID/ External ID/ Full Name';
13005
        } else {
13006
            fieldLabel_ = 'Emp ID/ External ID/ Full Name';
13007
        }
13008
        Ext.applyIf(me, {
13009
            items: [{
13010
                items: [{
13011
                    xtype: 'tabpanel',
13012
                    items: [{
13013
                        xtype: 'form',
13014
                        title: 'Quick Search',
13015
                        height: '70%',
13016
                        items: [{
13017
                            xtype: 'form',
13018
                            name: 'frmSearch',
13019
                            width: '100%',
13020
                            height: 'auto',
13021
                            dockedItems: [{
13022
                                xtype: 'toolbar',
13023
                                dock: 'top',
13024
                                layout: 'vbox',
13025
                                bodyPadding: 10,
13026
                                border: 0,
13027
                                items: [{
13028
                                    xtype: 'fieldset',
13029
                                    layout: 'hbox',
13030
                                    width: '100%',
13031
                                    border: 0,
13032
                                    padding: 0,
13033
                                    items: [{
13034
                                        xtype: 'textfield',
13035
                                        name: 'EmployeeSearch',
13036
                                        fieldLabel: fieldLabel_,
13037
                                        width: 470,
13038
                                        labelWidth: 185,
13039
                                        enableKeyEvents: true,
13040
                                        filterParam: filterParam_,
13041
                                        listeners: {
13042
                                            specialkey: function (f, e) {
13043
                                                if (e.getKey() == e.ENTER) {
13044
                                                    var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13045
                                                    var emp_ = emp.getValue();
13046
                                                    var store = Ext.data.StoreManager.lookup('storeQC');
13047
                                                    var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13048
                                                    if (tableName_ == 'PDSRC0002') {
13049
                                                        param_ = 'AppIDExternalIDFullName[like]' + emp_
13050
                                                    } else {
13051
                                                        param_ = 'EmpIDExternalIDFullName[like]' + emp_
13052
                                                    }
13053
                                                    if (this.filterParam) {
13054
                                                        param_ = param_ + ',' + this.filterParam_
13055
                                                    }
13056

    
13057
                                                    store.proxy.extraParams = {
13058
                                                        tableName: tableName_,
13059
                                                        param: param_,
13060
                                                        menuId: MinovaUtil.GetMenuID()
13061
                                                    };
13062
                                                    store.removeAll();
13063
                                                    store.reload();
13064
                                                    store.loadPage(1);
13065
                                                }
13066
                                            }
13067
                                        }
13068
                                    }, {
13069
                                        xtype: 'tbspacer',
13070
                                        width: 5
13071
                                    }, {
13072
                                        xtype: 'button',
13073
                                        name: 'Search',
13074
                                        text: 'Search',
13075
                                        filterParam: filterParam_,
13076
                                        handler: function () {
13077
                                            var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13078
                                            var emp_ = emp.getValue();
13079
                                            var store = Ext.data.StoreManager.lookup('storeQC');
13080
                                            var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13081

    
13082
                                            if (tableName_ == 'PDSRC0002') {
13083
                                                param_ = 'AppIDExternalIDFullName[like]' + emp_
13084
                                            } else {
13085
                                                param_ = 'EmpIDExternalIDFullName[like]' + emp_
13086
                                            }
13087
                                            if (this.filterParam) {
13088
                                                param_ = param_ + ',' + this.filterParam
13089
                                            }
13090
                                            store.proxy.extraParams = {
13091
                                                tableName: tableName_,
13092
                                                param: param_,
13093
                                                menuId: MinovaUtil.GetMenuID()
13094
                                            };
13095
                                            store.removeAll();
13096
                                            store.reload();
13097
                                            store.loadPage(1);
13098
                                        }
13099
                                    }
13100
                                    ]
13101
                                }
13102
                                ]
13103
                            }
13104
                            ]
13105
                        }, {
13106
                            items: [{
13107
                                xtype: "minovagrid1",
13108
                                name: "GridEmployeeID",
13109
                                storename: 'storeQC',
13110
                                tableName: tableName_,
13111
                                param: '',
13112
                                isLookup: true,
13113
                                pagesize: 25,
13114
                                height: 398,
13115
                                LookupFunction: LookupFunction,
13116
                                valueField: valueField_,
13117
                                targetField: targetField_,
13118
                                isGrid: true,
13119
                                listeners: {
13120
                                    beforeedit: function () {
13121
                                        return false;
13122
                                    },
13123
                                    itemdblclick: function () {
13124
                                        var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
13125
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
13126
                                        var Emp_ = selection.data.EmployeeID;
13127
                                        LookupFunction = this.LookupFunction;
13128
                                        eval(LookupFunction);
13129
                                        var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13130
                                        Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13131
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13132
                                    }
13133
                                },
13134
                            }, {
13135
                                xtype: 'pagingtoolbar',
13136
                                store: 'storeQC',
13137
                                dock: 'bottom',
13138
                                displayInfo: true
13139
                            }
13140
                            ]
13141
                        }
13142
                        ]
13143
                    }, {
13144
                        title: 'Advance Search',
13145
                        items: [{
13146
                            xtype: 'form',
13147
                            name: 'formlookup',
13148
                            items: [{
13149
                                xtype: 'minovaform',
13150
                                name: 'frmlookup',
13151
                                tableName: tableName_,
13152
                                param: filterParam_,
13153
                                isLookup: true,
13154
                                listeners: {
13155
                                    onStockFormKeyPress: function (textfield, event, options) {
13156
                                        if (event.getKey() == event.ENTER) {
13157
                                            alert("test");
13158
                                        }
13159
                                    }
13160
                                },
13161
                                buttons: [{
13162
                                    text: 'Search',
13163
                                    filterParam: filterParam_,
13164
                                    listeners: {
13165
                                        click: function () {
13166
                                            var store = Ext.data.StoreManager.lookup('storeadvance');
13167
                                            var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
13168
                                            grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13169
                                            var values_ = form.getValues();
13170
                                            var fields_ = form.getFields().items;
13171
                                            var param_ = '';
13172
                                            for (var i = 0; i < fields_.length; i++) {
13173
                                                var val_ = form.getFields().items[i].getValue();
13174
                                                var xtype_ = form.getFields().items[i].xtype;
13175
                                                var oprator_ = '[like]';
13176
                                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
13177
                                                    oprator_ = '[Equal]';
13178
                                                }
13179
                                                if (xtype_ == 'datefield') {
13180
                                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
13181
                                                        oprator_ = '[LessThanEqual]';
13182
                                                    } else {
13183
                                                        oprator_ = '[GreaterThanEqual]';
13184
                                                    }
13185
                                                }
13186
                                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
13187
                                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
13188
                                                }
13189
                                            }
13190
                                            if (this.filterParam_) {
13191
                                                param_ = param_ + ',' + this.filterParam_
13192
                                            }
13193
                                            store.proxy.extraParams = {
13194
                                                tableName: grid.tableName,
13195
                                                param: param_,
13196
                                                menuId: MinovaUtil.GetMenuID()
13197
                                            };
13198
                                            store.removeAll();
13199
                                            store.reload();
13200
                                            store.loadPage(1);
13201
                                        },
13202

    
13203
                                    }
13204
                                }
13205
                                ]
13206
                            }, {
13207
                                xtype: 'minovagrid1', // update by hamid 20170208
13208
                                name: 'gridlookup',
13209
                                minHeight: 312,
13210
                                height: 290,
13211
                                tableName: tableName_, //'PDSEMP0001',
13212
                                param: '',
13213
                                isLookup: true,
13214
                                storename: 'storeadvance',
13215
                                pagesize: 25,
13216
                                valueField: valueField_,
13217
                                targetField: targetField_,
13218
                                hidebutton: 0, // update by hamid 20170208
13219
                                isGrid: true,
13220
                                listeners: {
13221
                                    beforeedit: function () {
13222
                                        return false;
13223
                                    },
13224
                                    itemdblclick: function () {
13225
                                        var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13226
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
13227
                                        var Emp_ = selection.data.EmployeeID;
13228
                                        LookupFunction = this.LookupFunction;
13229
                                        eval(LookupFunction);
13230
                                        var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13231
                                        Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13232
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13233
                                    }
13234
                                },
13235
                                dockedItems: [{
13236
                                    xtype: 'pagingtoolbar',
13237
                                    store: 'storeadvance',
13238
                                    dock: 'bottom',
13239
                                    displayInfo: true
13240
                                }
13241
                                ]
13242
                            }
13243
                            ]
13244

    
13245
                        }
13246
                        ]
13247

    
13248
                    }
13249
                    ]
13250

    
13251
                }
13252
                ]
13253
            }
13254
            ]
13255
        });
13256
        me.callParent(arguments);
13257
    }
13258
});
13259

    
13260
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployee', {
13261
    extend: 'Ext.form.field.Trigger',
13262
    alias: 'widget.lookupemployee',
13263

    
13264
    formname: undefined,
13265
    fieldname: undefined,
13266
    allowBlank: undefined,
13267
    width: undefined,
13268
    tableName: undefined,
13269
    LookupFunction: undefined,
13270
    targetField: undefined,
13271
    vtype: 'validateMinovaXss',
13272
    fieldValue: undefined,
13273
    initComponent: function () {
13274

    
13275
        this.callParent();
13276
    },
13277
    onTriggerClick: function () {
13278
        var nameField_ = this.fieldname;
13279
        var blank = this.allowBlank;
13280
        var width_ = this.width;
13281
        var tableName_ = this.tableName;
13282
        var panelform = "form" + this.name;
13283
        //add filer by atin
13284
        var filterParam_ = this.filterParam;
13285
        // and add by atin
13286
        var _targetField = this.name;
13287
        if (this.targetField) {
13288
            _targetField = targetField
13289
        }
13290
        var fieldValue_ = this.fieldValue;
13291
        var _fieldLabel = this.fieldLabel;
13292

    
13293
        //var tableName_ = this.tableName;
13294
        var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13295
        var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13296
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13297
        var EmployeeID_ = EmployeeID.getValue();
13298
        var LookupFunction = this.LookupFunction;
13299
        var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13300
        if (count_lookup == 1) {
13301
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13302
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13303
        } else {
13304
            Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13305
                tableName: tableName_,
13306
                targetField: this.name,
13307
                fieldValue: fieldValue_,
13308
                LookupFunction: LookupFunction,
13309
                filterParam: filterParam_,
13310
            }).show()
13311
        }
13312
        var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13313
        text.setValue(EmployeeID_);
13314
        var store = Ext.data.StoreManager.lookup('storeQC');
13315
        if (EmployeeID_ !== "") {
13316

    
13317
            var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13318
            if (tableName_ == 'PDSEMP0002') {
13319
                param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13320
            } else {
13321
                param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13322
            }
13323
            if (filterParam_) {
13324
                param_ = param_ + ',' + filterParam_;
13325
            }
13326
            store.proxy.extraParams = {
13327
                tableName: tableName_, //'PDSEMP0002',
13328
                param: param_,
13329
                menuId: MinovaUtil.GetMenuID()
13330
            };
13331
            store.reload();
13332
        } else {
13333
            store.proxy.extraParams = {
13334
                tableName: tableName_, //'PDSEMP0002',
13335
                param: filterParam_,
13336
                menuId: MinovaUtil.GetMenuID()
13337
            };
13338
            store.reload();
13339
        }
13340

    
13341
    },
13342
    listeners: {
13343
        specialkey: function (f, e) {
13344
            if (e.getKey() == e.ENTER) {
13345
                //alert("about to submit");
13346
                var nameField_ = this.fieldname;
13347
                var blank = this.allowBlank;
13348
                var width_ = this.width;
13349
                var tableName_ = this.tableName;
13350
                var panelform = "form" + this.name;
13351
                //add filer by atin
13352
                var filterParam = this.filterParam;
13353
                // and add by atin
13354
                var _targetField = this.name;
13355
                var _fieldLabel = this.fieldLabel;
13356
                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13357
                var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13358
                var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13359
                var EmployeeID_ = EmployeeID.getValue();
13360

    
13361
                var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13362
                if (count_lookup == 1) {
13363
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13364
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13365
                } else {
13366
                    Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13367
                        tableName: tableName_,
13368
                        targetField: this.name,
13369
                        fieldValue: this.fieldValue,
13370
                        LookupFunction: this.LookupFunction,
13371
                        filterParam: filterParam,
13372
                    }).show()
13373
                }
13374
                var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13375
                text.setValue(EmployeeID_);
13376

    
13377
                if (EmployeeID_ !== "") {
13378
                    var store = Ext.data.StoreManager.lookup('storeQC');
13379
                    var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13380
                    if (tableName_ == 'PDSEMP0002') {
13381
                        param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13382
                    } else {
13383
                        param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13384
                    }
13385
                    if (filterParam_) {
13386
                        param_ = param_ + ',' + filterParam_;
13387
                    }
13388
                    store.proxy.extraParams = {
13389
                        tableName: tableName_, //'PDSEMP0002',
13390
                        param: param_,
13391
                        menuId: MinovaUtil.GetMenuID()
13392
                    };
13393
                    store.reload();
13394
                }
13395
            }
13396
        }
13397
    }
13398

    
13399
});
13400
Ext.define('MinovaUtil.MinovaES.UploadFile', {
13401
    extend: 'Ext.form.field.Trigger',
13402
    alias: 'widget.uploadfile',
13403

    
13404
    //fieldLabel: undefined,
13405
    uploadName: 'uploadName',
13406
    formname: undefined,
13407
    fieldname: undefined,
13408
    allowBlank: undefined,
13409
    width: undefined,
13410
    tableName: undefined,
13411
    initComponent: function () {
13412

    
13413
        this.callParent();
13414
    },
13415
    onTriggerClick: function () {
13416
        var nameField_ = this.fieldname;
13417
        var blank = this.allowBlank;
13418
        var width_ = this.width;
13419
        var tableName_ = this.tableName;
13420
        var panelform = "form" + this.name;
13421
        var val_ = this.value;
13422
        var _targetField = this.name;
13423
        var _fieldLabel = this.fieldLabel;
13424

    
13425
        //var tableName_ = this.tableName;
13426
        var count_lookup = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13427
        var lookupEMPID = Ext.ComponentQuery.query('[name=FormFileUpload]')[0];
13428
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13429
        var EmployeeID_ = EmployeeID.getValue();
13430

    
13431
        var FormFileUpload = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13432
        Ext.create('MinovaES.view.uploadfile.fileupload', {
13433
            tableName: tableName_,
13434
            targetField: this.name,
13435
            valueFile: val_,
13436
            titleLookup: _fieldLabel,
13437
        }).show()
13438

    
13439
    }
13440

    
13441
});
13442

    
13443
//atien
13444
Ext.define('MinovaES.view.uploadfile.fileupload', {
13445
    extend: 'Ext.window.Window',
13446
    alias: 'widget.fileupload',
13447
    requires: [
13448

    
13449
    ],
13450
    //height: '67%',
13451
    width: '35%',
13452
    minWidth: '50%',
13453
    maxWidth: '100%',
13454
    bodyPadding: 0,
13455
    formname: undefined,
13456
    fieldname: undefined,
13457
    modal: true,
13458
    title: 'Upload ',
13459
    name: 'FormLookup',
13460
    test: undefined,
13461
    targetField: undefined,
13462
    tableName: undefined,
13463
    listeners: {
13464
        afterrender: function (f) {
13465
            f.setTitle('Upload ' + f.titleLookup);
13466
            var id_ = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0];
13467
            if (id_) {
13468
                var valID = id_.getValue();
13469
                Ext.ComponentQuery.query('textfield[name=FileID_]')[0].setValue(valID);
13470
            }
13471
        },
13472
    },
13473
    initComponent: function () {
13474
        var me = this;
13475
        var targetField_ = me.targetField;
13476
        var titleLookup_ = me.titleLookup;
13477
        var maxFileSize = me.maxFileSize;
13478
        var fileName = me.valueFile;
13479
        Ext.applyIf(me, {
13480
            items: [{
13481
                xtype: 'form',
13482
                name: 'FormFileUpload',
13483
                valueFile: fileName,
13484
                buttons: [{
13485
                    xtype: 'button',
13486
                    iconCls: 'fa-upload',
13487
                    style: 'font-family: FontAwesome',
13488
                    text: 'Upload',
13489
                    action: 'Upload',
13490
                    name: 'Upload',
13491
                    handler: function () {
13492
                        maxFileSize = Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].maxFileSize;
13493
                        Ext.ComponentQuery.query('[name=FileMax]')[0].setValue(maxFileSize);
13494
                        var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13495
                        pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0]; // by hamid 20170206
13496
                        if (form.isValid()) {
13497
                            form.submit({
13498
                                url: '/Devt/UploadFile',
13499
                                waitMsg: 'Uploading your file...',
13500
                                success: function (fp, o) {
13501
                                    var result = o.result;
13502
                                    Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].setValue(result.FileName);
13503
                                    Ext.ComponentQuery.query('[name=FormFileUpload]')[0].valueFile = result.FileName;
13504
                                    Ext.ComponentQuery.query('[name=download]')[0].fileName = result.FileName;
13505
                                    var fileID = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0]
13506
                                    if (fileID) {
13507
                                        fileID.setValue(result.ID);
13508
                                    }
13509

    
13510
                                    if (result.msg === "") {
13511
                                        if (me.onSuccess !== undefined)
13512
                                            me.onSuccess(result.FileName, result.content_type);
13513
                                        pnl.destroy(); // by hamid 20170206
13514
                                    } else
13515
                                        alert(result.msg);
13516
										
13517
									//by Agung 20200428
13518
									Ext.ComponentQuery.query('[name=FORMPHRUPLOADFILE]')[0].getForm().findField('FileID').setValue(result.ID);
13519
									Ext.ComponentQuery.query('[name=FORMPHRUPLOADFILE]')[0].getForm().findField('FileName').setValue(result.FileName);
13520
                                }
13521
                            });
13522
                        }
13523
                    }
13524
                }, {
13525
                    xtype: 'button',
13526
                    text: 'Clear',
13527
                    width: 60,
13528
                    handler: function () {
13529
                        //Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13530
                        Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(''); // by hamid 20170206
13531
                    }
13532
                }, {
13533
                    xtype: 'button',
13534
                    text: 'Download',
13535
                    name: 'download',
13536
                    width: 60,
13537
                    fileName: fileName,
13538
                    handler: function (f) {
13539
                        var url = '/Devt/GetFileData?FileName=' + f.fileName + '&download=true';
13540
                        window.open(url, '_blank');
13541
                    }
13542
                    //href: '/Devt/GetFileData?FileName=' + me.valueFile + '&download=true',
13543

    
13544
                }
13545
                ],
13546
                items: [{
13547
                    xtype: 'filefield',
13548
                    name: 'File',
13549
                    fieldLabel: 'Select File',
13550
                    //allowBlank: false,
13551
                    //width: 270,
13552
                    //labelWidth: 85,
13553
                }, {
13554
                    xtype: 'textfield',
13555
                    name: 'FileID_',
13556
                    hidden: true,
13557
                }, {
13558
                    xtype: 'textfield',
13559
                    name: 'FileMax',
13560
                    hidden: true,
13561
                }
13562
                ]
13563
            }
13564
            ]
13565
        });
13566
        me.callParent(arguments);
13567
    }
13568
});
13569
//atien
13570

    
13571

    
13572
//update by hamid 12012017
13573
Ext.define('MinovaES.view.uploadfile.fileupload1', {
13574
    extend: 'Ext.window.Window',
13575
    alias: 'widget.fileupload1',
13576
    requires: [
13577

    
13578
    ],
13579
    height: '67%',
13580
    width: '21%',
13581
    minWidth: '50%',
13582
    maxWidth: '100%',
13583
    bodyPadding: 0,
13584
    formname: undefined,
13585
    fieldname: undefined,
13586
    //modal: true,
13587
    title: 'Lookup - Photo',
13588
    name: 'FormLookup',
13589
    test: undefined,
13590
    targetField: undefined,
13591
    tableName: undefined,
13592
    initComponent: function () {
13593
        var me = this;
13594
        var targetField_ = me.targetField;
13595
        var nameField_ = this.fieldname;
13596
        var form = me.test;
13597
        var tableName_ = me.tableName;
13598
        //var img_ = Ext.ComponentQuery.query('[name=Photo]')[0].getValue()
13599
        var img_ = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
13600
        Ext.applyIf(me, {
13601
            // items: [{
13602
            //xtype : 'panel',
13603
            items: [{
13604
                xtype: 'tabpanel',
13605
                //name: 'mainTab',
13606
                items: [{
13607
                    xtype: 'form',
13608
                    title: 'Upload File',
13609
                    height: '70%',
13610
                    name: 'FormFileUpload',
13611
                    buttons: [{
13612
                        xtype: 'button',
13613
                        iconCls: 'fa-upload',
13614
                        style: 'font-family: FontAwesome',
13615
                        text: 'Upload',
13616
                        action: 'Upload',
13617
                        name: 'Upload',
13618
                        handler: function () {
13619
                            //var Tab = Ext.ComponentQuery.query('[name=mainTab]')[0].getActiveTab();
13620
                            var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13621
                            pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0];
13622
                            if (form.isValid()) {
13623
                                form.submit({
13624
                                    url: '/Devt/UploadFile',
13625
                                    waitMsg: 'Uploading your file...',
13626
                                    success: function (fp, o) {
13627
                                        var result = o.result;
13628
                                        Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(result.FileName)
13629
                                        //Ext.ComponentQuery.query('[name=Photo]')[0].setValue(result.FileName)
13630
                                        if (result.msg === "") {
13631
                                            //alert('success');
13632
                                            if (me.onSuccess !== undefined)
13633
                                                me.onSuccess(result.FileName, result.content_type);
13634
                                            pnl.destroy();
13635
                                        } else
13636
                                            alert(result.msg);
13637
                                    }
13638
                                });
13639
                            }
13640
                        }
13641
                    }, {
13642
                        xtype: 'button',
13643
                        text: 'Clear',
13644
                        width: 60,
13645
                        handler: function () {
13646
                            Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13647
                            //Ext.ComponentQuery.query('[name=Photo]')[0].setValue('');
13648

    
13649
                        }
13650
                    }
13651
                    ],
13652
                    items: [{
13653
                        xtype: 'fieldset',
13654
                        layout: 'hbox',
13655
                        width: '100%',
13656
                        bodyPadding: 10,
13657
                        border: 0,
13658
                        padding: 0,
13659
                        items: [{
13660
                            xtype: 'filefield',
13661
                            name: 'File',
13662
                            fieldLabel: 'Select File',
13663
                            //allowBlank: false,
13664
                            width: 270,
13665
                            labelWidth: 85,
13666
                        }
13667
                        ]
13668
                    }
13669
                    ]
13670
                    //items: [{
13671
                    //    xtype: 'form',
13672
                    //    name: 'Photo',
13673
                    //    width: '100%',
13674
                    //    height: 'auto',
13675
                    //    dockedItems: [{
13676
                    //        xtype: 'toolbar',
13677
                    //        dock: 'top',
13678
                    //        layout: 'vbox',
13679
                    //        bodyPadding: 10,
13680
                    //        border: 0,
13681
                    //        items: [{
13682
                    //            xtype: 'fieldset',
13683
                    //            layout: 'hbox',
13684
                    //            width: '100%',
13685
                    //            border: 0,
13686
                    //            padding: 0,
13687
                    //            items: [{
13688
                    //                xtype: 'filefield',
13689
                    //                name: 'SelectFile',
13690
                    //                fieldLabel: 'Select File',
13691
                    //                width: 270,
13692
                    //                labelWidth: 85,
13693
                    //                enableKeyEvents: true,
13694
                    //                buttonText: 'Browse',
13695
                    //            }]
13696

    
13697
                    //        }
13698
                    //        ]
13699
                    //    }
13700
                    //    ]
13701
                    //}]
13702
                }, {
13703
                    title: 'View Image',
13704
                    //height: 400,
13705
                    //autoScroll: true,
13706
                    items: [{
13707
                        xtype: 'form',
13708
                        name: 'ViewImage',
13709
                        //margin: '5 5 5 5',
13710
                        items: [{
13711
                            xtype: 'form',
13712
                            buttons: [{
13713
                                text: 'Download',
13714
                                handler: function () {},
13715
                                href: '/Devt/GetFileData?FileName=' + img_ + '&download=true'
13716

    
13717
                            }
13718
                            ],
13719
                            items: [{
13720
                                xtype: 'image',
13721
                                //id: 'imageuser',
13722
                                src: '/Devt/GetFileData?FileName=' + img_ + '&download=false'
13723
                            },
13724
                            ]
13725
                        }
13726
                        ]
13727

    
13728
                    }
13729
                    ]
13730

    
13731
                }
13732
                ]
13733

    
13734
            }
13735
            ]
13736

    
13737
        });
13738
        me.callParent(arguments);
13739
    }
13740
});
13741

    
13742
Ext.define('MinovaUtil.MinovaES.Column.MinovaPictureColumn', {
13743
    extend: 'Ext.grid.column.Column',
13744
    alias: ['widget.minovapicturecolumn'],
13745
    alternateClassName: 'Ext.grid.MinovaPictureColumn',
13746
    //undefinedText: '&#160;',
13747
    defaultRenderer: function (value) {
13748
        return '<img alt="" class="icon-imagecolumn" src = "/Devt/GetFileData?FileName=' + value + '&download=false"  id="">'
13749
    }
13750
});
13751

    
13752
Ext.define('MinovaUtil.MinovaES.MinovaFixValue', {
13753
    extend: 'Ext.form.field.ComboBox',
13754
    alias: ['widget.MinovaFixValue', 'widget.minovafixvalue'],
13755
    fixedValue: undefined,
13756
    anchor: '50%',
13757
    queryMode: 'local',
13758
    forceSelection: true, // cek data
13759
    getValue: function () {
13760
        var value = this.value;
13761

    
13762
        return value;
13763
    },
13764
    getSubmitValue: function () {
13765
        var value = this.value;
13766

    
13767
        return value;
13768
    },
13769
    initComponent: function () {
13770
        var me = this;
13771
        var storeData = [];
13772
        //var str= "y=yes|| n=no";
13773
        var str = me.fixedValue;
13774
        var hasil = str.split('||');
13775
        hasil.forEach(function (h) {
13776
            store_ = h.split('=')
13777
            storeData.push({
13778
                code: store_[0],
13779
                desc: store_[1],
13780

    
13781
            });
13782
        });
13783
        Ext.applyIf(me, {
13784

    
13785
            store: Ext.create('Ext.data.Store', {
13786
                storeId: 'store' + name,
13787
                autoLoad: true,
13788
                data: storeData
13789

    
13790
            }),
13791
        });
13792
        me.callParent(arguments);
13793
    }
13794
});
13795

    
13796
Ext.define('MinovaUtil.MinovaES.MinovaDecimal', {
13797
    extend: 'Ext.form.field.Text',
13798
    alias: ['widget.MinovaDecimal', 'widget.minovadecimal'],
13799
    fixedValue: undefined,
13800
    anchor: '50%',
13801
    getValue: function () {
13802
        var value = this.value;
13803

    
13804
        return value.replace(',', '.');
13805
    },
13806
    getSubmitValue: function () {
13807
        var value = this.value;
13808
        return value.replace(',', '.');
13809
    },
13810
    initComponent: function () {
13811
        var me = this;
13812
        Ext.applyIf(me, {});
13813
        me.callParent(arguments);
13814
    }
13815
});
13816

    
13817
Ext.define('MinovaUtil.com.xtype.MinovaWorflowEditor', {
13818
    extend: 'Ext.panel.Panel',
13819
    alias: ['widget.minovawfeditor', 'widget.minovafloweditor'],
13820
    title: undefined,
13821
    initComponent: function () {
13822
        // this.layout = 'fit';
13823
        this.readOnly = this.readOnly ? this.readOnly : false;
13824
        this.autoScroll = true;
13825
        this.height = 480;
13826
        this.title = this.title ? this.title : 'Workflow editor';
13827
        this.html = '<div id="minovaGraphContainer" title="' + this.title
13828
			 + '" style="background:url(\'' + mxBasePath
13829
			 + '/editors/images/grid.gif\')"></div>';
13830
        this.tbar = [{
13831
            xtype: 'button',
13832
            hidden: true,
13833
            text: 'add Task',
13834
            handler: this.addTask
13835

    
13836
        }, {
13837
            xtype: 'button',
13838
            text: 'Remove',
13839
            hidden: true,
13840
            handler: this.removeCells
13841
        },
13842
			'->', {
13843
			    xtype: 'cycle',
13844
			    text: 'layout',
13845
			    menu: {
13846
			        // id : 'view-type-menu',
13847
			        items: [{
13848
			            text: 'mxCircleLayout'
13849
			        }, {
13850
			            text: 'mxCompactTreeLayout'
13851
			        }, {
13852
			            text: 'mxCompositeLayout'
13853
			        }, {
13854
			            text: 'mxEdgeLabelLayout'
13855
			        }, {
13856
			            text: 'mxFastOrganicLayout'
13857
			        }, {
13858
			            text: 'mxGraphLayout'
13859
			        }, {
13860
			            text: 'mxHierarchicalLayout'
13861
			        }
13862
						// , {
13863
						// text : 'mxParallelEdgeLayout'
13864
						// }
13865
						// , {
13866
						// text : 'mxPartitionLayout'
13867
						// },
13868
						// {
13869
						// text : 'mxStackLayout'
13870
						// }
13871
			        ]
13872
			    },
13873
			    changeHandler: function (cycleBtn, activeItem) {
13874
			        // Ext.Msg.alert('Change View', activeItem.text);
13875
			        try {
13876
			            switch (activeItem.text) {
13877
			                case 'mxCircleLayout':
13878
			                    var layout = new mxCircleLayout(graph);
13879
			                    layout.execute(graph.getDefaultParent());
13880
			                    break;
13881
			                case 'mxCompactTreeLayout':
13882
			                    var layout = new mxCompactTreeLayout(graph,
13883
                                        false);
13884
			                    layout.execute(graph.getDefaultParent());
13885
			                    break;
13886
			                case 'mxCompositeLayout':
13887
			                    var first = new mxFastOrganicLayout(graph);
13888
			                    var second = new mxParallelEdgeLayout(graph);
13889
			                    var layout = new mxCompositeLayout(graph, [
13890
                                            first, second], first);
13891
			                    layout.execute(graph.getDefaultParent());
13892
			                    break;
13893
			                case 'mxEdgeLabelLayout':
13894
			                    var layout = new mxEdgeLabelLayout(graph);
13895
			                    layout.execute(graph.getDefaultParent());
13896
			                    break;
13897
			                case 'mxFastOrganicLayout':
13898
			                    var layout = new mxCircleLayout(graph);
13899
			                    layout.execute(graph.getDefaultParent());
13900
			                    break;
13901
			                case 'mxGraphLayout':
13902
			                    var layout = new mxFastOrganicLayout(graph);
13903
			                    layout.execute(graph.getDefaultParent());
13904
			                    break;
13905
			                case 'mxParallelEdgeLayout':
13906
			                    var layout = new mxParallelEdgeLayout(graph);
13907
			                    layout.execute(graph.getDefaultParent());
13908
			                    break;
13909
			                case 'mxPartitionLayout':
13910
			                    var layout = new mxPartitionLayout(graph,
13911
                                        true, 10, 20);
13912
			                    layout.execute(graph.getDefaultParent());
13913
			                    break;
13914
			                case 'mxStackLayout':
13915
			                    var layout = new mxStackLayout(graph, false);
13916
			                    layout.execute(graph.getDefaultParent());
13917
			                    break;
13918
			                case 'mxHierarchicalLayout':
13919
			                    var layout = new mxHierarchicalLayout(graph);
13920
			                    layout.parallelEdgeSpacing = 100;
13921
			                    layout.moveParent = true;
13922
			                    layout.parentBorder = 100;
13923
			                    layout.intraCellSpacing = 100;
13924
			                    layout.interRankCellSpacing = 100;
13925
			                    layout.interHierarchySpacing = 0;
13926
			                    layout.orientation = mxConstants.DIRECTION_NORTH;
13927
			                    //layout.traverseAncestors = false;
13928
			                    layout.execute(parent);
13929
			                    break;
13930

    
13931
			            }
13932
			        } catch (e) {}
13933
			    }
13934
			}, {
13935
			    xtype: 'tbseparator'
13936
			}, {
13937
			    text: 'In',
13938
			    name: 'zoomin',
13939
			    handler: function () {
13940
			        graph.zoomIn();
13941
			        graph.fit();
13942
			    }
13943
			}, {
13944
			    text: 'Out',
13945
			    name: 'zoomout',
13946
			    handler: function () {
13947
			        graph.zoomOut();
13948
			        graph.fit();
13949
			    }
13950
			}
13951
			// , {
13952
			// text : 'Fit',
13953
			// name : 'zoomfit',
13954
			// handler : function() {
13955
			// graph.fit();
13956
			// }
13957
			// }
13958
		, {
13959
		    xtype: 'tbseparator'
13960
		}, {
13961
		    xtype: 'button',
13962
		    text: 'print',
13963
		    name: 'print',
13964
		    handler: this.printPreview
13965
		}
13966
        ]
13967

    
13968
        this.autoScroll = true;
13969
        this.listeners = {
13970
            afterrender: this.onAfterRender,
13971
            resize: this.onResize
13972
        }
13973

    
13974
        this.callParent(arguments);
13975
    },
13976
    printPreview: function () {
13977
        var preview = new mxPrintPreview(graph);
13978
        preview.print();
13979
    },
13980
    onAfterRender: function (_this) {
13981
        this.main(document.getElementById('minovaGraphContainer'));
13982
    },
13983
    removeCells: function () {
13984
        graph.removeCells();
13985
    },
13986
    onResize: function () {
13987
        try {
13988
            graph.sizeDidChange();
13989
        } catch (e) {}
13990
    },
13991
    addTask: function () {
13992
        graph.insertVertex(graph.getDefaultParent(), null, 'Task-' + Ext.id(),
13993
			0, 0, 80, 30);
13994
    },
13995
    main: function (container) {
13996
        // Checks if the browser is supported
13997
        if (!mxClient.isBrowserSupported()) {
13998
            // Displays an error message if the browser is not supported.
13999
            // mxUtils.error('Browser is not supported!', 200, false);
14000
            alert('Browser is not supported!');
14001
        } else {
14002
            // // Creates the graph inside the given container
14003
            // graph = new mxGraph(container);
14004
            // var keyHandler = new mxKeyHandler(graph);
14005
            // // keyHandler.bindKey(46, function(evt) {
14006
            // // if (graph.isEnabled()) {
14007
            // // graph.removeCells();
14008
            // // }
14009
            // // });
14010
            // wfEditor = new mxEditor();
14011
            //
14012
            // // Enables rubberband selection
14013
            //
14014
            // new mxRubberband(graph);
14015
            // graph.setPanning(true);
14016
            // graph.setTooltips(true);
14017
            //
14018
            // // graph.setConnectable(true);
14019
            // // graph.setDropEnabled(true);
14020
            // // graph.connectionHandler.setCreateTarget(true);
14021
            //
14022
            // // Gets the default parent for inserting new cells. This
14023
            // // is normally the first child of the root (ie. layer 0).
14024
            // var parent = graph.getDefaultParent();
14025

    
14026
            // Enables crisp rendering in SVG
14027
            // mxShape.prototype.crisp = true;
14028

    
14029
            // Enables guides
14030
            // mxGraphHandler.prototype.guidesEnabled = true;
14031

    
14032
            // Alt disables guides
14033
            // mxGuide.prototype.isEnabledForEvent = function(evt) {
14034
            // return !mxEvent.isAltDown(evt);
14035
            // };
14036

    
14037
            // Enables snapping waypoints to terminals
14038
            // mxEdgeHandler.prototype.snapToTerminals = true;
14039

    
14040
            // Enables orthogonal connect preview in IE
14041
            // mxConnectionHandler.prototype.movePreviewAway = true;
14042

    
14043
            // Creates the graph inside the given container
14044
            graph = new mxGraph(container);
14045
            // graph.disconnectOnMove = false;
14046
            // graph.foldingEnabled = false;
14047
            // graph.cellsResizable = false;
14048
            // graph.extendParents = false;
14049
            // graph.setConnectable(true);
14050
            graph.setAllowDanglingEdges(false);
14051

    
14052
            // Implements perimeter-less connection points as fixed points
14053
            // (computed before the edge style).
14054
            // graph.view.updateFixedTerminalPoint = function(edge, terminal,
14055
            // source, constraint) {
14056
            // mxGraphView.prototype.updateFixedTerminalPoint.apply(this,
14057
            // arguments);
14058
            //
14059
            // var pts = edge.absolutePoints;
14060
            // var pt = pts[(source) ? 0 : pts.length - 1];
14061
            //
14062
            // if (terminal != null && pt == null
14063
            // && this.getPerimeterFunction(terminal) == null) {
14064
            // edge.setAbsoluteTerminalPoint(new mxPoint(this
14065
            // .getRoutingCenterX(terminal), this
14066
            // .getRoutingCenterY(terminal)),
14067
            // source)
14068
            // }
14069
            // };
14070

    
14071
            // Changes the default edge style
14072
            graph.getStylesheet().getDefaultEdgeStyle()['edgeStyle'] = 'orthogonalEdgeStyle';
14073
            // delete graph.getStylesheet().getDefaultEdgeStyle()['endArrow'];
14074

    
14075
            // Implements the connect preview
14076
            graph.connectionHandler.createEdgeState = function (me) {
14077
                var edge = graph.createEdge(null, null, null, null, null);
14078

    
14079
                return new mxCellState(this.graph.view, edge, this.graph
14080
					.getCellStyle(edge));
14081
            };
14082

    
14083
            // Uncomment the following if you want the container
14084
            // to fit the size of the graph
14085
            // graph.setResizeContainer(true);
14086

    
14087
            // Enables rubberband selection
14088
            new mxRubberband(graph);
14089

    
14090
            // Disables basic selection and cell handling
14091
            graph.setEnabled(false);
14092

    
14093
            // Gets the default parent for inserting new cells. This
14094
            // is normally the first child of the root (ie. layer 0).
14095
            var parent = graph.getDefaultParent();
14096

    
14097
            // Enables HTML labels as wrapping is only available for those
14098
            graph.htmlLabels = true;
14099

    
14100
            // Disables in-place editing for edges
14101
            // graph.isCellEditable = function(cell) {
14102
            // return !this.model.isEdge(cell);
14103
            // };
14104

    
14105
            // Changes the default vertex style in-place
14106
            var style = graph.getStylesheet().getDefaultVertexStyle();
14107
            style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14108
            style[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14109
            style[mxConstants.STYLE_PERIMETER_SPACING] = 1; // 6;
14110
            style[mxConstants.STYLE_ROUNDED] = true;
14111
            style[mxConstants.STYLE_SHADOW] = true;
14112

    
14113
            style = graph.getStylesheet().getDefaultEdgeStyle();
14114
            style[mxConstants.STYLE_ROUNDED] = true;
14115
            style[mxConstants.STYLE_EDGE] = mxEdgeStyle.SegmentConnector;
14116

    
14117
            var style2 = new Object();
14118
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RHOMBUS;
14119
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter;
14120
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14121
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14122
            style2[mxConstants.STYLE_ROUNDED] = true;
14123
            style2[mxConstants.STYLE_SHADOW] = true;
14124
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14125
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14126
            style2[mxConstants.STYLE_ALIGN] = 'center';
14127
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14128
            graph.getStylesheet().putCellStyle('RHOMBUS', style2);
14129

    
14130
            style2 = new Object();
14131
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_ELLIPSE;
14132
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.EllipsePerimeter;
14133
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14134
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14135
            style2[mxConstants.STYLE_ROUNDED] = true;
14136
            style2[mxConstants.STYLE_SHADOW] = true;
14137
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14138
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14139
            style2[mxConstants.STYLE_ALIGN] = 'center';
14140
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14141
            graph.getStylesheet().putCellStyle('ELLIPSE', style2);
14142

    
14143
            style2 = new Object();
14144
            style2[mxConstants.STYLE_SHAPE] = 'label';
14145
            style2[mxConstants.STYLE_VERTICAL_ALIGN] = 'bottom';
14146
            style2[mxConstants.STYLE_INDICATOR_SHAPE] = 'ellipse';
14147
            style2[mxConstants.STYLE_INDICATOR_WIDTH] = 34;
14148
            style2[mxConstants.STYLE_INDICATOR_HEIGHT] = 34;
14149
            style2[mxConstants.STYLE_IMAGE_VERTICAL_ALIGN] = 'top'; // indicator v-alignment
14150
            style2[mxConstants.STYLE_IMAGE_ALIGN] = 'center';
14151
            graph.getStylesheet().putCellStyle('LABEL', style2);
14152

    
14153
            style2 = new Object();
14154
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RECTANGLE;
14155
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14156
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14157
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14158
            style2[mxConstants.STYLE_ROUNDED] = false;
14159
            style2[mxConstants.STYLE_SHADOW] = true;
14160
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14161
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14162
            graph.getStylesheet().putCellStyle('RECTANGLE', style2);
14163
            // Adds cells to the model in a single step
14164
            graph.getModel().beginUpdate();
14165
            try {
14166
                // var v1 = graph.insertVertex(parent, null, '1', 20, 0, 150,
14167
                // 80);
14168
                // var v2 = graph.insertVertex(parent, null, '2', 20, 50, 150,
14169
                // 80);
14170
                // var v3 = graph
14171
                // .insertVertex(parent, null, '3', 20, 100, 150, 80);
14172
                // var v4 = graph
14173
                // .insertVertex(parent, null, '4', 120, 50, 150, 80);
14174
                // var v5 = graph.insertVertex(parent, null, '5', 120, 100, 150,
14175
                // 80);
14176
                //
14177
                // var e1 = graph.insertEdge(parent, null, '', v1, v2);
14178
                // var e2 = graph.insertEdge(parent, null, '', v2, v3);
14179
                // var e3 = graph.insertEdge(parent, null, '', v2, v4);
14180
                // var e4 = graph.insertEdge(parent, null, '', v4, v5);
14181
                // var e5 = graph.insertEdge(parent, null, '', v3, v5);
14182
            }
14183
            finally {
14184
                // Updates the display
14185
                graph.getModel().endUpdate();
14186
            }
14187

    
14188
        }
14189
    }
14190
});
14191

    
14192
Ext.define('MinovaUtil.MinovaES.MinovaMonthPicker', {
14193
    extend: 'Ext.form.field.Text',
14194
    alias: ['widget.minovamonthpicker', 'widget.minovamonthpicker'],
14195
    tableName: undefined,
14196
    param: undefined,
14197
    formtarget_: this.formtarget,
14198
    Sequence: this.Sequence,
14199
    anchor: '50%',
14200
    pagesize: undefined,
14201
    triggerCls: 'x-form-date-trigger',
14202
    getValue: function () {
14203
        var Sequence = this.Sequence;
14204
        var me = this;
14205
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14206
        var hasil = "";
14207
        if (_e != undefined) {
14208
            if (_e.value[0] >= 0) {
14209
                if (_e.value[0].toString() != '') {
14210
                    var _m = (_e.value[0] + 1).toString();
14211
                    if (_m.length == 1) {
14212
                        _m = '0' + _m;
14213
                    }
14214
                    hasil = _e.value[1].toString() + _m;
14215
                }
14216
            }
14217
        }
14218
        if (hasil == "") {
14219
            me.value = null;
14220
            me.submitValue = null;
14221
        } else {
14222
            me.submitValue = hasil;
14223
        }
14224
        return hasil;
14225
    },
14226
    clearValue: function () {
14227
        var Sequence = this.Sequence;
14228
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14229
        _e.value[0] = '';
14230
        _e.value[1] = '';
14231
        return this.setValue('');
14232
    },
14233
    getRawValue: function () {
14234
        var Sequence = this.Sequence;
14235
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14236
        var hasil = null;
14237
        if (_e != undefined) {
14238
            var _m = (_e.value[0] + 1).toString();
14239
            if (_m.length == 1) {
14240
                _m = '0' + _m;
14241
            }
14242
            hasil = _e.value[1].toString() + _m;
14243
        }
14244
        return hasil;
14245
    },
14246
    initComponent: function () {
14247
        var target = this.formtarget;
14248
        this.callParent();
14249
    },
14250
    onTriggerClick: function () {
14251
        var Sequence = this.Sequence;
14252
        var count_lookup = Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]').length;
14253
        if (count_lookup == 1) {
14254
            Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].show();
14255
        } else {
14256
            var target_ = this.formtarget;
14257
            var fieldtarget = this.name;
14258
            Ext.create('Ext.window.Window', {
14259
                title: 'Select Period',
14260
                name: Sequence + 'monthLookup',
14261
                layout: 'fit',
14262
                bodyPadding: 0,
14263
                border: false,
14264
                items: [{
14265
                    xtype: 'monthpicker',
14266
                    name: Sequence + 'monthselect',
14267
                    listeners: {
14268
                        afterrender: function () {
14269
                            var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14270

    
14271
                            _e.setValue(new Date());
14272
                        }
14273
                    },
14274
                    onOkClick: function () {
14275
                        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14276
                        if (_e.value[0] == null || _e.value[1] == null) {
14277
                            alert('Pilih Tanggal!');
14278
                            return;
14279
                        }
14280

    
14281
                        var _m = (_e.value[0] + 1).toString();
14282
                        if (_m.length == 1) {
14283
                            _m = '0' + _m;
14284
                        }
14285
                        var _period = _m + ' - ' + _e.value[1].toString();
14286

    
14287
                        var _f = Ext.ComponentQuery.query('[name=' + fieldtarget + ']')[0];
14288
                        _f.setValue(_period);
14289

    
14290
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14291
                    },
14292
                    onCancelClick: function () {
14293
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14294
                    }
14295
                }
14296
                ]
14297
            }).show();
14298
        }
14299
    }
14300
});
14301

    
14302
Ext.define('MinovaUtil.MinovaES.Column.MinovaTimeColumn', {
14303
    extend: 'Ext.grid.column.Column',
14304
    alias: ['widget.minovatimecolumn'],
14305
    alternateClassName: 'Ext.grid.MinovaTimeColumn',
14306
    undefinedText: '&#160;',
14307
    defaultRenderer: function (value) {
14308
        if (value === "") {
14309
            return "";
14310
        }
14311
        return hasil;
14312
    }
14313
});
14314

    
14315
Ext.define('MinovaUtil.MinovaES.Column.MinovaCurrencyColumn', {
14316
    extend: 'Ext.grid.column.Column',
14317
    alias: ['widget.minovacurrancycolumn'],
14318
    undefinedText: '&#160;',
14319
    defaultRenderer: function (value) {
14320
        if (value === "" || value === undefined || value === null) {
14321
            return this.undefinedText;
14322
        }
14323

    
14324
        Ext.util.Format.thousandSeparator = ",";
14325
        Ext.util.Format.decimalSeparator = ".";
14326
        value = value.toString().replace(',', '.');
14327
        return Ext.util.Format.number(value, '0,000.00');
14328
    }
14329
});
14330

    
14331
Ext.define('MinovaUtil.MinovaES.Field.MinovaCurrencyField', {
14332
    extend: 'Ext.form.field.Text',
14333
    alias: ['widget.MinovaCurrencyField', 'widget.minovacurrencyfield'],
14334
    undefinedText: '&#160;',
14335
    defaultRenderer: function (value) {
14336
        if (value === "" || value === undefined || value === null) {
14337
            return this.undefinedText;
14338
        }
14339

    
14340
        Ext.util.Format.thousandSeparator = ",";
14341
        Ext.util.Format.decimalSeparator = ".";
14342
        value = value.toString().replace(',', '.');
14343
        return Ext.util.Format.number(value, '0000.00');
14344
    }
14345
});
14346

    
14347
Ext.define('MinovaUtil.MinovaES.MinovaGridMD', {
14348
    extend: 'Ext.grid.Panel',
14349
    requires: ['Ext.grid.RowNumberer'],
14350
    alias: 'widget.minovagridmd',
14351
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14352
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14353
    alternateClassName: 'Ext.grid.MinovaGrid',
14354
    //controller:'orm-manage2-controller',
14355
    tableName: undefined,
14356
    isLookup: undefined,
14357
    param: undefined,
14358
    pagesize: undefined,
14359
    storename: undefined,
14360
    layoutType: undefined,
14361
    enableLocking: true,
14362
    autoLoad: undefined,
14363
    multiSelect: undefined,
14364
    getTableName: function () {
14365
        return this.tableName;
14366
    },
14367

    
14368
    initComponent: function () {
14369
        var me = this;
14370
        var cols_ = [];
14371
        var fieldeditor = {};
14372
        var hasil = null;
14373
        var autoLoad = true;
14374
        var LangID = localStorage.LangId;
14375
        var fielGrid = 'rec.GridView == 1';
14376
        var locking = true;
14377
        var checkSelection = '';
14378
        var widthLock = 250;
14379
        if (me.multiSelect) {
14380
            locking = false;
14381
            checkSelection = 'checkboxmodel';
14382
            widthLock = 40;
14383
        }
14384
        //var _url = 'GetAllField';
14385
        if (me.autoLoad == false) {
14386
            autoLoad = false;
14387
        }
14388
        parameter = null;
14389
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14390
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
14391
            fielGrid = 'rec.LookupGrid == 1';
14392
            locking = false;
14393

    
14394
        } else {
14395
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
14396
            //autoLoad = false;
14397
            //_url = 'GetAllFieldGridLookUp';
14398
        };
14399

    
14400
        //Ext.Ajax.request({
14401
        //	async : false,
14402
        //	method : 'POST',
14403
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
14404
        //	success : function (response) {
14405
        //		var results = Ext.decode(response.responseText);
14406
        //		hasil = results.data;
14407
        //	}
14408
        //});
14409
        //hamid03102016
14410

    
14411
        Ext.Ajax.request({
14412
            async: false,
14413
            method: 'POST',
14414
            url: '/UserControl/GetStore',
14415
            params: {
14416
                tableName: 'PDSBS0007',
14417
                param: parameter
14418
            },
14419
            success: function (response) {
14420
                var results = Ext.decode(response.responseText);
14421
                hasil = results.data;
14422
            }
14423
        });
14424
        //end
14425

    
14426
        if (hasil.length > 0) {
14427

    
14428
            Ext.each(hasil, function (rec) {
14429
                var null_ = null;
14430
                if (rec.IsPrimaryKey == true) {
14431
                    null_ = false;
14432
                }
14433
                if (rec.IsRequired == true) {
14434
                    null_ = false;
14435
                } else {
14436
                    null_ = true;
14437
                }
14438

    
14439
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14440
                    if (rec.LookupGrid == 1) {
14441
                        switch (rec.FormatRef) {
14442
                            case "file":
14443
                                cols_.push({
14444
                                    xtype: 'minovapicturecolumn',
14445
                                    text: rec.HeaderTitle,
14446
                                    dataIndex: rec.FieldName,
14447
                                    width: 100,
14448
                                    //filter: {
14449
                                    //    type: 'image',
14450
                                    //    itemDefaults: {
14451
                                    //        emptyText: 'Search for...'
14452
                                    //    }
14453
                                    //}
14454
                                });
14455
                                break
14456
                            case "date":
14457
                                cols_.push({
14458
                                    xtype: 'minovadatecolumn',
14459
                                    text: rec.HeaderTitle,
14460
                                    dataIndex: rec.FieldName,
14461
                                    width: 100,
14462
                                    filter: {
14463
                                        type: 'date',
14464
                                        itemDefaults: {
14465
                                            emptyText: 'Search for...'
14466
                                        }
14467
                                    }
14468
                                });
14469
                                break
14470
                            case "amount":
14471
                                cols_.push({
14472
                                    xtype: 'minovacurrancycolumn',
14473
                                    text: rec.HeaderTitle,
14474
                                    align: 'right',
14475
                                    dataIndex: rec.FieldName,
14476
                                    width: 100,
14477
                                    filter: {
14478
                                        type: 'number',
14479
                                        itemDefaults: {
14480
                                            emptyText: 'Search for...'
14481
                                        }
14482
                                    }
14483
                                });
14484
                                break
14485
                            case "amountencrypt":
14486
                                cols_.push({
14487
                                    xtype: 'minovaamountcolumn',
14488
                                    align: 'right',
14489
                                    text: rec.HeaderTitle,
14490
                                    dataIndex: rec.FieldName,
14491
                                    width: 100,
14492
                                    filter: {
14493
                                        type: 'string',
14494
                                        itemDefaults: {
14495
                                            emptyText: 'Search for...'
14496
                                        }
14497
                                    }
14498
                                });
14499
                                break
14500
                            case "datetime":
14501
                                cols_.push({
14502
                                    xtype: 'minovadatetimecolumn',
14503
                                    text: rec.HeaderTitle,
14504
                                    dataIndex: rec.FieldName,
14505
                                    width: 140,
14506
                                    filter: {
14507
                                        type: 'string',
14508
                                        itemDefaults: {
14509
                                            emptyText: 'Search for...'
14510
                                        }
14511
                                    }
14512
                                });
14513
                                break
14514
                            default:
14515
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14516
                                    cols_.push({
14517
                                        text: rec.HeaderTitle,
14518
                                        dataIndex: rec.FieldName,
14519
                                        width: 100,
14520
                                        filter: {
14521
                                            type: 'string',
14522
                                            itemDefaults: {
14523
                                                emptyText: 'Search for...'
14524
                                            }
14525
                                        }
14526
                                    });
14527
                                } else if (rec.SearchType == '2') {
14528
                                    cols_.push({
14529
                                        xtype: 'minovalookupcolumn',
14530
                                        text: rec.HeaderTitle,
14531
                                        tableName: rec.TableRef,
14532
                                        dataIndex: rec.FieldName,
14533
                                        filter: {
14534
                                            itemDefaults: {
14535
                                                emptyText: 'Search for...'
14536
                                            }
14537
                                        }
14538
                                    });
14539
                                } else if (rec.TableRef != "") {
14540
                                    if (rec.TableRef != null) {
14541
                                        var valueField = null;
14542
                                        var displayValue = null;
14543
                                        Ext.Ajax.request({
14544
                                            async: false,
14545
                                            method: 'POST',
14546
                                            url: '/UserControl/GetStore',
14547
                                            params: {
14548
                                                tableName: 'SDATATABLEFIELD',
14549
                                                param: 'TableName[equal]' + rec.TableRef
14550
                                            },
14551
                                            success: function (response) {
14552
                                                var results = Ext.decode(response.responseText);
14553
                                                data_ = results.data;
14554
                                                if (data_ != undefined) {
14555
                                                    valueField_ = $.grep(data_, function (r) {
14556
                                                        return r.ValueField == '1'
14557
                                                    });
14558
                                                    valueField = valueField_[0].FieldName
14559
                                                    displayValue_ = $.grep(data_, function (r) {
14560
                                                        return r.DisplayValue == '1'
14561
                                                    });
14562
                                                    displayValue = displayValue_[0].FieldName
14563
                                                }
14564
                                            }
14565
                                        });
14566
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14567
                                        var count_ = 0;
14568
                                        if (store_) {
14569
                                            count_ = store_.count();
14570
                                        }
14571
                                        if (count_ == 0) {
14572
                                            Ext.create('Ext.data.Store', {
14573
                                                storeId: 'store_' + rec.FieldName,
14574
                                                //autoLoad: true,
14575
                                                proxy: {
14576
                                                    method: 'POST',
14577
                                                    type: 'ajax',
14578
                                                    url: '/UserControl/GetStore',
14579
                                                    extraParams: {
14580
                                                        tableName: rec.TableRef,
14581
                                                        param: rec.ParamCombo
14582
                                                    },
14583
                                                    reader: {
14584
                                                        type: 'json',
14585
                                                        root: 'data',
14586
                                                        totalProperty: 'data[0].TotalCount'
14587
                                                    }
14588
                                                }
14589
                                            })
14590
                                        }
14591
                                        cols_.push({
14592
                                            xtype: 'minovacombocolumn',
14593
                                            text: rec.HeaderTitle,
14594
                                            dataIndex: rec.FieldName,
14595
                                            valueField: valueField,
14596
                                            displayField: displayValue,
14597
                                            store: 'store_' + rec.FieldName,
14598
                                            filter: {
14599
                                                type: 'list',
14600
                                                itemDefaults: {
14601
                                                    emptyText: 'Search for...'
14602
                                                }
14603
                                            }
14604
                                        });
14605
                                    }
14606

    
14607
                                } else {
14608
                                    cols_.push({
14609
                                        text: rec.HeaderTitle,
14610
                                        dataIndex: rec.FieldName,
14611
                                        filter: {
14612
                                            itemDefaults: {
14613
                                                emptyText: 'Search for...'
14614
                                            }
14615
                                        }
14616
                                    });
14617
                                }
14618
                                break
14619
                        }
14620
                    } else {
14621
                        cols_.push({
14622
                            text: rec.HeaderTitle,
14623
                            dataIndex: rec.FieldName,
14624
                            hidden: true,
14625
                            filter: {
14626
                                itemDefaults: {
14627
                                    emptyText: 'Search for...'
14628
                                }
14629
                            }
14630
                        });
14631
                    }
14632

    
14633
                } else {
14634
                    if (rec.GridView == 1) {
14635
                        switch (rec.FormatRef) {
14636
                            case "file":
14637
                                cols_.push({
14638
                                    xtype: 'minovapicturecolumn',
14639
                                    text: rec.HeaderTitle,
14640
                                    dataIndex: rec.FieldName,
14641
                                    width: 100,
14642
                                    //filter: {
14643
                                    //    type: '',
14644
                                    //    itemDefaults: {
14645
                                    //        emptyText: 'Search for...'
14646
                                    //    }
14647
                                    //}
14648
                                });
14649
                                break
14650
                            case "date":
14651
                                cols_.push({
14652
                                    xtype: 'minovadatecolumn',
14653
                                    text: rec.HeaderTitle,
14654
                                    dataIndex: rec.FieldName,
14655
                                    width: 100,
14656
                                    filter: {
14657
                                        type: 'date',
14658
                                        itemDefaults: {
14659
                                            emptyText: 'Search for...'
14660
                                        }
14661
                                    }
14662
                                });
14663
                                break
14664
                            case "amountencrypt":
14665
                                cols_.push({
14666
                                    xtype: 'minovaamountcolumn',
14667
                                    align: 'right',
14668
                                    text: rec.HeaderTitle,
14669
                                    dataIndex: rec.FieldName,
14670
                                    width: 100,
14671
                                    filter: {
14672
                                        type: 'string',
14673
                                        itemDefaults: {
14674
                                            emptyText: 'Search for...'
14675
                                        }
14676
                                    }
14677
                                });
14678
                                break
14679
                            case "amount":
14680
                                cols_.push({
14681
                                    text: rec.HeaderTitle,
14682
                                    dataIndex: rec.FieldName,
14683
                                    width: 100,
14684
                                    filter: {
14685
                                        type: 'number',
14686
                                        itemDefaults: {
14687
                                            emptyText: 'Search for...'
14688
                                        }
14689
                                    }
14690
                                });
14691
                                break
14692
                            case "datetime":
14693
                                cols_.push({
14694
                                    xtype: 'minovadatetimecolumn',
14695
                                    text: rec.HeaderTitle,
14696
                                    dataIndex: rec.FieldName,
14697
                                    width: 140,
14698
                                    filter: {
14699
                                        type: 'string',
14700
                                        itemDefaults: {
14701
                                            emptyText: 'Search for...'
14702
                                        }
14703
                                    }
14704
                                });
14705
                                break
14706
                            default:
14707
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14708
                                    cols_.push({
14709
                                        text: rec.HeaderTitle,
14710
                                        dataIndex: rec.FieldName,
14711
                                        width: 100,
14712
                                        filter: {
14713
                                            type: 'string',
14714
                                            itemDefaults: {
14715
                                                emptyText: 'Search for...'
14716
                                            }
14717
                                        }
14718
                                    });
14719
                                } else if (rec.SearchType == '2') {
14720
                                    cols_.push({
14721
                                        xtype: 'minovalookupcolumn',
14722
                                        text: rec.HeaderTitle,
14723
                                        tableName: rec.TableRef,
14724
                                        dataIndex: rec.FieldName,
14725
                                        filter: {
14726
                                            itemDefaults: {
14727
                                                emptyText: 'Search for...'
14728
                                            }
14729
                                        }
14730
                                    });
14731
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
14732
                                    if (rec.TableRef != null) {
14733
                                        var valueField = null;
14734
                                        var displayValue = null;
14735
                                        Ext.Ajax.request({
14736
                                            async: false,
14737
                                            method: 'POST',
14738
                                            url: '/UserControl/GetStore',
14739
                                            params: {
14740
                                                tableName: 'SDATATABLEFIELD',
14741
                                                param: 'TableName[equal]' + rec.TableRef
14742
                                            },
14743
                                            success: function (response) {
14744
                                                var results = Ext.decode(response.responseText);
14745
                                                data_ = results.data;
14746
                                                //if (data_ != undefined) {
14747
                                                if (data_.length > 0) {
14748
                                                    valueField_ = $.grep(data_, function (r) {
14749
                                                        return r.ValueField == '1'
14750
                                                    });
14751
                                                    valueField = valueField_[0].FieldName
14752
                                                    displayValue_ = $.grep(data_, function (r) {
14753
                                                        return r.DisplayValue == '1'
14754
                                                    });
14755
                                                    displayValue = displayValue_[0].FieldName
14756
                                                } else {
14757
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
14758
                                                }
14759
                                            }
14760
                                        });
14761
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14762
                                        var count_ = 0;
14763
                                        if (store_) {
14764
                                            count_ = store_.count();
14765
                                        }
14766
                                        if (count_ == 0) {
14767
                                            var paramFilter = rec.ParamCombo;
14768
                                            if (rec.TableRef.toLowerCase() == 'phrom0001' && rec.ParamCombo.length == 1) {
14769
                                                paramFilter = 'ObjectClass[=]' + paramFilter;
14770
                                            }
14771
											var storeRef = Ext.create('Ext.data.Store', {
14772
                                                storeId: 'store_' + rec.FieldName,
14773
                                                autoLoad: false,
14774
                                                proxy: {
14775
                                                    method: 'POST',
14776
                                                    type: 'ajax',
14777
                                                    url: '/UserControl/GetStore',
14778
                                                    extraParams: {
14779
                                                        tableName: rec.TableRef,
14780
                                                        param: rec.ParamCombo
14781
                                                    },
14782
                                                    reader: {
14783
                                                        type: 'json',
14784
                                                        root: 'data',
14785
                                                        totalProperty: 'data[0].TotalCount'
14786
                                                    }
14787
                                                }
14788
                                            });
14789
                                            storeRef.load();
14790
                                            /*
14791
											Ext.create('Ext.data.Store', {
14792
                                                storeId: 'store_' + rec.FieldName,
14793
                                                autoLoad: false,
14794
                                                proxy: {
14795
                                                    method: 'POST',
14796
                                                    type: 'ajax',
14797
                                                    url: '/UserControl/GetStore',
14798
                                                    extraParams: {
14799
                                                        tableName: rec.TableRef,
14800
                                                        param: paramFilter
14801
                                                    },
14802
                                                    reader: {
14803
                                                        type: 'json',
14804
                                                        root: 'data',
14805
                                                        totalProperty: 'data[0].TotalCount'
14806
                                                    }
14807
                                                }
14808
                                            })
14809
											*/
14810
                                        }
14811
                                        cols_.push({
14812
                                            xtype: 'minovacombocolumn',
14813
                                            text: rec.HeaderTitle,
14814
                                            dataIndex: rec.FieldName,
14815
                                            valueField: valueField,
14816
                                            displayField: displayValue,
14817
                                            store: 'store_' + rec.FieldName,
14818
                                            filter: {
14819
                                                type: 'list',
14820
                                                itemDefaults: {
14821
                                                    emptyText: 'Search for...'
14822
                                                }
14823
                                            }
14824
                                        });
14825
                                    }
14826

    
14827
                                } else if (rec.FixedValue != "") {
14828
                                    cols_.push({
14829
                                        xtype: 'minovacombocolumnfixvalue',
14830
                                        text: rec.HeaderTitle,
14831
                                        dataIndex: rec.FieldName,
14832
                                        fixedValue: rec.FixedValue,
14833
                                        filter: {
14834
                                            type: 'list',
14835
                                            itemDefaults: {
14836
                                                emptyText: 'Search for...'
14837
                                            }
14838
                                        }
14839
                                    });
14840
                                } else {
14841
                                    cols_.push({
14842
                                        text: rec.HeaderTitle,
14843
                                        dataIndex: rec.FieldName,
14844
                                        filter: {
14845
                                            itemDefaults: {
14846
                                                emptyText: 'Search for...'
14847
                                            }
14848
                                        }
14849
                                    });
14850
                                }
14851
                                break
14852
                        }
14853
                    } else {
14854
                        cols_.push({
14855
                            text: rec.HeaderTitle,
14856
                            dataIndex: rec.FieldName,
14857
                            hidden: true,
14858
                            filter: {
14859
                                itemDefaults: {
14860
                                    emptyText: 'Search for...'
14861
                                }
14862
                            }
14863
                        });
14864
                    }
14865

    
14866
                }
14867
            });
14868
        };
14869
        var param_ = me.param;
14870
        if (param_ == undefined) {
14871
            param_ = ''
14872
        }
14873
        var jsStoreGrid = new Ext.data.Store({
14874
            storeId: me.storename,
14875
            autoLoad: autoLoad,
14876
            pageSize: me.pagesize,
14877
            proxy: {
14878
                method: 'POST',
14879
                type: 'ajax',
14880
                url: '/UserControl/GetStorePaging',
14881
                extraParams: {
14882
                    tableName: me.tableName,
14883
                    param: param_,
14884
                    //menuId: MinovaUtil.GetMenuID()
14885
                },
14886
                reader: {
14887
                    type: 'json',
14888
                    root: 'data',
14889
                    totalProperty: 'totalRecords'
14890
                }
14891
            },
14892
        });
14893
        Ext.applyIf(me, {
14894
            autoScroll: true,
14895
            enableLocking: locking,
14896
            lockedGridConfig: {
14897
                header: false,
14898
                collapsible: true,
14899
                width: widthLock,
14900
                forceFit: locking,
14901
                listeners: {
14902
                    render: function (grid) {
14903
                        var pagingToolbar = grid.child('pagingtoolbar');
14904
                        if (pagingToolbar) {
14905
                            grid.remove(pagingToolbar, true);
14906
                        }
14907
                    }
14908
                }
14909
            },
14910
            listeners: {
14911
                viewready: function () {
14912
                    if (autoLoad == true) {
14913
                        this.getStore().loadPage(1);
14914
                    }
14915

    
14916
                },
14917
                beforeedit: function () {
14918
                    return false;
14919
                }
14920
            },
14921
            lockedViewConfig: {
14922
                scroll: 'horizontal'
14923
            },
14924
            viewConfig: {
14925
                emptyText: 'No Data Display',
14926
                deferEmptyText: false,
14927
                //Add Nana For Autosize Column Mode Grid MD
14928
                listeners: {
14929
                    refresh: function (dataview) {
14930
                        Ext.each(dataview.panel.columns, function (column) {
14931
                            if (column.autoSizeColumn == false)
14932
                                column.autoSizeColumn = true;
14933
                            column.autoSize();
14934
                            console.log('GridMD');
14935
                        })
14936
                    },
14937
                    //afterrender: function (dataview) {
14938
                    //	console.log(dataview);
14939
                    //	dataview.getStore().reload();
14940
                    //}
14941
                    afterrender: function (dataview) {
14942
                     /*   Ext.defer(function () {
14943
                            dataview.store.reload();
14944
                        }, 2500, this);*/
14945
                    }
14946
                }
14947
            },
14948
            //for chekbox
14949
            selModel: {
14950
                //type: 'cellmodel'
14951
            },
14952
            selType: checkSelection,
14953
            columns: cols_,
14954
            store: jsStoreGrid,
14955
            plugins: [{
14956
                ptype: 'gridfilters'
14957
            }
14958
            ],
14959

    
14960
        });
14961
        me.callParent(arguments);
14962
    }
14963

    
14964
});
14965

    
14966
Ext.define('MinovaUtil.MinovaES.MinovaPMSEditAbleGrid', {
14967
    extend: 'Ext.form.Panel',
14968
    alias: ['widget.MinovaPMSEditAbleGrid', 'widget.Minovapmseditablegrid', 'widget.minovapmseditablegrid'],
14969
    requires: [
14970
		'Ext.grid.plugin.CellEditing',
14971
		'Ext.grid.Panel',
14972
    ],
14973
    anchor: '100%',
14974
    tableName: undefined,
14975
    apprasalType: undefined,
14976
    empID: undefined,
14977
    hideButton: undefined,
14978
    multiSelect: undefined,
14979
    initComponent: function () {
14980
        var me = this;
14981
        var isLookup = me.isLookup;
14982
        var hide_ = false;
14983
        var widthLock = 250;
14984
        var checkSelection = '';
14985
        if (me.hideButton == true) {
14986
            hide_ = true;
14987
        }
14988
        if (me.multiSelect) {
14989
            locking = false;
14990
            checkSelection = 'checkboxmodel';
14991
            widthLock = 40;
14992
        }
14993
        var tableName = me.tableName;
14994
        var cols = [];
14995
        var fieldStore = [];
14996
        var _url = 'GetAllField';
14997
        var hasil = null;
14998
        var height = me.height;
14999
        var storeID = 'store' + me.tableName;
15000
        var gridName = 'grid' + me.name;
15001
        if (me.storeName) {
15002
            storeID = me.storeName;
15003
        }
15004
        var empID = me.empID;
15005
        var apprasalType = me.apprasalType;
15006
        var LangID = MinovaUtil.GetLangID();
15007
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
15008
        Ext.Ajax.request({
15009
            async: false,
15010
            method: 'POST',
15011
            url: '/Performance/getFieldPMS',
15012
            params: {
15013
                tableName: 'PDSPMS001',
15014
                _param: parameter
15015
            },
15016
            success: function (response) {
15017
                var results = Ext.decode(response.responseText);
15018
                hasil = Ext.decode(results.data);
15019
            }
15020
        });
15021
        var addData = 'var data={';
15022
        if (hasil.length > 0) {
15023
            Ext.each(hasil, function (rec) {
15024
                fieldStore.push(rec.FieldName)
15025
                if (rec.FieldName != 'Sequence') {
15026
                    addData = addData + rec.FieldName + ":" + "'',";
15027
                }
15028
                var null_ = null;
15029
                var ReadOnly_ = false;
15030
                if (rec.IsPrimaryKey == true) {
15031
                    null_ = false;
15032
                }
15033
                if (rec.IsRequired == true) {
15034
                    null_ = false;
15035
                } else {
15036
                    null_ = true;
15037
                }
15038
                if (rec.ReadOnly == '1') {
15039
                    ReadOnly_ = true;
15040
                }
15041
                var Hidden_ = false;
15042
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
15043
                    Hidden_ = true;
15044
                    null_ = true;
15045
                }
15046
                if (rec.GridView == 1) {
15047
                    switch (rec.FormatRef) {
15048
                        case "date":
15049
                            cols.push({
15050
                                xtype: 'minovadatecolumn',
15051
                                hidden: Hidden_,
15052
                                text: rec.HeaderTitle,
15053
                                dataIndex: rec.FieldName,
15054
                                filter: {
15055
                                    itemDefaults: {
15056
                                        emptyText: 'Search for...',
15057
                                    }
15058
                                },
15059
                                editor: {
15060
                                    allowBlank: null_,
15061
                                    xtype: 'datefield',
15062
                                    hideMode: 'visibility',
15063
                                    readOnly: ReadOnly_,
15064
                                    id: tableName + rec.FieldName,
15065
                                    fieldGrid: rec.FieldName,
15066
                                    nameTable: rec.TableName,
15067
                                }
15068
                            });
15069
                            break
15070
                        case "amount":
15071
                            cols.push({
15072
                                xtype: 'minovacurrancycolumn',
15073
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
15074
                                text: rec.HeaderTitle,
15075
                                align: 'right',
15076
                                dataIndex: rec.FieldName,
15077
                                hidden: Hidden_,
15078
                                filter: {
15079
                                    itemDefaults: {
15080
                                        emptyText: 'Search for...'
15081
                                    }
15082
                                },
15083
                                editor: {
15084
                                    allowBlank: null_,
15085
                                    xtype: 'minovacurrencyfield',
15086
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
15087
                                    //vtype: 'validateDecimal',
15088
                                    readOnly: ReadOnly_,
15089
                                    id: tableName + rec.FieldName,
15090
                                    nameTable: rec.TableName,
15091
                                    fieldGrid: rec.FieldName,
15092
                                    fieldStyle: 'text-align:right;',
15093
                                    value: '0',
15094

    
15095
                                }
15096
                            });
15097
                            break
15098
                        case "time":
15099
                            var DefaultValue = rec.DefaultValue;
15100
                            if (DefaultValue == '') {
15101
                                defaultValue = '00:00';
15102
                            }
15103
                            cols.push({
15104
                                //xtype: 'minovatimecolumn',
15105
                                xtype: 'timefield',
15106
                                format: 'H:i',
15107
                                submitFormat: 'Hi',
15108
                                text: rec.HeaderTitle,
15109
                                dataIndex: rec.FieldName,
15110
                                hidden: Hidden_,
15111
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
15112
                                filter: {
15113
                                    itemDefaults: {
15114
                                        emptyText: 'Search for...'
15115
                                    }
15116
                                },
15117
                                editor: {
15118
                                    allowBlank: null_,
15119
                                    xtype: 'timefield',
15120
                                    readOnly: ReadOnly_,
15121
                                    id: tableName + rec.FieldName,
15122
                                    format: 'H:i',
15123
                                    submitFormat: 'Hi',
15124
                                    increment: 5,
15125
                                    value: DefaultValue,
15126
                                    anchor: '100%',
15127
                                    listeners: {}
15128
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
15129
                                }
15130
                            });
15131
                            break
15132
                        default:
15133
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
15134
                                cols.push({
15135
                                    text: rec.HeaderTitle,
15136
                                    dataIndex: rec.FieldName,
15137
                                    width: 100,
15138
                                    filter: {
15139
                                        type: 'string',
15140
                                        itemDefaults: {
15141
                                            emptyText: 'Search for...'
15142
                                        }
15143
                                    }
15144
                                });
15145
                            } else if (rec.SearchType == '0') {
15146
                                var valueField = null;
15147
                                var displayValue = null;
15148
                                var TableRef = undefined;
15149
                                if (rec.TableRef != '') {
15150
                                    TableRef = rec.TableRef;
15151

    
15152
                                    Ext.Ajax.request({
15153
                                        async: false,
15154
                                        method: 'POST',
15155
                                        url: '/UserControl/GetStore',
15156
                                        params: {
15157
                                            tableName: 'SDATATABLEFIELD',
15158
                                            param: 'TableName[equal]' + rec.TableRef
15159
                                        },
15160
                                        success: function (response) {
15161
                                            var results = Ext.decode(response.responseText);
15162
                                            data_ = results.data;
15163
                                            if (data_ != undefined) {
15164
                                                valueField_ = $.grep(data_, function (r) {
15165
                                                    return r.ValueField == '1'
15166
                                                });
15167
                                                valueField = valueField_[0].FieldName
15168
                                                displayValue_ = $.grep(data_, function (r) {
15169
                                                    return r.DisplayValue == '1'
15170
                                                });
15171
                                                displayValue = displayValue_[0].FieldName
15172
                                            }
15173
                                        }
15174
                                    });
15175

    
15176
                                    //create Store
15177
                                    Ext.create('Ext.data.Store', {
15178
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15179
                                        autoLoad: true,
15180
                                        proxy: {
15181
                                            method: 'POST',
15182
                                            type: 'ajax',
15183
                                            url: '/UserControl/GetStore',
15184
                                            extraParams: {
15185
                                                tableName: TableRef,
15186
                                                param: rec.ParamCombo
15187
                                            },
15188
                                            reader: {
15189
                                                type: 'json',
15190
                                                root: 'data',
15191
                                                totalProperty: 'data[0].TotalCount'
15192
                                            }
15193
                                        }
15194
                                    });
15195
                                } else if (rec.FixedValue != '') {
15196
                                    var storeData = [];
15197
                                    var str = rec.FixedValue;
15198
                                    var hasil = str.split('||');
15199
                                    hasil.forEach(function (h) {
15200
                                        store_ = h.split('=')
15201
                                        storeData.push({
15202
                                            code: store_[0],
15203
                                            desc: store_[1],
15204

    
15205
                                        });
15206
                                    });
15207

    
15208
                                    valueField = 'code';
15209
                                    displayValue = 'desc';
15210

    
15211
                                    Ext.create('Ext.data.Store', {
15212
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15213
                                        autoLoad: true,
15214
                                        data: storeData
15215
                                    })
15216
                                }
15217

    
15218
                                cols.push({
15219
                                    xtype: 'minovacombocolumn',
15220
                                    hidden: Hidden_,
15221
                                    text: rec.HeaderTitle,
15222
                                    dataIndex: rec.FieldName,
15223
                                    valueField: valueField,
15224
                                    displayField: displayValue,
15225
                                    store: 'store_' + me.tableName + rec.FieldName,
15226
                                    editor: {
15227
                                        allowBlank: null_,
15228
                                        xtype: 'combobox',
15229
                                        readOnly: ReadOnly_,
15230
                                        id: tableName + rec.FieldName,
15231
                                        nameTable: rec.TableName,
15232
                                        fieldGrid: rec.FieldName,
15233
                                        valueField: valueField,
15234
                                        displayField: displayValue,
15235

    
15236
                                        store: 'store_' + me.tableName + rec.FieldName,
15237
                                    },
15238
                                    filter: {
15239
                                        type: 'list',
15240
                                        itemDefaults: {
15241
                                            emptyText: 'Search for...'
15242
                                        }
15243
                                    }
15244
                                });
15245
                            } else if (rec.SearchType == '5') {							
15246
                                var valueField = null;
15247
                                var displayValue = null;
15248
                                var AdditionaldisplayValue = null;
15249
                                var TableRef = undefined;
15250
                                if (rec.TableRef != '') {
15251
                                    TableRef = rec.TableRef;
15252
                                    Ext.Ajax.request({
15253
                                        async: false,
15254
                                        method: 'POST',
15255
                                        url: '/UserControl/GetStore',
15256
                                        params: {
15257
                                            tableName: 'SDATATABLEFIELD',
15258
                                            param: 'TableName[equal]' + rec.TableRef
15259
                                        },
15260
                                        success: function (response) {
15261
                                            var results = Ext.decode(response.responseText);
15262
                                            data_ = results.data;
15263
                                            if (data_ != undefined) {
15264
                                                valueField_ = $.grep(data_, function (r) {
15265
                                                    return r.ValueField == '1'
15266
                                                });
15267
                                                if (valueField_.length > 0) {
15268
                                                    valueField = valueField_[0].FieldName
15269
                                                }
15270

    
15271
                                                displayValue_ = $.grep(data_, function (r) {
15272
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
15273
                                                });
15274
                                                if (displayValue_.length > 0) {
15275
                                                    displayValue = displayValue_[0].FieldName;
15276
                                                }
15277
                                                if (displayValue_.length >= 2) {
15278
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
15279
                                                }
15280
                                            }
15281
                                        }
15282
                                    });
15283
                                }
15284
                                Ext.create('Ext.data.Store', {
15285
                                    storeId: 'store_' + me.tableName + rec.FieldName,
15286
                                    autoLoad: true,
15287
                                    proxy: {
15288
                                        method: 'POST',
15289
                                        type: 'ajax',
15290
                                        url: '/UserControl/GetStoreAuth',
15291
                                        extraParams: {
15292
                                            tableName: TableRef,
15293
                                            param: rec.ParamCombo,
15294
                                            menuId: MinovaUtil.GetMenuID()
15295
                                        },
15296
                                        reader: {
15297
                                            type: 'json',
15298
                                            root: 'data',
15299
                                            totalProperty: 'data[0].TotalCount'
15300
                                        }
15301
                                    }
15302
                                });
15303
                                cols.push({
15304
                                    xtype : 'minovacombocolumn',
15305
                                    hidden: Hidden_,
15306
                                    text: rec.HeaderTitle,
15307
                                    dataIndex: rec.FieldName,
15308
                                    valueField : valueField,
15309
                                    displayField : displayValue,
15310
                                    store : 'store_' + me.tableName + rec.FieldName,
15311
                                    tpl: Ext.create('Ext.XTemplate',
15312
                                            '<ul class="x-list-plain"><tpl for=".">',
15313
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
15314
                                            '</tpl></ul>'),
15315
                                    displayTpl: Ext.create('Ext.XTemplate',
15316
                                        '<tpl for=".">',
15317
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
15318
                                        '</tpl>'),
15319
                                    editor: {
15320
                                        allowBlank: null_,
15321
                                        xtype: 'combobox',
15322
                                        readOnly: ReadOnly_,
15323
                                        id: rec.TableName + rec.FieldName,
15324
                                        nameTable: rec.TableName,
15325
                                        fieldGrid: rec.FieldName,
15326
                                        valueField: valueField,
15327
                                        displayField: displayValue,
15328
                                        store: 'store_' + me.tableName + rec.FieldName,
15329
                                        value: rec.DefaultValue,
15330
                                        tpl: Ext.create('Ext.XTemplate',
15331
                                            '<ul class="x-list-plain"><tpl for=".">',
15332
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
15333
                                            '</tpl></ul>'),
15334
                                        displayTpl: Ext.create('Ext.XTemplate',
15335
                                            '<tpl for=".">',
15336
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
15337
                                            '</tpl>')
15338
                                    },
15339
                                    renderer: function (value) {
15340
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
15341
                                        var index = store.find(valueField, value);
15342
                                        var val = "";
15343
                                        if (index != -1) {
15344
                                            var rc = store.getAt(index);
15345
                                            //val = rc.get(displayValue);
15346
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
15347
                                        } else {
15348
                                            val = value;
15349
                                        }
15350
                                        return val;
15351
                                    },
15352
                                    filter: {
15353
                                        type: 'list',
15354
                                        itemDefaults: {
15355
                                            emptyText: 'Search for...'
15356
                                        }
15357
                                    }
15358
                                });
15359
                            } else if (rec.SearchType == '2') {
15360
                                var triger = (rec.TriggerCombo).split('$');
15361
                                var targetField_ = triger[0];
15362
                                var fieldValue_ = triger[1];
15363
                                cols.push({
15364
                                    text: rec.HeaderTitle,
15365
                                    hidden: Hidden_,
15366
                                    dataIndex: rec.FieldName,
15367
                                    filter: {
15368
                                        itemDefaults: {
15369
                                            emptyText: 'Search for...'
15370
                                        }
15371
                                    },
15372
                                    editor: {
15373
                                        allowBlank: null_,
15374
                                        xtype: 'minovalookupgrid',
15375
                                        readOnly: ReadOnly_,
15376
                                        isGrid: true,
15377
                                        fieldTarget: targetField_,
15378
                                        fieldValue: fieldValue_,
15379
                                        isGrid: true,
15380
                                        id: tableName + rec.FieldName,
15381
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15382
                                        triggerCls: 'x-form-search-trigger',
15383
                                        vtype: 'alphanum', // disable space
15384
                                        nameTable: rec.TableName,
15385
                                        fieldGrid: rec.FieldName,
15386
                                        LookupFunction: rec.LookupFunction,
15387
                                        listeners: {
15388
                                            change: function (val) {
15389
                                                var custumFunc = rec.SelectFunction;
15390
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15391
                                                    Ext.Ajax.request({
15392
                                                        async: false,
15393
                                                        method: 'POST',
15394
                                                        url: '/UserControl/GetStore',
15395
                                                        params: {
15396
                                                            tableName: 'PCMFUNC',
15397
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15398
                                                        },
15399
                                                        success: function (response) {
15400
                                                            var results = Ext.decode(response.responseText);
15401
                                                            data_ = results.data[0];
15402
                                                            if (data_ != undefined) {
15403
                                                                custumFunc = data_.FunctionCode;
15404
                                                            }
15405
                                                        }
15406
                                                    });
15407
                                                }
15408
                                                if (custumFunc) {
15409
                                                    eval(custumFunc)
15410
                                                }
15411
                                            }
15412
                                        }
15413
                                    }
15414
                                });
15415
                            } else if (rec.SearchType == '3') {
15416
                                cols.push({
15417
                                    text: rec.HeaderTitle,
15418
                                    hidden: Hidden_,
15419
                                    dataIndex: rec.FieldName,
15420
                                    filter: {
15421
                                        itemDefaults: {
15422
                                            emptyText: 'Search for...'
15423
                                        }
15424
                                    },
15425
                                    editor: {
15426
                                        allowBlank: null_,
15427
                                        // xtype: 'minovalookuptreePopup',
15428
                                        xtype: 'MinovaLookupTree',
15429
                                        readOnly: ReadOnly_,
15430
                                        id: tableName + rec.FieldName,
15431
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15432
                                        triggerCls: 'x-form-search-trigger',
15433
                                        vtype: 'alphanum', // disable space
15434
                                        treeSructure: rec.SearchFunction, //'O-O-P',
15435
                                        objClassValue: rec.ParamCombo, //'O',
15436
                                        nameTable: rec.TableName,
15437
                                        fieldGrid: rec.FieldName,
15438
                                        listeners: {
15439
                                            change: function (val) {
15440
                                                var custumFunc = rec.SelectFunction;
15441
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15442
                                                    Ext.Ajax.request({
15443
                                                        async: false,
15444
                                                        method: 'POST',
15445
                                                        url: '/UserControl/GetStore',
15446
                                                        params: {
15447
                                                            tableName: 'PCMFUNC',
15448
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15449
                                                        },
15450
                                                        success: function (response) {
15451
                                                            var results = Ext.decode(response.responseText);
15452
                                                            data_ = results.data[0];
15453
                                                            if (data_ != undefined) {
15454
                                                                custumFunc = data_.FunctionCode;
15455
                                                            }
15456
                                                        }
15457
                                                    });
15458
                                                }
15459
                                                if (custumFunc) {
15460
                                                    eval(custumFunc)
15461
                                                }
15462
                                            }
15463
                                        }
15464
                                    }
15465
                                });
15466
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
15467
                                var triger = (rec.TriggerCombo).split('&');
15468
                                var targetField_ = triger[0];
15469
                                var fieldValue_ = triger[0];
15470
                                cols.push({
15471
                                    text: rec.HeaderTitle,
15472
                                    hidden: Hidden_,
15473
                                    dataIndex: rec.FieldName,
15474
                                    filter: {
15475
                                        itemDefaults: {
15476
                                            emptyText: 'Search for...'
15477
                                        }
15478
                                    },
15479
                                    editor: {
15480
                                        allowBlank: null_,
15481
                                        xtype: 'lookupemployee',
15482
                                        readOnly: ReadOnly_,
15483
                                        isGrid: true,
15484
                                        fieldTarget: targetField_,
15485
                                        fieldValue: fieldValue_,
15486
                                        isGrid: true,
15487
                                        id: tableName + rec.FieldName,
15488
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15489
                                        triggerCls: 'x-form-search-trigger',
15490
                                        vtype: 'alphanum', // disable space
15491
                                        nameTable: rec.TableName,
15492
                                        fieldGrid: rec.FieldName,
15493
                                        listeners: {
15494
                                            change: function (val) {
15495
                                                var custumFunc = rec.SelectFunction;
15496
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15497
                                                    Ext.Ajax.request({
15498
                                                        async: false,
15499
                                                        method: 'POST',
15500
                                                        url: '/UserControl/GetStore',
15501
                                                        params: {
15502
                                                            tableName: 'PCMFUNC',
15503
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15504
                                                        },
15505
                                                        success: function (response) {
15506
                                                            var results = Ext.decode(response.responseText);
15507
                                                            data_ = results.data[0];
15508
                                                            if (data_ != undefined) {
15509
                                                                custumFunc = data_.FunctionCode;
15510
                                                            }
15511
                                                        }
15512
                                                    });
15513
                                                }
15514
                                                if (custumFunc) {
15515
                                                    eval(custumFunc)
15516
                                                }
15517
                                            }
15518
                                        }
15519
                                    }
15520
                                });
15521
                            } else if (rec.SearchType == '4' && isLookup != true) {
15522
                                cols.push({
15523

    
15524
                                    text: rec.HeaderTitle,
15525
                                    hidden: Hidden_,
15526
                                    dataIndex: rec.FieldName,
15527
                                    filter: {
15528
                                        itemDefaults: {
15529
                                            emptyText: 'Search for...'
15530
                                        }
15531
                                    },
15532
                                    editor: {
15533
                                        allowBlank: null_,
15534
                                        xtype: 'lookupemployee',
15535
                                        readOnly: ReadOnly_,
15536
                                        isGrid: true,
15537
                                        fieldTarget: targetField_,
15538
                                        fieldValue: fieldValue_,
15539
                                        isGrid: true,
15540
                                        id: tableName + rec.FieldName,
15541
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15542
                                        triggerCls: 'x-form-search-trigger',
15543
                                        vtype: 'alphanum', // disable space
15544
                                        nameTable: rec.TableName,
15545
                                        fieldGrid: rec.FieldName,
15546
                                        listeners: {
15547
                                            change: function (val) {
15548
                                                var custumFunc = rec.SelectFunction;
15549
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15550
                                                    Ext.Ajax.request({
15551
                                                        async: false,
15552
                                                        method: 'POST',
15553
                                                        url: '/UserControl/GetStore',
15554
                                                        params: {
15555
                                                            tableName: 'PCMFUNC',
15556
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15557
                                                        },
15558
                                                        success: function (response) {
15559
                                                            var results = Ext.decode(response.responseText);
15560
                                                            data_ = results.data[0];
15561
                                                            if (data_ != undefined) {
15562
                                                                custumFunc = data_.FunctionCode;
15563
                                                            }
15564
                                                        }
15565
                                                    });
15566
                                                }
15567
                                                if (custumFunc) {
15568
                                                    eval(custumFunc)
15569
                                                }
15570
                                            }
15571
                                        }
15572
                                    }
15573
                                });
15574
                            } else {
15575
                                cols.push({
15576
                                    text: rec.HeaderTitle,
15577
                                    hidden: Hidden_,
15578
                                    dataIndex: rec.FieldName,
15579
                                    filter: {
15580
                                        itemDefaults: {
15581
                                            emptyText: 'Search for...'
15582
                                        }
15583
                                    },
15584
                                    editor: {
15585
                                        allowBlank: null_,
15586
                                        xtype: 'textfield',
15587
                                        readOnly: ReadOnly_,
15588
                                        id: tableName + rec.FieldName,
15589
                                        nameTable: rec.TableName,
15590
                                        fieldGrid: rec.FieldName,
15591
                                        listeners: {
15592
                                            change: function (val) {
15593
                                                var custumFunc = null;
15594
                                                Ext.Ajax.request({
15595
                                                    async: false,
15596
                                                    method: 'POST',
15597
                                                    url: '/UserControl/GetStore',
15598
                                                    params: {
15599
                                                        tableName: 'SDATATABLEFIELD',
15600
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
15601
                                                    },
15602
                                                    success: function (response) {
15603
                                                        var results = Ext.decode(response.responseText);
15604
                                                        data_ = results.data[0];
15605
                                                        if (data_ != undefined) {
15606
                                                            custumFunc = data_.SelectFunction;
15607
                                                            //console.log(data_)
15608
                                                        }
15609
                                                    }
15610
                                                });
15611
                                                if (custumFunc) {
15612
                                                    eval(custumFunc)
15613
                                                }
15614
                                            }
15615
                                        }
15616
                                    }
15617
                                });
15618
                            }
15619
                            break
15620
                    }
15621
                } else {
15622
                    cols.push({
15623
                        text: rec.HeaderTitle,
15624
                        hidden: Hidden_,
15625
                        dataIndex: rec.FieldName,
15626
                        hidden: true,
15627
                        editor: {
15628
                            allowBlank: true,
15629
                            xtype: 'textfield',
15630
                            readOnly: ReadOnly_,
15631
                            id: tableName + rec.FieldName,
15632
                            nameTable: rec.TableName,
15633
                            fieldGrid: rec.FieldName,
15634
                        },
15635
                        filter: {
15636
                            itemDefaults: {
15637
                                emptyText: 'Search for...'
15638
                            }
15639
                        }
15640
                    });
15641
                }
15642
            });
15643
        };
15644
        addData = addData + "}";
15645
        Ext.applyIf(me, {
15646

    
15647
            items: [{
15648
                xtype: 'grid',
15649
                id: gridName,
15650
                name: gridName,
15651
                height: height,
15652
                autoHeight: true,
15653
                //store: 'gridStore',
15654
                autoScroll: true,
15655
                store: Ext.create('Ext.data.Store', {
15656
                    storeId: storeID,
15657
                    fields: fieldStore,
15658
                    proxy: {
15659
                        method: 'POST',
15660
                        type: 'ajax',
15661
                        url: '',
15662
                        reader: {
15663
                            type: 'json',
15664
                            root: 'data'
15665
                        }
15666
                    }
15667
                }),
15668
                dockedItems: [{
15669
                    xtype: 'toolbar',
15670
                    items: [{
15671
                        text: 'Add',
15672
                        hidden: hide_,
15673
                        name: tableName + 'Add',
15674
                        iconCls: 'fa-plus-circle',
15675
                        style: 'font-family: FontAwesome',
15676
                        handler: function () {
15677
                            var store = Ext.StoreMgr.lookup(storeID)
15678
                            idx = store.getCount();
15679
                            var action = getParam('action');
15680
                            var data = '';
15681
                            var Sequence = 0;
15682
                            if (idx == 0) {
15683
                                Sequence = 1;
15684
                            } else {
15685
                                Sequence = 1 + idx;
15686
                            }
15687
                            //data = {
15688
                            //    Sequence: Sequence
15689
                            //};
15690

    
15691
                            var seq = 'Sequence';
15692
                            var SequenceValue = Sequence;
15693
                            eval(addData);
15694
                            data[seq] = SequenceValue;
15695

    
15696
                            store.insert(idx, data);
15697
                        }
15698

    
15699
                    }, {
15700
                        text: 'Delete',
15701
                        hidden: hide_,
15702
                        name: tableName + 'DeleteText',
15703
                        iconCls: 'fa-trash-o',
15704
                        style: 'font-family: FontAwesome',
15705
                        //disabled: true
15706
                        handler: function () {
15707
                            var me = this,
15708
                            store = Ext.StoreMgr.lookup(storeID)
15709

    
15710
                            var grid = Ext.getCmp(gridName);
15711

    
15712
                            Ext.MessageBox.show({
15713
                                title: 'Remove tab',
15714
                                msg: "This will remove. Do you want to continue?",
15715
                                buttons: Ext.MessageBox.YESNO,
15716
                                fn: function (choice) {
15717
                                    console.log(choice);
15718
                                    if (choice === 'yes') {
15719
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
15720
                                        if (selection) {
15721
                                            store.remove(selection);
15722
                                        }
15723
                                    }
15724
                                    //delete panel.pendingClose;
15725
                                }
15726
                            });
15727
                        }
15728

    
15729
                    }
15730
                    ]
15731
                }
15732
                ],
15733
                columns: cols,
15734
                selType: checkSelection,
15735
                //selType: 'rowmodel',
15736
                plugins: {
15737
                    ptype: 'rowediting',
15738
                    pluginId: 'rowEditing',
15739
                    clicksToEdit: 0,
15740
                    listeners: {
15741
                        //edit: 'onGridEditorEdit'
15742
                    }
15743
                }
15744
            }, ]
15745

    
15746
        });
15747

    
15748
        me.callParent(arguments);
15749
    }
15750
});
15751

    
15752
Ext.define('MinovaUtil.MinovaES.Minovatimefield', {
15753
    extend: 'Ext.form.field.Time',
15754
    alias: ['widget.minovatimefield'],
15755
    undefinedText: '&#160;',
15756
    setValue: function (v) {
15757
        hasil = '';
15758
        if (v != this.getValue()) {
15759
            if (v) {
15760
                if (v.length == 4) {
15761

    
15762
                    var h = v.substring(0, 2);
15763
                    var m = v.substring(2, 4)
15764
                    //this.setValue(h +':'+m);
15765
                    hasil = h + ':' + m;
15766
                }
15767
                if (v.length == 5) {
15768
                    this.setValue(v);
15769
                    hasil = v;
15770
                }
15771
            }
15772
            this.setValue(hasil);
15773
        }
15774

    
15775
    },
15776
});
15777

    
15778
Ext.define('MinovaUtil.MinovaES.MinovaFixValueLabel', {
15779
    extend: 'Ext.form.Label',
15780
    alias: ['widget.MinovaFixValueLabel', 'widget.minovafixvaluelabel'],
15781
    anchor: '50%',
15782
    defaultRenderer: function (value) {
15783
        if (typeof(this.store) !== 'object') {
15784
            this.store = Ext.data.StoreManager.lookup(this.store);
15785
        }
15786
        var idx = this.store.findExact('code', value);
15787
        if (this.store.getAt(idx)) {
15788
            var result = this.store.getAt(idx).get('desc');
15789
            value = result ? result : value;
15790
        }
15791
        this.setRawValue(value);
15792

    
15793
    },
15794
    initComponent: function () {
15795
        var me = this;
15796
        var storeData = [];
15797
        var str = me.fixedValue;
15798
        var hasil = str.split('||');
15799
        hasil.forEach(function (h) {
15800
            store_ = h.split('=')
15801
            storeData.push({
15802
                code: store_[0],
15803
                desc: store_[1],
15804

    
15805
            });
15806
        });
15807
        Ext.applyIf(me, {
15808

    
15809
            store: Ext.create('Ext.data.Store', {
15810
                storeId: 'store' + name,
15811
                autoLoad: true,
15812
                data: storeData
15813

    
15814
            }),
15815

    
15816
        });
15817
        me.callParent(arguments);
15818
    }
15819
});
15820

    
15821
Ext.define('MinovaUtil.MinovaES.MinovaComboColumnFixValueLabel', {
15822
    extend: 'Ext.grid.column.Column',
15823
    alias: ['widget.minovacombocolumnfixvalue'],
15824
    initComponent: function () {
15825
        var me = this;
15826
        var storeData = [];
15827
        var str = me.fixedValue;
15828
        var hasil = str.split('||');
15829
        hasil.forEach(function (h) {
15830
            store_ = h.split('=')
15831
            storeData.push({
15832
                code: store_[0],
15833
                desc: store_[1],
15834

    
15835
            });
15836
        });
15837
        Ext.applyIf(me, {
15838

    
15839
            store: Ext.create('Ext.data.Store', {
15840
                storeId: 'store' + name,
15841
                autoLoad: true,
15842
                data: storeData
15843

    
15844
            }),
15845

    
15846
        });
15847
        this.callParent(arguments);
15848
    },
15849
    defaultRenderer: function (value) {
15850
        if (typeof(this.store) !== 'object') {
15851
            Ext.data.StoreManager.lookup(this.store).load();
15852
            this.store = Ext.data.StoreManager.lookup(this.store);
15853
        }
15854
        var idx = this.store.findExact('code', value);
15855
        if (this.store.getAt(idx)) {
15856
            var result = this.store.getAt(idx).get('desc');
15857
            value = result ? result : value;
15858
        }
15859
        return value;
15860
    }
15861
});
15862

    
15863
Ext.define('MinovaUtil.MinovaES.MinovaLookupColumn', {
15864
    extend: 'Ext.grid.column.Column',
15865
    alias: ['widget.minovalookupcolumn'],
15866
    initComponent: function () {
15867
        this.callParent(arguments);
15868
    },
15869
    defaultRenderer: function (value) {
15870
        data_ = undefined;
15871
        Ext.Ajax.request({
15872
            async: false,
15873
            method: 'POST',
15874
            url: '/UserControl/GetStore',
15875
            params: {
15876
                tableName: 'PDSCMTABLE',
15877
                param: this.tableName + ',' + value + ',hasil'
15878
            },
15879
            success: function (response) {
15880
                var results = Ext.decode(response.responseText);
15881
                data_ = results.data;
15882
                if (data_ != null) {
15883
                    if (data_.length > 0) {
15884
                        value = value + '-' + data_[0].hasil;
15885
                    }
15886
                }
15887
            }
15888
        });
15889
        return value;
15890
    }
15891
});
15892

    
15893
Ext.define('MinovaUtil.MinovaES.MinovaPMSTreeEditAbleGrid', {
15894
    extend: 'Ext.form.Panel',
15895
    alias: ['widget.MinovaPMSTreeEditAbleGrid', 'widget.Minovapmstreeeditablegrid', 'widget.minovapmstreeeeditablegrid'],
15896
    requires: [
15897
		'Ext.grid.plugin.CellEditing',
15898
		'Ext.grid.Panel',
15899
    ],
15900
    anchor: '100%',
15901
    tableName: undefined,
15902
    apprasalType: undefined,
15903
    empID: undefined,
15904
    hideButton: undefined,
15905
    multiSelect: undefined,
15906
    height: undefined,
15907
    initComponent: function () {
15908
        var me = this;
15909
        var isLookup = me.isLookup;
15910
        var hide_ = false;
15911
        var widthLock = 250;
15912
        var checkSelection = '';
15913
        if (me.hideButton == true) {
15914
            hide_ = true;
15915
        }
15916
        if (me.multiSelect) {
15917
            locking = false;
15918
            checkSelection = 'checkboxmodel';
15919
            widthLock = 40;
15920
        }
15921
        var tableName = me.tableName;
15922
        var cols = [];
15923
        var fieldStore = [];
15924
        var _url = 'GetAllField';
15925
        var hasil = null;
15926
        var height = me.height;
15927
        var storeID = 'store' + me.tableName;
15928
        var gridName = 'grid' + me.tableName;
15929
        if (me.storeName) {
15930
            storeID = me.storeName;
15931
        }
15932
        var empID = me.empID;
15933
        var apprasalType = me.apprasalType;
15934
        var LangID = MinovaUtil.GetLangID();
15935
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
15936
        Ext.Ajax.request({
15937
            async: false,
15938
            method: 'POST',
15939
            url: '/Performance/getFieldPMS',
15940
            params: {
15941
                tableName: 'PDSPMS001',
15942
                _param: parameter
15943
            },
15944
            success: function (response) {
15945
                var results = Ext.decode(response.responseText);
15946
                hasil = Ext.decode(results.data);
15947
            }
15948
        });
15949
        var addData = 'var data={';
15950
        if (hasil.length > 0) {
15951
            Ext.each(hasil, function (rec) {
15952
                fieldStore.push(rec.FieldName)
15953
                if (rec.FieldName != 'Sequence') {
15954
                    addData = addData + rec.FieldName + ":" + "'',";
15955
                }
15956
                var null_ = null;
15957
                var ReadOnly_ = false;
15958
                if (rec.IsPrimaryKey == true) {
15959
                    null_ = false;
15960
                }
15961
                if (rec.IsRequired == true) {
15962
                    null_ = false;
15963
                } else {
15964
                    null_ = true;
15965
                }
15966
                if (rec.ReadOnly == '1') {
15967
                    ReadOnly_ = true;
15968
                }
15969
                var Hidden_ = false;
15970
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
15971
                    Hidden_ = true;
15972
                    null_ = true;
15973
                }
15974
                if (rec.GridView != 0) {
15975
                    if (rec.GridView == 3) {
15976
                        cols.push({
15977
                            xtype: 'treecolumn',
15978
                            text: rec.HeaderTitle,
15979
                            dataIndex: rec.FieldName,
15980
                            hidden: Hidden_,
15981
                            width: 200,
15982
                            sortable: true,
15983
                            filter: {
15984
                                itemDefaults: {
15985
                                    emptyText: 'Search for...'
15986
                                }
15987
                            }
15988
                        });
15989
                    } else {
15990
                        switch (rec.FormatRef) {
15991
                            case "date":
15992
                                cols.push({
15993
                                    xtype: 'minovadatecolumn',
15994
                                    hidden: Hidden_,
15995
                                    text: rec.HeaderTitle,
15996
                                    dataIndex: rec.FieldName,
15997
                                    filter: {
15998
                                        itemDefaults: {
15999
                                            emptyText: 'Search for...',
16000
                                        }
16001
                                    },
16002
                                    editor: {
16003
                                        allowBlank: null_,
16004
                                        xtype: 'datefield',
16005
                                        hideMode: 'visibility',
16006
                                        readOnly: ReadOnly_,
16007
                                        id: tableName + rec.FieldName,
16008
                                        fieldGrid: rec.FieldName,
16009
                                        nameTable: rec.TableName,
16010
                                    }
16011
                                });
16012
                                break
16013
                            case "amount":
16014
                                cols.push({
16015
                                    xtype: 'minovacurrancycolumn',
16016
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
16017
                                    text: rec.HeaderTitle,
16018
                                    align: 'right',
16019
                                    dataIndex: rec.FieldName,
16020
                                    hidden: Hidden_,
16021
                                    filter: {
16022
                                        itemDefaults: {
16023
                                            emptyText: 'Search for...'
16024
                                        }
16025
                                    },
16026
                                    editor: {
16027
                                        allowBlank: null_,
16028
                                        xtype: 'minovacurrencyfield',
16029
                                        //renderer: Ext.util.Format.numberRenderer("0,0"),
16030
                                        //vtype: 'validateDecimal',
16031
                                        readOnly: ReadOnly_,
16032
                                        id: tableName + rec.FieldName,
16033
                                        nameTable: rec.TableName,
16034
                                        fieldGrid: rec.FieldName,
16035
                                        fieldStyle: 'text-align:right;',
16036
                                        value: '0',
16037

    
16038
                                    }
16039
                                });
16040
                                break
16041
                            case "time":
16042
                                var DefaultValue = rec.DefaultValue;
16043
                                if (DefaultValue == '') {
16044
                                    defaultValue = '00:00';
16045
                                }
16046
                                cols.push({
16047
                                    //xtype: 'minovatimecolumn',
16048
                                    xtype: 'timefield',
16049
                                    format: 'H:i',
16050
                                    submitFormat: 'Hi',
16051
                                    text: rec.HeaderTitle,
16052
                                    dataIndex: rec.FieldName,
16053
                                    hidden: Hidden_,
16054
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
16055
                                    filter: {
16056
                                        itemDefaults: {
16057
                                            emptyText: 'Search for...'
16058
                                        }
16059
                                    },
16060
                                    editor: {
16061
                                        allowBlank: null_,
16062
                                        xtype: 'timefield',
16063
                                        readOnly: ReadOnly_,
16064
                                        id: tableName + rec.FieldName,
16065
                                        format: 'H:i',
16066
                                        submitFormat: 'Hi',
16067
                                        increment: 5,
16068
                                        value: DefaultValue,
16069
                                        anchor: '100%',
16070
                                        listeners: {}
16071
                                        //renderer: Ext.util.Format.dateRenderer('G:i'),
16072
                                    }
16073
                                });
16074
                                break
16075
                            default:
16076
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
16077
                                    cols.push({
16078
                                        text: rec.HeaderTitle,
16079
                                        dataIndex: rec.FieldName,
16080
                                        width: 100,
16081
                                        filter: {
16082
                                            type: 'string',
16083
                                            itemDefaults: {
16084
                                                emptyText: 'Search for...'
16085
                                            }
16086
                                        }
16087
                                    });
16088
                                } else if (rec.SearchType == '0') {
16089
                                    var valueField = null;
16090
                                    var displayValue = null;
16091
                                    var TableRef = undefined;
16092
                                    if (rec.TableRef != '') {
16093
                                        TableRef = rec.TableRef;
16094

    
16095
                                        Ext.Ajax.request({
16096
                                            async: false,
16097
                                            method: 'POST',
16098
                                            url: '/UserControl/GetStore',
16099
                                            params: {
16100
                                                tableName: 'SDATATABLEFIELD',
16101
                                                param: 'TableName[equal]' + rec.TableRef
16102
                                            },
16103
                                            success: function (response) {
16104
                                                var results = Ext.decode(response.responseText);
16105
                                                data_ = results.data;
16106
                                                if (data_ != undefined) {
16107
                                                    valueField_ = $.grep(data_, function (r) {
16108
                                                        return r.ValueField == '1'
16109
                                                    });
16110
                                                    valueField = valueField_[0].FieldName
16111
                                                    displayValue_ = $.grep(data_, function (r) {
16112
                                                        return r.DisplayValue == '1'
16113
                                                    });
16114
                                                    displayValue = displayValue_[0].FieldName
16115
                                                }
16116
                                            }
16117
                                        });
16118

    
16119
                                        //create Store
16120
                                        Ext.create('Ext.data.Store', {
16121
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16122
                                            autoLoad: true,
16123
                                            proxy: {
16124
                                                method: 'POST',
16125
                                                type: 'ajax',
16126
                                                url: '/UserControl/GetStore',
16127
                                                extraParams: {
16128
                                                    tableName: TableRef,
16129
                                                    param: rec.ParamCombo
16130
                                                },
16131
                                                reader: {
16132
                                                    type: 'json',
16133
                                                    root: 'data',
16134
                                                    totalProperty: 'data[0].TotalCount'
16135
                                                }
16136
                                            }
16137
                                        });
16138
                                    } else if (rec.FixedValue != '') {
16139
                                        var storeData = [];
16140
                                        var str = rec.FixedValue;
16141
                                        var hasil = str.split('||');
16142
                                        hasil.forEach(function (h) {
16143
                                            store_ = h.split('=')
16144
                                            storeData.push({
16145
                                                code: store_[0],
16146
                                                desc: store_[1],
16147

    
16148
                                            });
16149
                                        });
16150

    
16151
                                        valueField = 'code';
16152
                                        displayValue = 'desc';
16153

    
16154
                                        Ext.create('Ext.data.Store', {
16155
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16156
                                            autoLoad: true,
16157
                                            data: storeData
16158
                                        })
16159
                                    }
16160

    
16161
                                    cols.push({
16162
                                        xtype: 'minovacombocolumn',
16163
                                        hidden: Hidden_,
16164
                                        text: rec.HeaderTitle,
16165
                                        dataIndex: rec.FieldName,
16166
                                        valueField: valueField,
16167
                                        displayField: displayValue,
16168
                                        store: 'store_' + me.tableName + rec.FieldName,
16169
                                        editor: {
16170
                                            allowBlank: null_,
16171
                                            xtype: 'combobox',
16172
                                            readOnly: ReadOnly_,
16173
                                            id: tableName + rec.FieldName,
16174
                                            nameTable: rec.TableName,
16175
                                            fieldGrid: rec.FieldName,
16176
                                            valueField: valueField,
16177
                                            displayField: displayValue,
16178

    
16179
                                            store: 'store_' + me.tableName + rec.FieldName,
16180
                                        },
16181
                                        filter: {
16182
                                            type: 'list',
16183
                                            itemDefaults: {
16184
                                                emptyText: 'Search for...'
16185
                                            }
16186
                                        }
16187
                                    });
16188

    
16189
                                } else if (rec.SearchType == '5') {								
16190
                                    var valueField = null;
16191
                                    var displayValue = null;
16192
                                    var AdditionaldisplayValue = null;
16193
                                    var TableRef = undefined;
16194
                                    if (rec.TableRef != '') {
16195
                                        TableRef = rec.TableRef;
16196
                                        Ext.Ajax.request({
16197
                                            async: false,
16198
                                            method: 'POST',
16199
                                            url: '/UserControl/GetStore',
16200
                                            params: {
16201
                                                tableName: 'SDATATABLEFIELD',
16202
                                                param: 'TableName[equal]' + rec.TableRef
16203
                                            },
16204
                                            success: function (response) {
16205
                                                var results = Ext.decode(response.responseText);
16206
                                                data_ = results.data;
16207
                                                if (data_ != undefined) {
16208
                                                    valueField_ = $.grep(data_, function (r) {
16209
                                                        return r.ValueField == '1'
16210
                                                    });
16211
                                                    if (valueField_.length > 0) {
16212
                                                        valueField = valueField_[0].FieldName
16213
                                                    }
16214

    
16215
                                                    displayValue_ = $.grep(data_, function (r) {
16216
                                                        return r.DisplayValue == '1' || r.DisplayValue == '2'
16217
                                                    });
16218
                                                    if (displayValue_.length > 0) {
16219
                                                        displayValue = displayValue_[0].FieldName;
16220
                                                    }
16221
                                                    if (displayValue_.length >= 2) {
16222
                                                        AdditionaldisplayValue = displayValue_[1].FieldName
16223
                                                    }
16224
                                                }
16225
                                            }
16226
                                        });
16227
                                    }
16228
                                    Ext.create('Ext.data.Store', {
16229
                                        storeId: 'store_' + me.tableName + rec.FieldName,
16230
                                        autoLoad: true,
16231
                                        proxy: {
16232
                                            method: 'POST',
16233
                                            type: 'ajax',
16234
                                            url: '/UserControl/GetStoreAuth',
16235
                                            extraParams: {
16236
                                                tableName: TableRef,
16237
                                                param: rec.ParamCombo,
16238
                                                menuId: MinovaUtil.GetMenuID()
16239
                                            },
16240
                                            reader: {
16241
                                                type: 'json',
16242
                                                root: 'data',
16243
                                                totalProperty: 'data[0].TotalCount'
16244
                                            }
16245
                                        }
16246
                                    });
16247
                                    cols.push({
16248
                                        xtype : 'minovacombocolumn',
16249
                                        hidden: Hidden_,
16250
                                        text: rec.HeaderTitle,
16251
                                        dataIndex: rec.FieldName,
16252
                                        valueField : valueField,
16253
                                        displayField : displayValue,
16254
                                        store : 'store_' + me.tableName + rec.FieldName,
16255
                                        tpl: Ext.create('Ext.XTemplate',
16256
                                            '<ul class="x-list-plain"><tpl for=".">',
16257
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
16258
                                            '</tpl></ul>'),
16259
                                        displayTpl: Ext.create('Ext.XTemplate',
16260
                                            '<tpl for=".">',
16261
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
16262
                                            '</tpl>'),
16263
                                        editor: {
16264
                                            allowBlank: null_,
16265
                                            xtype: 'combobox',
16266
                                            readOnly: ReadOnly_,
16267
                                            id: rec.TableName + rec.FieldName,
16268
                                            nameTable: rec.TableName,
16269
                                            fieldGrid: rec.FieldName,
16270
                                            valueField: valueField,
16271
                                            displayField: displayValue,
16272
                                            store: 'store_' + me.tableName + rec.FieldName,
16273
                                            value: rec.DefaultValue,
16274
                                            tpl: Ext.create('Ext.XTemplate',
16275
                                                '<ul class="x-list-plain"><tpl for=".">',
16276
                                                '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
16277
                                                '</tpl></ul>'),
16278
                                            displayTpl: Ext.create('Ext.XTemplate',
16279
                                                '<tpl for=".">',
16280
                                                '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
16281
                                                '</tpl>')
16282
                                        },
16283
                                        renderer: function (value) {
16284
                                            var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
16285
                                            var index = store.find(valueField, value);
16286
                                            var val = "";
16287
                                            if (index != -1) {
16288
                                                var rc = store.getAt(index);
16289
                                                //val = rc.get(displayValue);
16290
                                                val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
16291
                                            } else {
16292
                                                val = value;
16293
                                            }
16294
                                            return val;
16295
                                        },
16296
                                        filter: {
16297
                                            type: 'list',
16298
                                            itemDefaults: {
16299
                                                emptyText: 'Search for...'
16300
                                            }
16301
                                        }
16302
                                    });
16303
                                } else if (rec.SearchType == '2') {
16304
                                    var triger = (rec.TriggerCombo).split('$');
16305
                                    var targetField_ = triger[0];
16306
                                    var fieldValue_ = triger[1];
16307
                                    cols.push({
16308
                                        text: rec.HeaderTitle,
16309
                                        hidden: Hidden_,
16310
                                        dataIndex: rec.FieldName,
16311
                                        filter: {
16312
                                            itemDefaults: {
16313
                                                emptyText: 'Search for...'
16314
                                            }
16315
                                        },
16316
                                        editor: {
16317
                                            allowBlank: null_,
16318
                                            xtype: 'minovalookupgrid',
16319
                                            readOnly: ReadOnly_,
16320
                                            isGrid: true,
16321
                                            fieldTarget: targetField_,
16322
                                            fieldValue: fieldValue_,
16323
                                            isGrid: true,
16324
                                            id: tableName + rec.FieldName,
16325
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16326
                                            triggerCls: 'x-form-search-trigger',
16327
                                            vtype: 'alphanum', // disable space
16328
                                            nameTable: rec.TableName,
16329
                                            fieldGrid: rec.FieldName,
16330
                                            listeners: {
16331
                                                change: function (val) {
16332
                                                    var custumFunc = rec.SelectFunction;
16333
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16334
                                                        Ext.Ajax.request({
16335
                                                            async: false,
16336
                                                            method: 'POST',
16337
                                                            url: '/UserControl/GetStore',
16338
                                                            params: {
16339
                                                                tableName: 'PCMFUNC',
16340
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16341
                                                            },
16342
                                                            success: function (response) {
16343
                                                                var results = Ext.decode(response.responseText);
16344
                                                                data_ = results.data[0];
16345
                                                                if (data_ != undefined) {
16346
                                                                    custumFunc = data_.FunctionCode;
16347
                                                                }
16348
                                                            }
16349
                                                        });
16350
                                                    }
16351
                                                    if (custumFunc) {
16352
                                                        eval(custumFunc)
16353
                                                    }
16354
                                                }
16355
                                            }
16356
                                        }
16357
                                    });
16358
                                } else if (rec.SearchType == '3') {
16359
                                    cols.push({
16360
                                        text: rec.HeaderTitle,
16361
                                        hidden: Hidden_,
16362
                                        dataIndex: rec.FieldName,
16363
                                        filter: {
16364
                                            itemDefaults: {
16365
                                                emptyText: 'Search for...'
16366
                                            }
16367
                                        },
16368
                                        editor: {
16369
                                            allowBlank: null_,
16370
                                            // xtype: 'minovalookuptreePopup',
16371
                                            xtype: 'MinovaLookupTree',
16372
                                            readOnly: ReadOnly_,
16373
                                            id: tableName + rec.FieldName,
16374
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16375
                                            triggerCls: 'x-form-search-trigger',
16376
                                            vtype: 'alphanum', // disable space
16377
                                            treeSructure: rec.SearchFunction, //'O-O-P',
16378
                                            objClassValue: rec.ParamCombo, //'O',
16379
                                            nameTable: rec.TableName,
16380
                                            fieldGrid: rec.FieldName,
16381
                                            listeners: {
16382
                                                change: function (val) {
16383
                                                    var custumFunc = rec.SelectFunction;
16384
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16385
                                                        Ext.Ajax.request({
16386
                                                            async: false,
16387
                                                            method: 'POST',
16388
                                                            url: '/UserControl/GetStore',
16389
                                                            params: {
16390
                                                                tableName: 'PCMFUNC',
16391
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16392
                                                            },
16393
                                                            success: function (response) {
16394
                                                                var results = Ext.decode(response.responseText);
16395
                                                                data_ = results.data[0];
16396
                                                                if (data_ != undefined) {
16397
                                                                    custumFunc = data_.FunctionCode;
16398
                                                                }
16399
                                                            }
16400
                                                        });
16401
                                                    }
16402
                                                    if (custumFunc) {
16403
                                                        eval(custumFunc)
16404
                                                    }
16405
                                                }
16406
                                            }
16407
                                        }
16408
                                    });
16409
                                } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
16410
                                    var triger = (rec.TriggerCombo).split('&');
16411
                                    var targetField_ = triger[0];
16412
                                    var fieldValue_ = triger[0];
16413
                                    cols.push({
16414
                                        text: rec.HeaderTitle,
16415
                                        hidden: Hidden_,
16416
                                        dataIndex: rec.FieldName,
16417
                                        filter: {
16418
                                            itemDefaults: {
16419
                                                emptyText: 'Search for...'
16420
                                            }
16421
                                        },
16422
                                        editor: {
16423
                                            allowBlank: null_,
16424
                                            xtype: 'lookupemployee',
16425
                                            readOnly: ReadOnly_,
16426
                                            isGrid: true,
16427
                                            fieldTarget: targetField_,
16428
                                            fieldValue: fieldValue_,
16429
                                            isGrid: true,
16430
                                            id: tableName + rec.FieldName,
16431
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16432
                                            triggerCls: 'x-form-search-trigger',
16433
                                            vtype: 'alphanum', // disable space
16434
                                            nameTable: rec.TableName,
16435
                                            fieldGrid: rec.FieldName,
16436
                                            listeners: {
16437
                                                change: function (val) {
16438
                                                    var custumFunc = rec.SelectFunction;
16439
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16440
                                                        Ext.Ajax.request({
16441
                                                            async: false,
16442
                                                            method: 'POST',
16443
                                                            url: '/UserControl/GetStore',
16444
                                                            params: {
16445
                                                                tableName: 'PCMFUNC',
16446
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16447
                                                            },
16448
                                                            success: function (response) {
16449
                                                                var results = Ext.decode(response.responseText);
16450
                                                                data_ = results.data[0];
16451
                                                                if (data_ != undefined) {
16452
                                                                    custumFunc = data_.FunctionCode;
16453
                                                                }
16454
                                                            }
16455
                                                        });
16456
                                                    }
16457
                                                    if (custumFunc) {
16458
                                                        eval(custumFunc)
16459
                                                    }
16460
                                                }
16461
                                            }
16462
                                        }
16463
                                    });
16464
                                } else if (rec.SearchType == '4' && isLookup != true) {
16465
                                    cols.push({
16466

    
16467
                                        text: rec.HeaderTitle,
16468
                                        hidden: Hidden_,
16469
                                        dataIndex: rec.FieldName,
16470
                                        filter: {
16471
                                            itemDefaults: {
16472
                                                emptyText: 'Search for...'
16473
                                            }
16474
                                        },
16475
                                        editor: {
16476
                                            allowBlank: null_,
16477
                                            xtype: 'lookupemployee',
16478
                                            readOnly: ReadOnly_,
16479
                                            isGrid: true,
16480
                                            fieldTarget: targetField_,
16481
                                            fieldValue: fieldValue_,
16482
                                            isGrid: true,
16483
                                            id: tableName + rec.FieldName,
16484
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16485
                                            triggerCls: 'x-form-search-trigger',
16486
                                            vtype: 'alphanum', // disable space
16487
                                            nameTable: rec.TableName,
16488
                                            fieldGrid: rec.FieldName,
16489
                                            listeners: {
16490
                                                change: function (val) {
16491
                                                    var custumFunc = rec.SelectFunction;
16492
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16493
                                                        Ext.Ajax.request({
16494
                                                            async: false,
16495
                                                            method: 'POST',
16496
                                                            url: '/UserControl/GetStore',
16497
                                                            params: {
16498
                                                                tableName: 'PCMFUNC',
16499
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16500
                                                            },
16501
                                                            success: function (response) {
16502
                                                                var results = Ext.decode(response.responseText);
16503
                                                                data_ = results.data[0];
16504
                                                                if (data_ != undefined) {
16505
                                                                    custumFunc = data_.FunctionCode;
16506
                                                                }
16507
                                                            }
16508
                                                        });
16509
                                                    }
16510
                                                    if (custumFunc) {
16511
                                                        eval(custumFunc)
16512
                                                    }
16513
                                                }
16514
                                            }
16515
                                        }
16516
                                    });
16517
                                } else {
16518
                                    cols.push({
16519
                                        text: rec.HeaderTitle,
16520
                                        hidden: Hidden_,
16521
                                        dataIndex: rec.FieldName,
16522
                                        filter: {
16523
                                            itemDefaults: {
16524
                                                emptyText: 'Search for...'
16525
                                            }
16526
                                        },
16527
                                        editor: {
16528
                                            allowBlank: null_,
16529
                                            xtype: 'textfield',
16530
                                            readOnly: ReadOnly_,
16531
                                            id: tableName + rec.FieldName,
16532
                                            nameTable: rec.TableName,
16533
                                            fieldGrid: rec.FieldName,
16534
                                            listeners: {
16535
                                                change: function (val) {
16536
                                                    var custumFunc = null;
16537
                                                    Ext.Ajax.request({
16538
                                                        async: false,
16539
                                                        method: 'POST',
16540
                                                        url: '/UserControl/GetStore',
16541
                                                        params: {
16542
                                                            tableName: 'SDATATABLEFIELD',
16543
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
16544
                                                        },
16545
                                                        success: function (response) {
16546
                                                            var results = Ext.decode(response.responseText);
16547
                                                            data_ = results.data[0];
16548
                                                            if (data_ != undefined) {
16549
                                                                custumFunc = data_.SelectFunction;
16550
                                                                //console.log(data_)
16551
                                                            }
16552
                                                        }
16553
                                                    });
16554
                                                    if (custumFunc) {
16555
                                                        eval(custumFunc)
16556
                                                    }
16557
                                                }
16558
                                            }
16559
                                        }
16560
                                    });
16561
                                }
16562
                                break
16563
                        }
16564
                    }
16565
                } else {
16566
                    cols.push({
16567
                        text: rec.HeaderTitle,
16568
                        hidden: Hidden_,
16569
                        dataIndex: rec.FieldName,
16570
                        hidden: true,
16571
                        editor: {
16572
                            allowBlank: true,
16573
                            xtype: 'textfield',
16574
                            readOnly: ReadOnly_,
16575
                            id: tableName + rec.FieldName,
16576
                            nameTable: rec.TableName,
16577
                            fieldGrid: rec.FieldName,
16578
                        },
16579
                        filter: {
16580
                            itemDefaults: {
16581
                                emptyText: 'Search for...'
16582
                            }
16583
                        }
16584
                    });
16585
                }
16586
            })
16587
        }
16588
        addData = addData + "}";
16589

    
16590
        cols.push({
16591
            text: 'Action',
16592
            width: 100,
16593
            xtype: 'actioncolumn',
16594
            tooltip: 'View Data',
16595
            name: 'Action',
16596
            itemId: 'Action',
16597
            align: 'center',
16598
            iconCls: 'fa-edit',
16599
            renderer: function (value, metadata, record) {
16600
                metadata.tdStyle = 'font-family: FontAwesome'
16601
            },
16602
            handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
16603
                var main_ = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
16604
                this.fireEvent("onEditClick");
16605
            }
16606
        });
16607

    
16608
        Ext.applyIf(me, {
16609

    
16610
            items: [{
16611
                xtype: 'treepanel',
16612
                id: gridName,
16613
                name: gridName,
16614
                height: height,
16615
                width: 'fit',
16616
                autoHeight: true,
16617
                //store: 'gridStore',
16618
                autoLoad: false,
16619
                autoScroll: true,
16620
                useArrows: true,
16621
                animate: false,
16622
                rootVisible: false,
16623
                plugins: [
16624
                    Ext.create('Ext.grid.plugin.CellEditing', {
16625
                        clicksToEdit: 2
16626
                    })
16627
                ],
16628
                root: {
16629
                    expanded: true,
16630
                    nodeType: 'async',
16631
                    ext: 'Favorites',
16632
                    id: 'null'
16633
                },
16634
                columns: cols,
16635
                //selType: 'rowmodel',
16636
            }
16637
            ]
16638

    
16639
        });
16640

    
16641
        me.callParent(arguments);
16642
    }
16643
});
16644
/*Add by Taufan ( Tab List MasterData For ERP )*/
16645
Ext.define('MinovaUtil.MinovaES.MinovaTabListMasterData', {
16646
    extend: 'Ext.tab.Panel',
16647
    alias: ['widget.masterdatatablist'],
16648
    moduleType: undefined,
16649
    tablenameheader: undefined,
16650
    langId: undefined,
16651
    param: undefined,
16652
    layout: 'fit',
16653
    name: 'panelTab',
16654
    id: 'mainTab',    
16655
    initComponent: function () {
16656
        var me = this;
16657
        var hasil = null;
16658
        var action = "0";
16659
        var _items = [];
16660
        var act = getParam("action");
16661
        if (act == 'add') {
16662
            action = '0';
16663
        }
16664
        if (act == 'edit') {
16665
            action = '1';
16666
        }
16667
        if (act == 'view') {
16668
            action = '1';
16669
        }
16670
        if (act == 'copy') {
16671
            action = '0';
16672
        }
16673
        Ext.Ajax.request({
16674
            async: false,
16675
            method: 'POST',
16676
            url: '/UserControl/GetStore',
16677
            params: {
16678
                tableName: 'PCMEPMDLIST',
16679
                param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
16680
            },
16681
            success: function (response) {
16682
                var results = Ext.decode(response.responseText);
16683
                hasil = results.data;                
16684
            }
16685
        });
16686
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
16687
        if (hasil.length > 0) {
16688
            Ext.each(hasil, function (rec) {
16689
                if (rec.LayoutType == "L004") { // L004=Custom
16690
                    var pnl = Ext.create(rec.CustomLayout, {
16691
                        title: rec.LabelName,
16692
                        tableName: rec.TableName,
16693
                        height: 450,
16694
                        name: 'panelTab' + rec.TableName,
16695
                        tbl: rec.TableName,
16696
                        layoutType: rec.LayoutType
16697
                    });
16698
                    _items.push(pnl)
16699
                } else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
16700
                    _items.push({
16701
                        xtype: 'panel',
16702
                        title: rec.LabelName,
16703
                        name: 'panelTab' + rec.TableName,
16704
                        tbl: rec.TableName,
16705
                        layoutType: rec.LayoutType,
16706
                        items: [{
16707
                            xtype: 'minovagrid1',
16708
                            height: 450,
16709
                            tableName: rec.TableName,
16710
                            storename: 'store' + rec.TableName,
16711
                            pagesize: 25,
16712
                            name: 'GRID' + rec.TableName,
16713
                            margin: '0 0 10 0',
16714
                            autoLoad: false,
16715
                            tbar: [{
16716
                                xtype: 'button',
16717
                                text: 'Action',
16718
                                name: 'actionGrid' + rec.TableName,
16719
                                menu: [{
16720
                                    text: 'Add',
16721
                                    name: 'add' + rec.TableName,
16722
                                    tbl: rec.TableName,
16723
                                    style: 'font-family: FontAwesome',
16724
                                    iconCls: 'fa-plus-circle',
16725
                                    handler: function () {
16726
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16727
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16728
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16729
                                        var keyField = getParam("KeyID");
16730
                                        var keyValue = getParam("KeyValue");
16731
                                        frmDisplay.reset();
16732
                                        frmForm.reset();
16733
                                        var idseq = 0;
16734
                                        var params = {
16735
                                            apiController: 'api/Devt',
16736
                                            methodName: 'GetLastSeqID',
16737
                                            parameter: 'tableName=' + rec.TableName + '&keyField=' + keyField + '&keyValue=' + keyValue
16738
                                        };
16739
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
16740
                                            var result = Ext.decode(xhr.responseText);
16741
                                            var r = Ext.decode(result.data);
16742
                                            idseq = r.data + 1;
16743
                                            frmForm.getForm().findField(keyField).setValue(keyValue);
16744
                                            frmForm.getForm().findField("SeqID").setValue(idseq);
16745
                                        });
16746
                                        frmDisplay.setHidden(true);
16747
                                        frmForm.setHidden(false);
16748
                                        grdPanel.setHidden(true);
16749
                                        action = "0";
16750
                                    }
16751
                                }, {
16752
                                    text: 'Copy',
16753
                                    name: 'copy' + rec.TableName,
16754
                                    tbl: rec.TableName,
16755
                                    iconCls: 'fa-copy',
16756
                                    style: 'font-family: FontAwesome',
16757
                                    handler: function () {
16758
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16759
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16760
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16761
                                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
16762
                                        var keyField = getParam("KeyID");
16763
                                        if (dtrec) {
16764
                                            frmDisplay.reset();
16765
                                            frmForm.reset();
16766
                                            frmForm.getForm().setValues(dtrec.data);
16767
                                            frmDisplay.setHidden(true);
16768
                                            frmForm.setHidden(false);
16769
                                            grdPanel.setHidden(true);
16770
                                            action = "0";
16771
                                            frmForm.getForm().findField(keyField).setValue("");
16772
                                        }
16773
                                    }
16774
                                }, {
16775
                                    text: 'Edit',
16776
                                    name: 'edit' + rec.TableName,
16777
                                    tbl: rec.TableName,
16778
                                    iconCls: 'fa-edit',
16779
                                    style: 'font-family: FontAwesome',
16780
                                    handler: function () {
16781
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16782
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16783
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16784
                                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
16785
                                        if (dtrec) {
16786
                                            frmDisplay.reset();
16787
                                            frmForm.reset();
16788
                                            frmForm.getForm().setValues(dtrec.data);
16789
                                            frmDisplay.setHidden(true);
16790
                                            frmForm.setHidden(false);
16791
                                            grdPanel.setHidden(true);
16792
                                            action = "1";
16793
                                        }
16794
                                    }
16795
                                }
16796
                                ]
16797
                            }, {
16798
                                xtype: 'tbfill'
16799
                            }, {
16800
                                text: 'Clear Filters',
16801
                                tooltip: 'Clear all filters',
16802
                                name: 'clearbtn',
16803
                                handler: function () {}
16804
                            }
16805
                            ],
16806
                            dockedItems: [{
16807
                                xtype: 'pagingtoolbar',
16808
                                store: 'store' + rec.TableName,
16809
                                dock: 'bottom',
16810
                                pageSize: me.pagesize,
16811
                                displayInfo: true
16812
                            }
16813
                            ],
16814
                            listeners: {
16815
                                'itemdblclick': function (me, record, item, index, e, eOpts) {
16816
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16817
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16818
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16819
                                    frmDisplay.reset();
16820
                                    frmForm.reset();
16821
                                    frmDisplay.getForm().setValues(record.data);
16822
                                    frmForm.getForm().setValues(record.data);
16823
                                    frmDisplay.setHidden(false);
16824
                                    frmForm.setHidden(true);
16825
                                    grdPanel.setHidden(true);
16826
                                    action = "1";
16827
                                }
16828
                            }
16829
                        }, {
16830
                            xtype: 'minovaform',
16831
                            name: 'DISPLAY' + rec.TableName,
16832
                            id: 'DISPLAY' + rec.TableName,
16833
                            itemId: 'DISPLAY' + rec.TableName,
16834
                            tableName: rec.TableName,
16835
                            isDisplay: true,
16836
                            hidden: true,
16837
                            buttons: [{
16838
                                text: 'Edit',
16839
                                name: 'editDISPLAY' + rec.TableName,
16840
                                iconCls: 'fa-edit',
16841
                                style: 'font-family: FontAwesome',
16842
                                handler: function () {
16843
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16844
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16845
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16846
                                    frmDisplay.setHidden(true);
16847
                                    frmForm.setHidden(false);
16848
                                    grdPanel.setHidden(true);
16849
                                }
16850
                            }, {
16851
                                text: 'Cancel',
16852
                                name: 'cancelDISPLAY' + rec.TableName,
16853
                                iconCls: 'fa-reply',
16854
                                style: 'font-family: FontAwesome',
16855
                                handler: function () {
16856
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16857
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16858
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16859
                                    frmDisplay.setHidden(true);
16860
                                    frmForm.setHidden(true);
16861
                                    grdPanel.setHidden(false);
16862
                                    grdPanel.getStore().reload();
16863
                                }
16864
                            }
16865
                            ]
16866
                        }, {
16867
                            xtype: 'minovaform',
16868
                            name: 'FORM' + rec.TableName,
16869
                            id: 'FORM' + rec.TableName,
16870
                            itemId: 'FORM' + rec.TableName,
16871
                            tableName: rec.TableName,
16872
                            isDisplay: false,
16873
                            hidden: true,
16874
                            buttons: [{
16875
                                text: 'Save',
16876
                                name: 'saveFORM' + rec.TableName,
16877
                                iconCls: 'fa-save',
16878
                                style: 'font-family: FontAwesome',
16879
                                handler: function () {
16880
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16881
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16882
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16883
                                    var frm = frmForm.getForm();
16884
                                    console.log(frmForm);
16885
                                    if (frm.isValid()) {
16886
                                        var keyField = getParam("KeyID");
16887
                                        var table = rec.TableName;
16888
                                        var data = Ext.encode(frmForm.getValues());
16889
                                        var token = MinovaUtil.SESSIONS.Token;
16890
                                        var params = {
16891
                                            apiController: 'api/Devt',
16892
                                            methodName: 'SaveTableMaster',
16893
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
16894
                                        };
16895
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
16896
                                            var result = Ext.decode(xhr.responseText);
16897
                                            var r = Ext.decode(result.data);
16898
                                            if (r.success) {
16899
                                                frmDisplay.setHidden(true);
16900
                                                frmForm.setHidden(true);
16901
                                                grdPanel.setHidden(false);
16902
                                                grdPanel.getStore().reload();
16903
                                                MinovaMessage('Not Null', '000006', '', 'S');
16904
                                            } else {
16905
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
16906
                                            }
16907
                                        });
16908
                                    }
16909
                                }
16910
                            }, {
16911
                                text: 'Delete',
16912
                                name: 'deleteFORM' + rec.TableName,
16913
                                iconCls: 'fa-trash-o',
16914
                                style: 'font-family: FontAwesome ',                                
16915
                                handler: function () {
16916
                                    alert('Delete Function');
16917
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
16918
                                        if (respone == "yes") {
16919
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16920
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16921
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16922
                                            var frm = frmForm.getForm();
16923
                                            if (frm.isValid()) {
16924
                                                var keyField = getParam("KeyID");
16925
                                                var table = rec.TableName;
16926
                                                var data = Ext.encode(frmForm.getValues());
16927
                                                var token = MinovaUtil.SESSIONS.Token;
16928
                                                action = "2";
16929
                                                var params = {
16930
                                                    apiController: 'api/Devt',
16931
                                                    methodName: 'SaveTableMaster',
16932
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
16933
                                                };
16934
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
16935
                                                    var result = Ext.decode(xhr.responseText);
16936
                                                    var r = Ext.decode(result.data);
16937
                                                    if (r.success) {
16938
                                                        frmDisplay.setHidden(true);
16939
                                                        frmForm.setHidden(true);
16940
                                                        grdPanel.setHidden(false);
16941
                                                        grdPanel.getStore().reload();
16942
                                                        MinovaMessage('Not Null', '000006', '', 'S');
16943
                                                    } else {
16944
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
16945
                                                    }
16946
                                                });
16947
                                            }
16948
                                        }
16949
                                    });
16950
                                }
16951
                            }, {
16952
                                text: 'Cancel',
16953
                                name: 'cancelFORM' + rec.TableName,
16954
                                iconCls: 'fa-reply',
16955
                                style: 'font-family: FontAwesome',
16956
                                handler: function () {
16957
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
16958
                                        if (respone == "yes") {
16959
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
16960
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
16961
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
16962
                                            frmDisplay.setHidden(true);
16963
                                            frmForm.setHidden(true);
16964
                                            grdPanel.setHidden(false);
16965
                                            grdPanel.getStore().reload();
16966
                                        }
16967
                                    });
16968
                                }
16969
                            }
16970
                            ]
16971
                        }
16972
                        ]
16973
                    });
16974
                } else if (rec.LayoutType == "L005") { // Grid View Only
16975
                    _items.push({
16976
                        xtype: 'panel',
16977
                        title: rec.LabelName,
16978
                        name: 'panelTab' + rec.TableName,
16979
                        tbl: rec.TableName,
16980
                        layoutType: rec.LayoutType,
16981
                        items: [{
16982
                            xtype: 'minovagrid1',
16983
                            height: 450,
16984
                            tableName: rec.TableName,
16985
                            storename: 'store' + rec.TableName,
16986
                            pagesize: 25,
16987
                            name: 'GRID' + rec.TableName,
16988
                            margin: '0 0 10 0',
16989
                            autoLoad: false,
16990
                            tbar: [{
16991
                                xtype: 'tbfill'
16992
                            }, {
16993
                                text: 'Clear Filters',
16994
                                tooltip: 'Clear all filters',
16995
                                name: 'clearbtn',
16996
                                handler: function () {}
16997
                            }
16998
                            ],
16999
                            dockedItems: [{
17000
                                xtype: 'pagingtoolbar',
17001
                                store: 'store' + rec.TableName,
17002
                                dock: 'bottom',
17003
                                pageSize: me.pagesize,
17004
                                displayInfo: true
17005
                            }
17006
                            ]
17007
                        }
17008
                        ]
17009
                    });
17010
                } else { // L001=Default Form Only
17011
                    _items.push({
17012
                        xtype: 'panel',
17013
                        title: rec.LabelName,
17014
                        name: 'panelTab' + rec.TableName,
17015
                        tbl: rec.TableName,
17016
                        layoutType: rec.LayoutType,
17017
                        items: [{
17018
                            xtype: 'minovaform',
17019
                            name: 'DISPLAY' + rec.TableName,
17020
                            id: 'DISPLAY' + rec.TableName,
17021
                            itemId: 'DISPLAY' + rec.TableName,
17022
                            tableName: rec.TableName,
17023
                            isDisplay: true,
17024
                            hidden: false,
17025
                            buttons: [{
17026
                                text: 'Edit',
17027
                                name: 'editDISPLAY' + rec.TableName,
17028
                                iconCls: 'fa-edit',
17029
                                style: 'font-family: FontAwesome',
17030
                                handler: function () {
17031
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17032
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17033
                                    frmDisplay.setHidden(true);
17034
                                    frmForm.setHidden(false);
17035
                                    action = "1";
17036
                                }
17037
                            }, {
17038
                                text: 'Back',
17039
                                name: 'cancelDISPLAY' + rec.TableName,
17040
                                iconCls: 'fa-reply',
17041
                                style: 'font-family: FontAwesome',
17042
								handler: function () {
17043
									window.history.back();
17044
								},
17045
								hidden: false
17046
                            }
17047
                            ]
17048
                        }, {
17049
                            xtype: 'minovaform',
17050
                            name: 'FORM' + rec.TableName,
17051
                            id: 'FORM' + rec.TableName,
17052
                            itemId: 'FORM' + rec.TableName,
17053
                            tableName: rec.TableName,
17054
                            isDisplay: false,
17055
                            hidden: true,
17056
                            buttons: [{
17057
                                text: 'Save',
17058
                                name: 'saveDISPLAY' + rec.TableName,
17059
                                iconCls: 'fa-save',
17060
                                style: 'font-family: FontAwesome',
17061
                                handler: function () {
17062
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17063
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17064
                                    var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
17065
                                    var frm = frmForm.getForm();
17066
                                    if (frm.isValid()) {
17067
                                        var keyField = getParam("KeyID");
17068
                                        var table = rec.TableName;
17069
                                        var data = Ext.encode(frmForm.getValues());
17070
                                        var token = MinovaUtil.SESSIONS.Token;
17071
                                        var params = {
17072
                                            apiController: 'api/Devt',
17073
                                            methodName: 'SaveTableMaster',
17074
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17075
                                        };
17076
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17077
                                            var result = Ext.decode(xhr.responseText);
17078
                                            var r = Ext.decode(result.data);
17079
                                            if (r.success) {
17080
                                                headerDisplay.mask("Loading...");
17081
                                                var idNo = r.data;
17082
                                                frmForm.getForm().findField(keyField).setValue(idNo);
17083
                                                frmDisplay.getForm().setValues(frmForm.getValues());
17084
                                                headerDisplay.getForm().setValues(frmForm.getValues());
17085
                                                frmDisplay.setHidden(false);
17086
                                                frmForm.setHidden(true);
17087
                                                MinovaMessage('Not Null', '000006', '', 'S');
17088
                                                headerDisplay.unmask();
17089
                                            } else {
17090
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17091
                                            }
17092
                                        });
17093
                                    }
17094
                                }
17095
                            }, {
17096
                                text: 'Delete',
17097
                                name: 'deleteDISPLAY' + rec.TableName,
17098
                                iconCls: 'fa-trash-o',
17099
                                style: 'font-family: FontAwesome',
17100
                                handler: function () {                                    
17101
                                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
17102
                                        if (respone == "yes") {
17103
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17104
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17105
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17106
                                            var frm = frmForm.getForm();
17107
                                            if (frm.isValid()) {
17108
                                                var keyField = getParam("KeyID");
17109
                                                var table = rec.TableName;
17110
                                                var data = Ext.encode(frmForm.getValues());
17111
                                                var token = MinovaUtil.SESSIONS.Token;
17112
                                                action = "2";
17113
                                                var params = {
17114
                                                    apiController: 'api/Devt',
17115
                                                    methodName: 'SaveTableMaster',
17116
                                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17117
                                                };
17118
                                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17119
                                                    var result = Ext.decode(xhr.responseText);
17120
                                                    var r = Ext.decode(result.data);
17121
                                                    if (r.success) {
17122
                                                        frmDisplay.setHidden(true);
17123
                                                        frmForm.setHidden(true);
17124
                                                        grdPanel.setHidden(false);
17125
                                                        grdPanel.getStore().reload();
17126
                                                        MinovaMessage('Not Null', '000006', '', 'S');
17127
                                                    } else {
17128
                                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17129
                                                    }
17130
                                                });
17131
                                            }
17132
                                        }
17133
                                    });
17134
                                }
17135
                            }, {
17136
                                text: 'Cancel',
17137
                                name: 'cancelDISPLAY' + rec.TableName,
17138
                                iconCls: 'fa-reply',
17139
                                style: 'font-family: FontAwesome',
17140
                                handler: function () {
17141
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17142
                                        if (respone == "yes") {
17143
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17144
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17145
                                            frmDisplay.setHidden(false);
17146
                                            frmForm.setHidden(true);
17147
                                        }
17148
                                    });
17149
                                }
17150
                            }
17151
                            ]
17152
                        }
17153
                        ]
17154
                    });
17155
                }
17156
            });
17157
        }
17158
        Ext.applyIf(me, {
17159
            items: _items
17160
        });
17161
        me.callParent(arguments);
17162
    }
17163
});
17164
/*Add by Taufan ( Tab List Doc Transaction For ERP )*/
17165
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTrans', {
17166
    extend: 'Ext.tab.Panel',
17167
    alias: ['widget.doctablist'],
17168
    transType: undefined,
17169
    docType: undefined,
17170
    docNo: undefined,
17171
    langId: undefined,
17172
    param: undefined,
17173
    layout: 'fit',
17174
    name: 'panelTab',
17175
    id: 'mainTab',
17176
    action: undefined,
17177
    initComponent: function () {
17178
        var me = this;
17179
        var documentType = me.docType;
17180
        var transactionType = me.transType;
17181
        var hasil = null;
17182
        var _items = [];
17183
        Ext.Ajax.request({
17184
            async: false,
17185
            method: 'POST',
17186
            url: '/UserControl/GetStore',
17187
            params: {
17188
                tableName: 'PCMBSTRANSLIST',
17189
                param: 'TransType[=]' + me.transType
17190
            },
17191
            success: function (response) {
17192
                var results = Ext.decode(response.responseText);
17193
                hasil = results.data;
17194
            }
17195
        });
17196
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
17197
        if (hasil.length > 0) {
17198
            Ext.each(hasil, function (rec) {
17199
                if (rec.LayoutType == "L004") { // L004=Custom
17200
                    var pnl = Ext.create(rec.CustomLayout, {
17201
                        title: rec.Title,
17202
                        tableName: rec.TableName,
17203
                        height: 400,
17204
                        name: 'panelTab' + rec.TableName,
17205
                        tbl: rec.TableName,
17206
                        layoutType: rec.LayoutType
17207
                    });
17208
                    _items.push(pnl)
17209
                } else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
17210
                    _items.push({
17211
                        xtype: 'panel',
17212
                        title: rec.Title,
17213
                        name: 'panelTab' + rec.TableName,
17214
                        tbl: rec.TableName,
17215
                        layoutType: rec.LayoutType,
17216
                        items: [{
17217
                            xtype: 'docgrid',
17218
                            height: 400,
17219
                            tableName: rec.TableName,
17220
                            docType: me.docType,
17221
                            transType: me.transType,
17222
                            storename: 'store' + rec.TableName,
17223
                            pagesize: 25,
17224
                            name: 'GRID' + rec.TableName,
17225
                            margin: '0 0 10 0',
17226
                            autoLoad: false,
17227
                            tbar: [{
17228
                                xtype: 'button',
17229
                                text: 'Action',
17230
                                name: 'actionGrid' + rec.TableName,
17231
                                menu: [{
17232
                                    text: 'Add',
17233
                                    name: 'add' + rec.TableName,
17234
                                    tbl: rec.TableName,
17235
                                    style: 'font-family: FontAwesome',
17236
                                    iconCls: 'fa-plus-circle',
17237
                                    handler: function () {
17238
                                        var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17239
                                        var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17240
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17241
                                        frmDisplay.reset();
17242
                                        frmForm.reset();
17243
                                        frmDisplay.setHidden(true);
17244
                                        frmForm.setHidden(false);
17245
                                        grdPanel.setHidden(true);
17246
                                        action = "0";
17247
                                    }
17248
                                }, {
17249
                                    text: 'Delete',
17250
                                    name: 'delete' + rec.TableName,
17251
                                    tbl: rec.TableName,
17252
                                    iconCls: 'fa-trash-o',
17253
                                    style: 'font-family: FontAwesome',
17254
                                    handler: function () {
17255
                                        var me = this;
17256
                                        var store = Ext.StoreMgr.lookup('store' + rec.TableName);
17257
                                        var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17258
                                        Ext.MessageBox.show({
17259
                                            title: 'Remove tab',
17260
                                            msg: "This will remove. Do you want to continue?",
17261
                                            buttons: Ext.MessageBox.YESNO,
17262
                                            fn: function (choice) {
17263
                                                console.log(choice);
17264
                                                if (choice === 'yes') {
17265
                                                    var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
17266
                                                    if (selection) {
17267
                                                        store.remove(selection);
17268
                                                    }
17269
                                                }
17270
                                            }
17271
                                        });
17272
                                    }
17273
                                }
17274
                                ]
17275
                            }, {
17276
                                xtype: 'tbfill'
17277
                            }, {
17278
                                text: 'Clear Filters',
17279
                                tooltip: 'Clear all filters',
17280
                                name: 'clearbtn',
17281
                                handler: function () {}
17282
                            }
17283
                            ],
17284
                            dockedItems: [{
17285
                                xtype: 'pagingtoolbar',
17286
                                store: 'store' + rec.TableName,
17287
                                dock: 'bottom',
17288
                                pageSize: me.pagesize,
17289
                                displayInfo: true
17290
                            }
17291
                            ],
17292
                            listeners: {
17293
                                'itemdblclick': function (me, record, item, index, e, eOpts) {
17294
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17295
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17296
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17297
                                    frmDisplay.reset();
17298
                                    frmForm.reset();
17299
                                    frmDisplay.getForm().setValues(record.data);
17300
                                    frmForm.getForm().setValues(record.data);
17301
                                    frmDisplay.setHidden(false);
17302
                                    frmForm.setHidden(true);
17303
                                    grdPanel.setHidden(true);
17304
                                    action = "1";
17305
                                }
17306
                            }
17307
                        }, {
17308
                            xtype: 'minovadocform',
17309
                            name: 'DISPLAY' + rec.TableName,
17310
                            id: 'DISPLAY' + rec.TableName,
17311
                            itemId: 'DISPLAY' + rec.TableName,
17312
                            tableName: rec.TableName,
17313
                            docType: me.docType,
17314
                            transType: me.transType,
17315
                            isDisplay: true,
17316
                            hidden: true,
17317
                            buttons: [{
17318
                                text: 'Edit',
17319
                                name: 'editDISPLAY' + rec.TableName,
17320
                                handler: function () {
17321
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17322
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17323
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17324
                                    frmDisplay.setHidden(true);
17325
                                    frmForm.setHidden(false);
17326
                                    grdPanel.setHidden(true);
17327
                                }
17328
                            }, {
17329
                                text: 'Cancel',
17330
                                name: 'cancelDISPLAY' + rec.TableName,
17331
                                handler: function () {
17332
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17333
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17334
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17335
                                    frmDisplay.setHidden(true);
17336
                                    frmForm.setHidden(true);
17337
                                    grdPanel.setHidden(false);
17338
                                    grdPanel.getStore().reload();
17339
                                }
17340
                            }
17341
                            ]
17342
                        }, {
17343
                            xtype: 'minovadocform',
17344
                            name: 'FORM' + rec.TableName,
17345
                            id: 'FORM' + rec.TableName,
17346
                            itemId: 'FORM' + rec.TableName,
17347
                            tableName: rec.TableName,
17348
                            docType: me.docType,
17349
                            transType: me.transType,
17350
                            isDisplay: false,
17351
                            hidden: true,
17352
                            buttons: [{
17353
                                text: 'Submit',
17354
                                name: 'submitFORM' + rec.TableName,
17355
                                handler: function () {
17356
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17357
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17358
                                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17359
                                    var frm = frmForm.getForm();
17360
                                    if (frm.isValid()) {
17361
                                        var table = rec.TableName;
17362
                                        var data = frmForm.getValues();
17363
                                        var token = MinovaUtil.SESSIONS.Token;
17364
                                        var str = grdPanel.getStore();
17365
                                        var idx = str.getCount();
17366
                                        str.insert(idx, data);
17367
                                        frmDisplay.setHidden(true);
17368
                                        frmForm.setHidden(true);
17369
                                        grdPanel.setHidden(false);
17370
                                    }
17371
                                }
17372
                            }, {
17373
                                text: 'Cancel',
17374
                                name: 'cancelFORM' + rec.TableName,
17375
                                handler: function () {
17376
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17377
                                        if (respone == "yes") {
17378
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17379
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17380
                                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
17381
                                            frmDisplay.setHidden(true);
17382
                                            frmForm.setHidden(true);
17383
                                            grdPanel.setHidden(false);
17384
                                        }
17385
                                    });
17386
                                }
17387
                            }
17388
                            ]
17389
                        }
17390
                        ]
17391
                    });
17392
                } else if (rec.LayoutType == "L005") { // Grid View Only
17393
                    _items.push({
17394
                        xtype: 'panel',
17395
                        title: rec.Title,
17396
                        name: 'panelTab' + rec.TableName,
17397
                        tbl: rec.TableName,
17398
                        layoutType: rec.LayoutType,
17399
                        items: [{
17400
                            xtype: 'docgrid',
17401
                            height: 400,
17402
                            tableName: rec.TableName,
17403
                            docType: me.docType,
17404
                            transType: me.transType,
17405
                            storename: 'store' + rec.TableName,
17406
                            pagesize: 25,
17407
                            name: 'GRID' + rec.TableName,
17408
                            margin: '0 0 10 0',
17409
                            autoLoad: false,
17410
                            tbar: [{
17411
                                xtype: 'tbfill'
17412
                            }, {
17413
                                text: 'Clear Filters',
17414
                                tooltip: 'Clear all filters',
17415
                                name: 'clearbtn',
17416
                                handler: function () {}
17417
                            }
17418
                            ],
17419
                            dockedItems: [{
17420
                                xtype: 'pagingtoolbar',
17421
                                store: 'store' + rec.TableName,
17422
                                dock: 'bottom',
17423
                                pageSize: me.pagesize,
17424
                                displayInfo: true
17425
                            }
17426
                            ]
17427
                        }
17428
                        ]
17429
                    });
17430
                } else if (rec.LayoutType == "L006") {
17431
                    _items.push({
17432
                        xtype: 'panel',
17433
                        title: rec.Title,
17434
                        name: 'panelTab' + rec.TableName,
17435
                        tbl: rec.TableName,
17436
                        layoutType: rec.LayoutType,
17437
                        items: [{
17438
                            xtype: 'docgridcelledit',
17439
                            name: 'CELLGRID' + rec.TableName,
17440
                            tableName: rec.TableName,
17441
                            docType: me.docType,
17442
                            transType: me.transType,
17443
                            docNo: me.docNo,
17444
                            height: 400,
17445
                            hideButton: false,
17446
                            margin: '0 0 10 0'
17447
                        }
17448
                        ]
17449
                    });
17450
                } else if (rec.LayoutType == "L007") {
17451
                    _items.push({
17452
                        xtype: 'panel',
17453
                        title: rec.Title,
17454
                        name: 'panelTab' + rec.TableName,
17455
                        tbl: rec.TableName,
17456
                        layoutType: rec.LayoutType,
17457
                        items: [{
17458
                            xtype: 'docgridcelleditsum',
17459
                            name: 'CELLGRID' + rec.TableName,
17460
                            tableName: rec.TableName,
17461
                            docType: me.docType,
17462
                            transType: me.transType,
17463
                            docNo: me.docNo,
17464
                            height: 400,
17465
                            hideButton: false,
17466
                            margin: '0 0 10 0'
17467
                        }, {
17468
                            xtype: 'summarydocform',
17469
                            name: 'SUM' + rec.TableName,
17470
                            id: 'SUM' + rec.TableName,
17471
                            itemId: 'SUM' + rec.TableName,
17472
                            tableName: rec.TableName,
17473
                            docType: me.docType,
17474
                            transType: me.transType,
17475
                        }
17476
                        ]
17477
                    });
17478
                } else { // L001=Default Form Only
17479
                    _items.push({
17480
                        xtype: 'panel',
17481
                        title: rec.LabelName,
17482
                        name: 'panelTab' + rec.TableName,
17483
                        tbl: rec.TableName,
17484
                        layoutType: rec.LayoutType,
17485
                        items: [{
17486
                            xtype: 'minovadocform',
17487
                            name: 'DISPLAY' + rec.TableName,
17488
                            id: 'DISPLAY' + rec.TableName,
17489
                            itemId: 'DISPLAY' + rec.TableName,
17490
                            tableName: rec.TableName,
17491
                            docType: me.docType,
17492
                            transType: me.transType,
17493
                            isDisplay: true,
17494
                            hidden: false,
17495
                            buttons: [{
17496
                                text: 'Edit',
17497
                                name: 'editDISPLAY' + rec.TableName,
17498
                                iconCls: 'fa-edit',
17499
                                style: 'font-family: FontAwesome',
17500
                                handler: function () {
17501
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17502
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17503
                                    frmDisplay.setHidden(true);
17504
                                    frmForm.setHidden(false);
17505
                                    action = "1";
17506
                                }
17507
                            }, {
17508
                                text: 'Cancel',
17509
                                name: 'cancelDISPLAY' + rec.TableName,
17510
                                iconCls: 'fa-reply',
17511
                                style: 'font-family: FontAwesome',
17512
                                hidden: true
17513
                            }
17514
                            ]
17515
                        }, {
17516
                            xtype: 'minovadocform',
17517
                            name: 'FORM' + rec.TableName,
17518
                            id: 'FORM' + rec.TableName,
17519
                            itemId: 'FORM' + rec.TableName,
17520
                            tableName: rec.TableName,
17521
                            docType: me.docType,
17522
                            transType: me.transType,
17523
                            isDisplay: false,
17524
                            hidden: true,
17525
                            buttons: [{
17526
                                text: 'Save',
17527
                                name: 'saveDISPLAY' + rec.TableName,
17528
                                iconCls: 'fa-save',
17529
                                style: 'font-family: FontAwesome',
17530
                                handler: function () {
17531
                                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17532
                                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17533
                                    var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
17534
                                    var frm = frmForm.getForm();
17535
                                    if (frm.isValid()) {
17536
                                        var table = rec.TableName;
17537
                                        var data = Ext.encode(frmForm.getValues());
17538
                                        var token = MinovaUtil.SESSIONS.Token;
17539
                                        var params = {
17540
                                            apiController: 'api/Devt',
17541
                                            methodName: 'SaveTableMaster',
17542
                                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
17543
                                        };
17544
                                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
17545
                                            var result = Ext.decode(xhr.responseText);
17546
                                            var r = Ext.decode(result.data);
17547
                                            if (r.success) {
17548
                                                headerDisplay.mask("Loading...");
17549
                                                var idNo = r.data;
17550
                                                frmForm.getForm().findField("DocNo").setValue(idNo);
17551
                                                frmDisplay.getForm().setValues(frmForm.getValues());
17552
                                                headerDisplay.getForm().setValues(frmForm.getValues());
17553
                                                frmDisplay.setHidden(false);
17554
                                                frmForm.setHidden(true);
17555
                                                MinovaMessage('Not Null', '000006', '', 'S');
17556
                                                headerDisplay.unmask();
17557
                                            } else {
17558
                                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
17559
                                            }
17560
                                        });
17561
                                    }
17562
                                }
17563
                            }, {
17564
                                text: 'Delete',
17565
                                name: 'deleteDISPLAY' + rec.TableName,
17566
                                iconCls: 'fa-trash-o',
17567
                                style: 'font-family: FontAwesome',
17568
                                handler: function () {}
17569
                            }, {
17570
                                text: 'Cancel',
17571
                                name: 'cancelDISPLAY' + rec.TableName,
17572
                                iconCls: 'fa-reply',
17573
                                style: 'font-family: FontAwesome',
17574
                                handler: function () {
17575
                                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
17576
                                        if (respone == "yes") {
17577
                                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
17578
                                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
17579
                                            frmDisplay.setHidden(false);
17580
                                            frmForm.setHidden(true);
17581
                                        }
17582
                                    });
17583
                                }
17584
                            }
17585
                            ]
17586
                        }
17587
                        ]
17588
                    });
17589
                }
17590
            });
17591
        }
17592
        Ext.applyIf(me, {
17593
            items: _items
17594
        });
17595
        me.callParent(arguments);
17596
    }
17597
});
17598
/*Add by Taufan ( Generate Doc Transaction Form For ERP )*/
17599
Ext.define('MinovaUtil.MinovaES.MinovaDocForm', {
17600
    extend: 'Ext.form.Panel',
17601
    alias: ['widget.MinovaDocForm', 'widget.minovadocform', 'widget.docform'],
17602
    formname: this.name,
17603
    tableName: undefined,
17604
    docType: undefined,
17605
    transType: undefined,
17606
    resizable: true,
17607
    border: false,
17608
    autoScroll: true,
17609
    isDisplay: undefined,
17610
    isLookup: undefined,
17611
    layout: 'column',
17612
    defaults: {
17613
        layout: 'form',
17614
        xtype: 'container',
17615
        defaultType: 'textfield',
17616
        style: 'width: 50%',
17617
    },
17618
    initComponent: function () {
17619
        var me = this;
17620
        var col1 = [];
17621
        var col2 = [];
17622
        var LangID = localStorage.LangId;
17623
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
17624
        var formname_ = me.name;
17625
        var nameTable_ = me.tableName;
17626
        Ext.Ajax.request({
17627
            async: false,
17628
            method: 'POST',
17629
            url: '/UserControl/GetStore',
17630
            params: {
17631
                tableName: 'PDSDOCFIELD',
17632
                param: parameter
17633
            },
17634
            success: function (response) {
17635
                var results = Ext.decode(response.responseText);
17636
                hasil = results.data;
17637
            }
17638
        });
17639
        if (hasil.length > 0) {
17640
            Ext.each(hasil, function (rec) {
17641
                var isnull = null;
17642
                if (rec.IsPrimaryKey == '1') {
17643
                    isnull = false;
17644
                }
17645
                if (rec.IsRequired == '1') {
17646
                    isnull = false;
17647
                } else {
17648
                    isnull = true;
17649
                }
17650
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, isnull, me.isDisplay, me.tableName, me.isLookup);
17651
                var descField = undefined;
17652
                if (rec.ColumnNo == 1) {
17653
                    col1.push(formfield);
17654
                    if (descField) {
17655
                        col1.push(descField)
17656
                    }
17657
                } else {
17658
                    col2.push(formfield);
17659
                    if (descField) {
17660
                        col2.push(descField)
17661
                    }
17662
                }
17663

    
17664
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
17665
                    formfieldKey = new Ext.form.TextField({
17666
                        hidden: true,
17667
                        name: "Key_" + rec.FieldName,
17668
                    });
17669
                    col2.push(formfieldKey);
17670
                }
17671
            });
17672
        }
17673
        Ext.applyIf(me, {
17674
            items: [{
17675
                style: 'width: 50%',
17676
                items: col1
17677
            }, {
17678
                style: 'width: 50%',
17679
                items: col2
17680
            }
17681
            ]
17682
        });
17683
        this.callParent();
17684
    }
17685
});
17686
/*Add by Taufan ( Generate Doc Transaction Grid For ERP )*/
17687
Ext.define('MinovaUtil.MinovaES.MinovaDocGrid', {
17688
    extend: 'Ext.grid.Panel',
17689
    requires: ['Ext.grid.RowNumberer'],
17690
    alias: 'widget.docgrid',
17691
    alternateClassName: 'Ext.grid.MinovaGrid',
17692
    tableName: undefined,
17693
    docType: undefined,
17694
    transType: undefined,
17695
    isLookup: undefined,
17696
    param: undefined,
17697
    pagesize: undefined,
17698
    storename: undefined,
17699
    layoutType: undefined,
17700
    enableLocking: true,
17701
    autoLoad: undefined,
17702
    multiSelect: undefined,
17703
    getTableName: function () {
17704
        return this.tableName;
17705
    },
17706
    initComponent: function () {
17707
        var me = this;
17708
        var cols_ = [];
17709
        var fieldeditor = {};
17710
        var hasil = null;
17711
        var autoLoad = true;
17712
        var LangID = localStorage.LangId;
17713
        var fielGrid = 'rec.GridView == 1';
17714
        var locking = true;
17715
        var checkSelection = '';
17716
        var widthLock = 250;
17717
        if (me.multiSelect) {
17718
            locking = false;
17719
            checkSelection = 'checkboxmodel';
17720
            widthLock = 40;
17721
        }
17722
        if (me.autoLoad == false) {
17723
            autoLoad = false;
17724
        }
17725
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
17726
        Ext.Ajax.request({
17727
            async: false,
17728
            method: 'POST',
17729
            url: '/UserControl/GetStore',
17730
            params: {
17731
                tableName: 'PDSDOCFIELD',
17732
                param: parameter
17733
            },
17734
            success: function (response) {
17735
                var results = Ext.decode(response.responseText);
17736
                hasil = results.data;
17737
            }
17738
        });
17739
        if (hasil.length > 0) {
17740
            Ext.each(hasil, function (rec) {
17741
                var null_ = null;
17742
                if (rec.IsPrimaryKey == true) {
17743
                    null_ = false;
17744
                }
17745
                if (rec.IsRequired == true) {
17746
                    null_ = false;
17747
                } else {
17748
                    null_ = true;
17749
                }
17750
                if (rec.GridView == 1) {
17751
                    switch (rec.FormatRef) {
17752
                        case "action":
17753
                            cols_.push({
17754
                                text: rec.HeaderTitle,
17755
                                width: 100,
17756
                                xtype: 'actioncolumn',
17757
                                tooltip: 'View Data',
17758
                                name: rec.FieldName,
17759
                                itemId: me.tableName + rec.FieldName,
17760
                                align: 'center',
17761
                                iconCls: 'fa-edit',
17762
                                renderer: function (value, metadata, record) {
17763
                                    metadata.tdStyle = 'font-family: FontAwesome'
17764
                                },
17765
                                handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
17766

    
17767
                                    this.fireEvent(me.tableName + rec.FieldName + "onActionClick", record);
17768
                                }
17769
                            });
17770
                            break
17771
                        case "file":
17772
                            cols_.push({
17773
                                xtype: 'minovapicturecolumn',
17774
                                text: rec.HeaderTitle,
17775
                                dataIndex: rec.FieldName,
17776
                                width: 100
17777
                            });
17778
                            break
17779
                        case "date":
17780
                            cols_.push({
17781
                                xtype: 'minovadatecolumn',
17782
                                text: rec.HeaderTitle,
17783
                                dataIndex: rec.FieldName,
17784
                                width: 100,
17785
                                filter: {
17786
                                    type: 'date',
17787
                                    itemDefaults: {
17788
                                        emptyText: 'Search for...'
17789
                                    }
17790
                                }
17791
                            });
17792
                            break
17793
                        case "amountencrypt":
17794
                            cols_.push({
17795
                                xtype: 'minovaamountcolumn',
17796
                                text: rec.HeaderTitle,
17797
                                dataIndex: rec.FieldName,
17798
                                align: 'right',
17799
                                width: 100,
17800
                                filter: {
17801
                                    type: 'string',
17802
                                    itemDefaults: {
17803
                                        emptyText: 'Search for...'
17804
                                    }
17805
                                }
17806
                            });
17807
                            break
17808
                        case "amount":
17809
                            cols_.push({
17810
                                xtype: 'minovacurrancycolumn',
17811
                                text: rec.HeaderTitle,
17812
                                dataIndex: rec.FieldName,
17813
                                align: 'right',
17814
                                width: 100,
17815
                                filter: {
17816
                                    type: 'number',
17817
                                    itemDefaults: {
17818
                                        emptyText: 'Search for...'
17819
                                    }
17820
                                }
17821
                            });
17822
                            break
17823
                        case "datetime":
17824
                            cols_.push({
17825
                                xtype: 'minovadatetimecolumn',
17826
                                text: rec.HeaderTitle,
17827
                                dataIndex: rec.FieldName,
17828
                                width: 140,
17829
                                filter: {
17830
                                    type: 'string',
17831
                                    itemDefaults: {
17832
                                        emptyText: 'Search for...'
17833
                                    }
17834
                                }
17835
                            });
17836
                            break
17837
                        default:
17838
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
17839
                                cols_.push({
17840
                                    text: rec.HeaderTitle,
17841
                                    dataIndex: rec.FieldName,
17842
                                    width: 100,
17843
                                    filter: {
17844
                                        type: 'string',
17845
                                        itemDefaults: {
17846
                                            emptyText: 'Search for...'
17847
                                        }
17848
                                    }
17849
                                });
17850
                            } else if (rec.TableRef != "") {
17851
                                if (rec.TableRef != null) {
17852
                                    var valueField = null;
17853
                                    var displayValue = null;
17854
                                    Ext.Ajax.request({
17855
                                        async: false,
17856
                                        method: 'POST',
17857
                                        url: '/UserControl/GetStore',
17858
                                        params: {
17859
                                            tableName: 'SDATATABLEFIELD',
17860
                                            param: 'TableName[equal]' + rec.TableRef
17861
                                        },
17862
                                        success: function (response) {
17863
                                            var results = Ext.decode(response.responseText);
17864
                                            data_ = results.data;
17865
                                            if (data_.length > 0) {
17866
                                                valueField_ = $.grep(data_, function (r) {
17867
                                                    return r.ValueField == '1'
17868
                                                });
17869
                                                valueField = valueField_[0].FieldName
17870
                                                displayValue_ = $.grep(data_, function (r) {
17871
                                                    return r.DisplayValue == '1'
17872
                                                });
17873
                                                displayValue = displayValue_[0].FieldName
17874
                                            } else {
17875
                                                MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
17876
                                            }
17877
                                        }
17878
                                    });
17879
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
17880
                                    var count_ = 0;
17881
                                    if (store_) {
17882
                                        count_ = store_.count();
17883
                                    }
17884
                                    if (count_ == 0) {
17885
                                        Ext.create('Ext.data.Store', {
17886
                                            storeId: 'store_' + rec.FieldName,
17887
                                            autoLoad: false,
17888
                                            proxy: {
17889
                                                method: 'POST',
17890
                                                type: 'ajax',
17891
                                                url: '/UserControl/GetStore',
17892
                                                extraParams: {
17893
                                                    tableName: rec.TableRef,
17894
                                                    param: rec.ParamCombo
17895
                                                },
17896
                                                reader: {
17897
                                                    type: 'json',
17898
                                                    root: 'data',
17899
                                                    totalProperty: 'data[0].TotalCount'
17900
                                                }
17901
                                            }
17902
                                        })
17903
                                    }
17904
                                    cols_.push({
17905
                                        xtype: 'minovacombocolumn',
17906
                                        text: rec.HeaderTitle,
17907
                                        dataIndex: rec.FieldName,
17908
                                        valueField: valueField,
17909
                                        displayField: displayValue,
17910
                                        store: 'store_' + rec.FieldName,
17911
                                        filter: {
17912
                                            type: 'list',
17913
                                            itemDefaults: {
17914
                                                emptyText: 'Search for...'
17915
                                            }
17916
                                        }
17917
                                    });
17918
                                }
17919
                            } else if (rec.FixedValue != "") {
17920
                                cols_.push({
17921
                                    xtype: 'minovacombocolumnfixvalue',
17922
                                    text: rec.HeaderTitle,
17923
                                    dataIndex: rec.FieldName,
17924
                                    fixedValue: rec.FixedValue,
17925
                                    filter: {
17926
                                        type: 'list',
17927
                                        itemDefaults: {
17928
                                            emptyText: 'Search for...'
17929
                                        }
17930
                                    }
17931
                                });
17932
                            } else {
17933
                                cols_.push({
17934
                                    text: rec.HeaderTitle,
17935
                                    dataIndex: rec.FieldName,
17936
                                    filter: {
17937
                                        itemDefaults: {
17938
                                            emptyText: 'Search for...'
17939
                                        }
17940
                                    }
17941
                                });
17942
                            }
17943
                            break
17944
                    }
17945
                } else {
17946
                    cols_.push({
17947
                        text: rec.HeaderTitle,
17948
                        dataIndex: rec.FieldName,
17949
                        hidden: true,
17950
                        filter: {
17951
                            itemDefaults: {
17952
                                emptyText: 'Search for...'
17953
                            }
17954
                        }
17955
                    });
17956
                }
17957

    
17958
            });
17959
        };
17960
        var param_ = me.param;
17961
        if (param_ == undefined) {
17962
            param_ = ''
17963
        }
17964
        var jsStoreGrid = new Ext.data.Store({
17965
            storeId: me.storename,
17966
            autoLoad: autoLoad,
17967
            pageSize: me.pagesize,
17968
            proxy: {
17969
                method: 'POST',
17970
                type: 'ajax',
17971
                url: '/UserControl/GetStorePagingAuth',
17972
                extraParams: {
17973
                    tableName: me.tableName,
17974
                    param: param_,
17975
                    menuId: MinovaUtil.GetMenuID()
17976
                },
17977
                reader: {
17978
                    type: 'json',
17979
                    root: 'data',
17980
                    totalProperty: 'totalRecords'
17981
                }
17982
            },
17983
        });
17984
        Ext.applyIf(me, {
17985
            autoScroll: true,
17986
            enableLocking: locking,
17987
            lockedGridConfig: {
17988
                header: false,
17989
                collapsible: true,
17990
                width: widthLock,
17991
                forceFit: locking,
17992
                listeners: {
17993
                    render: function (grid) {
17994
                        var pagingToolbar = grid.child('pagingtoolbar');
17995
                        if (pagingToolbar) {
17996
                            grid.remove(pagingToolbar, true);
17997
                        }
17998
                    }
17999
                }
18000
            },
18001
            listeners: {
18002
                viewready: function () {
18003
                    if (autoLoad == true) {
18004
                        this.getStore().loadPage(1);
18005
                    }
18006
                },
18007
                beforeedit: function () {
18008
                    return false;
18009
                }
18010
            },
18011
            lockedViewConfig: {
18012
                scroll: 'horizontal'
18013
            },
18014

    
18015
            //Add For Auto Size Coloum Mode
18016
            viewConfig: {
18017
                emptyText: 'No Data Display',
18018
                deferEmptyText: false,
18019
                listeners: {
18020
                    refresh: function (dataview) {
18021
                        Ext.each(dataview.panel.columns, function (column) {
18022
                            if (column.autoSizeColumn == false)
18023
                                column.autoSizeColumn = true;
18024
                                column.autoSize();
18025
                        })
18026
                    }
18027
                }
18028
            },
18029
            selModel: {},
18030
            selType: checkSelection,
18031
            columns: cols_,
18032
            store: jsStoreGrid,
18033
            plugins: [{
18034
                ptype: 'gridfilters'
18035
            }
18036
            ]
18037
        });
18038
        me.callParent(arguments);
18039
    }
18040
});
18041
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid  For ERP )*/
18042
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEdit', {
18043
    extend: 'Ext.form.Panel',
18044
    alias: 'widget.docgridcelledit',
18045
    requires: [
18046
		'Ext.grid.plugin.CellEditing',
18047
		'Ext.grid.Panel'
18048
    ],
18049
    autoScroll: true,
18050
    anchor: '100%',
18051
    tableName: undefined,
18052
    docType: undefined,
18053
    transType: undefined,
18054
    docNo: undefined,
18055
    hideButton: undefined,
18056
    multiSelect: undefined,
18057
    initComponent: function () {
18058
        var me = this;
18059
        var isLookup = me.isLookup;
18060
        var hide_ = false;
18061
        var widthLock = 250;
18062
        var checkSelection = '';
18063

    
18064
        if (me.hideButton == true) {
18065
            hide_ = true;
18066
        }
18067
        if (me.multiSelect) {
18068
            locking = false;
18069
            checkSelection = 'checkboxmodel';
18070
            widthLock = 40;
18071
        }
18072
        var tableName = me.tableName;
18073
        var cols = [];
18074
        var fieldStore = [];
18075
        var _url = 'GetAllField';
18076
        var hasil = null;
18077
        var height = me.height;
18078
        var storeID = 'store' + me.tableName;
18079
        var gridName = 'grid' + me.name;
18080
        if (me.storeName) {
18081
            storeID = me.storeName;
18082
        }
18083
        var LangID = MinovaUtil.GetLangID();
18084
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
18085
        Ext.Ajax.request({
18086
            async: false,
18087
            method: 'POST',
18088
            url: '/UserControl/GetStore',
18089
            params: {
18090
                tableName: 'PDSDOCFIELD',
18091
                param: parameter
18092
            },
18093
            success: function (response) {
18094
                var results = Ext.decode(response.responseText);
18095
                hasil = results.data;
18096
            }
18097
        });
18098
        cols.push({
18099
            xtype: 'rownumberer'
18100
        });
18101
        var addData = '({';
18102
        if (hasil.length > 0) {
18103
            Ext.each(hasil, function (rec) {
18104
                fieldStore.push(rec.FieldName);
18105
                var defaultValue = rec.DefaultValue;
18106
                if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
18107
                    Ext.Ajax.request({
18108
                        async: false,
18109
                        method: 'POST',
18110
                        url: '/UserControl/GetStore',
18111
                        params: {
18112
                            tableName: 'PCMFUNC',
18113
                            param: 'FuncName[equal]' + rec.DefaultValue
18114
                        },
18115
                        success: function (response) {
18116
                            var results = Ext.decode(response.responseText);
18117
                            data_ = results.data;
18118
                            if (data_.length > 0) {
18119
                                defaultValue = eval(data_[0].FunctionCode);
18120
                            }
18121
                        }
18122
                    });
18123
                }
18124
                addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
18125
                var null_ = null;
18126
                var ReadOnly_ = false;
18127
                if (rec.IsPrimaryKey == true) {
18128
                    null_ = false;
18129
                }
18130
                if (rec.IsRequired == true) {
18131
                    null_ = false;
18132
                } else {
18133
                    null_ = true;
18134
                }
18135
                var Hidden_ = false;
18136
                if (rec.ReadOnly == '1') {
18137
                    ReadOnly_ = true;
18138
                }
18139
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
18140
                    Hidden_ = true;
18141
                    null_ = true;
18142
                }
18143
                if (rec.GridView == 1) {
18144
                    switch (rec.FormatRef) {
18145
                        case "date":
18146
                            cols.push({
18147
                                xtype: 'minovadatecolumn',
18148
                                hidden: Hidden_,
18149
                                text: rec.HeaderTitle,
18150
                                dataIndex: rec.FieldName,
18151
                                filter: {
18152
                                    itemDefaults: {
18153
                                        emptyText: 'Search for...'
18154
                                    }
18155
                                },
18156
                                editor: {
18157
                                    allowBlank: null_,
18158
                                    xtype: 'datefield',
18159
                                    hideMode: 'visibility',
18160
                                    readOnly: ReadOnly_,
18161
                                    id: tableName + rec.FieldName,
18162
                                    value: defaultValue
18163
                                }
18164
                            });
18165
                            break
18166
                        case "amount":
18167
                            cols.push({
18168
                                //xtype : 'minovacurrancycolumn',
18169
                                xtype: 'numbercolumn',
18170
                                text: rec.HeaderTitle,
18171
                                align: 'right',
18172
                                dataIndex: rec.FieldName,
18173
                                hidden: Hidden_,
18174
								minWidth: 150,
18175
                                filter: {
18176
                                    itemDefaults: {
18177
                                        emptyText: 'Search for...'
18178
                                    }
18179
                                },
18180
                                editor: {
18181
                                    allowBlank: null_,
18182
                                    xtype: 'textfield',
18183
                                    readOnly: ReadOnly_,
18184
                                    id: tableName + rec.FieldName,
18185
                                    nameTable: rec.TableName,
18186
                                    fieldGrid: rec.FieldName,
18187
                                    fieldStyle: 'text-align:right;',
18188
                                    vtype: 'validateMinovaNumber',
18189
                                    value: '0',
18190
                                    listeners: {
18191
                                        change: function (val, recs) {
18192
                                            var fvalue = val.getValue();
18193
                                            var custumFunc = rec.SelectFunction;
18194
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18195
                                                Ext.Ajax.request({
18196
                                                    async: false,
18197
                                                    method: 'POST',
18198
                                                    url: '/UserControl/GetStore',
18199
                                                    params: {
18200
                                                        tableName: 'PCMFUNC',
18201
                                                        param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18202
                                                    },
18203
                                                    success: function (response) {
18204
                                                        var results = Ext.decode(response.responseText);
18205
                                                        var dt = results.data[0];
18206
                                                        if (dt != undefined) {
18207
                                                            custumFunc = dt.FunctionCode;
18208
                                                        }
18209
                                                    }
18210
                                                });
18211
                                            }
18212
                                            if (custumFunc) {
18213
                                                eval(custumFunc)
18214
                                            }
18215
                                        }
18216
                                    }
18217
                                }
18218
                            });
18219
                            break
18220
                        default:
18221
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
18222
                                cols.push({
18223
                                    text: rec.HeaderTitle,
18224
                                    dataIndex: rec.FieldName,
18225
                                    width: 100,
18226
									minWidth: 150,
18227
                                    filter: {
18228
                                        type: 'string',
18229
                                        itemDefaults: {
18230
                                            emptyText: 'Search for...'
18231
                                        }
18232
                                    }
18233
                                });
18234
                            } else if (rec.SearchType == '0') {
18235
                                var valueField = null;
18236
                                var displayValue = null;
18237
                                var TableRef = undefined;
18238
                                if (rec.TableRef != '') {
18239
                                    TableRef = rec.TableRef;
18240
                                    Ext.Ajax.request({
18241
                                        async: false,
18242
                                        method: 'POST',
18243
                                        url: '/UserControl/GetStore',
18244
                                        params: {
18245
                                            tableName: 'SDATATABLEFIELD',
18246
                                            param: 'TableName[equal]' + rec.TableRef
18247
                                        },
18248
                                        success: function (response) {
18249
                                            var results = Ext.decode(response.responseText);
18250
                                            data_ = results.data;
18251
                                            if (data_ != undefined) {
18252
                                                valueField_ = $.grep(data_, function (r) {
18253
                                                    return r.ValueField == '1'
18254
                                                });
18255
                                                valueField = valueField_[0].FieldName
18256
                                                displayValue_ = $.grep(data_, function (r) {
18257
                                                    return r.DisplayValue == '1'
18258
                                                });
18259
                                                displayValue = displayValue_[0].FieldName
18260
                                            }
18261
                                        }
18262
                                    });
18263
                                }
18264
                                Ext.create('Ext.data.Store', {
18265
                                    storeId: 'store_' + me.tableName + rec.FieldName,
18266
                                    autoLoad: true,
18267
                                    proxy: {
18268
                                        method: 'POST',
18269
                                        type: 'ajax',
18270
                                        url: '/UserControl/GetStoreAuth',
18271
                                        extraParams: {
18272
                                            tableName: TableRef,
18273
                                            param: rec.ParamCombo,
18274
                                            menuId: MinovaUtil.GetMenuID()
18275
                                        },
18276
                                        reader: {
18277
                                            type: 'json',
18278
                                            root: 'data',
18279
                                            totalProperty: 'data[0].TotalCount'
18280
                                        }
18281
                                    }
18282
                                });
18283
                                cols.push({
18284
                                    xtype: 'minovacombocolumn',
18285
                                    hidden: Hidden_,
18286
                                    text: rec.HeaderTitle,
18287
                                    dataIndex: rec.FieldName,
18288
                                    valueField: valueField,
18289
                                    displayField: displayValue,
18290
                                    store: 'store_' + me.tableName + rec.FieldName,
18291
									minWidth: 150,
18292
                                    editor: {
18293
                                        allowBlank: null_,
18294
                                        xtype: 'minovacombobox',
18295
                                        readOnly: ReadOnly_,
18296
                                        id: tableName + rec.FieldName,
18297
                                        valueField: valueField,
18298
                                        displayField: displayValue,
18299
                                        store: 'store_' + me.tableName + rec.FieldName,
18300
										forceSelection: false,
18301
									lazyRender: true,
18302
                                        listeners: {
18303
                                            change: function (val) {
18304
                                                var fvalue = val.getValue();
18305
                                                var custumFunc = rec.SelectFunction;
18306
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18307
                                                    Ext.Ajax.request({
18308
                                                        async: false,
18309
                                                        method: 'POST',
18310
                                                        url: '/UserControl/GetStore',
18311
                                                        params: {
18312
                                                            tableName: 'PCMFUNC',
18313
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18314
                                                        },
18315
                                                        success: function (response) {
18316
                                                            var results = Ext.decode(response.responseText);
18317
                                                            var dt = results.data[0];
18318
                                                            if (dt != undefined) {
18319
                                                                custumFunc = dt.FunctionCode;
18320
                                                            }
18321
                                                        }
18322
                                                    });
18323
                                                }
18324
                                                if (custumFunc) {
18325
                                                    eval(custumFunc)
18326
                                                }
18327
                                            }
18328
                                        }
18329
                                    },
18330
                                    filter: {
18331
                                        type: 'list',
18332
                                        itemDefaults: {
18333
                                            emptyText: 'Search for...'
18334
                                        }
18335
                                    }
18336
                                });
18337
                            } else if (rec.SearchType == '5') {							
18338
                                var valueField = null;
18339
                                var displayValue = null;
18340
                                var AdditionaldisplayValue = null;
18341
                                var TableRef = undefined;
18342
                                if (rec.TableRef != '') {
18343
                                    TableRef = rec.TableRef;
18344
                                    Ext.Ajax.request({
18345
                                        async: false,
18346
                                        method: 'POST',
18347
                                        url: '/UserControl/GetStore',
18348
                                        params: {
18349
                                            tableName: 'SDATATABLEFIELD',
18350
                                            param: 'TableName[equal]' + rec.TableRef
18351
                                        },
18352
                                        success: function (response) {
18353
                                            var results = Ext.decode(response.responseText);
18354
                                            data_ = results.data;
18355
                                            if (data_ != undefined) {
18356
                                                valueField_ = $.grep(data_, function (r) {
18357
                                                    return r.ValueField == '1'
18358
                                                });
18359
                                                if (valueField_.length > 0) {
18360
                                                    valueField = valueField_[0].FieldName
18361
                                                }
18362

    
18363
                                                displayValue_ = $.grep(data_, function (r) {
18364
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
18365
                                                });
18366
                                                if (displayValue_.length > 0) {
18367
                                                    displayValue = displayValue_[0].FieldName;
18368
                                                }
18369
                                                if (displayValue_.length >= 2) {
18370
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
18371
                                                }
18372
                                            }
18373
                                        }
18374
                                    });
18375
                                }
18376
                                Ext.create('Ext.data.Store', {
18377
                                    storeId: 'store_' + me.tableName + rec.FieldName,
18378
                                    autoLoad: true,
18379
                                    proxy: {
18380
                                        method: 'POST',
18381
                                        type: 'ajax',
18382
                                        url: '/UserControl/GetStoreAuth',
18383
                                        extraParams: {
18384
                                            tableName: TableRef,
18385
                                            param: rec.ParamCombo,
18386
                                            menuId: MinovaUtil.GetMenuID()
18387
                                        },
18388
                                        reader: {
18389
                                            type: 'json',
18390
                                            root: 'data',
18391
                                            totalProperty: 'data[0].TotalCount'
18392
                                        }
18393
                                    }
18394
                                });
18395
                                cols.push({
18396
                                    xtype : 'minovacombocolumn',
18397
                                    hidden: Hidden_,
18398
                                    text: rec.HeaderTitle,
18399
                                    dataIndex: rec.FieldName,
18400
                                    valueField : valueField,
18401
                                    displayField : displayValue,
18402
                                    store : 'store_' + me.tableName + rec.FieldName,
18403
									minWidth: 150,
18404
                                    tpl: Ext.create('Ext.XTemplate',
18405
                                            '<ul class="x-list-plain"><tpl for=".">',
18406
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
18407
                                            '</tpl></ul>'),
18408
                                    displayTpl: Ext.create('Ext.XTemplate',
18409
                                        '<tpl for=".">',
18410
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
18411
                                        '</tpl>'),
18412
                                    editor: {
18413
                                        allowBlank: null_,
18414
                                        xtype: 'combobox',
18415
                                        readOnly: ReadOnly_,
18416
                                        id: rec.TableName + rec.FieldName,
18417
                                        nameTable: rec.TableName,
18418
                                        fieldGrid: rec.FieldName,
18419
                                        valueField: valueField,
18420
                                        displayField: displayValue,
18421
                                        store: 'store_' + me.tableName + rec.FieldName,
18422
                                        value: rec.DefaultValue,
18423
                                        tpl: Ext.create('Ext.XTemplate',
18424
                                            '<ul class="x-list-plain"><tpl for=".">',
18425
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
18426
                                            '</tpl></ul>'),
18427
                                        displayTpl: Ext.create('Ext.XTemplate',
18428
                                            '<tpl for=".">',
18429
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
18430
                                            '</tpl>')
18431
                                    },
18432
                                    renderer: function (value) {
18433
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
18434
                                        var index = store.find(valueField, value);
18435
                                        var val = "";
18436
                                        if (index != -1) {
18437
                                            var rc = store.getAt(index);
18438
                                            //val = rc.get(displayValue);
18439
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
18440
                                        } else {
18441
                                            val = value;
18442
                                        }
18443
                                        return val;
18444
                                    },
18445
                                    filter: {
18446
                                        type: 'list',
18447
                                        itemDefaults: {
18448
                                            emptyText: 'Search for...'
18449
                                        }
18450
                                    }
18451
                                });
18452
                            } else if (rec.SearchType == '2') {
18453
                                var triger = (rec.TriggerCombo).split('$');
18454
                                var targetField_ = triger[0];
18455
                                var fieldValue_ = triger[1];
18456
                                cols.push({
18457
                                    text: rec.HeaderTitle,
18458
                                    hidden: Hidden_,
18459
                                    dataIndex: rec.FieldName,
18460
                                    filter: {
18461
                                        itemDefaults: {
18462
                                            emptyText: 'Search for...'
18463
                                        }
18464
                                    },
18465
                                    editor: {
18466
                                        allowBlank: null_,
18467
                                        xtype: 'minovalookupgrid',
18468
                                        readOnly: ReadOnly_,
18469
                                        isGrid: true,
18470
                                        fieldTarget: targetField_,
18471
                                        fieldValue: fieldValue_,
18472
                                        isGrid: true,
18473
                                        id: tableName + rec.FieldName,
18474
                                        tableName: rec.TableRef,
18475
                                        triggerCls: 'x-form-search-trigger',
18476
                                        vtype: 'alphanum',
18477
                                        listeners: {
18478
                                            change: function (val) {
18479
                                                var custumFunc = rec.SelectFunction;
18480
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18481
                                                    Ext.Ajax.request({
18482
                                                        async: false,
18483
                                                        method: 'POST',
18484
                                                        url: '/UserControl/GetStore',
18485
                                                        params: {
18486
                                                            tableName: 'PCMFUNC',
18487
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18488
                                                        },
18489
                                                        success: function (response) {
18490
                                                            var results = Ext.decode(response.responseText);
18491
                                                            data_ = results.data[0];
18492
                                                            if (data_ != undefined) {
18493
                                                                custumFunc = data_.FunctionCode;
18494
                                                            }
18495
                                                        }
18496
                                                    });
18497
                                                }
18498
                                                if (custumFunc) {
18499
                                                    eval(custumFunc)
18500
                                                }
18501
                                            }
18502
                                        }
18503
                                    }
18504
                                });
18505
                            } else if (rec.SearchType == '3') {
18506
                                cols.push({
18507
                                    text: rec.HeaderTitle,
18508
                                    hidden: Hidden_,
18509
                                    dataIndex: rec.FieldName,
18510
                                    filter: {
18511
                                        itemDefaults: {
18512
                                            emptyText: 'Search for...'
18513
                                        }
18514
                                    },
18515
                                    editor: {
18516
                                        allowBlank: null_,
18517
                                        xtype: 'MinovaLookupTree',
18518
                                        readOnly: ReadOnly_,
18519
                                        id: tableName + rec.FieldName,
18520
                                        tableName: rec.TableRef,
18521
                                        triggerCls: 'x-form-search-trigger',
18522
                                        vtype: 'alphanum',
18523
                                        treeSructure: rec.SearchFunction,
18524
                                        objClassValue: rec.ParamCombo,
18525
                                        listeners: {
18526
                                            change: function (val) {
18527
                                                var custumFunc = rec.SelectFunction;
18528
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18529
                                                    Ext.Ajax.request({
18530
                                                        async: false,
18531
                                                        method: 'POST',
18532
                                                        url: '/UserControl/GetStore',
18533
                                                        params: {
18534
                                                            tableName: 'PCMFUNC',
18535
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18536
                                                        },
18537
                                                        success: function (response) {
18538
                                                            var results = Ext.decode(response.responseText);
18539
                                                            data_ = results.data[0];
18540
                                                            if (data_ != undefined) {
18541
                                                                custumFunc = data_.FunctionCode;
18542
                                                            }
18543
                                                        }
18544
                                                    });
18545
                                                }
18546
                                                if (custumFunc) {
18547
                                                    eval(custumFunc)
18548
                                                }
18549
                                            }
18550
                                        }
18551
                                    }
18552
                                });
18553
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
18554
                                var triger = (rec.TriggerCombo).split('&');
18555
                                var targetField_ = triger[0];
18556
                                var fieldValue_ = triger[0];
18557
                                cols.push({
18558
                                    text: rec.HeaderTitle,
18559
                                    hidden: Hidden_,
18560
                                    dataIndex: rec.FieldName,
18561
                                    filter: {
18562
                                        itemDefaults: {
18563
                                            emptyText: 'Search for...'
18564
                                        }
18565
                                    },
18566
                                    editor: {
18567
                                        allowBlank: null_,
18568
                                        xtype: 'lookupemployee',
18569
                                        readOnly: ReadOnly_,
18570
                                        isGrid: true,
18571
                                        fieldTarget: targetField_,
18572
                                        fieldValue: fieldValue_,
18573
                                        isGrid: true,
18574
                                        id: tableName + rec.FieldName,
18575
                                        tableName: rec.TableRef,
18576
                                        triggerCls: 'x-form-search-trigger',
18577
                                        vtype: 'alphanum',
18578
                                        listeners: {
18579
                                            change: function (val) {
18580
                                                var custumFunc = rec.SelectFunction;
18581
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18582
                                                    Ext.Ajax.request({
18583
                                                        async: false,
18584
                                                        method: 'POST',
18585
                                                        url: '/UserControl/GetStore',
18586
                                                        params: {
18587
                                                            tableName: 'PCMFUNC',
18588
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18589
                                                        },
18590
                                                        success: function (response) {
18591
                                                            var results = Ext.decode(response.responseText);
18592
                                                            data_ = results.data[0];
18593
                                                            if (data_ != undefined) {
18594
                                                                custumFunc = data_.FunctionCode;
18595
                                                            }
18596
                                                        }
18597
                                                    });
18598
                                                }
18599
                                                if (custumFunc) {
18600
                                                    eval(custumFunc)
18601
                                                }
18602
                                            }
18603
                                        }
18604
                                    }
18605
                                });
18606
                            } else if (rec.SearchType == '4' && isLookup != true) {
18607
                                cols.push({
18608
                                    text: rec.HeaderTitle,
18609
                                    hidden: Hidden_,
18610
                                    dataIndex: rec.FieldName,
18611
                                    filter: {
18612
                                        itemDefaults: {
18613
                                            emptyText: 'Search for...'
18614
                                        }
18615
                                    },
18616
                                    editor: {
18617
                                        allowBlank: null_,
18618
                                        xtype: 'lookupemployee',
18619
                                        readOnly: ReadOnly_,
18620
                                        isGrid: true,
18621
                                        fieldTarget: targetField_,
18622
                                        fieldValue: fieldValue_,
18623
                                        isGrid: true,
18624
                                        id: tableName + rec.FieldName,
18625
                                        tableName: rec.TableRef,
18626
                                        triggerCls: 'x-form-search-trigger',
18627
                                        vtype: 'alphanum',
18628
                                        listeners: {
18629
                                            change: function (val) {
18630
                                                var custumFunc = rec.SelectFunction;
18631
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18632
                                                    Ext.Ajax.request({
18633
                                                        async: false,
18634
                                                        method: 'POST',
18635
                                                        url: '/UserControl/GetStore',
18636
                                                        params: {
18637
                                                            tableName: 'PCMFUNC',
18638
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18639
                                                        },
18640
                                                        success: function (response) {
18641
                                                            var results = Ext.decode(response.responseText);
18642
                                                            data_ = results.data[0];
18643
                                                            if (data_ != undefined) {
18644
                                                                custumFunc = data_.FunctionCode;
18645
                                                            }
18646
                                                        }
18647
                                                    });
18648
                                                }
18649
                                                if (custumFunc) {
18650
                                                    eval(custumFunc)
18651
                                                }
18652
                                            }
18653
                                        }
18654
                                    }
18655
                                });
18656
                            } else if (rec.FixedValue != '') {
18657
                                cols.push({
18658
                                    text: rec.HeaderTitle,
18659
                                    hidden: Hidden_,
18660
                                    dataIndex: rec.FieldName,
18661
									
18662
                                    filter: {
18663
                                        itemDefaults: {
18664
                                            emptyText: 'Search for...'
18665
                                        }
18666
                                    },
18667
									autoSizeColumn: true,
18668
								width: 200,
18669
                                    editor: {
18670
                                        allowBlank: null_,
18671
                                        xtype: 'minovafixvalue',
18672
                                        readOnly: ReadOnly_,
18673
										forceSelection: false,
18674
                                        id: tableName + rec.FieldName,
18675
                                        nameTable: tableName,
18676
                                        fieldGrid: rec.FieldName,
18677
                                        fixedValue: rec.FixedValue,
18678
                                        valueField: 'code',
18679
                                        displayField: 'desc',
18680
                                        value: defaultValue,
18681
											/*Add by Midi 12 Juni 2019*/
18682
									listeners: {
18683
										change: function (val) {
18684
											var custumFunc = rec.SelectFunction;
18685
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18686
												Ext.Ajax.request({
18687
													async: false,
18688
													method: 'POST',
18689
													url: '/UserControl/GetStore',
18690
													params: {
18691
														tableName: 'PCMFUNC',
18692
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18693
													},
18694
													success: function (response) {
18695
														var results = Ext.decode(response.responseText);
18696
														var dt = results.data[0];
18697
														if (dt != undefined) {
18698
															custumFunc = dt.FunctionCode;
18699
														}
18700
													}
18701
												});
18702
											}
18703
											if (custumFunc) {
18704
												eval(custumFunc)
18705
											}
18706
										}
18707
									}
18708
									//
18709
                                    },
18710
                                    renderer: function (value) {
18711
                                        var val = "";
18712
                                        var storeData = [];
18713
                                        var str = rec.FixedValue;
18714
                                        var hasil = str.split('||');
18715
                                        hasil.forEach(function (h) {
18716
                                            store_ = h.split('=')
18717
                                            storeData.push({
18718
                                                code: store_[0],
18719
                                                desc: store_[1]
18720
                                            });
18721
                                        });
18722
                                        var item = storeData.find(x => x.code == value);
18723
                                        if (item != undefined) {
18724
                                            val = item.desc;
18725
                                        }
18726
                                        return val;
18727
                                    }
18728
                                });
18729
                            } else if (rec.FieldDataType == 3) {
18730
                                cols.push({
18731
                                    text: rec.HeaderTitle,
18732
                                    hidden: Hidden_,
18733
                                    dataIndex: rec.FieldName,
18734
									isSummary:isSum,
18735
                                    filter: {
18736
                                        itemDefaults: {
18737
                                            emptyText: 'Search for...'
18738
                                        }
18739
                                    },
18740
								autoSizeColumn: true,
18741
								width: 200,
18742
                                    editor: {
18743
                                        allowBlank: null_,
18744
                                        xtype: 'textfield',
18745
                                        readOnly: ReadOnly_,
18746
                                        id: tableName + rec.FieldName,
18747
                                        nameTable: rec.TableName,
18748
                                        fieldGrid: rec.FieldName,
18749
                                        vtype: 'validateDecimal',
18750
                                        maxLength: rec.Length,
18751
                                        precision: rec.Prec,
18752
                                        fieldStyle: 'text-align:right;',
18753
                                        value: defaultValue,
18754
                                        listeners: {
18755
                                            change: function (val) {
18756
                                                var custumFunc = rec.SelectFunction;
18757
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18758
                                                    Ext.Ajax.request({
18759
                                                        async: false,
18760
                                                        method: 'POST',
18761
                                                        url: '/UserControl/GetStore',
18762
                                                        params: {
18763
                                                            tableName: 'PCMFUNC',
18764
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18765
                                                        },
18766
                                                        success: function (response) {
18767
                                                            var results = Ext.decode(response.responseText);
18768
                                                            var dt = results.data[0];
18769
                                                            if (dt != undefined) {
18770
                                                                custumFunc = dt.FunctionCode;
18771
                                                            }
18772
                                                        }
18773
                                                    });
18774
                                                }
18775
                                                if (custumFunc) {
18776
                                                    eval(custumFunc)
18777
                                                }
18778
                                            }
18779
                                        }
18780
                                    }
18781
                                });
18782
                            } else {
18783
                                cols.push({
18784
                                    text: rec.HeaderTitle,
18785
                                    hidden: Hidden_,
18786
                                    dataIndex: rec.FieldName,
18787
									// isSummary: isSum,
18788
                                    filter: {
18789
                                        itemDefaults: {
18790
                                            emptyText: 'Search for...'
18791
                                        }
18792
                                    },
18793
								autoSizeColumn: true,
18794
								width: 200,
18795
								minWidth: 150,
18796
                                    editor: {
18797
                                        allowBlank: null_,
18798
                                        xtype: 'textfield',
18799
                                        readOnly: ReadOnly_,
18800
                                        id: tableName + rec.FieldName,
18801
                                        value: defaultValue,
18802
                                        listeners: {
18803
                                            change: function (val) {
18804
                                                var custumFunc = rec.SelectFunction;
18805
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
18806
                                                    Ext.Ajax.request({
18807
                                                        async: false,
18808
                                                        method: 'POST',
18809
                                                        url: '/UserControl/GetStore',
18810
                                                        params: {
18811
                                                            tableName: 'PCMFUNC',
18812
                                                            param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
18813
                                                        },
18814
                                                        success: function (response) {
18815
                                                            var results = Ext.decode(response.responseText);
18816
                                                            data_ = results.data[0];
18817
                                                            if (data_ != undefined) {
18818
                                                                custumFunc = data_.FunctionCode;
18819
                                                            }
18820
                                                        }
18821
                                                    });
18822
                                                }
18823
                                                if (custumFunc) {
18824
                                                    eval(custumFunc)
18825
                                                }
18826
                                            }
18827
                                        }
18828
                                    }
18829
                                });
18830
                            }
18831
                            break
18832
                    }
18833
                } else {
18834
                    cols.push({
18835
                        text: rec.HeaderTitle,
18836
                        hidden: Hidden_,
18837
                        dataIndex: rec.FieldName,
18838
                        hidden: true,
18839
                        editor: {
18840
                            allowBlank: true,
18841
                            xtype: 'textfield',
18842
                            readOnly: ReadOnly_,
18843
                            id: tableName + rec.FieldName,
18844
                            value: defaultValue
18845
                        },
18846
                        filter: {
18847
                            itemDefaults: {
18848
                                emptyText: 'Search for...'
18849
                            }
18850
                        }
18851
                    });
18852
                }
18853
            });
18854
        };
18855
        addData = addData + "})";
18856
        this.cellEditing = new Ext.grid.plugin.CellEditing({
18857
            clicksToEdit: 1
18858
        });
18859
        Ext.applyIf(me, {
18860
            items: [{
18861
                xtype: 'grid',
18862
                autoScroll: true,
18863
                id: gridName,
18864
                name: gridName,
18865
                height: height,
18866
                store: Ext.create('Ext.data.Store', {
18867
                    storeId: storeID,
18868
                    fields: fieldStore,
18869
                    proxy: {
18870
                        method: 'POST',
18871
                        type: 'ajax',
18872
                        url: '',
18873
                        reader: {
18874
                            type: 'json',
18875
                            root: 'data'
18876
                        }
18877
                    }
18878
                }),
18879
                dockedItems: [{
18880
                    xtype: 'toolbar',
18881
                    items: [{
18882
                        text: 'Add',
18883
                        name: 'add' + tableName,
18884
                        iconCls: 'fa-plus-circle',
18885
                        style: 'font-family: FontAwesome',
18886
                        handler: function () {
18887
                            var store = Ext.StoreMgr.lookup(storeID);
18888
                            var data = eval(addData);
18889
                            if (me.transType == "FIN") {
18890
                                var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
18891
                                var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
18892
                                var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
18893
                                var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
18894
                                data["FiscalPeriod"] = fp;
18895
                                data["FiscalYear"] = fy;
18896
                                data["CompanyID"] = cp;
18897
                                data["BusinessUnit"] = bu;
18898
                            }
18899
                            idx = store.getCount();
18900
                            store.insert(idx, data);
18901
                        }
18902
                    }, {
18903
                        text: 'Delete',
18904
                        name: 'delete' + tableName,
18905
                        iconCls: 'fa-trash-o',
18906
                        style: 'font-family: FontAwesome',
18907
                        handler: function () {
18908
                            var me = this,
18909
                            store = Ext.StoreMgr.lookup(storeID);
18910
                            var grid = Ext.getCmp(gridName);
18911
                            Ext.MessageBox.show({
18912
                                title: 'Remove tab',
18913
                                msg: "This will remove. Do you want to continue?",
18914
                                buttons: Ext.MessageBox.YESNO,
18915
                                fn: function (choice) {
18916
                                    console.log(choice);
18917
                                    if (choice === 'yes') {
18918
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
18919
                                        if (selection) {
18920
                                            store.remove(selection);
18921
                                        }
18922
                                    }
18923
                                }
18924
                            });
18925
                        }
18926
                    }
18927
					,{ //// add by Tri nwh 20211119
18928
                        text: 'Simulate',
18929
                        name: 'simulate' + tableName,
18930
                        //iconCls: 'fa-trash-o',
18931
                        style: 'font-family: FontAwesome',
18932
                        handler: function () {
18933
                            var me = this,
18934
                            store = Ext.StoreMgr.lookup(storeID);
18935
                            var grid = Ext.getCmp(gridName);
18936
							console.log(grid);
18937
                            //Ext.MessageBox.show({
18938
                                //title: 'Remove tab',
18939
                                //msg: "This will remove. Do you want to continue?",
18940
                                //buttons: Ext.MessageBox.YESNO,
18941
                                //fn: function (choice) {
18942
                                    //console.log(choice); console.log('jinyoung');
18943
                                    //if (choice === 'yes') {
18944
                                        //var selection = grid.getView().getSelectionModel().getSelection()[0];
18945
                                        //if (selection) {
18946
                                            //store.remove(selection);
18947
                                        //}
18948
                                    //}
18949
                                //}
18950
                            //});
18951
                        }
18952
                    }
18953
                    ]
18954
                }
18955
                ],
18956
                columns: cols,
18957
                selModel: {
18958
                    type: 'cellmodel'
18959
                },
18960
                plugins: [this.cellEditing],
18961
                //For Auto Size Coloum Mode - Nana
18962
                viewConfig: {
18963
                    emptyText: 'No Data Display',
18964
                    deferEmptyText: false,
18965
                    listeners: {
18966
                        refresh: function (dataview) {
18967
                            Ext.each(dataview.panel.columns, function (column) {
18968
                                if (column.autoSizeColumn == false)
18969
                                    column.autoSizeColumn = true;
18970
                                column.autoSize();
18971
                            })
18972
                        }
18973
                    }
18974
                },listeners: {
18975
					'beforeedit': function (editor, e, eOpts) {
18976
						if (e.colIdx == 2 && tableName == 'PTRMATERIALITEM') {
18977
							var store = Ext.StoreMgr.lookup('store_' + tableName + 'MaterialID');
18978
							var itemType = e.record.get('ItemType');
18979
							console.log(itemType);
18980
							if (itemType == '0') {
18981
								store.proxy.extraParams = {
18982
									tableName: 'PDSTRANSITEMS',
18983
									param: "TableName[=]PMDMAT0001",
18984
									menuId: MinovaUtil.GetMenuID()
18985
								};
18986
							} else if (itemType == '1') {
18987
								store.proxy.extraParams = {
18988
									tableName: 'PDSTRANSITEMS',
18989
									param: "TableName[=]PMDSRV0001",
18990
									menuId: MinovaUtil.GetMenuID()
18991
								};
18992
							} else if (itemType == '2') {
18993
								store.proxy.extraParams = {
18994
									tableName: 'PDSTRANSITEMS',
18995
									param: "TableName[=]PMDAST0001",
18996
									menuId: MinovaUtil.GetMenuID()
18997
								};
18998
							} else {
18999
								store.proxy.extraParams = {
19000
									tableName: '',
19001
									param: "",
19002
									menuId: MinovaUtil.GetMenuID()
19003
								};
19004
							}
19005
							store.removeAll();
19006
							store.reload();
19007
						}
19008
					}
19009
					}
19010
            }
19011
            ]
19012
        });
19013
        me.callParent(arguments);
19014
    }
19015
});
19016
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid Sum For ERP )*/
19017
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEditSum', {
19018
	extend: 'Ext.form.Panel',
19019
	alias: 'widget.docgridcelleditsum',
19020
	requires: [
19021
		'Ext.grid.plugin.CellEditing',
19022
		'Ext.grid.Panel',
19023
		'Ext.grid.RowNumberer'
19024
	],
19025
	autoScroll: true,
19026
	anchor: '100%',
19027
	tableName: undefined,
19028
	docType: undefined,
19029
	transType: undefined,
19030
	docNo: undefined,
19031
	hideButton: undefined,
19032
	multiSelect: undefined,
19033
	initComponent: function () {
19034
		var me = this;
19035
		var isLookup = me.isLookup;
19036
		var hide_ = false;
19037
		var hideUploadDownload = false;
19038
		var widthLock = 250;
19039
		var checkSelection = '';
19040
		
19041
		Ext.Ajax.request({
19042
			async: false,
19043
			method: 'POST',
19044
			url: '/UserControl/GetStore',
19045
			params: {
19046
				tableName: "PCMBSTRANSLIST",
19047
				param: 'TableName[=]' + me.tableName
19048
			},
19049
			success: function (response) {
19050
				var results = Ext.decode(response.responseText);
19051
				if (results.data[0].UploadDownloadEnable == '0') {
19052
					hideUploadDownload = true;
19053
				} else {
19054
					hideUploadDownload = false;
19055
				}
19056
			}
19057
		});
19058

    
19059
		if (me.hideButton == true) {
19060
			hide_ = true;
19061
		}
19062
		if (me.multiSelect) {
19063
			locking = false;
19064
			checkSelection = 'checkboxmodel';
19065
			widthLock = 40;
19066
		}
19067
		var tableName = me.tableName;
19068
		var cols = [];
19069
		var fieldStore = [];
19070
		var _url = 'GetAllField';
19071
		var hasil = null;
19072
		var height = me.height;
19073
		var storeID = 'store' + me.tableName;
19074
		var gridName = 'grid' + me.name;
19075
		if (me.storeName) {
19076
			storeID = me.storeName;
19077
		}
19078
		var LangID = MinovaUtil.GetLangID();
19079
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
19080
		Ext.Ajax.request({
19081
			async: false,
19082
			method: 'POST',
19083
			url: '/UserControl/GetStore',
19084
			params: {
19085
				tableName: 'PDSDOCFIELD',
19086
				param: parameter
19087
			},
19088
			success: function (response) {
19089
				var results = Ext.decode(response.responseText);
19090
				hasil = results.data;
19091
			}
19092
		});
19093
		cols.push({
19094
			xtype: 'rownumberer'
19095
		});
19096
		var addData = '({';
19097
		if (hasil.length > 0) {
19098
			Ext.each(hasil, function (rec) {
19099
				fieldStore.push(rec.FieldName);
19100
				var defaultValue = rec.DefaultValue;
19101
				if (defaultValue.substring(0, 2).toLowerCase() == 'fn') {
19102
					Ext.Ajax.request({
19103
						async: false,
19104
						method: 'POST',
19105
						url: '/UserControl/GetStore',
19106
						params: {
19107
							tableName: 'PCMFUNC',
19108
							param: 'FuncName[equal]' + rec.DefaultValue
19109
						},
19110
						success: function (response) {
19111
							var results = Ext.decode(response.responseText);
19112
							data_ = results.data;
19113
							if (data_.length > 0) {
19114
								defaultValue = eval(data_[0].FunctionCode);
19115
							}
19116
						}
19117
					});
19118
				}
19119
				addData = addData + rec.FieldName + ":" + "'" + defaultValue + "',";
19120
				var null_ = null;
19121
				var ReadOnly_ = false;
19122
				if (rec.IsPrimaryKey == true) {
19123
					null_ = false;
19124
				}
19125
				if (rec.IsRequired == true) {
19126
					null_ = false;
19127
				} else {
19128
					null_ = true;
19129
				}
19130
				var Hidden_ = false;
19131
				if (rec.ReadOnly == '1') {
19132
					ReadOnly_ = true;
19133
				}
19134
				if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
19135
					Hidden_ = true;
19136
					null_ = true;
19137
				}
19138
				var isSum = rec.IsSummary;
19139
				if (rec.GridView == 1) {
19140
					switch (rec.FormatRef) {
19141
					case "date":
19142
						cols.push({
19143
							xtype: 'minovadatecolumn',
19144
							hidden: Hidden_,
19145
							text: rec.HeaderTitle,
19146
							dataIndex: rec.FieldName,
19147
							filter: {
19148
								itemDefaults: {
19149
									emptyText: 'Search for...'
19150
								}
19151
							},
19152
							isSummary: isSum,
19153
							editor: {
19154
								allowBlank: null_,
19155
								xtype: 'datefield',
19156
								hideMode: 'visibility',
19157
								readOnly: ReadOnly_,
19158
								id: tableName + rec.FieldName,
19159
								value: defaultValue
19160
							}
19161
						});
19162
						break
19163
					case "amount":
19164
						cols.push({
19165
							xtype: 'numbercolumn',
19166
							text: rec.HeaderTitle,
19167
							align: 'right',
19168
							dataIndex: rec.FieldName,
19169
							isSummary: isSum,
19170
							hidden: Hidden_,
19171
							filter: {
19172
								itemDefaults: {
19173
									emptyText: 'Search for...'
19174
								}
19175
							},
19176
							autoSizeColumn: false,
19177
							width: 140,
19178
							editor: {
19179
								allowBlank: null_,
19180
								xtype: 'textfield',
19181
								readOnly: ReadOnly_,
19182
								id: tableName + rec.FieldName,
19183
								nameTable: rec.TableName,
19184
								fieldGrid: rec.FieldName,
19185
								fieldStyle: 'text-align:right;',
19186
								vtype: 'validateMinovaNumber',
19187
								value: '0',
19188
								listeners: {
19189
									change: function (val, recs) {
19190
										var fvalue = val.getValue();
19191
										var custumFunc = rec.SelectFunction;
19192
										if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19193
											Ext.Ajax.request({
19194
												async: false,
19195
												method: 'POST',
19196
												url: '/UserControl/GetStore',
19197
												params: {
19198
													tableName: 'PCMFUNC',
19199
													param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19200
												},
19201
												success: function (response) {
19202
													var results = Ext.decode(response.responseText);
19203
													var dt = results.data[0];
19204
													if (dt != undefined) {
19205
														custumFunc = dt.FunctionCode;
19206
													}
19207
												}
19208
											});
19209
										}
19210
										if (custumFunc) {
19211
											eval(custumFunc)
19212
										}
19213
									}
19214
								}
19215
							}
19216
						});
19217
						break
19218
					default:
19219
						if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
19220
							cols.push({
19221
								text: rec.HeaderTitle,
19222
								dataIndex: rec.FieldName,
19223
								width: 100,
19224
								isSummary: isSum,
19225
								filter: {
19226
									type: 'string',
19227
									itemDefaults: {
19228
										emptyText: 'Search for...'
19229
									}
19230
								}
19231
							});
19232
						} else if (rec.SearchType == '0') {
19233
							var valueField = null;
19234
							var displayValue = null;
19235
							var TableRef = undefined;
19236
							if (rec.TableRef != '') {
19237
								TableRef = rec.TableRef;
19238
								Ext.Ajax.request({
19239
									async: false,
19240
									method: 'POST',
19241
									url: '/UserControl/GetStore',
19242
									params: {
19243
										tableName: 'SDATATABLEFIELD',
19244
										param: 'TableName[equal]' + rec.TableRef
19245
									},
19246
									success: function (response) {
19247
										var results = Ext.decode(response.responseText);
19248
										data_ = results.data;
19249
										if (data_ != undefined) {
19250
											valueField_ = $.grep(data_, function (r) {
19251
													return r.ValueField == '1'
19252
												});
19253
											valueField = valueField_[0].FieldName
19254
												displayValue_ = $.grep(data_, function (r) {
19255
													return r.DisplayValue == '1'
19256
												});
19257
											displayValue = displayValue_[0].FieldName
19258
										}
19259
									}
19260
								});
19261
							}
19262
							Ext.create('Ext.data.Store', {
19263
								storeId: 'store_' + me.tableName + rec.FieldName,
19264
								autoLoad: true,
19265
								proxy: {
19266
									method: 'POST',
19267
									type: 'ajax',
19268
									url: '/UserControl/GetStoreAuth',
19269
									extraParams: {
19270
										tableName: TableRef,
19271
										param: rec.ParamCombo,
19272
										menuId: MinovaUtil.GetMenuID()
19273
									},
19274
									reader: {
19275
										type: 'json',
19276
										root: 'data',
19277
										totalProperty: 'data[0].TotalCount'
19278
									}
19279
								}
19280
							});
19281
							cols.push({
19282
								xtype: 'minovacombocolumn',
19283
								hidden: Hidden_,
19284
								text: rec.HeaderTitle,
19285
								dataIndex: rec.FieldName,
19286
								valueField: valueField,
19287
								displayField: displayValue,
19288
								store: 'store_' + me.tableName + rec.FieldName,
19289
								isSummary: isSum,
19290
								autoSizeColumn: true,
19291
								width: 200,
19292
								minWidth: 150,
19293
								editor: {
19294
									allowBlank: null_,
19295
									xtype: 'minovacombobox',
19296
									readOnly: ReadOnly_,
19297
									id: tableName + rec.FieldName,
19298
									valueField: valueField,
19299
									displayField: displayValue,
19300
									store: 'store_' + me.tableName + rec.FieldName,
19301
									forceSelection: false,
19302
									lazyRender: true,
19303
									listeners: {
19304
										change: function (val) {
19305
											var fvalue = val.getValue();
19306
											var custumFunc = rec.SelectFunction;
19307
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19308
												Ext.Ajax.request({
19309
													async: false,
19310
													method: 'POST',
19311
													url: '/UserControl/GetStore',
19312
													params: {
19313
														tableName: 'PCMFUNC',
19314
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19315
													},
19316
													success: function (response) {
19317
														var results = Ext.decode(response.responseText);
19318
														var dt = results.data[0];
19319
														if (dt != undefined) {
19320
															custumFunc = dt.FunctionCode;
19321
														}
19322
													}
19323
												});
19324
											}
19325
											if (custumFunc) {
19326
												eval(custumFunc)
19327
											}
19328
										}
19329
									}
19330
								},
19331
								filter: {
19332
									type: 'list',
19333
									itemDefaults: {
19334
										emptyText: 'Search for...'
19335
									}
19336
								}
19337
							});
19338
						} else if (rec.SearchType == '5') {
19339
							var valueField = null;
19340
							var displayValue = null;
19341
							var AdditionaldisplayValue = null;
19342
							var TableRef = undefined;
19343
							if (rec.TableRef != '') {
19344
								TableRef = rec.TableRef;
19345
								Ext.Ajax.request({
19346
									async: false,
19347
									method: 'POST',
19348
									url: '/UserControl/GetStore',
19349
									params: {
19350
										tableName: 'SDATATABLEFIELD',
19351
										param: 'TableName[equal]' + rec.TableRef
19352
									},
19353
									success: function (response) {
19354
										var results = Ext.decode(response.responseText);
19355
										data_ = results.data;
19356
										if (data_ != undefined) {
19357
											valueField_ = $.grep(data_, function (r) {
19358
													return r.ValueField == '1'
19359
												});
19360
											if (valueField_.length > 0) {
19361
												valueField = valueField_[0].FieldName
19362
											}
19363

    
19364
											displayValue_ = $.grep(data_, function (r) {
19365
													return r.DisplayValue == '1' || r.DisplayValue == '2'
19366
												});
19367
											if (displayValue_.length > 0) {
19368
												displayValue = displayValue_[0].FieldName;
19369
											}
19370
											if (displayValue_.length >= 2) {
19371
												AdditionaldisplayValue = displayValue_[1].FieldName
19372
											}
19373
										}
19374
									}
19375
								});
19376
							}
19377
							Ext.create('Ext.data.Store', {
19378
								storeId: 'store_' + me.tableName + rec.FieldName,
19379
								autoLoad: true,
19380
								proxy: {
19381
									method: 'POST',
19382
									type: 'ajax',
19383
									url: '/UserControl/GetStoreAuth',
19384
									extraParams: {
19385
										tableName: TableRef,
19386
										param: rec.ParamCombo,
19387
										menuId: MinovaUtil.GetMenuID()
19388
									},
19389
									reader: {
19390
										type: 'json',
19391
										root: 'data',
19392
										totalProperty: 'data[0].TotalCount'
19393
									}
19394
								}
19395
							});
19396
							cols.push({
19397
								xtype: 'minovacombocolumn',
19398
								hidden: Hidden_,
19399
								text: rec.HeaderTitle,
19400
								dataIndex: rec.FieldName,
19401
								valueField: valueField,
19402
								displayField: displayValue,
19403
								store: 'store_' + me.tableName + rec.FieldName,
19404
								tpl: Ext.create('Ext.XTemplate',
19405
									'<ul class="x-list-plain"><tpl for=".">',
19406
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19407
									'</tpl></ul>'),
19408
								displayTpl: Ext.create('Ext.XTemplate',
19409
									'<tpl for=".">',
19410
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19411
									'</tpl>'),
19412
								editor: {
19413
									allowBlank: null_,
19414
									xtype: 'combobox',
19415
									readOnly: ReadOnly_,
19416
									id: rec.TableName + rec.FieldName,
19417
									nameTable: rec.TableName,
19418
									fieldGrid: rec.FieldName,
19419
									valueField: valueField,
19420
									displayField: displayValue,
19421
									store: 'store_' + me.tableName + rec.FieldName,
19422
									value: rec.DefaultValue,
19423
									tpl: Ext.create('Ext.XTemplate',
19424
										'<ul class="x-list-plain"><tpl for=".">',
19425
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19426
										'</tpl></ul>'),
19427
									displayTpl: Ext.create('Ext.XTemplate',
19428
										'<tpl for=".">',
19429
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19430
										'</tpl>'),
19431
										listeners: {
19432
										change: function (val) {
19433
											var fvalue = val.getValue();
19434
											var custumFunc = rec.SelectFunction;
19435
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19436
												Ext.Ajax.request({
19437
													async: false,
19438
													method: 'POST',
19439
													url: '/UserControl/GetStore',
19440
													params: {
19441
														tableName: 'PCMFUNC',
19442
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19443
													},
19444
													success: function (response) {
19445
														var results = Ext.decode(response.responseText);
19446
														var dt = results.data[0];
19447
														if (dt != undefined) {
19448
															custumFunc = dt.FunctionCode;
19449
														}
19450
													}
19451
												});
19452
											}
19453
											if (custumFunc) {
19454
												eval(custumFunc)
19455
											}
19456
										}
19457
									}
19458

    
19459
								},
19460
								renderer: function (value) {
19461
									var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
19462
									console.log(store);
19463
									var index = store.find(valueField, value);
19464
									var val = "";
19465
									if (index != -1) {
19466
										var rc = store.getAt(index);
19467
										val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
19468
									} else {
19469
										val = value;
19470
									}
19471
									return val;
19472
								},
19473
								filter: {
19474
									type: 'list',
19475
									itemDefaults: {
19476
										emptyText: 'Search for...'
19477
									}
19478
								},
19479
								tpl: Ext.create('Ext.XTemplate',
19480
									'<ul class="x-list-plain"><tpl for=".">',
19481
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19482
									'</tpl></ul>'),
19483
								displayTpl: Ext.create('Ext.XTemplate',
19484
									'<tpl for=".">',
19485
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19486
									'</tpl>')
19487
							});
19488
						} else if (rec.SearchType == '2') {
19489
							var triger = (rec.TriggerCombo).split('$');
19490
							var targetField_ = triger[0];
19491
							var fieldValue_ = triger[1];
19492
							cols.push({
19493
								text: rec.HeaderTitle,
19494
								hidden: Hidden_,
19495
								dataIndex: rec.FieldName,
19496
								isSummary: isSum,
19497
								filter: {
19498
									itemDefaults: {
19499
										emptyText: 'Search for...'
19500
									}
19501
								},
19502
								autoSizeColumn: true,
19503
								width: 200,
19504
								editor: {
19505
									allowBlank: null_,
19506
									xtype: 'minovalookupgrid',
19507
									readOnly: ReadOnly_,
19508
									isGrid: true,
19509
									fieldTarget: targetField_,
19510
									fieldValue: fieldValue_,
19511
									isGrid: true,
19512
									id: tableName + rec.FieldName,
19513
									tableName: rec.TableRef,
19514
									triggerCls: 'x-form-search-trigger',
19515
									vtype: 'alphanum',
19516
									listeners: {
19517
										change: function (val) {
19518
											var custumFunc = rec.SelectFunction;
19519
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19520
												Ext.Ajax.request({
19521
													async: false,
19522
													method: 'POST',
19523
													url: '/UserControl/GetStore',
19524
													params: {
19525
														tableName: 'PCMFUNC',
19526
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19527
													},
19528
													success: function (response) {
19529
														var results = Ext.decode(response.responseText);
19530
														var dt = results.data[0];
19531
														if (dt != undefined) {
19532
															custumFunc = dt.FunctionCode;
19533
														}
19534
													}
19535
												});
19536
											}
19537
											if (custumFunc) {
19538
												eval(custumFunc)
19539
											}
19540
										}
19541
									}
19542
								}
19543
							});
19544
						} else if (rec.SearchType == '3') {
19545
							cols.push({
19546
								text: rec.HeaderTitle,
19547
								hidden: Hidden_,
19548
								dataIndex: rec.FieldName,
19549
								isSummary: isSum,
19550
								filter: {
19551
									itemDefaults: {
19552
										emptyText: 'Search for...'
19553
									}
19554
								},
19555
								autoSizeColumn: true,
19556
								width: 200,
19557
								editor: {
19558
									allowBlank: null_,
19559
									xtype: 'MinovaLookupTree',
19560
									readOnly: ReadOnly_,
19561
									id: tableName + rec.FieldName,
19562
									tableName: rec.TableRef,
19563
									triggerCls: 'x-form-search-trigger',
19564
									vtype: 'alphanum',
19565
									treeSructure: rec.SearchFunction,
19566
									objClassValue: rec.ParamCombo,
19567
									listeners: {
19568
										change: function (val) {
19569
											var custumFunc = rec.SelectFunction;
19570
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19571
												Ext.Ajax.request({
19572
													async: false,
19573
													method: 'POST',
19574
													url: '/UserControl/GetStore',
19575
													params: {
19576
														tableName: 'PCMFUNC',
19577
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19578
													},
19579
													success: function (response) {
19580
														var results = Ext.decode(response.responseText);
19581
														var dt = results.data[0];
19582
														if (dt != undefined) {
19583
															custumFunc = dt.FunctionCode;
19584
														}
19585
													}
19586
												});
19587
											}
19588
											if (custumFunc) {
19589
												eval(custumFunc)
19590
											}
19591
										}
19592
									}
19593
								}
19594
							});
19595
						} else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
19596
							var triger = (rec.TriggerCombo).split('&');
19597
							var targetField_ = triger[0];
19598
							var fieldValue_ = triger[0];
19599
							cols.push({
19600
								text: rec.HeaderTitle,
19601
								hidden: Hidden_,
19602
								dataIndex: rec.FieldName,
19603
								isSummary: isSum,
19604
								filter: {
19605
									itemDefaults: {
19606
										emptyText: 'Search for...'
19607
									}
19608
								},
19609
								autoSizeColumn: true,
19610
								width: 200,
19611
								editor: {
19612
									allowBlank: null_,
19613
									xtype: 'lookupemployee',
19614
									readOnly: ReadOnly_,
19615
									isGrid: true,
19616
									fieldTarget: targetField_,
19617
									fieldValue: fieldValue_,
19618
									isGrid: true,
19619
									id: tableName + rec.FieldName,
19620
									tableName: rec.TableRef,
19621
									triggerCls: 'x-form-search-trigger',
19622
									vtype: 'alphanum',
19623
									listeners: {
19624
										change: function (val) {
19625
											var custumFunc = rec.SelectFunction;
19626
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19627
												Ext.Ajax.request({
19628
													async: false,
19629
													method: 'POST',
19630
													url: '/UserControl/GetStore',
19631
													params: {
19632
														tableName: 'PCMFUNC',
19633
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19634
													},
19635
													success: function (response) {
19636
														var results = Ext.decode(response.responseText);
19637
														var dt = results.data[0];
19638
														if (dt != undefined) {
19639
															custumFunc = dt.FunctionCode;
19640
														}
19641
													}
19642
												});
19643
											}
19644
											if (custumFunc) {
19645
												eval(custumFunc)
19646
											}
19647
										}
19648
									}
19649
								}
19650
							});
19651
						} else if (rec.SearchType == '4' && isLookup != true) {
19652
							cols.push({
19653
								text: rec.HeaderTitle,
19654
								hidden: Hidden_,
19655
								dataIndex: rec.FieldName,
19656
								isSummary: isSum,
19657
								filter: {
19658
									itemDefaults: {
19659
										emptyText: 'Search for...'
19660
									}
19661
								},
19662
								autoSizeColumn: true,
19663
								width: 200,
19664
								editor: {
19665
									allowBlank: null_,
19666
									xtype: 'lookupemployee',
19667
									readOnly: ReadOnly_,
19668
									isGrid: true,
19669
									fieldTarget: targetField_,
19670
									fieldValue: fieldValue_,
19671
									isGrid: true,
19672
									id: tableName + rec.FieldName,
19673
									tableName: rec.TableRef,
19674
									triggerCls: 'x-form-search-trigger',
19675
									vtype: 'alphanum',
19676
									listeners: {
19677
										change: function (val) {
19678
											var custumFunc = rec.SelectFunction;
19679
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19680
												Ext.Ajax.request({
19681
													async: false,
19682
													method: 'POST',
19683
													url: '/UserControl/GetStore',
19684
													params: {
19685
														tableName: 'PCMFUNC',
19686
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19687
													},
19688
													success: function (response) {
19689
														var results = Ext.decode(response.responseText);
19690
														var dt = results.data[0];
19691
														if (dt != undefined) {
19692
															custumFunc = dt.FunctionCode;
19693
														}
19694
													}
19695
												});
19696
											}
19697
											if (custumFunc) {
19698
												eval(custumFunc)
19699
											}
19700
										}
19701
									}
19702
								}
19703
							});
19704
						} else if (rec.FixedValue != '') {
19705
							cols.push({
19706
								text: rec.HeaderTitle,
19707
								hidden: Hidden_,
19708
								dataIndex: rec.FieldName,
19709
								isSummary: isSum,
19710
								filter: {
19711
									itemDefaults: {
19712
										emptyText: 'Search for...'
19713
									}
19714
								},
19715
								autoSizeColumn: true,
19716
								width: 200,
19717
								editor: {
19718
									allowBlank: null_,
19719
									xtype: 'minovafixvalue',
19720
									readOnly: ReadOnly_,
19721
									forceSelection: false,
19722
									id: tableName + rec.FieldName,
19723
									nameTable: tableName,
19724
									fieldGrid: rec.FieldName,
19725
									fixedValue: rec.FixedValue,
19726
									valueField: 'code',
19727
									displayField: 'desc',
19728
									value: defaultValue,
19729
									/*Add by Midi 12 Juni 2019*/
19730
									listeners: {
19731
										change: function (val) {
19732
											var custumFunc = rec.SelectFunction;
19733
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19734
												Ext.Ajax.request({
19735
													async: false,
19736
													method: 'POST',
19737
													url: '/UserControl/GetStore',
19738
													params: {
19739
														tableName: 'PCMFUNC',
19740
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19741
													},
19742
													success: function (response) {
19743
														var results = Ext.decode(response.responseText);
19744
														var dt = results.data[0];
19745
														if (dt != undefined) {
19746
															custumFunc = dt.FunctionCode;
19747
														}
19748
													}
19749
												});
19750
											}
19751
											if (custumFunc) {
19752
												eval(custumFunc)
19753
											}
19754
										}
19755
									}
19756
									//
19757
								},
19758
								renderer: function (value) {
19759
									var val = "";
19760
									var storeData = [];
19761
									var str = rec.FixedValue;
19762
									var hasil = str.split('||');
19763
									hasil.forEach(function (h) {
19764
										store_ = h.split('=')
19765
											storeData.push({
19766
												code: store_[0],
19767
												desc: store_[1]
19768
											});
19769
									});
19770
									var item = storeData.find(x => x.code == value);
19771
									if (item != undefined) {
19772
										val = item.desc;
19773
									}
19774
									return val;
19775
								}
19776
							});
19777
						} else if (rec.FieldDataType == 3) {
19778
							cols.push({
19779
								text: rec.HeaderTitle,
19780
								hidden: Hidden_,
19781
								dataIndex: rec.FieldName,
19782
								isSummary: isSum,
19783
								filter: {
19784
									itemDefaults: {
19785
										emptyText: 'Search for...'
19786
									}
19787
								},
19788
								autoSizeColumn: true,
19789
								width: 200,
19790
								editor: {
19791
									allowBlank: null_,
19792
									xtype: 'textfield',
19793
									readOnly: ReadOnly_,
19794
									id: tableName + rec.FieldName,
19795
									nameTable: rec.TableName,
19796
									fieldGrid: rec.FieldName,
19797
									vtype: 'validateDecimal',
19798
									maxLength: rec.Length,
19799
									precision: rec.Prec,
19800
									fieldStyle: 'text-align:right;',
19801
									value: defaultValue,
19802
									listeners: {
19803
										change: function (val) {
19804
											var custumFunc = rec.SelectFunction;
19805
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19806
												Ext.Ajax.request({
19807
													async: false,
19808
													method: 'POST',
19809
													url: '/UserControl/GetStore',
19810
													params: {
19811
														tableName: 'PCMFUNC',
19812
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19813
													},
19814
													success: function (response) {
19815
														var results = Ext.decode(response.responseText);
19816
														var dt = results.data[0];
19817
														if (dt != undefined) {
19818
															custumFunc = dt.FunctionCode;
19819
														}
19820
													}
19821
												});
19822
											}
19823
											if (custumFunc) {
19824
												eval(custumFunc)
19825
											}
19826
										}
19827
									}
19828
								}
19829
							});
19830
						} else {
19831
							cols.push({
19832
								text: rec.HeaderTitle,
19833
								hidden: Hidden_,
19834
								dataIndex: rec.FieldName,
19835
								isSummary: isSum,
19836
								filter: {
19837
									itemDefaults: {
19838
										emptyText: 'Search for...'
19839
									}
19840
								},
19841
								autoSizeColumn: true,
19842
								width: 200,
19843
								editor: {
19844
									allowBlank: null_,
19845
									xtype: 'textfield',
19846
									readOnly: ReadOnly_,
19847
									id: tableName + rec.FieldName,
19848
									value: defaultValue,
19849
									vtype: 'validateMinovaXss', //// Tri 20210906
19850
									listeners: {
19851
										change: function (val) {
19852
											var custumFunc = rec.SelectFunction;
19853
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19854
												Ext.Ajax.request({
19855
													async: false,
19856
													method: 'POST',
19857
													url: '/UserControl/GetStore',
19858
													params: {
19859
														tableName: 'PCMFUNC',
19860
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19861
													},
19862
													success: function (response) {
19863
														var results = Ext.decode(response.responseText);
19864
														var dt = results.data[0];
19865
														if (dt != undefined) {
19866
															custumFunc = dt.FunctionCode;
19867
														}
19868
													}
19869
												});
19870
											}
19871
											if (custumFunc) {
19872
												eval(custumFunc)
19873
											}
19874
										}
19875
									}
19876
								}
19877
							});
19878
						}
19879
						break
19880
					}
19881
				} else {
19882
					cols.push({
19883
						text: rec.HeaderTitle,
19884
						hidden: Hidden_,
19885
						dataIndex: rec.FieldName,
19886
						isSummary: isSum,
19887
						hidden: true,
19888
						editor: {
19889
							allowBlank: true,
19890
							xtype: 'textfield',
19891
							readOnly: ReadOnly_,
19892
							id: tableName + rec.FieldName,
19893
							value: defaultValue,
19894
							vtype: 'validateMinovaXss' //// Tri 20210906
19895
						},
19896
						filter: {
19897
							itemDefaults: {
19898
								emptyText: 'Search for...'
19899
							}
19900
						}
19901
					});
19902
				}
19903
			});
19904
		};
19905
		addData = addData + "})";
19906
		Ext.applyIf(me, {
19907
			items: [{
19908
					xtype: 'grid',
19909
					autoScroll: true,
19910
					id: gridName,
19911
					name: gridName,
19912
					height: height,
19913
					store: Ext.create('Ext.data.Store', {
19914
						storeId: storeID,
19915
						fields: fieldStore,
19916
						proxy: {
19917
							method: 'POST',
19918
							type: 'ajax',
19919
							url: '',
19920
							reader: {
19921
								type: 'json',
19922
								root: 'data'
19923
							}
19924
						}
19925
					}),
19926
					dockedItems: [{
19927
							xtype: 'toolbar',
19928
							items: [{
19929
									text: 'Add',
19930
									hidden: hide_,
19931
									name: 'add' + tableName,
19932
									iconCls: 'fa-plus-circle',
19933
									style: 'font-family: FontAwesome',
19934
									handler: function () {
19935
										var store = Ext.StoreMgr.lookup(storeID);
19936
										var data = eval(addData);
19937
										if (me.transType == "FIN") {
19938
											var fp = Ext.ComponentQuery.query("[name=FiscalPeriod]")[0].getValue();
19939
											var fy = Ext.ComponentQuery.query("[name=FiscalYear]")[0].getValue();
19940
											var cp = Ext.ComponentQuery.query("[name=CompanyID]")[0].getValue();
19941
											var bu = Ext.ComponentQuery.query("[name=BusinessUnit]")[0].getValue();
19942
											var cc = Ext.ComponentQuery.query("[name=CostCenter]")[0].getValue();
19943
											// var desc = Ext.ComponentQuery.query("[name=Description]")[0].getValue();
19944
											data["FiscalPeriod"] = fp;
19945
											data["FiscalYear"] = fy;
19946
											data["CompanyID"] = cp;
19947
											data["BusinessUnit"] = bu;
19948
											// data["CostCenter"] = cc;
19949
											// data["Description"] = desc;
19950
										}
19951
										/*idx = store.getCount();
19952
										store.insert(idx, data);*/
19953
										
19954
										idx = store.getCount();
19955
										if(parseFloat(idx) <= 39) //// Tri 20210907
19956
										{
19957
											if(store.getCount() > 0) //// Tri nwh 20211111
19958
											{	console.log('siwan'); 
19959
												var IsCostCenter = '';
19960
												var grid = Ext.getCmp(gridName);
19961
												var selection = grid.getView().getSelectionModel().getSelection()[0];
19962
												if( selection != undefined)   //// add by Tri nwh 20211124
19963
												{
19964
													var GLAccountID = selection.data.GLAccountID;
19965
													var CostCenter = selection.data.CostCenter;
19966
													MinovaUtil.ExecuteParamQuery({
19967
														ID: 'FINANCEITEMISCOSTCENTER',
19968
														GlAccountID: GLAccountID
19969
													}, function (s) {
19970
														var result = Ext.decode(s.responseText);
19971
														var dt = Ext.decode(Ext.decode(result.data));
19972
														IsCostCenter = dt[0].CostCenter;
19973
													});
19974
												}
19975
												
19976
												if(IsCostCenter == '1')
19977
												{	console.log('chani');
19978
													var panelHead = Ext.ComponentQuery.query('[name=MainHeaderDocument]')[0];
19979
													var formheader = panelHead.getForm();
19980
													console.log(formheader.findField("DocStatus").getValue());
19981
													if(formheader.findField("DocStatus").getValue() == '9')
19982
													{
19983
														if(CostCenter == '' || CostCenter.isnull == true)
19984
														{	console.log('1');
19985
															alert('please fill field cost center'); 
19986
														}
19987
														else
19988
														{	console.log('2');
19989
															store.insert(idx, data);
19990
														}
19991
													}
19992
													else
19993
													{	console.log('3');
19994
														store.insert(idx, data);
19995
													}
19996
												}
19997
												else
19998
												{	console.log('4');
19999
													store.insert(idx, data);
20000
												}
20001
											}
20002
											else
20003
											{	console.log('5');
20004
												store.insert(idx, data);
20005
											}
20006
											//alert('nwh');
20007
											
20008
										}
20009
										else if (parseFloat(idx) > 39)
20010
										{
20011
											var tb = Ext.ComponentQuery.query('[name=panelTab]')[0];
20012
											var activeTab = tb.activeTab;
20013
											var tbl = activeTab.tbl;
20014
											var btnadd = Ext.ComponentQuery.query('[name=add' + tbl + ']')[0].setDisabled(true);
20015
											//alert('Can not insert data, because row data has reached the maximum');
20016
											alert('Anda sudah melebihi batas maksimal penginputan');
20017
										}
20018
									}
20019
	
20020
								}, {
20021
									text: 'Delete',
20022
									hidden: hide_,
20023
									name: 'delete' + tableName,
20024
									iconCls: 'fa-trash-o',
20025
									style: 'font-family: FontAwesome',
20026
									handler: function () {
20027
										var me = this,
20028
										store = Ext.StoreMgr.lookup(storeID)
20029
											var grid = Ext.getCmp(gridName);
20030
										Ext.MessageBox.show({
20031
											title: 'Remove tab',
20032
											msg: "This will remove. Do you want to continue?",
20033
											buttons: Ext.MessageBox.YESNO,
20034
											fn: function (choice) {
20035
												if (choice === 'yes') {
20036
													var selection = grid.getView().getSelectionModel().getSelection()[0];
20037
													if (selection) {
20038
														store.remove(selection);
20039
														var amountdebet = selection.data.AmountDebetCompCurr;  ////// add by tri yooma
20040
														var amountcredit = selection.data.AmountCreditCompCurr;
20041
														var totdebetexist = Ext.ComponentQuery.query('[name=TotalDebet]')[0].getValue().toString();
20042
														var totdebet =  parseFloat(totdebetexist.toString().replace(',', '')) - parseFloat(amountdebet);
20043
														var totcredit = parseFloat(Ext.ComponentQuery.query('[name=TotalCredit]')[0].getValue().toString().replace(',', '')) - amountcredit;
20044
														Ext.ComponentQuery.query('[name=TotalDebet]')[0].setValue(totdebet);
20045
														Ext.ComponentQuery.query('[name=AmountDebet]')[0].setValue(Ext.util.Format.number(totdebet, '0,000.00'));	
20046
														Ext.ComponentQuery.query('[name=TotalCredit]')[0].setValue(totcredit);
20047
														Ext.ComponentQuery.query('[name=AmountCredit]')[0].setValue(Ext.util.Format.number(totcredit, '0,000.00'));
20048
														//alert('nwh');
20049
													}
20050
												}
20051
											}
20052
										});
20053
									}
20054
								}, {
20055
									xtype: 'filefield',
20056
									buttonOnly: true,
20057
									buttonConfig: {
20058
										width: 160,
20059
										text: 'Upload',
20060
										ui: 'default-toolbar',
20061
										iconCls: 'icon-arrow-up',
20062
										style: 'font-family: FontAwesome',
20063
										hidden: hideUploadDownload,
20064
										name: 'upload' + tableName,
20065
										html: "<input id='inputFile' type='file' name='uploaded'/>",
20066
									},
20067
									listeners: {
20068
										change: function (f, value) {
20069
											var store = Ext.StoreMgr.lookup(storeID);
20070
											var newValue = '';
20071
											var afterDot = '';
20072
											var files = event.target.files;
20073
											var fileName = files[0].name;
20074
											var fileType = fileName.substr(fileName.indexOf('.'));
20075
											if (!files || files.length == 0) {
20076
												MinovaMessageError("File Error", "FILOFILE", "");
20077
											} else {
20078
												if (fileType == '.xls' || fileType == '.xlsx') {
20079
													var reader = new FileReader();
20080

    
20081
													//For Browsers other than IE.
20082
													if (reader.readAsBinaryString) {
20083
														reader.onload = function (e) {
20084
															var data = e.target.result;
20085
															//Read the Excel File data.
20086
															var workbook = XLSX.read(data, {
20087
																	type: 'binary'
20088
																});
20089
															//Fetch the name of First Sheet.
20090
															var firstSheet = workbook.SheetNames[0];
20091

    
20092
															//Read all rows from First Sheet into an JSON array.
20093
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
20094
															var data = eval(excelRows);
20095
															var dataLength = data.length;
20096
															idx = store.getCount();
20097
															var seq = idx + 1;
20098
															var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
20099
															for (var i = 0; i < dataLength; i++) {
20100
																data[i]["DocNo"] = dn;
20101
																data[i]["DocItemID"] = seq;
20102
																if (me.transType == "MTR" || me.transType == "PUR") {
20103
																	data[i].ARAPID = "";
20104
																	data[i].DocItemRef = "";
20105
																}
20106
																if (me.transType == "MTR") {
20107
																	data[i].Storage = "";
20108
																}
20109
																seq = seq + 1;
20110
															}
20111

    
20112
															var fields = store.model.getFields();
20113
															var gridFields = []
20114
															for (var i = 0; i < fields.length; i++) {
20115
																gridFields.push(fields[i].name);
20116
															}
20117

    
20118
															var index = [];
20119
															// build the index
20120
															for (var x in excelRows[0]) {
20121
																index.push(x);
20122
															}
20123
															var excelFields = []
20124
															for (var i = 0; i < index.length; i++) {
20125
																excelFields.push(index[i]);
20126
															}
20127

    
20128
															var template = [];
20129
															for (var i = 0; i < excelFields.length; i++) {
20130
																for (var j = 0; j < gridFields.length; j++) {
20131
																	if (excelFields[i] === gridFields[j]) {
20132
																		template.push(excelFields[i]);
20133
																	}
20134
																}
20135
															}
20136
															if (excelFields.length === template.length) {
20137
																store.insert(idx, data);
20138
															} else {
20139
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
20140
															}
20141
														};
20142
														reader.readAsBinaryString(files[0]);
20143

    
20144
													} else {
20145
														MinovaMessageError("FileReader Error", "FILOFILEREADER", "");
20146
													}
20147
												} else {
20148
													MinovaMessageError("File Type Error", "FILOUPLOAD", "");
20149
												}
20150
											}
20151
										}
20152
									}
20153
								}, {
20154
									text: 'Download',
20155
									hidden: hideUploadDownload,
20156
									name: 'download' + tableName,
20157
									iconCls: 'icon-arrow-down',
20158
									style: 'font-family: FontAwesome',
20159
									handler: function (b, e) {
20160
										b.up('grid').downloadExcelXml();
20161
									}
20162
								}
20163
							]
20164
						}
20165
					],
20166
					columns: cols,
20167
					selType: 'cellmodel',
20168
					plugins: [
20169
						Ext.create('Ext.grid.plugin.CellEditing', {
20170
							clicksToEdit: 1
20171
						})
20172
					],
20173
					//Add For Auto Size Coloum Mode - Nana
20174
					viewConfig: {
20175
						emptyText: 'No Data Display',
20176
						deferEmptyText: false,
20177
						listeners: {
20178
							refresh: function (dataview) {
20179
								Ext.each(dataview.panel.columns, function (column) {
20180
									if (column.autoSizeColumn == true)
20181
									column.autoSize();
20182
								})
20183
							}
20184
						}
20185
					},
20186
					listeners: {
20187
						'edit': function (editor, e, eOpts) {
20188
							/*Update By Midi 13 Juni 2019*/
20189
							var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
20190
							var sumForm = sumPanel.getForm();
20191
							var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
20192
							var sumFields = sumForm.getFields();
20193
							for (var i = 0; i < sumFields.length; i++) {
20194
								var fField = sumFields.items[i].name;
20195
								var fldValue = 0;
20196
								Ext.each(grid.store.getRange(), function (r) {
20197
									var fValue = r.data[fField];
20198
									fldValue = fldValue + parseFloat(fValue);
20199
								});
20200
								
20201
								fldValue = Ext.util.Format.number(fldValue, '0,000.00');
20202
								sumForm.findField(fField).setValue(fldValue);
20203
								if (fField.toLowerCase().includes("cred")) {
20204
                                    if (Ext.ComponentQuery.query('[name=TotalCredit]')[0] != undefined) {
20205
                                        Ext.ComponentQuery.query('[name=TotalCredit]')[0].setValue(fldValue);
20206
                                    }
20207
                                }
20208
                                if (fField.toLowerCase().includes("deb")) {
20209
                                    if (Ext.ComponentQuery.query('[name=TotalDebet]')[0] != undefined) {
20210
                                        Ext.ComponentQuery.query('[name=TotalDebet]')[0].setValue(fldValue);
20211
                                    }
20212
                                }
20213
							}							
20214
							// var grid = Ext.ComponentQuery.query('[name=' + gridName + ']')[0];
20215
							// var fField = e.field;
20216
							// if (e.column.isSummary == '1') {
20217
								// var fldValue = 0;
20218
								// Ext.each(grid.store.getRange(), function (r) {
20219
									// var fValue = r.data[fField];
20220
									// fldValue = fldValue + parseFloat(fValue);
20221
								// });
20222
								// var sumPanel = Ext.ComponentQuery.query('[name=SUM' + tableName + ']')[0];
20223
								// var sumForm = sumPanel.getForm();
20224
								// fldValue = Ext.util.Format.number(fldValue, '0,000.00');
20225
								// sumForm.findField(fField).setValue(fldValue);
20226
							// }
20227
						}
20228
						// ,
20229
						/*Add By Midi For Store Combobox With Param In Grid */
20230
						// 'beforeedit': function (editor, e, eOpts) {
20231
							// if (e.colIdx == 1 && tableName == 'PTRPURCHITEM') {
20232
								// var store = Ext.StoreMgr.lookup('store_' + tableName + 'Material');
20233
								// var itemType = e.record.get('ItemType');
20234
								// store.clearFilter();
20235
								// store.filter('MaterialType', itemType);
20236
							// }
20237
							// // if (e.colIdx == 1 && tableName == 'PTRFINANCEITEM') {
20238
								// // var store = Ext.StoreMgr.lookup('store_' + tableName + 'GLAccountID');
20239
								// // var itemType = e.record.get('CompanyID');
20240
								// // store.clearFilter();
20241
								// // store.filter('CompanyID', itemType);
20242
							// // }
20243
						// }
20244
					}
20245
				}
20246
			]
20247
		});
20248
		me.callParent(arguments);
20249
	}
20250
});
20251
Ext.define('MinovaUtil.MinovaES.LookupDoc', {
20252
	extend : 'Ext.window.Window',
20253
	alias : 'widget.lookupdocument',
20254
	requires : [],
20255
	height : '87%',
20256
	width : '41%',
20257
	minWidth : '50%',
20258
	maxWidth : '100%',
20259
	bodyPadding : 0,
20260
	formname : undefined,
20261
	name : 'LookupDocumentTrans',
20262
	test : undefined,
20263
	vtype : 'validateMinovaXss',
20264
	targetField : undefined,
20265
	valueField : undefined,
20266
	tableName : undefined,
20267
	LookupFunction : undefined,
20268
	isGrid : undefined,
20269
	listeners : {
20270
		afterrender : function (f) {
20271
			f.setTitle('Lookup - Document');
20272
		}
20273
	},
20274
	initComponent : function () {
20275
		var me = this;
20276
		var targetField_ = me.targetField;
20277
		var valueField_ = me.valueField;
20278
		var form = me.test;
20279
		var tableName_ = me.tableName;
20280
		var isGrid = me.isGrid_;
20281
		var LookupFunction = me.LookupFunction;
20282
		param_ = null;
20283
		var filterParam_ = me.filterParam;
20284
		var fieldLabel_ = 'Document No';
20285
		Ext.applyIf(me, {
20286
			items : [{
20287
					items : [{
20288
							xtype : 'tabpanel',
20289
							items : [{
20290
									xtype : 'form',
20291
									title : 'Quick Search',
20292
									height : '70%',
20293
									items : [{
20294
											xtype : 'form',
20295
											name : 'frmSearch',
20296
											width : '100%',
20297
											height : 'auto',
20298
											dockedItems : [{
20299
													xtype : 'toolbar',
20300
													dock : 'top',
20301
													layout : 'vbox',
20302
													bodyPadding : 10,
20303
													border : 0,
20304
													items : [{
20305
															xtype : 'fieldset',
20306
															layout : 'hbox',
20307
															width : '100%',
20308
															border : 0,
20309
															padding : 0,
20310
															items : [{
20311
																	xtype : 'textfield',
20312
																	name : 'DocSearch',
20313
																	fieldLabel : fieldLabel_,
20314
																	width : 470,
20315
																	labelWidth : 185,
20316
																	enableKeyEvents : true,
20317
																	filterParam : filterParam_,
20318
																	listeners : {
20319
																		specialkey : function (f, e) {
20320
																			if (e.getKey() == e.ENTER) {
20321
																				var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
20322
																				var docNo = doc.getValue();
20323
																				var store = Ext.data.StoreManager.lookup('storeQC');
20324
																				param_ = 'DocNo[like]' + docNo
20325
																					if (this.filterParam) {
20326
																						param_ = param_ + ',' + this.filterParam_
20327
																					}
20328
																					store.proxy.extraParams = {
20329
																					tableName : tableName_,
20330
																					param : param_,
20331
																					menuId : MinovaUtil.GetMenuID()
20332
																				};
20333
																				store.removeAll();
20334
																				store.reload();
20335
																				store.loadPage(1);
20336
																			}
20337
																		}
20338
																	}
20339
																}, {
20340
																	xtype : 'tbspacer',
20341
																	width : 5
20342
																}, {
20343
																	xtype : 'button',
20344
																	name : 'Search',
20345
																	text : 'Search',
20346
																	filterParam : filterParam_,
20347
																	handler : function () {
20348
																		var doc = Ext.ComponentQuery.query('[name=DocSearch]')[0];
20349
																		var docNo = doc.getValue();
20350
																		var store = Ext.data.StoreManager.lookup('storeQC');
20351
																		param_ = 'DocNo[like]' + docNo
20352
																			if (this.filterParam) {
20353
																				param_ = param_ + ',' + this.filterParam
20354
																			}
20355
																			store.proxy.extraParams = {
20356
																			tableName : tableName_,
20357
																			param : param_,
20358
																			menuId : MinovaUtil.GetMenuID()
20359
																		};
20360
																		store.removeAll();
20361
																		store.reload();
20362
																		store.loadPage(1);
20363
																	}
20364
																}
20365
															]
20366
														}
20367
													]
20368
												}
20369
											]
20370
										}, {
20371
											items : [{
20372
													xtype : "minovagrid1",
20373
													name : "GridDocNo",
20374
													storename : 'storeQC',
20375
													tableName : tableName_,
20376
													param : this.filterParam,
20377
													isLookup : true,
20378
													pagesize : 25,
20379
													height : 398,
20380
													LookupFunction : LookupFunction,
20381
													valueField : valueField_,
20382
													targetField : targetField_,
20383
													isGrid : true,
20384
													listeners : {
20385
														beforeedit : function () {
20386
															return false;
20387
														},
20388
														itemdblclick : function () {
20389
															var grid = Ext.ComponentQuery.query('[name=GridDocNo]')[0];
20390
															var selection = grid.getView().getSelectionModel().getSelection()[0];
20391
															var documentno = selection.data.DocNo;
20392
															LookupFunction = this.LookupFunction;
20393
															eval(LookupFunction);
20394
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
20395
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
20396
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
20397
														}
20398
													},
20399
												}, {
20400
													xtype : 'pagingtoolbar',
20401
													store : 'storeQC',
20402
													dock : 'bottom',
20403
													displayInfo : true
20404
												}
20405
											]
20406
										}
20407
									]
20408
								}, {
20409
									title : 'Advance Search',
20410
									items : [{
20411
											xtype : 'form',
20412
											name : 'formlookup',
20413
											items : [{
20414
													xtype : 'minovaform',
20415
													name : 'frmlookup',
20416
													tableName : tableName_,
20417
													param : filterParam_,
20418
													isLookup : true,
20419
													buttons : [{
20420
															text : 'Search',
20421
															filterParam : filterParam_,
20422
															listeners : {
20423
																click : function () {
20424
																	var store = Ext.data.StoreManager.lookup('storeadvance');
20425
																	var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
20426
																	grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
20427
																	var values_ = form.getValues();
20428
																	var fields_ = form.getFields().items;
20429
																	var param_ = '';
20430
																	for (var i = 0; i < fields_.length; i++) {
20431
																		var val_ = form.getFields().items[i].getValue();
20432
																		var xtype_ = form.getFields().items[i].xtype;
20433
																		var oprator_ = '[like]';
20434
																		if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
20435
																			oprator_ = '[Equal]';
20436
																		}
20437
																		if (xtype_ == 'datefield') {
20438
																			if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
20439
																				oprator_ = '[LessThanEqual]';
20440
																			} else {
20441
																				oprator_ = '[GreaterThanEqual]';
20442
																			}
20443
																		}
20444
																		if (val_ != 'undefined' && val_ != "" && val_ != null) {
20445
																			param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
20446
																		}
20447
																	}
20448
																	if (this.filterParam_) {
20449
																		param_ = param_ + ',' + this.filterParam_
20450
																	}
20451
																	store.proxy.extraParams = {
20452
																		tableName : grid.tableName,
20453
																		param : param_,
20454
																		menuId : MinovaUtil.GetMenuID()
20455
																	};
20456
																	store.removeAll();
20457
																	store.reload();
20458
																	store.loadPage(1);
20459
																}
20460
															}
20461
														}
20462
													]
20463
												}, {
20464
													xtype : 'minovagrid1',
20465
													name : 'gridlookup',
20466
													minHeight : 312,
20467
													height : 290,
20468
													tableName : tableName_,
20469
													param : this.filterParam,
20470
													isLookup : true,
20471
													storename : 'storeadvance',
20472
													pagesize : 25,
20473
													valueField : valueField_,
20474
													targetField : targetField_,
20475
													hidebutton : 0,
20476
													isGrid : true,
20477
													listeners : {
20478
														beforeedit : function () {
20479
															return false;
20480
														},
20481
														itemdblclick : function () {
20482
															var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
20483
															var selection = grid.getView().getSelectionModel().getSelection()[0];
20484
															var documentno = selection.data.DocNo;
20485
															LookupFunction = this.LookupFunction;
20486
															eval(LookupFunction);
20487
															var target = Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].targetField;
20488
															Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(documentno);
20489
															Ext.ComponentQuery.query('[name=LookupDocumentTrans]')[0].hide();
20490
														}
20491
													},
20492
													dockedItems : [{
20493
															xtype : 'pagingtoolbar',
20494
															store : 'storeadvance',
20495
															dock : 'bottom',
20496
															displayInfo : true
20497
														}
20498
													]
20499
												}
20500
											]
20501
										}
20502
									]
20503
								}
20504
							]
20505
						}
20506
					]
20507
				}
20508
			]
20509
		});
20510
		me.callParent(arguments);
20511
	}
20512
});
20513
Ext.define('MinovaUtil.MinovaES.MinovaSummaryDocForm', {
20514
	extend : 'Ext.form.Panel',
20515
	alias : ['widget.summarydocform'],
20516
	formname : this.name,
20517
	tableName : undefined,
20518
	docType : undefined,
20519
	transType : undefined,
20520
	resizable : true,
20521
	border : false,
20522
	autoScroll : true,
20523
	layout : 'column',
20524
	defaults : {
20525
		layout : 'form',
20526
		xtype : 'container',
20527
		defaultType : 'textfield',
20528
		style : 'width: 50%',
20529
	},
20530
	initComponent : function () {
20531
		var me = this;
20532
		var col1 = [];
20533
		var col2 = [];
20534
		var LangID = localStorage.LangId;
20535
		var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "',IsSummary=1";
20536
		var formname_ = me.name;
20537
		var nameTable_ = me.tableName;
20538
		Ext.Ajax.request({
20539
			async : false,
20540
			method : 'POST',
20541
			url : '/UserControl/GetStore',
20542
			params : {
20543
				tableName : 'PDSDOCFIELD',
20544
				param : parameter
20545
			},
20546
			success : function (response) {
20547
				var results = Ext.decode(response.responseText);
20548
				hasil = results.data;
20549
			}
20550
		});
20551
		if (hasil.length > 0) {
20552
			Ext.each(hasil, function (rec) {
20553
				var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, false, true, me.tableName, false);
20554
				var descField = undefined;
20555
				if (rec.ColumnNo == 1) {
20556
					col1.push(formfield);
20557
					if (descField) {
20558
						col1.push(descField)
20559
					}
20560
				} else {
20561
					col2.push(formfield);
20562
					if (descField) {
20563
						col2.push(descField)
20564
					}
20565
				}
20566
			});
20567
		}
20568
		Ext.applyIf(me, {
20569
			items : [{
20570
					style : 'width: 50%',
20571
					items : col1
20572
				}, {
20573
					style : 'width: 50%',
20574
					items : col2
20575
				}
20576
			]
20577
		});
20578
		this.callParent();
20579
	}
20580
});
20581
Ext.define('MinovaUtil.MinovaES.LookupDocRef', {
20582
	extend : 'Ext.window.Window',
20583
	alias : 'widget.lookupdocumentref',
20584
	requires : [],
20585
	height : '87%',
20586
	width : '41%',
20587
	minWidth : '50%',
20588
	maxWidth : '100%',
20589
	bodyPadding : 0,
20590
	formname : undefined,
20591
	name : 'LookupDocRef',
20592
	test : undefined,
20593
	vtype : 'validateMinovaXss',
20594
	targetField : undefined,
20595
	valueField : undefined,
20596
	tableName : 'PDSDOCREF',
20597
	transType : undefined,
20598
	docType : undefined,
20599
	LookupFunction : undefined,
20600
	datarecord : undefined,
20601
	isGrid : undefined,
20602
	filterParam : undefined,
20603
	listeners : {
20604
		afterrender : function (f) {
20605
			f.setTitle('Lookup - Document');
20606
		}
20607
	},
20608
	initComponent : function () {
20609
		var me = this;
20610
		var targetField_ = me.targetField;
20611
		var valueField_ = me.valueField;
20612
		var form = me.test;
20613
		var tableName_ = me.tableName;
20614
		var isGrid = me.isGrid_;
20615
		var LookupFunction = me.LookupFunction;
20616
		param_ = null;
20617
		var filterParam_ = me.filterParam;
20618
		var compselect = "";
20619
		var buselect = "";
20620
		Ext.applyIf(me, {
20621
			items : [{
20622
					xtype : 'form',
20623
					name : 'formlookup',
20624
					items : [{
20625
							xtype : 'minovaform',
20626
							name : 'frmlookup',
20627
							tableName : tableName_,
20628
							param : filterParam_,
20629
							isLookup : true,
20630
							buttons : [{
20631
									text : 'Search',
20632
									filterParam : filterParam_,
20633
									listeners : {
20634
										click : function () {
20635
											var store = Ext.data.StoreManager.lookup('storeadvance');
20636
											var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
20637
											grid = Ext.ComponentQuery.query('[name=gridlookupdocref]')[0];
20638
											var values_ = form.getValues();
20639
											var fields_ = form.getFields().items;
20640
											var param_ = '';
20641
											for (var i = 0; i < fields_.length; i++) {
20642
												var val_ = form.getFields().items[i].getValue();
20643
												var xtype_ = form.getFields().items[i].xtype;
20644
												var oprator_ = '[like]';
20645
												if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
20646
													oprator_ = '[Equal]';
20647
												}
20648
												if (xtype_ == 'datefield') {
20649
													if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
20650
														oprator_ = '[LessThanEqual]';
20651
													} else {
20652
														oprator_ = '[GreaterThanEqual]';
20653
													}
20654
												}
20655
												if (val_ != 'undefined' && val_ != "" && val_ != null) {
20656
													param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
20657
												}
20658
											}
20659
											if (filterParam_) {
20660
												param_ = param_ + ',' + filterParam_
20661
											}
20662
											store.proxy.extraParams = {
20663
												tableName : grid.tableName,
20664
												param : param_,
20665
												menuId : MinovaUtil.GetMenuID()
20666
											};
20667
											store.removeAll();
20668
											store.reload();
20669
											store.loadPage(1);
20670
										}
20671
									}
20672
								}
20673
							]
20674
						}, {
20675
							xtype : 'minovagrid1',
20676
							name : 'gridlookupdocref',
20677
							minHeight : 312,
20678
							height : 290,
20679
							tableName : tableName_,
20680
							param : this.filterParam,
20681
							isLookup : true,
20682
							storename : 'storeadvance',
20683
							pagesize : 25,
20684
							valueField : valueField_,
20685
							targetField : targetField_,
20686
							multiSelect : true,
20687
							hidebutton : 0,
20688
							isGrid : true,
20689
							listeners : {
20690
								beforeedit : function () {
20691
									return false;
20692
								},
20693
								itemdblclick : function () {},
20694
								select : function (t, record, index, eOpts) {
20695
									if (compselect !== "") {
20696
										if (compselect !== record.data.CompanyID) {
20697
											// MinovaMessageError("", "FILO06", "");
20698
											return;
20699
										}
20700
									}
20701
									if (buselect !== "") {
20702
										if (buselect !== record.data.BusinessUnit) {
20703
											// MinovaMessageError("", "FILO07", "");
20704
											return;
20705
										}
20706
									}
20707
									compselect = record.data.CompanyID;
20708
									buselect = record.data.BusinessUnit;
20709
								}
20710
							},
20711
							dockedItems : [{
20712
									xtype : 'pagingtoolbar',
20713
									store : 'storeadvance',
20714
									dock : 'bottom',
20715
									displayInfo : true
20716
								}, {
20717
									xtype : 'button',
20718
									name : 'select',
20719
									text : 'Select',
20720
									dock : 'bottom'
20721
								}
20722
							]
20723
						}
20724
					]
20725
				}
20726
			]
20727
		});
20728
		me.callParent(arguments);
20729
	}
20730
});
20731
var Base64 = (function () {
20732
	// Private property
20733
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
20734

    
20735
	// Private method for UTF-8 encoding
20736

    
20737
	function utf8Encode(string) {
20738
		string = string.replace(/\r\n/g, "\n");
20739
		var utftext = "";
20740
		for (var n = 0; n < string.length; n++) {
20741
			var c = string.charCodeAt(n);
20742
			if (c < 128) {
20743
				utftext += String.fromCharCode(c);
20744
			} else if ((c > 127) && (c < 2048)) {
20745
				utftext += String.fromCharCode((c >> 6) | 192);
20746
				utftext += String.fromCharCode((c & 63) | 128);
20747
			} else {
20748
				utftext += String.fromCharCode((c >> 12) | 224);
20749
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
20750
				utftext += String.fromCharCode((c & 63) | 128);
20751
			}
20752
		}
20753
		return utftext;
20754
	}
20755

    
20756
	// Public method for encoding
20757
	return {
20758
		encode: (typeof btoa == 'function') ? function (input) {
20759
			return btoa(utf8Encode(input));
20760
		}
20761
		 : function (input) {
20762
			var output = "";
20763
			var chr1,
20764
			chr2,
20765
			chr3,
20766
			enc1,
20767
			enc2,
20768
			enc3,
20769
			enc4;
20770
			var i = 0;
20771
			input = utf8Encode(input);
20772
			while (i < input.length) {
20773
				chr1 = input.charCodeAt(i++);
20774
				chr2 = input.charCodeAt(i++);
20775
				chr3 = input.charCodeAt(i++);
20776
				enc1 = chr1 >> 2;
20777
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
20778
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
20779
				enc4 = chr3 & 63;
20780
				if (isNaN(chr2)) {
20781
					enc3 = enc4 = 64;
20782
				} else if (isNaN(chr3)) {
20783
					enc4 = 64;
20784
				}
20785
				output = output +
20786
					keyStr.charAt(enc1) + keyStr.charAt(enc2) +
20787
					keyStr.charAt(enc3) + keyStr.charAt(enc4);
20788
			}
20789
			return output;
20790
		}
20791
	};
20792
})();
20793
Ext.define('MyApp.view.override.Grid', {
20794
	override: 'Ext.grid.GridPanel',
20795
	requires: 'Ext.form.action.StandardSubmit',
20796

    
20797
	/*
20798
	Kick off process
20799
	 */
20800

    
20801
	downloadExcelXml: function (includeHidden, name) {
20802

    
20803
		if (!name)
20804
			title = this.name;
20805

    
20806
		var vExportContent = this.getExcelXml(includeHidden, title);
20807

    
20808
		var location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(vExportContent);
20809

    
20810
		/*
20811
		dynamically create and anchor tag to force download with suggested filename
20812
		note: download attribute is Google Chrome specific
20813
		 */
20814

    
20815
		if (Ext.isChrome) {
20816
			var gridEl = this.getEl();
20817

    
20818
			var el = Ext.DomHelper.append(gridEl, {
20819
					tag: "a",
20820
					download: title + "-" + Ext.Date.format(new Date(), 'Y-m-d Hi') + '.xls',
20821
					href: location
20822
				});
20823

    
20824
			el.click();
20825

    
20826
			Ext.fly(el).destroy();
20827

    
20828
		} else {
20829

    
20830
			var form = this.down('form#uploadForm');
20831
			if (form) {
20832
				form.destroy();
20833
			}
20834
			form = this.add({
20835
					xtype: 'form',
20836
					itemId: 'uploadForm',
20837
					hidden: true,
20838
					standardSubmit: true,
20839
					url: 'http://webapps.figleaf.com/dataservices/Excel.cfc?method=echo&mimetype=application/vnd.ms-excel&filename=' + escape(title + ".xls"),
20840
					items: [{
20841
							xtype: 'hiddenfield',
20842
							name: 'data',
20843
							value: vExportContent
20844
						}
20845
					]
20846
				});
20847

    
20848
			form.getForm().submit();
20849

    
20850
		}
20851
	},
20852

    
20853
	/*
20854

    
20855
	Welcome to XML Hell
20856
	See: http://msdn.microsoft.com/en-us/library/office/aa140066(v=office.10).aspx
20857
	for more details
20858

    
20859
	 */
20860
	getExcelXml: function (includeHidden, title) {
20861

    
20862
		var theTitle = title || this.title;
20863

    
20864
		var worksheet = this.createWorksheet(includeHidden, theTitle);
20865
		var totalWidth = this.columnManager.columns.length;
20866

    
20867
		return ''.concat(
20868
			'<?xml version="1.0"?>',
20869
			'<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">',
20870
			'<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Title>' + theTitle + '</Title></DocumentProperties>',
20871
			'<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><AllowPNG/></OfficeDocumentSettings>',
20872
			'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',
20873
			'<WindowHeight>' + worksheet.height + '</WindowHeight>',
20874
			'<WindowWidth>' + worksheet.width + '</WindowWidth>',
20875
			'<ProtectStructure>False</ProtectStructure>',
20876
			'<ProtectWindows>False</ProtectWindows>',
20877
			'</ExcelWorkbook>',
20878

    
20879
			'<Styles>',
20880

    
20881
			'<Style ss:ID="Default" ss:Name="Normal">',
20882
			'<Alignment ss:Vertical="Bottom"/>',
20883
			'<Borders/>',
20884
			'<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/>',
20885
			'<Interior/>',
20886
			'<NumberFormat/>',
20887
			'<Protection/>',
20888
			'</Style>',
20889

    
20890
			'<Style ss:ID="title">',
20891
			'<Borders />',
20892
			'<Font ss:Bold="1" ss:Size="18" />',
20893
			'<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />',
20894
			'<NumberFormat ss:Format="@" />',
20895
			'</Style>',
20896

    
20897
			'<Style ss:ID="headercell">',
20898
			'<Font ss:Bold="1" ss:Size="10" />',
20899
			'<Alignment ss:Horizontal="Center" ss:WrapText="1" />',
20900
			'<Interior ss:Color="#A3C9F1" ss:Pattern="Solid" />',
20901
			'</Style>',
20902

    
20903
			'<Style ss:ID="even">',
20904
			'<Interior ss:Color="#CCFFFF" ss:Pattern="Solid" />',
20905
			'</Style>',
20906

    
20907
			'<Style ss:ID="evendate" ss:Parent="even">',
20908
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
20909
			'</Style>',
20910

    
20911
			'<Style ss:ID="evenint" ss:Parent="even">',
20912
			'<Numberformat ss:Format="0" />',
20913
			'</Style>',
20914

    
20915
			'<Style ss:ID="evenfloat" ss:Parent="even">',
20916
			'<Numberformat ss:Format="0.00" />',
20917
			'</Style>',
20918

    
20919
			'<Style ss:ID="odd">',
20920
			'<Interior ss:Color="#CCCCFF" ss:Pattern="Solid" />',
20921
			'</Style>',
20922

    
20923
			'<Style ss:ID="groupSeparator">',
20924
			'<Interior ss:Color="#D3D3D3" ss:Pattern="Solid" />',
20925
			'</Style>',
20926

    
20927
			'<Style ss:ID="odddate" ss:Parent="odd">',
20928
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
20929
			'</Style>',
20930

    
20931
			'<Style ss:ID="oddint" ss:Parent="odd">',
20932
			'<NumberFormat Format="0" />',
20933
			'</Style>',
20934

    
20935
			'<Style ss:ID="oddfloat" ss:Parent="odd">',
20936
			'<NumberFormat Format="0.00" />',
20937
			'</Style>',
20938

    
20939
			'</Styles>',
20940
			worksheet.xml,
20941
			'</Workbook>');
20942
	},
20943

    
20944
	/*
20945

    
20946
	Support function to return field info from store based on fieldname
20947

    
20948
	 */
20949

    
20950
	getModelField: function (fieldName) {
20951

    
20952
		var fields = this.store.model.getFields();
20953
		for (var i = 0; i < fields.length; i++) {
20954
			if (fields[i].name === fieldName) {
20955
				return fields[i];
20956
			}
20957
		}
20958
	},
20959

    
20960
	/*
20961

    
20962
	Convert store into Excel Worksheet
20963

    
20964
	 */
20965
	generateEmptyGroupRow: function (dataIndex, value, cellTypes, includeHidden) {
20966

    
20967
		var cm = this.columnManager.columns;
20968
		var colCount = cm.length;
20969
		var rowTpl = '<Row ss:AutoFitHeight="0"><Cell ss:StyleID="groupSeparator" ss:MergeAcross="{0}"><Data ss:Type="String"><html:b>{1}</html:b></Data></Cell></Row>';
20970
		var visibleCols = 0;
20971

    
20972
		// rowXml += '<Cell ss:StyleID="groupSeparator">'
20973

    
20974
		for (var j = 0; j < colCount; j++) {
20975
			if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
20976
				// rowXml += '<Cell ss:StyleID="groupSeparator"/>';
20977
				visibleCols++;
20978
			}
20979
		}
20980

    
20981
		// rowXml += "</Row>";
20982

    
20983
		return Ext.String.format(rowTpl, visibleCols - 1, value);
20984
	},
20985

    
20986
	createWorksheet: function (includeHidden, theTitle) {
20987
		// Calculate cell data types and extra class names which affect formatting
20988
		var cellType = [];
20989
		var cellTypeClass = [];
20990
		var cm = this.columnManager.columns;
20991

    
20992
		var totalWidthInPixels = 0;
20993
		var colXml = '';
20994
		var headerXml = '';
20995
		var visibleColumnCountReduction = 0;
20996
		var colCount = cm.length;
20997
		for (var i = 0; i < colCount; i++) {
20998
			if (cm[i].xtype != 'actioncolumn' && (cm[i].dataIndex != '') && (includeHidden || !cm[i].hidden)) {
20999
				var w = cm[i].getEl().getWidth();
21000
				totalWidthInPixels += w;
21001

    
21002
				if (cm[i].text === "") {
21003
					cellType.push("None");
21004
					cellTypeClass.push("");
21005
					++visibleColumnCountReduction;
21006
				} else {
21007
					colXml += '<Column ss:AutoFitWidth="1" ss:Width="' + w + '" />';
21008
					headerXml += '<Cell ss:StyleID="headercell">' +
21009
					'<Data ss:Type="String">' + cm[i].dataIndex + '</Data>' +
21010
					'<NamedCell ss:Name="Print_Titles"></NamedCell></Cell>';
21011

    
21012
					var fld = this.getModelField(cm[i].dataIndex);
21013
					switch (fld.type.type) {
21014
					case "int":
21015
						cellType.push("Number");
21016
						cellTypeClass.push("int");
21017
						break;
21018
					case "float":
21019
						cellType.push("Number");
21020
						cellTypeClass.push("float");
21021
						break;
21022

    
21023
					case "bool":
21024

    
21025
					case "boolean":
21026
						cellType.push("String");
21027
						cellTypeClass.push("");
21028
						break;
21029
					case "date":
21030
						cellType.push("DateTime");
21031
						cellTypeClass.push("date");
21032
						break;
21033
					default:
21034
						cellType.push("String");
21035
						cellTypeClass.push("");
21036
						break;
21037
					}
21038
				}
21039
			}
21040
		}
21041
		var visibleColumnCount = cellType.length - visibleColumnCountReduction;
21042

    
21043
		var result = {
21044
			height: 9000,
21045
			width: Math.floor(totalWidthInPixels * 30) + 50
21046
		};
21047

    
21048
		// Generate worksheet header details.
21049

    
21050
		// determine number of rows
21051
		var numGridRows = this.store.getCount() + 2;
21052
		if (!Ext.isEmpty(this.store.groupField)) {
21053
			numGridRows = numGridRows + this.store.getGroups().length;
21054
		}
21055

    
21056
		// create header for worksheet
21057
		var t = ''.concat(
21058
				'<Worksheet ss:Name="' + theTitle + '">',
21059

    
21060
				'<Names>',
21061
				'<NamedRange ss:Name="Print_Titles" ss:RefersTo="=\'' + theTitle + '\'!R1:R2">',
21062
				'</NamedRange></Names>',
21063

    
21064
				'<Table ss:ExpandedColumnCount="' + (visibleColumnCount + 2),
21065
				'" ss:ExpandedRowCount="' + numGridRows + '" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15">',
21066
				colXml,
21067
				'<Row ss:AutoFitHeight="1">',
21068
				headerXml +
21069
				'</Row>');
21070

    
21071
		// Generate the data rows from the data in the Store
21072
		var groupVal = "";
21073
		var groupField = "";
21074

    
21075
		for (var i = 0, it = this.store.data.items, l = it.length; i < l; i++) {
21076

    
21077
			if (!Ext.isEmpty(groupField)) {
21078
				if (groupVal != this.store.getAt(i).get(groupField)) {
21079
					groupVal = this.store.getAt(i).get(groupField);
21080
					t += this.generateEmptyGroupRow(groupField, groupVal, cellType, includeHidden);
21081
				}
21082
			}
21083
			t += '<Row>';
21084
			var cellClass = (i & 1) ? 'odd' : 'even';
21085
			r = it[i].data;
21086
			var k = 0;
21087
			for (var j = 0; j < colCount; j++) {
21088
				if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21089
					var v = r[cm[j].dataIndex];
21090
					if (cellType[k] !== "None") {
21091
						t += '<Cell ss:StyleID="' + cellClass + cellTypeClass[k] + '"><Data ss:Type="' + cellType[k] + '">';
21092
						if (cellType[k] == 'DateTime') {
21093
							t += Ext.Date.format(v, 'Y-m-d');
21094
						} else {
21095
							t += v;
21096
						}
21097
						t += '</Data></Cell>';
21098
					}
21099
					k++;
21100
				}
21101
			}
21102
			t += '</Row>';
21103
		}
21104

    
21105
		result.xml = t.concat(
21106
				'</Table>',
21107
				'<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">',
21108
				'<PageLayoutZoom>0</PageLayoutZoom>',
21109
				'<Selected/>',
21110
				'<Panes>',
21111
				'<Pane>',
21112
				'<Number>3</Number>',
21113
				'<ActiveRow>2</ActiveRow>',
21114
				'</Pane>',
21115
				'</Panes>',
21116
				'<ProtectObjects>False</ProtectObjects>',
21117
				'<ProtectScenarios>False</ProtectScenarios>',
21118
				'</WorksheetOptions>',
21119
				'</Worksheet>');
21120
		return result;
21121
	}
21122
});
21123

    
21124
/*Add Midi For Grid Mass Posting Filo*/
21125
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGridList', {
21126
    extend: 'Ext.form.Panel',
21127
    alias: ['widget.MinovaEditAbleGridList', 'widget.Minovaeditablegridlist', 'widget.minovaeditablegridlist'],
21128
    requires: [
21129
		'Ext.grid.plugin.CellEditing',
21130
		'Ext.grid.RowNumberer',
21131
		'Ext.grid.Panel',
21132
    ],
21133

    
21134
    //renderTo: 'panel-extjs',
21135
    anchor: '100%',
21136
    tableName: undefined,
21137
    hideButton: undefined,
21138
    multiSelect: undefined,
21139
    initComponent: function () {
21140
        var me = this;
21141
        var isLookup = me.isLookup;
21142
        var hide_ = false;
21143
        var widthLock = 250;
21144
        var checkSelection = '';
21145

    
21146
        if (me.hideButton == true) {
21147
            hide_ = true;
21148
        }
21149
        if (me.multiSelect) {
21150
            locking = false;
21151
            checkSelection = 'checkboxmodel';
21152
            widthLock = 40;
21153
        }
21154
        var tableName = me.tableName;
21155
        var cols = [];
21156
        var fieldStore = [];
21157
        var _url = 'GetAllField';
21158
        var hasil = null;
21159
        var height = me.height;
21160
        var storeID = 'store' + me.tableName;
21161
        var gridName = 'grid' + me.name;
21162
        if (me.storeName) {
21163
            storeID = me.storeName;
21164
        }
21165
        var LangID = MinovaUtil.GetLangID();
21166
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
21167
        Ext.Ajax.request({
21168
            async: false,
21169
            method: 'POST',
21170
            url: '/UserControl/GetStore',
21171
            params: {
21172
                tableName: 'PDSBS0007',
21173
                param: parameter
21174
            },
21175
            success: function (response) {
21176
                var results = Ext.decode(response.responseText);
21177
                hasil = results.data;
21178
            }
21179
        });
21180
        cols.push({
21181
            xtype: 'rownumberer'
21182
        });
21183
        var addData = 'var data={';
21184
        if (hasil.length > 0) {
21185
            Ext.each(hasil, function (rec) {
21186
                fieldStore.push(rec.FieldName);
21187
                if (rec.FieldName != 'Sequence') {
21188
                    addData = addData + rec.FieldName + ":" + "'',";
21189
                }
21190

    
21191
                var null_ = null;
21192
                var ReadOnly_ = false;
21193
                if (rec.IsPrimaryKey == true) {
21194
                    null_ = false;
21195
                }
21196
                if (rec.IsRequired == true) {
21197
                    null_ = false;
21198
                } else {
21199
                    null_ = true;
21200
                }
21201
                if (rec.ReadOnly == '1') {
21202
                    ReadOnly_ = true;
21203
                }
21204
                var Hidden_ = false;
21205
                if (rec.ReadOnly == '1') {
21206
                    ReadOnly_ = true;
21207
                }
21208

    
21209
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
21210
                    Hidden_ = true;
21211
                    null_ = true;
21212
                }
21213

    
21214
                if (rec.GridView == 1) {
21215
                    switch (rec.FormatRef) {
21216
                        case "date":
21217
                            cols.push({
21218
                                xtype: 'minovadatecolumn',
21219
                                hidden: Hidden_,
21220
                                text: rec.HeaderTitle,
21221
                                dataIndex: rec.FieldName,
21222
                                filter: {
21223
                                    itemDefaults: {
21224
                                        emptyText: 'Search for...',
21225

    
21226
                                    }
21227
                                },
21228
                                editor: {
21229
                                    allowBlank: null_,
21230
                                    xtype: 'datefield',
21231
                                    hideMode: 'visibility',
21232
                                    readOnly: ReadOnly_,
21233
                                    id: tableName + rec.FieldName,
21234
                                    fieldGrid: rec.FieldName,
21235
                                    nameTable: rec.TableName,
21236
                                }
21237
                            });
21238
                            break
21239
                        case "amount":
21240
                            cols.push({
21241
                                xtype: 'minovacurrancycolumn',
21242
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
21243
                                text: rec.HeaderTitle,
21244
                                align: 'right',
21245
                                dataIndex: rec.FieldName,
21246
                                hidden: Hidden_,
21247
                                filter: {
21248
                                    itemDefaults: {
21249
                                        emptyText: 'Search for...'
21250
                                    }
21251
                                },
21252
                                editor: {
21253
                                    allowBlank: null_,
21254
                                    xtype: 'minovacurrencyfield',
21255
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
21256
                                    //vtype: 'validateDecimal',
21257
                                    readOnly: ReadOnly_,
21258
                                    id: tableName + rec.FieldName,
21259
                                    nameTable: rec.TableName,
21260
                                    fieldGrid: rec.FieldName,
21261
                                    fieldStyle: 'text-align:right;',
21262
                                    value: '0',
21263

    
21264
                                }
21265
                            });
21266
                            break
21267
                        case "time":
21268
                            var DefaultValue = rec.DefaultValue;
21269
                            if (DefaultValue == '') {
21270
                                defaultValue = '00:00';
21271
                            }
21272
                            cols.push({
21273
                                //xtype: 'minovatimecolumn',
21274
                                xtype: 'timefield',
21275
                                format: 'H:i',
21276
                                submitFormat: 'Hi',
21277
                                text: rec.HeaderTitle,
21278
                                dataIndex: rec.FieldName,
21279
                                hidden: Hidden_,
21280
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
21281
                                filter: {
21282
                                    itemDefaults: {
21283
                                        emptyText: 'Search for...'
21284
                                    }
21285
                                },
21286
                                editor: {
21287
                                    allowBlank: null_,
21288
                                    xtype: 'timefield',
21289
                                    readOnly: ReadOnly_,
21290
                                    id: tableName + rec.FieldName,
21291
                                    format: 'H:i',
21292
                                    submitFormat: 'Hi',
21293
                                    increment: 5,
21294
                                    value: DefaultValue,
21295
                                    anchor: '100%',
21296
                                    listeners: {}
21297
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
21298
                                }
21299
                            });
21300
                            break
21301
                            //case "datetime":
21302
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
21303
                            //        cols.push({
21304
                            //            xtype: 'minovadatetimecolumn',
21305
                            //            text: rec.HeaderTitle,
21306
                            //            dataIndex: rec.FieldName,
21307
                            //            filter: {
21308
                            //                itemDefaults: {
21309
                            //                    emptyText: 'Search for...'
21310
                            //                }
21311
                            //            },
21312
                            //            editor: {
21313
                            //                allowBlank: null_,
21314
                            //                xtype: 'textfield',
21315
                            //            }
21316
                            //        });
21317
                            //    }
21318
                            //    break
21319
                        default:
21320
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
21321
                                cols.push({
21322
                                    text: rec.HeaderTitle,
21323
                                    dataIndex: rec.FieldName,
21324
                                    width: 100,
21325
                                    filter: {
21326
                                        type: 'string',
21327
                                        itemDefaults: {
21328
                                            emptyText: 'Search for...'
21329
                                        }
21330
                                    }
21331
                                });
21332
                            } else if (rec.SearchType == '0') {
21333
                                var valueField = null;
21334
                                var displayValue = null;
21335
                                var TableRef = undefined;
21336
                                if (rec.TableRef != '') {
21337
                                    TableRef = rec.TableRef;
21338

    
21339
                                    Ext.Ajax.request({
21340
                                        async: false,
21341
                                        method: 'POST',
21342
                                        url: '/UserControl/GetStore',
21343
                                        params: {
21344
                                            tableName: 'SDATATABLEFIELD',
21345
                                            param: 'TableName[equal]' + rec.TableRef
21346
                                        },
21347
                                        success: function (response) {
21348
                                            var results = Ext.decode(response.responseText);
21349
                                            data_ = results.data;
21350
                                            if (data_ != undefined) {
21351
                                                valueField_ = $.grep(data_, function (r) {
21352
                                                    return r.ValueField == '1'
21353
                                                });
21354
                                                valueField = valueField_[0].FieldName
21355
                                                displayValue_ = $.grep(data_, function (r) {
21356
                                                    return r.DisplayValue == '1'
21357
                                                });
21358
                                                displayValue = displayValue_[0].FieldName
21359
                                            }
21360
                                        }
21361
                                    });
21362

    
21363
                                    //create Store
21364
                                    Ext.create('Ext.data.Store', {
21365
                                        storeId: 'store_' + me.tableName + rec.FieldName,
21366
                                        autoLoad: true,
21367
                                        proxy: {
21368
                                            method: 'POST',
21369
                                            type: 'ajax',
21370
                                            url: '/UserControl/GetStoreAuth',
21371
                                            extraParams: {
21372
                                                tableName: TableRef,
21373
                                                param: rec.ParamCombo,
21374
                                                menuId: MinovaUtil.GetMenuID()
21375
                                            },
21376
                                            reader: {
21377
                                                type: 'json',
21378
                                                root: 'data',
21379
                                                totalProperty: 'data[0].TotalCount'
21380
                                            }
21381
                                        }
21382
                                    });
21383
                                } else if (rec.FixedValue != '') {
21384
                                    var storeData = [];
21385
                                    var str = rec.FixedValue;
21386
                                    var hasil = str.split('||');
21387
                                    hasil.forEach(function (h) {
21388
                                        store_ = h.split('=')
21389
                                        storeData.push({
21390
                                            code: store_[0],
21391
                                            desc: store_[1],
21392

    
21393
                                        });
21394
                                    });
21395

    
21396
                                    valueField = 'code';
21397
                                    displayValue = 'desc';
21398

    
21399
                                    Ext.create('Ext.data.Store', {
21400
                                        storeId: 'store_' + me.tableName + rec.FieldName,
21401
                                        autoLoad: true,
21402
                                        data: storeData
21403
                                    })
21404
                                }
21405

    
21406
                                cols.push({
21407
                                    xtype: 'minovacombocolumn',
21408
                                    hidden: Hidden_,
21409
                                    text: rec.HeaderTitle,
21410
                                    dataIndex: rec.FieldName,
21411
                                    valueField: valueField,
21412
                                    displayField: displayValue,
21413
                                    store: 'store_' + me.tableName + rec.FieldName,
21414
                                    editor: {
21415
                                        allowBlank: null_,
21416
                                        xtype: 'combobox',
21417
                                        readOnly: ReadOnly_,
21418
                                        id: tableName + rec.FieldName,
21419
                                        nameTable: rec.TableName,
21420
                                        fieldGrid: rec.FieldName,
21421
                                        valueField: valueField,
21422
                                        displayField: displayValue,
21423
                                        vtype: 'validateCombobox',
21424
                                        store: 'store_' + me.tableName + rec.FieldName,
21425
                                    },
21426
                                    filter: {
21427
                                        type: 'list',
21428
                                        itemDefaults: {
21429
                                            emptyText: 'Search for...'
21430
                                        }
21431
                                    }
21432
                                });
21433

    
21434
                            } else if (rec.SearchType == '5') {							
21435
                                var valueField = null;
21436
                                var displayValue = null;
21437
                                var AdditionaldisplayValue = null;
21438
                                var TableRef = undefined;
21439
                                if (rec.TableRef != '') {
21440
                                    TableRef = rec.TableRef;
21441
                                    Ext.Ajax.request({
21442
                                        async: false,
21443
                                        method: 'POST',
21444
                                        url: '/UserControl/GetStore',
21445
                                        params: {
21446
                                            tableName: 'SDATATABLEFIELD',
21447
                                            param: 'TableName[equal]' + rec.TableRef
21448
                                        },
21449
                                        success: function (response) {
21450
                                            var results = Ext.decode(response.responseText);
21451
                                            data_ = results.data;
21452
                                            if (data_ != undefined) {
21453
                                                valueField_ = $.grep(data_, function (r) {
21454
                                                    return r.ValueField == '1'
21455
                                                });
21456
                                                if (valueField_.length > 0) {
21457
                                                    valueField = valueField_[0].FieldName
21458
                                                }
21459

    
21460
                                                displayValue_ = $.grep(data_, function (r) {
21461
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
21462
                                                });
21463
                                                if (displayValue_.length > 0) {
21464
                                                    displayValue = displayValue_[0].FieldName;
21465
                                                }
21466
                                                if (displayValue_.length >= 2) {
21467
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
21468
                                                }
21469
                                            }
21470
                                        }
21471
                                    });
21472
                                }
21473
                                Ext.create('Ext.data.Store', {
21474
                                    storeId: 'store_' + me.tableName + rec.FieldName,
21475
                                    autoLoad: true,
21476
                                    proxy: {
21477
                                        method: 'POST',
21478
                                        type: 'ajax',
21479
                                        url: '/UserControl/GetStoreAuth',
21480
                                        extraParams: {
21481
                                            tableName: TableRef,
21482
                                            param: rec.ParamCombo,
21483
                                            menuId: MinovaUtil.GetMenuID()
21484
                                        },
21485
                                        reader: {
21486
                                            type: 'json',
21487
                                            root: 'data',
21488
                                            totalProperty: 'data[0].TotalCount'
21489
                                        }
21490
                                    }
21491
                                });
21492
                                cols.push({
21493
                                    xtype : 'minovacombocolumn',
21494
                                    hidden: Hidden_,
21495
                                    text: rec.HeaderTitle,
21496
                                    dataIndex: rec.FieldName,
21497
                                    valueField : valueField,
21498
                                    displayField : displayValue,
21499
                                    store : 'store_' + me.tableName + rec.FieldName,
21500
                                    tpl: Ext.create('Ext.XTemplate',
21501
                                            '<ul class="x-list-plain"><tpl for=".">',
21502
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
21503
                                            '</tpl></ul>'),
21504
                                    displayTpl: Ext.create('Ext.XTemplate',
21505
                                        '<tpl for=".">',
21506
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
21507
                                        '</tpl>'),
21508
                                    editor: {
21509
                                        allowBlank: null_,
21510
                                        xtype: 'combobox',
21511
                                        readOnly: ReadOnly_,
21512
                                        id: rec.TableName + rec.FieldName,
21513
                                        nameTable: rec.TableName,
21514
                                        fieldGrid: rec.FieldName,
21515
                                        valueField: valueField,
21516
                                        displayField: displayValue,
21517
                                        store: 'store_' + me.tableName + rec.FieldName,
21518
                                        value: rec.DefaultValue,
21519
                                        tpl: Ext.create('Ext.XTemplate',
21520
                                            '<ul class="x-list-plain"><tpl for=".">',
21521
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
21522
                                            '</tpl></ul>'),
21523
                                        displayTpl: Ext.create('Ext.XTemplate',
21524
                                            '<tpl for=".">',
21525
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
21526
                                            '</tpl>')
21527
                                    },
21528
                                    renderer: function (value) {
21529
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
21530
                                        var index = store.find(valueField, value);
21531
                                        var val = "";
21532
                                        if (index != -1) {
21533
                                            var rc = store.getAt(index);
21534
                                            //val = rc.get(displayValue);
21535
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
21536
                                        } else {
21537
                                            val = value;
21538
                                        }
21539
                                        return val;
21540
                                    },
21541
                                    filter: {
21542
                                        type: 'list',
21543
                                        itemDefaults: {
21544
                                            emptyText: 'Search for...'
21545
                                        }
21546
                                    }
21547
                                });
21548
                            } else if (rec.SearchType == '2') {
21549
                                var triger = (rec.TriggerCombo).split('$');
21550
                                var targetField_ = triger[0];
21551
                                var fieldValue_ = triger[1];
21552
                                cols.push({
21553
                                    text: rec.HeaderTitle,
21554
                                    hidden: Hidden_,
21555
                                    dataIndex: rec.FieldName,
21556
                                    filter: {
21557
                                        itemDefaults: {
21558
                                            emptyText: 'Search for...'
21559
                                        }
21560
                                    },
21561
                                    editor: {
21562
                                        allowBlank: null_,
21563
                                        xtype: 'minovalookupgrid',
21564
                                        readOnly: ReadOnly_,
21565
                                        isGrid: true,
21566
                                        fieldTarget: targetField_,
21567
                                        fieldValue: fieldValue_,
21568
                                        isGrid: true,
21569
                                        id: tableName + rec.FieldName,
21570
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21571
                                        triggerCls: 'x-form-search-trigger',
21572
                                        vtype: 'alphanum', // disable space
21573
                                        nameTable: rec.TableName,
21574
                                        fieldGrid: rec.FieldName,
21575
                                        LookupFunction: rec.LookupFunction,
21576
                                        listeners: {
21577
                                            change: function (val) {
21578
                                                var custumFunc = rec.SelectFunction;
21579
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21580
                                                    Ext.Ajax.request({
21581
                                                        async: false,
21582
                                                        method: 'POST',
21583
                                                        url: '/UserControl/GetStore',
21584
                                                        params: {
21585
                                                            tableName: 'PCMFUNC',
21586
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21587
                                                        },
21588
                                                        success: function (response) {
21589
                                                            var results = Ext.decode(response.responseText);
21590
                                                            data_ = results.data[0];
21591
                                                            if (data_ != undefined) {
21592
                                                                custumFunc = data_.FunctionCode;
21593
                                                            }
21594
                                                        }
21595
                                                    });
21596
                                                }
21597
                                                if (custumFunc) {
21598
                                                    eval(custumFunc)
21599
                                                }
21600
                                            }
21601
                                        }
21602
                                    }
21603
                                });
21604
                            } else if (rec.SearchType == '3') {
21605
                                cols.push({
21606
                                    text: rec.HeaderTitle,
21607
                                    hidden: Hidden_,
21608
                                    dataIndex: rec.FieldName,
21609
                                    filter: {
21610
                                        itemDefaults: {
21611
                                            emptyText: 'Search for...'
21612
                                        }
21613
                                    },
21614
                                    editor: {
21615
                                        allowBlank: null_,
21616
                                        // xtype: 'minovalookuptreePopup',
21617
                                        xtype: 'MinovaLookupTree',
21618
                                        readOnly: ReadOnly_,
21619
                                        id: tableName + rec.FieldName,
21620
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21621
                                        triggerCls: 'x-form-search-trigger',
21622
                                        vtype: 'alphanum', // disable space
21623
                                        treeSructure: rec.SearchFunction, //'O-O-P',
21624
                                        objClassValue: rec.ParamCombo, //'O',
21625
                                        nameTable: rec.TableName,
21626
                                        fieldGrid: rec.FieldName,
21627
                                        listeners: {
21628
                                            change: function (val) {
21629
                                                var custumFunc = rec.SelectFunction;
21630
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21631
                                                    Ext.Ajax.request({
21632
                                                        async: false,
21633
                                                        method: 'POST',
21634
                                                        url: '/UserControl/GetStore',
21635
                                                        params: {
21636
                                                            tableName: 'PCMFUNC',
21637
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21638
                                                        },
21639
                                                        success: function (response) {
21640
                                                            var results = Ext.decode(response.responseText);
21641
                                                            data_ = results.data[0];
21642
                                                            if (data_ != undefined) {
21643
                                                                custumFunc = data_.FunctionCode;
21644
                                                            }
21645
                                                        }
21646
                                                    });
21647
                                                }
21648
                                                if (custumFunc) {
21649
                                                    eval(custumFunc)
21650
                                                }
21651
                                            }
21652
                                        }
21653
                                    }
21654
                                });
21655
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
21656
                                var triger = (rec.TriggerCombo).split('&');
21657
                                var targetField_ = triger[0];
21658
                                var fieldValue_ = triger[0];
21659
                                cols.push({
21660
                                    text: rec.HeaderTitle,
21661
                                    hidden: Hidden_,
21662
                                    dataIndex: rec.FieldName,
21663
                                    filter: {
21664
                                        itemDefaults: {
21665
                                            emptyText: 'Search for...'
21666
                                        }
21667
                                    },
21668
                                    editor: {
21669
                                        allowBlank: null_,
21670
                                        xtype: 'lookupemployee',
21671
                                        readOnly: ReadOnly_,
21672
                                        isGrid: true,
21673
                                        fieldTarget: targetField_,
21674
                                        fieldValue: fieldValue_,
21675
                                        isGrid: true,
21676
                                        id: tableName + rec.FieldName,
21677
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21678
                                        triggerCls: 'x-form-search-trigger',
21679
                                        vtype: 'alphanum', // disable space
21680
                                        nameTable: rec.TableName,
21681
                                        fieldGrid: rec.FieldName,
21682
                                        listeners: {
21683
                                            change: function (val) {
21684
                                                var custumFunc = rec.SelectFunction;
21685
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21686
                                                    Ext.Ajax.request({
21687
                                                        async: false,
21688
                                                        method: 'POST',
21689
                                                        url: '/UserControl/GetStore',
21690
                                                        params: {
21691
                                                            tableName: 'PCMFUNC',
21692
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21693
                                                        },
21694
                                                        success: function (response) {
21695
                                                            var results = Ext.decode(response.responseText);
21696
                                                            data_ = results.data[0];
21697
                                                            if (data_ != undefined) {
21698
                                                                custumFunc = data_.FunctionCode;
21699
                                                            }
21700
                                                        }
21701
                                                    });
21702
                                                }
21703
                                                if (custumFunc) {
21704
                                                    eval(custumFunc)
21705
                                                }
21706
                                            }
21707
                                        }
21708
                                    }
21709
                                });
21710
                            } else if (rec.SearchType == '4' && isLookup != true) {
21711
                                cols.push({
21712

    
21713
                                    text: rec.HeaderTitle,
21714
                                    hidden: Hidden_,
21715
                                    dataIndex: rec.FieldName,
21716
                                    filter: {
21717
                                        itemDefaults: {
21718
                                            emptyText: 'Search for...'
21719
                                        }
21720
                                    },
21721
                                    editor: {
21722
                                        allowBlank: null_,
21723
                                        xtype: 'lookupemployee',
21724
                                        readOnly: ReadOnly_,
21725
                                        isGrid: true,
21726
                                        fieldTarget: targetField_,
21727
                                        fieldValue: fieldValue_,
21728
                                        isGrid: true,
21729
                                        id: tableName + rec.FieldName,
21730
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21731
                                        triggerCls: 'x-form-search-trigger',
21732
                                        vtype: 'alphanum', // disable space
21733
                                        nameTable: rec.TableName,
21734
                                        fieldGrid: rec.FieldName,
21735
                                        listeners: {
21736
                                            change: function (val) {
21737
                                                var custumFunc = rec.SelectFunction;
21738
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21739
                                                    Ext.Ajax.request({
21740
                                                        async: false,
21741
                                                        method: 'POST',
21742
                                                        url: '/UserControl/GetStore',
21743
                                                        params: {
21744
                                                            tableName: 'PCMFUNC',
21745
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21746
                                                        },
21747
                                                        success: function (response) {
21748
                                                            var results = Ext.decode(response.responseText);
21749
                                                            data_ = results.data[0];
21750
                                                            if (data_ != undefined) {
21751
                                                                custumFunc = data_.FunctionCode;
21752
                                                            }
21753
                                                        }
21754
                                                    });
21755
                                                }
21756
                                                if (custumFunc) {
21757
                                                    eval(custumFunc)
21758
                                                }
21759
                                            }
21760
                                        }
21761
                                    }
21762
                                });
21763
                            } else {
21764
                                if (rec.FieldDataType == 3) { //add by taufan
21765
                                    cols.push({
21766
                                        text: rec.HeaderTitle,
21767
                                        hidden: Hidden_,
21768
                                        dataIndex: rec.FieldName,
21769
                                        filter: {
21770
                                            itemDefaults: {
21771
                                                emptyText: 'Search for...'
21772
                                            }
21773
                                        },
21774
                                        editor: {
21775
                                            allowBlank: null_,
21776
                                            xtype: 'textfield',
21777
                                            readOnly: ReadOnly_,
21778
                                            id: tableName + rec.FieldName,
21779
                                            nameTable: rec.TableName,
21780
                                            fieldGrid: rec.FieldName,
21781
                                            vtype: 'validateDecimal',
21782
                                            maxLength: rec.Length,
21783
                                            precision: rec.Prec,
21784
                                            fieldStyle: 'text-align:right;',
21785
                                            listeners: {
21786
                                                change: function (val) {
21787
                                                    var custumFunc = null;
21788
                                                    Ext.Ajax.request({
21789
                                                        async: false,
21790
                                                        method: 'POST',
21791
                                                        url: '/UserControl/GetStore',
21792
                                                        params: {
21793
                                                            tableName: 'SDATATABLEFIELD',
21794
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
21795
                                                        },
21796
                                                        success: function (response) {
21797
                                                            var results = Ext.decode(response.responseText);
21798
                                                            data_ = results.data[0];
21799
                                                            if (data_ != undefined) {
21800
                                                                custumFunc = data_.SelectFunction;
21801
                                                                //console.log(data_)
21802
                                                            }
21803
                                                        }
21804
                                                    });
21805

    
21806
                                                    if (custumFunc) {
21807
                                                        eval(custumFunc)
21808
                                                    }
21809
                                                }
21810
                                            }
21811
                                        }
21812
                                    });
21813
                                } else {
21814
                                    cols.push({
21815
                                        text: rec.HeaderTitle,
21816
                                        hidden: Hidden_,
21817
                                        dataIndex: rec.FieldName,
21818
                                        filter: {
21819
                                            itemDefaults: {
21820
                                                emptyText: 'Search for...'
21821
                                            }
21822
                                        },
21823
                                        editor: {
21824
                                            allowBlank: null_,
21825
                                            xtype: 'textfield',
21826
                                            readOnly: ReadOnly_,
21827
                                            id: tableName + rec.FieldName,
21828
                                            nameTable: rec.TableName,
21829
                                            fieldGrid: rec.FieldName,
21830
                                            listeners: {
21831
                                                change: function (val) {
21832
                                                    var custumFunc = null;
21833
                                                    Ext.Ajax.request({
21834
                                                        async: false,
21835
                                                        method: 'POST',
21836
                                                        url: '/UserControl/GetStore',
21837
                                                        params: {
21838
                                                            tableName: 'SDATATABLEFIELD',
21839
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
21840
                                                        },
21841
                                                        success: function (response) {
21842
                                                            var results = Ext.decode(response.responseText);
21843
                                                            data_ = results.data[0];
21844
                                                            if (data_ != undefined) {
21845
                                                                custumFunc = data_.SelectFunction;
21846
                                                                //console.log(data_)
21847
                                                            }
21848
                                                        }
21849
                                                    });
21850

    
21851
                                                    if (custumFunc) {
21852
                                                        eval(custumFunc)
21853
                                                    }
21854
                                                }
21855
                                            }
21856
                                        }
21857
                                    });
21858
                                }
21859
                            }
21860

    
21861
                            break
21862

    
21863
                    }
21864
                } else {
21865
                    cols.push({
21866
                        text: rec.HeaderTitle,
21867
                        hidden: Hidden_,
21868
                        dataIndex: rec.FieldName,
21869
                        hidden: true,
21870
                        editor: {
21871
                            allowBlank: true,
21872
                            xtype: 'textfield',
21873
                            readOnly: ReadOnly_,
21874
                            id: tableName + rec.FieldName,
21875
                            nameTable: rec.TableName,
21876
                            fieldGrid: rec.FieldName,
21877
                        },
21878
                        filter: {
21879
                            itemDefaults: {
21880
                                emptyText: 'Search for...'
21881
                            }
21882
                        }
21883
                    });
21884
                }
21885
            });
21886

    
21887
        };
21888
        addData = addData + "}";
21889
        Ext.applyIf(me, {
21890
            items: [{
21891
                xtype: 'grid',
21892
                id: gridName,
21893
                name: gridName,
21894
                height: height,
21895
                viewConfig: {
21896
                    emptyText: 'No Data Display',
21897
                    deferEmptyText: false,
21898
                    //Add Nana For Autosize Column Mode
21899
                    listeners: {
21900
                        refresh: function (dataview) {
21901
                            Ext.each(dataview.panel.columns, function (column) {
21902
                                //if (column.autoSizeColumn == false)
21903
                                //	column.autoSizeColumn = true;
21904
                                column.autoSize();
21905
                                //dataview.store.reload();
21906
                            })
21907
                        }
21908
                    },
21909
                    render: function (comp) {
21910
                        comp.getStore().reload();
21911
                        console.log(comp);
21912
                    }
21913
                },
21914
                //store: 'gridStore',
21915
                store: Ext.create('Ext.data.Store', {
21916
                    storeId: storeID,
21917
                    fields: fieldStore,
21918
                    proxy: {
21919
                        method: 'POST',
21920
                        type: 'ajax',
21921
                        url: '',
21922
                        reader: {
21923
                            type: 'json',
21924
                            root: 'data'
21925
                        }
21926
                    }
21927
                }),
21928
                dockedItems: [{
21929
                    xtype: 'toolbar',
21930
                    items: [{
21931
                        text: 'Add',
21932
                        hidden: hide_,
21933
                        name: tableName + 'Add',
21934
                        iconCls: 'fa-plus-circle',
21935
                        style: 'font-family: FontAwesome',
21936
                        handler: function () {
21937
                            var store = Ext.StoreMgr.lookup(storeID)
21938
                            idx = store.getCount();
21939
                            var action = getParam('action');
21940
                            var data = '';
21941
                            var Sequence = 0;
21942
                            if (idx == 0) {
21943
                                Sequence = 1;
21944
                            } else {
21945
                                Sequence = 1 + idx;
21946
                            }
21947
                            //data = {
21948
                            //    Sequence: Sequence
21949
                            //};
21950

    
21951
                            var seq = 'Sequence';
21952
                            var SequenceValue = Sequence;
21953
                            eval(addData);
21954
                            data[seq] = SequenceValue;
21955

    
21956
                            store.insert(idx, data);
21957
                        }
21958

    
21959
                    }, {
21960
                        text: 'Delete',
21961
                        hidden: hide_,
21962
                        name: tableName + 'DeleteText',
21963
                        iconCls: 'fa-trash-o',
21964
                        style: 'font-family: FontAwesome',
21965
                        //disabled: true
21966
                        handler: function () {
21967
                            var me = this,
21968
                            store = Ext.StoreMgr.lookup(storeID)
21969

    
21970
                            var grid = Ext.getCmp(gridName);
21971

    
21972
                            Ext.MessageBox.show({
21973
                                title: 'Remove tab',
21974
                                msg: "This will remove. Do you want to continue?",
21975
                                buttons: Ext.MessageBox.YESNO,
21976
                                fn: function (choice) {
21977
                                    console.log(choice);
21978
                                    if (choice === 'yes') {
21979
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
21980
                                        if (selection) {
21981
                                            store.remove(selection);
21982
                                        }
21983
                                    }
21984
                                    //delete panel.pendingClose;
21985
                                }
21986
                            });
21987
                        }
21988

    
21989
                    }
21990
                    ]
21991
                }
21992
                ],
21993
                columns: cols,
21994
                selType: checkSelection,
21995
                //selType: 'rowmodel',
21996
                plugins: {
21997
                    ptype: 'rowediting',
21998
                    pluginId: 'rowEditing',
21999
                    clicksToEdit: 1,
22000
                    listeners: {
22001
                        //edit: 'onGridEditorEdit'
22002
                    }
22003
                }
22004
            }, ]
22005

    
22006
        });
22007

    
22008
        me.callParent(arguments);
22009
    }
22010
});
22011

    
22012
/*Add by Midi ( Tab List Mass Posting ERP DocType AR)*/
22013
Ext.define('MinovaUtil.MinovaES.MinovaTabListDocTransAR', {
22014
	extend: 'Ext.tab.Panel',
22015
	alias: ['widget.doctablistAR'],
22016
	transType: undefined,
22017
	docType: undefined,
22018
	docNo: undefined,
22019
	langId: undefined,
22020
	param: undefined,
22021
	layout: 'fit',
22022
	name: 'panelTabAR',
22023
	id: 'mainTabAR',
22024
	action: undefined,
22025
	initComponent: function () {
22026
		var me = this;
22027
		var documentType = me.docType;
22028
		var transactionType = me.transType;
22029
		var hasil = null;
22030
		var _items = [];
22031
		Ext.Ajax.request({
22032
			async: false,
22033
			method: 'POST',
22034
			url: '/UserControl/GetStore',
22035
			params: {
22036
				tableName: 'PCMBSTRANSLIST',
22037
				param: 'TransType[=]' + me.transType
22038
			},
22039
			success: function (response) {
22040
				var results = Ext.decode(response.responseText);
22041
				hasil = results.data;
22042
			}
22043
		});
22044
		hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22045
		if (hasil.length > 0) {
22046
			Ext.each(hasil, function (rec) {
22047
				if (rec.LayoutType == "L004") { // L004=Custom
22048
					var pnl = Ext.create(rec.CustomLayout, {
22049
							title: rec.Title,
22050
							tableName: rec.TableName,
22051
							height: 400,
22052
							name: 'panelTab' + rec.TableName,
22053
							tbl: rec.TableName,
22054
							layoutType: rec.LayoutType
22055
						});
22056
					_items.push(pnl)
22057
				} else if (rec.LayoutType == "L002" || rec.LayoutType == "L003") {
22058
					_items.push({
22059
						xtype: 'panel',
22060
						title: rec.Title,
22061
						name: 'panelTab' + rec.TableName,
22062
						tbl: rec.TableName,
22063
						layoutType: rec.LayoutType,
22064
						items: [{
22065
								xtype: 'docgrid',
22066
								height: 400,
22067
								tableName: rec.TableName,
22068
								docType: me.docType,
22069
								transType: me.transType,
22070
								storename: 'store' + rec.TableName,
22071
								pagesize: 25,
22072
								name: 'GRID' + rec.TableName,
22073
								margin: '0 0 10 0',
22074
								autoLoad: false,
22075
								tbar: [{
22076
										xtype: 'button',
22077
										text: 'Action',
22078
										name: 'actionGrid' + rec.TableName,
22079
										menu: [{
22080
												text: 'Add',
22081
												name: 'add' + rec.TableName,
22082
												tbl: rec.TableName,
22083
												style: 'font-family: FontAwesome',
22084
												iconCls: 'fa-plus-circle',
22085
												handler: function () {
22086
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22087
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22088
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22089
													frmDisplay.reset();
22090
													frmForm.reset();
22091
													frmDisplay.setHidden(true);
22092
													frmForm.setHidden(false);
22093
													grdPanel.setHidden(true);
22094
													action = "0";
22095
												}
22096
											}, {
22097
												text: 'Delete',
22098
												name: 'delete' + rec.TableName,
22099
												tbl: rec.TableName,
22100
												iconCls: 'fa-trash-o',
22101
												style: 'font-family: FontAwesome',
22102
												handler: function () {
22103
													var me = this;
22104
													var store = Ext.StoreMgr.lookup('store' + rec.TableName);
22105
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22106
													Ext.MessageBox.show({
22107
														title: 'Remove tab',
22108
														msg: "This will remove. Do you want to continue?",
22109
														buttons: Ext.MessageBox.YESNO,
22110
														fn: function (choice) {
22111
															console.log(choice);
22112
															if (choice === 'yes') {
22113
																var selection = grdPanel.getView().getSelectionModel().getSelection()[0];
22114
																if (selection) {
22115
																	store.remove(selection);
22116
																}
22117
															}
22118
														}
22119
													});
22120
												}
22121
											}
22122
										]
22123
									}, {
22124
										xtype: 'tbfill'
22125
									}, {
22126
										text: 'Clear Filters',
22127
										tooltip: 'Clear all filters',
22128
										name: 'clearbtn',
22129
										handler: function () {}
22130
									}
22131
								],
22132
								dockedItems: [{
22133
										xtype: 'pagingtoolbar',
22134
										store: 'store' + rec.TableName,
22135
										dock: 'bottom',
22136
										pageSize: me.pagesize,
22137
										displayInfo: true
22138
									}
22139
								],
22140
								listeners: {
22141
									'itemdblclick': function (me, record, item, index, e, eOpts) {
22142
										var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22143
										var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22144
										var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22145
										frmDisplay.reset();
22146
										frmForm.reset();
22147
										frmDisplay.getForm().setValues(record.data);
22148
										frmForm.getForm().setValues(record.data);
22149
										frmDisplay.setHidden(false);
22150
										frmForm.setHidden(true);
22151
										grdPanel.setHidden(true);
22152
										action = "1";
22153
									}
22154
								}
22155
							}, {
22156
								xtype: 'minovadocform',
22157
								name: 'DISPLAY' + rec.TableName,
22158
								id: 'DISPLAY' + rec.TableName,
22159
								itemId: 'DISPLAY' + rec.TableName,
22160
								tableName: rec.TableName,
22161
								docType: me.docType,
22162
								transType: me.transType,
22163
								isDisplay: true,
22164
								hidden: true,
22165
								buttons: [{
22166
										text: 'Edit',
22167
										name: 'editDISPLAY' + rec.TableName,
22168
										handler: function () {
22169
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22170
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22171
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22172
											frmDisplay.setHidden(true);
22173
											frmForm.setHidden(false);
22174
											grdPanel.setHidden(true);
22175
										}
22176
									}, {
22177
										text: 'Cancel',
22178
										name: 'cancelDISPLAY' + rec.TableName,
22179
										handler: function () {
22180
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22181
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22182
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22183
											frmDisplay.setHidden(true);
22184
											frmForm.setHidden(true);
22185
											grdPanel.setHidden(false);
22186
											grdPanel.getStore().reload();
22187
										}
22188
									}
22189
								]
22190
							}, {
22191
								xtype: 'minovadocform',
22192
								name: 'FORM' + rec.TableName,
22193
								id: 'FORM' + rec.TableName,
22194
								itemId: 'FORM' + rec.TableName,
22195
								tableName: rec.TableName,
22196
								docType: me.docType,
22197
								transType: me.transType,
22198
								isDisplay: false,
22199
								hidden: true,
22200
								buttons: [{
22201
										text: 'Submit',
22202
										name: 'submitFORM' + rec.TableName,
22203
										handler: function () {
22204
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22205
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22206
											var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22207
											var frm = frmForm.getForm();
22208
											if (frm.isValid()) {
22209
												var table = rec.TableName;
22210
												var data = frmForm.getValues();
22211
												var token = MinovaUtil.SESSIONS.Token;
22212
												var str = grdPanel.getStore();
22213
												var idx = str.getCount();
22214
												str.insert(idx, data);
22215
												frmDisplay.setHidden(true);
22216
												frmForm.setHidden(true);
22217
												grdPanel.setHidden(false);
22218
											}
22219
										}
22220
									}, {
22221
										text: 'Cancel',
22222
										name: 'cancelFORM' + rec.TableName,
22223
										handler: function () {
22224
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
22225
												if (respone == "yes") {
22226
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22227
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22228
													var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22229
													frmDisplay.setHidden(true);
22230
													frmForm.setHidden(true);
22231
													grdPanel.setHidden(false);
22232
												}
22233
											});
22234
										}
22235
									}
22236
								]
22237
							}
22238
						]
22239
					});
22240
				} else if (rec.LayoutType == "L005") { // Grid View Only
22241
					_items.push({
22242
						xtype: 'panel',
22243
						title: rec.Title,
22244
						name: 'panelTab' + rec.TableName,
22245
						tbl: rec.TableName,
22246
						layoutType: rec.LayoutType,
22247
						items: [{
22248
								xtype: 'docgrid',
22249
								height: 400,
22250
								tableName: rec.TableName,
22251
								docType: me.docType,
22252
								transType: me.transType,
22253
								storename: 'store' + rec.TableName,
22254
								pagesize: 25,
22255
								name: 'GRID' + rec.TableName,
22256
								margin: '0 0 10 0',
22257
								autoLoad: false,
22258
								tbar: [{
22259
										xtype: 'tbfill'
22260
									}, {
22261
										text: 'Clear Filters',
22262
										tooltip: 'Clear all filters',
22263
										name: 'clearbtn',
22264
										handler: function () {}
22265
									}
22266
								],
22267
								dockedItems: [{
22268
										xtype: 'pagingtoolbar',
22269
										store: 'store' + rec.TableName,
22270
										dock: 'bottom',
22271
										pageSize: me.pagesize,
22272
										displayInfo: true
22273
									}
22274
								]
22275
							}
22276
						]
22277
					});
22278
				} else if (rec.LayoutType == "L006") {
22279
					_items.push({
22280
						xtype: 'panel',
22281
						title: rec.Title,
22282
						name: 'panelTab' + rec.TableName,
22283
						tbl: rec.TableName,
22284
						layoutType: rec.LayoutType,
22285
						items: [{
22286
								xtype: 'docgridcelledit',
22287
								name: 'CELLGRID' + rec.TableName,
22288
								tableName: rec.TableName,
22289
								docType: me.docType,
22290
								transType: me.transType,
22291
								docNo: me.docNo,
22292
								height: 400,
22293
								hideButton: false,
22294
								margin: '0 0 10 0'
22295
							}
22296
						]
22297
					});
22298
				} else if (rec.LayoutType == "L007") {
22299
					_items.push({
22300
						xtype: 'panel',
22301
						title: rec.Title,
22302
						name: 'panelTab' + rec.TableName,
22303
						tbl: rec.TableName,
22304
						layoutType: rec.LayoutType,
22305
						items: [{
22306
								xtype: 'docgridcelleditsum',
22307
								name: 'CELLGRID' + rec.TableName,
22308
								tableName: rec.TableName,
22309
								docType: me.docType,
22310
								transType: me.transType,
22311
								docNo: me.docNo,
22312
								height: 400,
22313
								hideButton: false,
22314
								margin: '0 0 10 0'
22315
							}, {
22316
								xtype: 'summarydocform',
22317
								name: 'SUM' + rec.TableName,
22318
								id: 'SUM' + rec.TableName,
22319
								itemId: 'SUM' + rec.TableName,
22320
								tableName: rec.TableName,
22321
								docType: me.docType,
22322
								transType: me.transType,
22323
							}
22324
						]
22325
					});
22326
				} else { // L001=Default Form Only
22327
					_items.push({
22328
						xtype: 'panel',
22329
						title: rec.LabelName,
22330
						name: 'panelTab' + rec.TableName,
22331
						tbl: rec.TableName,
22332
						layoutType: rec.LayoutType,
22333
						items: [{
22334
								xtype: 'minovadocform',
22335
								name: 'DISPLAY' + rec.TableName,
22336
								id: 'DISPLAY' + rec.TableName,
22337
								itemId: 'DISPLAY' + rec.TableName,
22338
								tableName: rec.TableName,
22339
								docType: me.docType,
22340
								transType: me.transType,
22341
								isDisplay: true,
22342
								hidden: false,
22343
								buttons: [{
22344
										text: 'Edit',
22345
										name: 'editDISPLAY' + rec.TableName,
22346
										iconCls: 'fa-edit',
22347
										style: 'font-family: FontAwesome',
22348
										handler: function () {
22349
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22350
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22351
											frmDisplay.setHidden(true);
22352
											frmForm.setHidden(false);
22353
											action = "1";
22354
										}
22355
									}, {
22356
										text: 'Cancel',
22357
										name: 'cancelDISPLAY' + rec.TableName,
22358
										iconCls: 'fa-reply',
22359
										style: 'font-family: FontAwesome',
22360
										hidden: true
22361
									}
22362
								]
22363
							}, {
22364
								xtype: 'minovadocform',
22365
								name: 'FORM' + rec.TableName,
22366
								id: 'FORM' + rec.TableName,
22367
								itemId: 'FORM' + rec.TableName,
22368
								tableName: rec.TableName,
22369
								docType: me.docType,
22370
								transType: me.transType,
22371
								isDisplay: false,
22372
								hidden: true,
22373
								buttons: [{
22374
										text: 'Save',
22375
										name: 'saveDISPLAY' + rec.TableName,
22376
										iconCls: 'fa-save',
22377
										style: 'font-family: FontAwesome',
22378
										handler: function () {
22379
											var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22380
											var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22381
											var headerDisplay = Ext.ComponentQuery.query('[name=MainHeaderMDLogistic]')[0];
22382
											var frm = frmForm.getForm();
22383
											if (frm.isValid()) {
22384
												var table = rec.TableName;
22385
												var data = Ext.encode(frmForm.getValues());
22386
												var token = MinovaUtil.SESSIONS.Token;
22387
												var params = {
22388
													apiController: 'api/Devt',
22389
													methodName: 'SaveTableMaster',
22390
													parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
22391
												};
22392
												MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
22393
													var result = Ext.decode(xhr.responseText);
22394
													var r = Ext.decode(result.data);
22395
													if (r.success) {
22396
														headerDisplay.mask("Loading...");
22397
														var idNo = r.data;
22398
														frmForm.getForm().findField("DocNo").setValue(idNo);
22399
														frmDisplay.getForm().setValues(frmForm.getValues());
22400
														headerDisplay.getForm().setValues(frmForm.getValues());
22401
														frmDisplay.setHidden(false);
22402
														frmForm.setHidden(true);
22403
														MinovaMessage('Not Null', '000006', '', 'S');
22404
														headerDisplay.unmask();
22405
													} else {
22406
														MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
22407
													}
22408
												});
22409
											}
22410
										}
22411
									}, {
22412
										text: 'Delete',
22413
										name: 'deleteDISPLAY' + rec.TableName,
22414
										iconCls: 'fa-trash-o',
22415
										style: 'font-family: FontAwesome',
22416
										handler: function () {}
22417
									}, {
22418
										text: 'Cancel',
22419
										name: 'cancelDISPLAY' + rec.TableName,
22420
										iconCls: 'fa-reply',
22421
										style: 'font-family: FontAwesome',
22422
										handler: function () {
22423
											MinovaMessage('Message', '000011', '', 'C', function (respone) {
22424
												if (respone == "yes") {
22425
													var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22426
													var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22427
													frmDisplay.setHidden(false);
22428
													frmForm.setHidden(true);
22429
												}
22430
											});
22431
										}
22432
									}
22433
								]
22434
							}
22435
						]
22436
					});
22437
				}
22438
			});
22439
		}
22440
		Ext.applyIf(me, {
22441
			items: _items
22442
		});
22443
		me.callParent(arguments);
22444
	}
22445
});
22446

    
22447
/*Add by YN ( Tab List for PA on Top)*/
22448
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDNew', {
22449
    extend: 'Ext.form.Panel',
22450
    alias: ['widget.MinovaHeadermdNew', 'widget.MinovaHeaderMDNew'],
22451
    allTableName: undefined,
22452
    param: undefined,
22453
    //frame: true,
22454
    resizable: true,
22455
    autoScroll: true,
22456
    minHeight: 20,
22457
    layout: 'column',
22458
    name: 'HeaderMD',
22459
    getAllTableName: function () {
22460
        return this.allTableName;
22461
    },
22462
    setAllTableName: function (value) {
22463
        var me = this;
22464
        me.allTableName = value;
22465
        return me;
22466
    },
22467
    listeners: {
22468
        afterrender: function (me) {
22469
            var nowDate = MinovaUtil.GetNowDate()
22470
            var allTbl = me.getAllTableName();
22471
            //alert(allTbl);
22472
            var splitTable = allTbl.split(',')
22473
            splitTable.forEach(function (tbl) {
22474
                // console.log(tbl);
22475
                //set values form
22476
                var nowDate = MinovaUtil.GetNowDate();
22477
                parameter = null;
22478
                if (me.isEmployee == true) {
22479
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
22480
                } else {
22481
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
22482
                }
22483
                Ext.Ajax.request({
22484
                    method: 'POST',
22485
                    //async: false,
22486
                    url: '/UserControl/GetStore',
22487
                    params: {
22488
                        tableName: tbl,
22489
                        param: parameter
22490
                    },
22491
                    success: function (response) {
22492
                        var results = Ext.decode(response.responseText);
22493
                        hasil = results.data;
22494
                        if (hasil.length > 0) {
22495
                            me.getForm().setValues(hasil[0]);
22496

    
22497
                            //console.log(me)
22498
                        }
22499

    
22500
                    }
22501
                });
22502
            });
22503

    
22504
            //setTimeout(function () {
22505
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
22506
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
22507
            //}, 100);
22508

    
22509
        },
22510

    
22511
    },
22512

    
22513
    initComponent: function () {
22514
        var me = this;
22515
        var col1 = [];
22516
        var col2 = [];
22517
        var hasil = null;
22518
        //get moduletype
22519
        //var ModuleType = 'PA';
22520
        //var ModuleType = MinovaUtil.GetModuleType()
22521
        //get Lang
22522
        var LangId = localStorage.LangId;
22523
        var allTable = null;
22524
        var tbl = null;
22525
        var tblTemp = null;
22526
        var nowDate = MinovaUtil.GetNowDate();
22527
        //var Photo_ = 'nophoto.gif';
22528
        var Photo = 'nophoto.gif';
22529
        tableName = null;
22530
        parameter = null;
22531
        // get Photo
22532
        //hamid200916
22533
        if (me.isEmployee == true) {
22534
            tableName = 'PHRPA0001';
22535
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
22536
        } else {
22537
            tableName = 'PHRRC0001';
22538
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
22539
        }
22540
        Ext.Ajax.request({
22541
            method: 'POST',
22542
            async: false,
22543
            url: '/UserControl/GetStore',
22544
            params: {
22545
                tableName: tableName,
22546
                param: parameter
22547
            },
22548
            success: function (response) {
22549
                var results = Ext.decode(response.responseText);
22550
                hasil = results.data;
22551
                if (hasil.length > 0) {
22552
                    dataPhoto = hasil[0].Picture
22553
                    if (dataPhoto != "") {
22554
                        Photo = dataPhoto;
22555
                    }
22556
                }
22557

    
22558
            }
22559
        });
22560

    
22561
        var hasil = undefined;
22562
        Ext.Ajax.request({
22563
            async: false,
22564
            method: 'POST',
22565
            url: '/UserControl/GetStore',
22566
            params: {
22567
                tableName: 'PDSBS0009',
22568
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
22569
            },
22570
            success: function (response) {
22571
                hasil = Ext.decode(response.responseText).data;
22572

    
22573
            }
22574
        });
22575

    
22576
        //sorting results
22577
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22578
        if (hasil.length > 0) {
22579
            Ext.each(hasil, function (rec) {
22580
                tblTemp = rec.TableName;
22581
                if (tbl != tblTemp) {
22582
                    tbl = tblTemp;
22583
                    if (allTable == null) {
22584
                        allTable = tbl
22585
                    } else {
22586
                        allTable = allTable + ',' + tbl
22587
                    }
22588

    
22589
                }
22590
                // build form
22591
                if (rec.TableRef != '') {
22592
                    valueField = null;
22593
                    displayValue = null;
22594
                    Ext.Ajax.request({
22595
                        async: false,
22596
                        method: 'POST',
22597
                        url: '/UserControl/GetStore',
22598
                        params: {
22599
                            tableName: 'SDATATABLEFIELD',
22600
                            param: 'TableName[equal]' + rec.TableRef
22601
                        },
22602
                        success: function (response) {
22603
                            var results = Ext.decode(response.responseText);
22604
                            data_ = results.data;
22605
                            if (data_ != undefined) {
22606
                                valueField_ = $.grep(data_, function (r) {
22607
                                    return r.ValueField == '1'
22608
                                });
22609
                                if (valueField_.length > 0) {
22610
                                    valueField = valueField_[0].FieldName
22611
                                }
22612

    
22613
                                displayValue_ = $.grep(data_, function (r) {
22614
                                    return r.DisplayValue == '1'
22615
                                });
22616
                                if (displayValue_.length > 0) {
22617
                                    displayValue = displayValue_[0].FieldName
22618
                                }
22619
                            }
22620
                        }
22621
                    });
22622

    
22623
                    formfield = new Ext.form.Display({
22624
                        fieldLabel: rec.ScreenCaption,
22625
                        name: rec.FieldName,
22626
                        //value: rec.DefaultValue,
22627
                        padding: 0,
22628
                        labelCls: 'label-minova',
22629
                        labelWidth: 150,
22630
                        anchor: '80%',
22631
                        store: Ext.create('Ext.data.Store', {
22632
                            storeId: 'storeDisplay' + rec.FieldName,
22633
                            //autoLoad: true,
22634
                            proxy: {
22635
                                method: 'POST',
22636
                                type: 'ajax',
22637
                                extraParams: {
22638
                                    tableName: rec.TableRef,
22639
                                    param: ''
22640
                                },
22641
                                reader: {
22642
                                    type: 'json',
22643
                                    root: 'data',
22644
                                    totalProperty: 'data[0].TotalCount'
22645
                                }
22646
                            }
22647
                        }),
22648
                        listeners: {
22649
                            afterrender: function (f) {
22650
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
22651
                                var ParamCombo = rec.ParamCombo;
22652
                                var param = '';
22653
                                //if (ParamCombo != '') {
22654
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
22655
                                    var splitParam = ParamCombo.split(']');
22656
                                    switch (rec.FieldName) {
22657
                                        case 'Position':
22658
                                            ParamCombo = 'P'
22659
                                            break;
22660
                                        case 'CostCenter':
22661
                                            ParamCombo = 'CC'
22662
                                            break;
22663
                                        case 'Organization':
22664
                                            ParamCombo = 'O'
22665
                                            break;
22666
                                        case 'Job':
22667
                                            ParamCombo = 'J'
22668
                                            break;
22669
                                    }
22670
                                    //if (splitParam.length == 1) {
22671
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
22672
                                    //} else {
22673
                                    //    param = ParamCombo;
22674
                                    //}
22675
                                }
22676
                                //}
22677
                                Ext.Ajax.request({
22678
                                    method: 'POST',
22679
                                    async: false,
22680
                                    url: '/UserControl/GetStore',
22681
                                    params: {
22682
                                        tableName: rec.TableRef,
22683
                                        param: param
22684
                                    },
22685
                                    success: function (response) {
22686
                                        var results = Ext.decode(response.responseText);
22687

    
22688
                                        //dt = results.data;
22689
                                        store.loadData(results.data);
22690

    
22691
                                    }
22692
                                });
22693
                            },
22694
                            change: function (f) {
22695
                                //alert(this.valueField, value);
22696
                                var display = this.displayField;
22697
                                var value = this.getValue();
22698
                                var st = f.store
22699
                                var r = st.findRecord(f.valueField, f.value)
22700
                                if (r != null) {
22701
                                    f.setRawValue(r.get(f.displayField))
22702
                                } else {
22703
                                    f.setRawValue(f.value);
22704

    
22705
                                }
22706
                            }
22707
                        },
22708
                        queryMode: 'local',
22709
                        displayField: displayValue,
22710
                        valueField: valueField,
22711
                    });
22712
                }
22713
                else {
22714
                    formfield = new Ext.form.Display({
22715
                        fieldLabel: rec.ScreenCaption,
22716
                        name: rec.FieldName,
22717
                        labelCls: 'label-minova',
22718
                        labelWidth: 150,
22719
                        //value: rec.DefaultValue,
22720
                        padding: 0,
22721
                        anchor: '80%'
22722
                    });
22723
                }
22724
                if (isDesk) {
22725
                    if (rec.Column == 1) {
22726
                        col1.push(formfield);
22727
                    } else {
22728
                        col2.push(formfield);
22729
                    }
22730
                } else {
22731
                    col1.push(formfield);
22732
                }
22733

    
22734
            });
22735
            //set allTable
22736
            this.setAllTableName(allTable);
22737
        }
22738

    
22739
        Ext.applyIf(me, {
22740
            items: [
22741
                {
22742
                    width: 150,
22743
                    //margin: '10 5 3 30',
22744
                    margin: '5 0 0 30',
22745
                    height: 130,
22746
                    items: [
22747
                        {
22748
                            xtype: 'image',
22749
                            id: 'imageusermd',
22750
                            name: 'imageusermd',
22751
                            width: 120,
22752
                            height: 120,
22753
                            padding: 5,
22754
                            border: true,
22755
                            src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
22756
                        }
22757
                    ]
22758
                },
22759
                {
22760
                    bodyPadding: 0,
22761
                    width: 300,
22762
                    margin: '15 0 0 30', //margin: '10 5 3 30',
22763
                    items: col1
22764
                },
22765
                {
22766
                    bodyPadding: 0,
22767
                    //width: 350,
22768
                    margin: '15 0 0 30', //margin: '10 5 3 30',
22769
                    items: col2
22770
                }
22771
            ],
22772
        });
22773

    
22774
        me.callParent(arguments);
22775

    
22776
    }
22777
});
22778

    
22779
//panelTab->panelTab+TableName->GRID+TableName | DISPLAY+TableName | FORM+TableName 
22780
Ext.define('MinovaUtil.MinovaES.MinovaTabListMDNew', {
22781
    extend: 'Ext.tab.Panel',
22782
    alias: ['widget.MinovaTabListMDNew'],
22783
    mixins: [
22784
        'Ext.util.StoreHolder'
22785
    ],
22786
    config: {
22787
        titleField: 'title'
22788
    },
22789
    name: 'gridMenuMD',
22790
    id: 'mainTab',
22791
    moduleType: undefined,
22792
    tablenameheader: undefined,
22793
    langId: undefined,
22794
    param: undefined,
22795
    frame: true,
22796
    //style: {
22797
    //    background: '#ffc'
22798
    //},
22799
    //cls: 'modern-tabpanel',
22800
    //bodyStyle: {
22801
    //    background: '#ffc',
22802
    //    padding: '10px'
22803
    //},
22804
    defaults: {
22805
        scrollable: true,
22806
        iconAlign: 'top',
22807
        userSelectable: {
22808
            bodyElement: true
22809
        }
22810
    },
22811
    tabBar: {
22812
        layout: { pack: 'center' }
22813
    },
22814
    initComponent: function () {
22815
        var me = this;
22816
        var hasil = null;
22817
        var _items = [];
22818

    
22819
        // Ambil Daftar Master Data dari PCMEPMDLIST untuk ditampilkan di Tab
22820
        Ext.Ajax.request({
22821
            async: false,
22822
            method: 'POST',
22823
            url: '/UserControl/GetStore',
22824
            params: {
22825
                tableName: 'PCMEPMDLIST',
22826
                param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
22827
            },
22828
            success: function (response) {
22829
                var results = Ext.decode(response.responseText);
22830
                hasil = results.data;
22831
            }
22832
        });
22833
        hasil = hasil.sort(MinovaUtil.SortBySeq("Sequence"));
22834

    
22835
        // Jika Daftar Master ada, Load dari Table PA satu persatu ke setiap Tab
22836
        if (hasil.length > 0) {
22837
            Ext.each(hasil, function (rec) {
22838
                if ((rec.LayoutType == "L003") || (rec.LayoutType == "L004"))  { // L003=GRID, DISPLAY, FORM
22839
                    //panelTab+TableName
22840
                    _items.push({
22841
                        xtype: 'panel',
22842
                        iconCls: rec.IconCls, //"fa fa-address-book-o",
22843
                        title: rec.LabelName,
22844
                        name: 'panelTab' + rec.TableName,
22845
                        record: rec, //dipanggil di mainNew1Controller.js
22846
                        tbl: rec.TableName,
22847
                        //layout: 'center', //bikin layout kacau
22848
                        //cls: 'card',
22849
                        //items: [
22850
                        //    //GRID+TableName (minovagrid1)
22851
                        //    {
22852
                        //        xtype: 'minovagrid1new',
22853
                        //        height: 450,
22854
                        //        tableName: rec.TableName,
22855
                        //        storename: 'store' + rec.TableName,
22856
                        //        pagesize: 25,
22857
                        //        name: 'GRID' + rec.TableName,
22858
                        //        margin: '0 0 10 0',
22859
                        //        autoLoad: false,
22860
                        //        param: 'EmployeeID[=]' + getParam("EmployeeID"),
22861
                        //        //Top Toolbar
22862
                        //        tbar: [
22863
                        //            //tbfill
22864
                        //            {
22865
                        //                xtype: 'tbfill'
22866
                        //            },
22867
                        //            //Combo Action
22868
                        //            {
22869
                        //                xtype: 'button',
22870
                        //                text: 'Action',
22871
                        //                name: 'actionGrid' + rec.TableName,
22872
                        //                menu: [
22873
                        //                    //Add
22874
                        //                    {
22875
                        //                        text: 'Add',
22876
                        //                        name: 'add' + rec.TableName,
22877
                        //                        tbl: rec.TableName,
22878
                        //                        style: 'font-family: FontAwesome',
22879
                        //                        iconCls: 'fa-plus-circle',
22880
                        //                        handler: function () {
22881
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22882
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22883
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22884
                        //                            var keyField = getParam("KeyID");
22885
                        //                            var keyValue = getParam("KeyValue");
22886
                        //                            frmDisplay.reset();
22887
                        //                            frmForm.reset();
22888
                        //                            var idseq = 0;
22889
                        //                            var params = {
22890
                        //                                apiController: 'api/Devt',
22891
                        //                                methodName: 'GetLastSeqID',
22892
                        //                                parameter: 'tableName=' + rec.TableName + '&keyField=' + keyField + '&keyValue=' + keyValue
22893
                        //                            };
22894
                        //                            MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
22895
                        //                                var result = Ext.decode(xhr.responseText);
22896
                        //                                var r = Ext.decode(result.data);
22897
                        //                                idseq = r.data + 1;
22898
                        //                                frmForm.getForm().findField(keyField).setValue(keyValue);
22899
                        //                                frmForm.getForm().findField("SeqID").setValue(idseq);
22900
                        //                            });
22901
                        //                            frmDisplay.setHidden(true);
22902
                        //                            frmForm.setHidden(false);
22903
                        //                            grdPanel.setHidden(true);
22904
                        //                            action = "0";
22905
                        //                        }
22906
                        //                    },
22907
                        //                    //Copy
22908
                        //                    {
22909
                        //                        text: 'Copy',
22910
                        //                        name: 'copy' + rec.TableName,
22911
                        //                        tbl: rec.TableName,
22912
                        //                        iconCls: 'fa-copy',
22913
                        //                        style: 'font-family: FontAwesome',
22914
                        //                        handler: function () {
22915
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22916
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22917
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22918
                        //                            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
22919
                        //                            var keyField = getParam("KeyID");
22920
                        //                            if (dtrec) {
22921
                        //                                frmDisplay.reset();
22922
                        //                                frmForm.reset();
22923
                        //                                frmForm.getForm().setValues(dtrec.data);
22924
                        //                                frmDisplay.setHidden(true);
22925
                        //                                frmForm.setHidden(false);
22926
                        //                                grdPanel.setHidden(true);
22927
                        //                                action = "0";
22928
                        //                                frmForm.getForm().findField(keyField).setValue("");
22929
                        //                            }
22930
                        //                        }
22931
                        //                    },
22932
                        //                    //Edit
22933
                        //                    {
22934
                        //                        text: 'Edit',
22935
                        //                        name: 'edit' + rec.TableName,
22936
                        //                        tbl: rec.TableName,
22937
                        //                        iconCls: 'fa-edit',
22938
                        //                        style: 'font-family: FontAwesome',
22939
                        //                        handler: function () {
22940
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22941
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22942
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22943
                        //                            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
22944
                        //                            if (dtrec) {
22945
                        //                                frmDisplay.reset();
22946
                        //                                frmForm.reset();
22947
                        //                                frmForm.getForm().setValues(dtrec.data);
22948
                        //                                frmDisplay.setHidden(true);
22949
                        //                                frmForm.setHidden(false);
22950
                        //                                grdPanel.setHidden(true);
22951
                        //                                action = "1";
22952
                        //                            }
22953
                        //                        }
22954
                        //                    }
22955
                        //                ]
22956
                        //            },
22957
                        //            //Btn Clear Filter
22958
                        //            {
22959
                        //                text: 'Clear Filters',
22960
                        //                tooltip: 'Clear all filters',
22961
                        //                name: 'clearbtn',
22962
                        //                handler: function () { }
22963
                        //            }
22964
                        //        ],
22965
                        //        //Paging Toolbar
22966
                        //        dockedItems: [
22967
                        //            {
22968
                        //                xtype: 'pagingtoolbar',
22969
                        //                store: 'store' + rec.TableName,
22970
                        //                dock: 'bottom',
22971
                        //                pageSize: me.pagesize,
22972
                        //                displayInfo: true
22973
                        //            }
22974
                        //        ],
22975
                        //        //Event Event itemdblclick
22976
                        //        listeners: {
22977
                        //            'itemdblclick': function (me, record, item, index, e, eOpts) {
22978
                        //                var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
22979
                        //                var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
22980
                        //                var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
22981
                        //                frmDisplay.reset();
22982
                        //                frmForm.reset();
22983
                        //                frmDisplay.getForm().setValues(record.data);
22984
                        //                frmForm.getForm().setValues(record.data);
22985
                        //                frmDisplay.setHidden(false);
22986
                        //                frmForm.setHidden(true);
22987
                        //                grdPanel.setHidden(true);
22988
                        //                action = "1";
22989
                        //            }
22990
                        //        }
22991
                        //    },
22992
                        //    //DISPLAY+TableName (minovaform)
22993
                        //    {
22994
                        //        xtype: 'minovaformnew',
22995
                        //        name: 'DISPLAY' + rec.TableName,
22996
                        //        id: 'DISPLAY' + rec.TableName,
22997
                        //        itemId: 'DISPLAY' + rec.TableName,
22998
                        //        tableName: rec.TableName,
22999
                        //        isDisplay: true,
23000
                        //        hidden: true,
23001
                        //        buttons: [
23002
                        //            {
23003
                        //                text: 'Edit',
23004
                        //                name: 'editDISPLAY' + rec.TableName,
23005
                        //                iconCls: 'fa-edit',
23006
                        //                style: 'font-family: FontAwesome',
23007
                        //                handler: function () {
23008
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23009
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23010
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23011
                        //                    frmDisplay.setHidden(true);
23012
                        //                    frmForm.setHidden(false);
23013
                        //                    grdPanel.setHidden(true);
23014
                        //                }
23015
                        //            },
23016
                        //            {
23017
                        //                text: 'Cancel',
23018
                        //                name: 'cancelDISPLAY' + rec.TableName,
23019
                        //                iconCls: 'fa-reply',
23020
                        //                style: 'font-family: FontAwesome',
23021
                        //                handler: function () {
23022
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23023
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23024
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23025
                        //                    frmDisplay.setHidden(true);
23026
                        //                    frmForm.setHidden(true);
23027
                        //                    grdPanel.setHidden(false);
23028
                        //                }
23029
                        //            }
23030
                        //        ]
23031
                        //    },
23032
                        //    //FORM+TableName (minovaform)
23033
                        //    {
23034
                        //        xtype: 'minovaformnew',
23035
                        //        name: 'FORM' + rec.TableName,
23036
                        //        id: 'FORM' + rec.TableName,
23037
                        //        itemId: 'FORM' + rec.TableName,
23038
                        //        tableName: rec.TableName,
23039
                        //        isDisplay: false,
23040
                        //        hidden: true,
23041
                        //        buttons: [
23042
                        //            {
23043
                        //                text: 'Save',
23044
                        //                name: 'saveFORM' + rec.TableName,
23045
                        //                iconCls: 'fa-save',
23046
                        //                style: 'font-family: FontAwesome',
23047
                        //                handler: function () {
23048
                        //                    var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23049
                        //                    var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23050
                        //                    var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23051
                        //                    var frm = frmForm.getForm();
23052
                        //                    if (frm.isValid()) {
23053
                        //                        var keyField = getParam("KeyID");
23054
                        //                        var table = rec.TableName;
23055
                        //                        var data = Ext.encode(frmForm.getValues());
23056
                        //                        var token = MinovaUtil.SESSIONS.Token;
23057
                        //                        var params = {
23058
                        //                            apiController: 'api/Devt',
23059
                        //                            methodName: 'SaveTableMaster',
23060
                        //                            parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
23061
                        //                        };
23062
                        //                        MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23063
                        //                            var result = Ext.decode(xhr.responseText);
23064
                        //                            var r = Ext.decode(result.data);
23065
                        //                            if (r.success) {
23066
                        //                                frmDisplay.setHidden(true);
23067
                        //                                frmForm.setHidden(true);
23068
                        //                                grdPanel.setHidden(false);
23069
                        //                                grdPanel.getStore().reload();
23070
                        //                                MinovaMessage('Not Null', '000006', '', 'S');
23071
                        //                            } else {
23072
                        //                                MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
23073
                        //                            }
23074
                        //                        });
23075
                        //                    }
23076
                        //                }
23077
                        //            },
23078
                        //            {
23079
                        //                text: 'Delete',
23080
                        //                name: 'deleteFORM' + rec.TableName,
23081
                        //                iconCls: 'fa-trash-o',
23082
                        //                style: 'font-family: FontAwesome ',
23083
                        //                handler: function () {
23084
                        //                    MinovaMessage(' Message ', ' 000007 ', ' ', 'C', function (respone) {
23085
                        //                        if (respone == "yes") {
23086
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23087
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23088
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23089
                        //                            var frm = frmForm.getForm();
23090
                        //                            if (frm.isValid()) {
23091
                        //                                var keyField = getParam("KeyID");
23092
                        //                                var table = rec.TableName;
23093
                        //                                var data = Ext.encode(frmForm.getValues());
23094
                        //                                var token = MinovaUtil.SESSIONS.Token;
23095
                        //                                action = "2";
23096
                        //                                var params = {
23097
                        //                                    apiController: 'api/Devt',
23098
                        //                                    methodName: 'SaveTableMaster',
23099
                        //                                    parameter: 'tableName=' + table + '&data=' + data + '&action=' + action + '&token=' + token
23100
                        //                                };
23101
                        //                                MinovaAjaxPost('/ApiService/Api/', params, function (xhr) {
23102
                        //                                    var result = Ext.decode(xhr.responseText);
23103
                        //                                    var r = Ext.decode(result.data);
23104
                        //                                    if (r.success) {
23105
                        //                                        frmDisplay.setHidden(true);
23106
                        //                                        frmForm.setHidden(true);
23107
                        //                                        grdPanel.setHidden(false);
23108
                        //                                        grdPanel.getStore().reload();
23109
                        //                                        MinovaMessage('Not Null', '000006', '', 'S');
23110
                        //                                    } else {
23111
                        //                                        MinovaMessage(' Not Null ', ' 000005 ', r.message.text, 'E');
23112
                        //                                    }
23113
                        //                                });
23114
                        //                            }
23115
                        //                        }
23116
                        //                    });
23117
                        //                }
23118
                        //            },
23119
                        //            {
23120
                        //                text: 'Cancel',
23121
                        //                name: 'cancelFORM' + rec.TableName,
23122
                        //                iconCls: 'fa-reply',
23123
                        //                style: 'font-family: FontAwesome',
23124
                        //                handler: function () {
23125
                        //                    MinovaMessage('Message', '000011', '', 'C', function (respone) {
23126
                        //                        if (respone == "yes") {
23127
                        //                            var frmDisplay = Ext.ComponentQuery.query('[name=DISPLAY' + rec.TableName + ']')[0];
23128
                        //                            var frmForm = Ext.ComponentQuery.query('[name=FORM' + rec.TableName + ']')[0];
23129
                        //                            var grdPanel = Ext.ComponentQuery.query('[name=GRID' + rec.TableName + ']')[0];
23130
                        //                            frmDisplay.setHidden(true);
23131
                        //                            frmForm.setHidden(true);
23132
                        //                            grdPanel.setHidden(false);
23133
                        //                            grdPanel.getStore().reload();
23134
                        //                        }
23135
                        //                    });
23136
                        //                }
23137
                        //            }
23138
                        //        ]
23139
                        //    }
23140
                        //]
23141
                        layoutType: rec.LayoutType //dikomen kalau mau test hilangkan items, bikin layout kacau                       
23142
                    })
23143
                }
23144
            })
23145
        }
23146
        Ext.applyIf(me, {
23147
            items: _items,
23148
            store: hasil
23149
        });
23150
        me.callParent(arguments);
23151
        this.bindStore(this.store, true);
23152
    },
23153

    
23154
    getStoreListeners: function () {
23155
        var me = this;
23156

    
23157
        return {
23158
            refresh: me.onDataRefresh,
23159
            /*replace: me.onReplace,
23160
            add: me.onAdd,
23161
            remove: me.onRemove,
23162
            update: me.onUpdate,
23163
            clear: me.onDataRefresh,
23164
            beginupdate: me.onBeginUpdate,
23165
            endupdate: me.onEndUpdate*/
23166
        };
23167
    },
23168

    
23169
    onBindStore: function (store) {
23170
        //this.onDataRefresh(store);
23171
    },
23172

    
23173
    onDataRefresh: function (store) {
23174
        var me = this,
23175
            titleField = me.getTitleField();
23176

    
23177
        store.each(function (record) {
23178
            var tab = me.getTabByRecord(record);
23179

    
23180
            if (!tab) {
23181
                me.add({
23182
                    title: record.get(titleField)
23183
                });
23184
            }
23185
        });
23186

    
23187
        if (!me.getActiveTab()) {
23188
            me.setActiveTab(0);
23189
        }
23190
    },
23191

    
23192
    getTabByRecord: function (record) {
23193
        var items = this.items,
23194
            tab;
23195

    
23196
        items.each(function (item) {
23197
            if (item.$record === record) {
23198
                tab = item;
23199

    
23200
                return false;
23201
            }
23202
        });
23203

    
23204
        return tab;
23205
    }
23206
});
23207

    
23208
Ext.define('MinovaUtil.MinovaES.MinovaTabListORMNew', {
23209
    extend: 'Ext.tab.Panel',
23210
    alias: ['widget.MinovaTabListORMNew'],
23211
    mixins: [
23212
        'Ext.util.StoreHolder'
23213
    ],
23214
    config: {
23215
        titleField: 'title'
23216
    },
23217
    id: 'mainTab',
23218
    //moduleType: undefined,
23219
    //tablenameheader: undefined,
23220
    //langId: undefined,
23221
    //param: undefined,
23222
    //frame: true,
23223
    //style: {
23224
    //    background: '#ffc'
23225
    //},
23226
    //cls: 'modern-tabpanel',
23227
    //bodyStyle: {
23228
    //    background: '#ffc',
23229
    //    padding: '10px'
23230
    //},
23231
    defaults: {
23232
        scrollable: true,
23233
        iconAlign: 'top',
23234
        userSelectable: {
23235
            bodyElement: true
23236
        }
23237
    },
23238
    tabBar: {
23239
        layout: { pack: 'center' }
23240
    },
23241
    initComponent: function () {
23242
        var me = this;
23243
        var hasil = null;
23244
        var _items = [];
23245
        Ext.applyIf(me, {
23246
            items: _items,
23247
            //store: hasil
23248
            store: Ext.create('Ext.data.Store', {
23249
                storeId: 'gridMenuMDOrm',
23250
                autoLoad: false,
23251
                proxy: {
23252
                    method: 'POST',
23253
                    type: 'ajax',
23254
                    //url: '../../extended/data/menu_md_orm.js',
23255
                    reader: {
23256
                        type: 'json',
23257
                        root: 'data'
23258
                    }
23259
                }
23260
            }),
23261
        });
23262
        me.callParent(arguments);
23263
        this.bindStore(this.store, true);
23264
    },
23265

    
23266
    //listeners: {
23267
    //    'viewready': function (grid) {
23268
    //        grid.getSelectionModel().select(0);
23269
    //        grid.fireEvent('rowClick', grid, 0);
23270
    //    }
23271
    //},
23272
    getStoreListeners: function () {
23273
        var me = this;
23274

    
23275
        return {
23276
            refresh: me.onDataRefresh,
23277
            /*replace: me.onReplace,
23278
            add: me.onAdd,
23279
            remove: me.onRemove,
23280
            update: me.onUpdate,
23281
            clear: me.onDataRefresh,
23282
            beginupdate: me.onBeginUpdate,
23283
            endupdate: me.onEndUpdate*/
23284
        };
23285
    },
23286

    
23287
    onBindStore: function (store) {
23288
        this.onDataRefresh(store);
23289
    },
23290

    
23291
    onDataRefresh: function (store) {
23292
        var me = this,
23293
            titleField = me.getTitleField();
23294
        me.removeAll();
23295
        store.each(function (record) {
23296
            var tab = me.getTabByRecord(record);
23297

    
23298
            if (!tab) {
23299
                me.add({
23300
                    iconCls: 'fa fa-address-book-o', //record.get('IconCls')
23301
                    title: record.get('LabelName'),
23302
                    name: 'panelTab' + record.get('TableName'),
23303
                    record: record, //dipanggil di mainNew1Controller.js
23304
                    tbl: record.get('TableName'),
23305
                    layoutType: record.get('LayoutType')
23306
                });
23307
            }
23308
        });
23309

    
23310
        if (!me.getActiveTab()) {
23311
            me.setActiveTab(0);
23312
        }
23313
    },
23314

    
23315
    getTabByRecord: function (record) {
23316
        var items = this.items,
23317
            tab;
23318

    
23319
        items.each(function (item) {
23320
            //if (item.$record === record) {
23321
            if (item.record === record) {
23322
                tab = item;
23323

    
23324
                return false;
23325
            }
23326
        });
23327

    
23328
        return tab;
23329
    }
23330
});
23331

    
23332
/* BEGIN YN 20211216 */
23333
/*NonEditableGrid ESS Generator YN 20211216 */
23334
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGrid', {
23335
    extend: 'Ext.form.Panel',
23336
    alias: ['widget.minovaworkflownoneditablegrid'],
23337
    requires: [
23338
        'Ext.grid.plugin.CellEditing',
23339
        'Ext.grid.RowNumberer',
23340
        'Ext.grid.Panel',
23341
    ],
23342
    cls: 'grid-ess',
23343
    anchor: '100%',
23344
    tableName: undefined,
23345
    tableNameT: undefined,
23346
    tableNameKey: undefined,
23347
    tableNameTKey: undefined,
23348
    hideButton: undefined,
23349
    multiSelect: undefined,
23350
    formname: this.name,
23351
    bizprocid: undefined,
23352
    bizflowid: undefined,
23353
    taskid: undefined,
23354
    features: undefined,
23355
    //height: 400,
23356
    minHeight: 20,
23357
    maxHeight: 500,
23358
    headerLayout: undefined,
23359
    summaryType: undefined,
23360
    labelText: undefined,
23361
    find: function (searchData, target, accum = []) {
23362
        target.forEach((f) => {
23363
            if (f.columns) {
23364
                //find(searchData, f.columns, accum)
23365
                //console.log(f.columns);
23366
                const newf = f.columns.map(o => {
23367
                    if (o.dataIndex == searchData.dataIndex) {
23368
                        searchData.menuDisabled = true;
23369
                        return searchData;
23370
                    } else {
23371
                        o.menuDisabled = true;
23372
                        return o
23373
                    }
23374
                });                
23375
                accum.push({
23376
                    header: f.header,
23377
                    //columns: {
23378
                    //    defaults: {
23379
                    //        menuDisabled: true
23380
                    //    },
23381
                    //    items: newf
23382
                    //}
23383
                    columns: newf
23384
                });
23385
            } else {
23386
                if (f.dataIndex.includes(searchData.dataIndex)) {
23387
                    accum.push(searchData);
23388
                }
23389
                else {
23390
                    accum.push(f);
23391
                }
23392
            }
23393
        })
23394
        return accum;
23395

    
23396
    },
23397
    initComponent: function () {
23398
        var me = this;
23399
        var isLookup = me.isLookup;
23400
        var hide_ = false;
23401
        var widthLock = 250;
23402
        var checkSelection = '';
23403
        if (me.hideButton == true) {
23404
            hide_ = true;
23405
        }
23406
        if (me.multiSelect) {
23407
            locking = false;
23408
            checkSelection = 'checkboxmodel';
23409
            widthLock = 40;
23410
        }
23411
        var tableName = me.tableName;
23412
        var features = me.features;
23413
        var cols = [];
23414
        var fieldStore = [];
23415
        var _url = 'GetAllField';
23416
        var hasil = null;
23417
        var height = me.height;
23418
        var storeID = 'store' + me.tableName;
23419
        var gridName = 'grid' + me.name;
23420
        if (me.storeName) {
23421
            storeID = me.storeName;
23422
        }
23423
        var LangID = MinovaUtil.GetLangID();
23424
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
23425
        Ext.Ajax.request({
23426
            async: false,
23427
            method: 'POST',
23428
            url: '/UserControl/GetStore',
23429
            params: {
23430
                tableName: 'PDSWFSTRUCTUREFIELD',
23431
                param: parameter
23432
            },
23433
            success: function (response) {
23434
                var results = Ext.decode(response.responseText);
23435
                hasil = results.data;
23436
            }
23437
        });
23438
        //cols.push({
23439
        //    xtype: 'rownumberer'
23440
        //});
23441
        var addData = 'var data={';
23442
        if (hasil.length > 0) {
23443
            Ext.each(hasil, function (rec) {
23444
                fieldStore.push(rec.FieldName);
23445
                if (rec.FieldName != 'Sequence') {
23446
                    addData = addData + rec.FieldName + ":" + "'',";
23447
                }
23448
                var null_ = null;
23449
                var ReadOnly_ = false;
23450
                if (rec.IsRequired == '1') {
23451
                    null_ = false;
23452
                } else {
23453
                    null_ = true;
23454
                }
23455
                var Hidden_ = false;
23456
                if (rec.IsReadOnly == '1') {
23457
                    ReadOnly_ = true;
23458
                }
23459
                if (rec.IsVisible == '1') {
23460
                    switch (rec.FormatRef) {
23461
                        case "date":
23462
                            cols.push({
23463
                                xtype: 'minovadatecolumn',
23464
                                hidden: Hidden_,
23465
                                text: rec.HeaderTitle,
23466
                                dataIndex: rec.FieldName,
23467
                                filter: {
23468
                                    itemDefaults: {
23469
                                        emptyText: 'Search for...',
23470
                                    }
23471
                                }
23472
                            });
23473
                            break
23474
                        case "amount":
23475
                            cols.push({
23476
                                xtype: 'minovacurrancycolumn',
23477
                                align: 'right',
23478
                                text: rec.HeaderTitle,
23479
                                dataIndex: rec.FieldName,
23480
                                hidden: Hidden_,
23481
                                filter: {
23482
                                    itemDefaults: {
23483
                                        emptyText: 'Search for...'
23484
                                    }
23485
                                }
23486
                            });
23487
                            break
23488
                        default:
23489
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
23490
                                cols.push({
23491
                                    text: rec.HeaderTitle,
23492
                                    dataIndex: rec.FieldName,
23493
                                    width: 100,
23494
                                    filter: {
23495
                                        type: 'string',
23496
                                        itemDefaults: {
23497
                                            emptyText: 'Search for...'
23498
                                        }
23499
                                    }
23500
                                });
23501
                            } else if (rec.SearchType == '0') {
23502
                                var valueField = null;
23503
                                var displayValue = null;
23504
                                var TableRef = undefined;
23505
                                if (rec.TableRef != '') {
23506
                                    TableRef = rec.TableRef;
23507
                                    Ext.Ajax.request({
23508
                                        async: false,
23509
                                        method: 'POST',
23510
                                        url: '/UserControl/GetStore',
23511
                                        params: {
23512
                                            tableName: 'SDATATABLEFIELD',
23513
                                            param: 'TableName[equal]' + rec.TableRef
23514
                                        },
23515
                                        success: function (response) {
23516
                                            var results = Ext.decode(response.responseText);
23517
                                            data_ = results.data;
23518
                                            if (data_ != undefined) {
23519
                                                valueField_ = $.grep(data_, function (r) {
23520
                                                    return r.ValueField == '1'
23521
                                                });
23522
                                                valueField = valueField_[0].FieldName
23523
                                                displayValue_ = $.grep(data_, function (r) {
23524
                                                    return r.DisplayValue == '1'
23525
                                                });
23526
                                                displayValue = displayValue_[0].FieldName
23527
                                            }
23528
                                        }
23529
                                    });
23530
                                }
23531
                                Ext.create('Ext.data.Store', {
23532
                                    storeId: 'store_' + me.tableName + rec.FieldName,
23533
                                    autoLoad: true,
23534
                                    proxy: {
23535
                                        method: 'POST',
23536
                                        type: 'ajax',
23537
                                        url: '/UserControl/GetStoreAuth',
23538
                                        extraParams: {
23539
                                            tableName: TableRef,
23540
                                            param: rec.ParamCombo,
23541
                                            menuId: MinovaUtil.GetMenuID()
23542
                                        },
23543
                                        reader: {
23544
                                            type: 'json',
23545
                                            root: 'data',
23546
                                            totalProperty: 'data[0].TotalCount'
23547
                                        }
23548
                                    }
23549
                                });
23550
                                cols.push({
23551
                                    //xtype : 'minovacombocolumn',
23552
                                    hidden: Hidden_,
23553
                                    text: rec.HeaderTitle,
23554
                                    dataIndex: rec.FieldName,
23555
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
23556
                                    summaryType: function (records) {
23557
                                        var suma = 0;
23558
                                        if (me.summaryType == 'average') {
23559
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
23560
                                            Ext.each(records, function (record, index) {
23561
                                                if (record.get(rec.FieldName)) {
23562
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
23563
                                                }
23564
                                            });
23565
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
23566
                                        }
23567
                                        else if (me.summaryType == 'sum') {
23568
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
23569
                                            Ext.each(records, function (record, index) {
23570
                                                if (record.get(rec.FieldName)) {
23571
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
23572
                                                }
23573
                                            });
23574
                                        }
23575
                                        
23576
                                        return suma;
23577
                                    },
23578
                                    //valueField : valueField,
23579
                                    //displayField : displayValue,
23580
                                    //store : 'store_' + me.tableName + rec.FieldName,
23581
                                    //renderer: function (value) {
23582
                                    //    var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
23583
                                    //    var index = store.find(valueField, value);
23584
                                    //    var val = "";
23585
                                    //    if (index != -1) {
23586
                                    //        var rc = store.getAt(index);
23587
                                    //        val = rc.get(displayValue);
23588
                                    //    } else {
23589
                                    //        val = value;
23590
                                    //    }
23591
                                    //    return val;
23592
                                    //},
23593
                                    //filter: {
23594
                                    //    type: 'list',
23595
                                    //    itemDefaults: {
23596
                                    //        emptyText: 'Search for...'
23597
                                    //    }
23598
                                    //}
23599
                                });
23600
                            } else if (rec.SearchType == '5') {
23601
                                var valueField = null;
23602
                                var displayValue = null;
23603
                                var AdditionaldisplayValue = null;
23604
                                var TableRef = undefined;
23605
                                if (rec.TableRef != '') {
23606
                                    TableRef = rec.TableRef;
23607
                                    Ext.Ajax.request({
23608
                                        async: false,
23609
                                        method: 'POST',
23610
                                        url: '/UserControl/GetStore',
23611
                                        params: {
23612
                                            tableName: 'SDATATABLEFIELD',
23613
                                            param: 'TableName[equal]' + rec.TableRef
23614
                                        },
23615
                                        success: function (response) {
23616
                                            var results = Ext.decode(response.responseText);
23617
                                            data_ = results.data;
23618
                                            if (data_ != undefined) {
23619
                                                valueField_ = $.grep(data_, function (r) {
23620
                                                    return r.ValueField == '1'
23621
                                                });
23622
                                                if (valueField_.length > 0) {
23623
                                                    valueField = valueField_[0].FieldName
23624
                                                }
23625

    
23626
                                                displayValue_ = $.grep(data_, function (r) {
23627
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
23628
                                                });
23629
                                                if (displayValue_.length > 0) {
23630
                                                    displayValue = displayValue_[0].FieldName;
23631
                                                }
23632
                                                if (displayValue_.length >= 2) {
23633
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
23634
                                                }
23635
                                            }
23636
                                        }
23637
                                    });
23638
                                }
23639
                                Ext.create('Ext.data.Store', {
23640
                                    storeId: 'store_' + me.tableName + rec.FieldName,
23641
                                    autoLoad: true,
23642
                                    proxy: {
23643
                                        method: 'POST',
23644
                                        type: 'ajax',
23645
                                        url: '/UserControl/GetStoreAuth',
23646
                                        extraParams: {
23647
                                            tableName: TableRef,
23648
                                            param: rec.ParamCombo,
23649
                                            menuId: MinovaUtil.GetMenuID()
23650
                                        },
23651
                                        reader: {
23652
                                            type: 'json',
23653
                                            root: 'data',
23654
                                            totalProperty: 'data[0].TotalCount'
23655
                                        }
23656
                                    }
23657
                                });
23658
                                cols.push({
23659
                                    //xtype : 'minovacombocolumn',
23660
                                    hidden: Hidden_,
23661
                                    text: rec.HeaderTitle,
23662
                                    dataIndex: rec.FieldName,
23663
                                    //valueField : valueField,
23664
                                    //displayField : displayValue,
23665
                                    //store : 'store_' + me.tableName + rec.FieldName,
23666
                                    tpl: Ext.create('Ext.XTemplate',
23667
                                        '<ul class="x-list-plain"><tpl for=".">',
23668
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
23669
                                        '</tpl></ul>'),
23670
                                    displayTpl: Ext.create('Ext.XTemplate',
23671
                                        '<tpl for=".">',
23672
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
23673
                                        '</tpl>'),
23674
                                    renderer: function (value) {
23675
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
23676
                                        var index = store.find(valueField, value);
23677
                                        var val = "";
23678
                                        if (index != -1) {
23679
                                            var rc = store.getAt(index);
23680
                                            //val = rc.get(displayValue);
23681
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
23682
                                        } else {
23683
                                            val = value;
23684
                                        }
23685
                                        return val;
23686
                                    },
23687
                                    filter: {
23688
                                        type: 'list',
23689
                                        itemDefaults: {
23690
                                            emptyText: 'Search for...'
23691
                                        }
23692
                                    }
23693
                                });
23694
                            } else if (rec.SearchType == '2') {
23695
                                var triger = (rec.TriggerCombo).split('$');
23696
                                var targetField_ = triger[0];
23697
                                var fieldValue_ = triger[1];
23698
                                cols.push({
23699
                                    text: rec.HeaderTitle,
23700
                                    hidden: Hidden_,
23701
                                    dataIndex: rec.FieldName,
23702
                                    filter: {
23703
                                        itemDefaults: {
23704
                                            emptyText: 'Search for...'
23705
                                        }
23706
                                    }
23707
                                });
23708
                            } else if (rec.SearchType == '3') {
23709
                                cols.push({
23710
                                    text: rec.HeaderTitle,
23711
                                    hidden: Hidden_,
23712
                                    dataIndex: rec.FieldName,
23713
                                    filter: {
23714
                                        itemDefaults: {
23715
                                            emptyText: 'Search for...'
23716
                                        }
23717
                                    }
23718
                                });
23719
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
23720
                                var triger = (rec.TriggerCombo).split('&');
23721
                                var targetField_ = triger[0];
23722
                                var fieldValue_ = triger[0];
23723
                                cols.push({
23724
                                    text: rec.HeaderTitle,
23725
                                    hidden: Hidden_,
23726
                                    dataIndex: rec.FieldName,
23727
                                    filter: {
23728
                                        itemDefaults: {
23729
                                            emptyText: 'Search for...'
23730
                                        }
23731
                                    }
23732
                                });
23733
                            } else if (rec.SearchType == '4' && isLookup != true) {
23734
                                cols.push({
23735
                                    text: rec.HeaderTitle,
23736
                                    hidden: Hidden_,
23737
                                    dataIndex: rec.FieldName,
23738
                                    filter: {
23739
                                        itemDefaults: {
23740
                                            emptyText: 'Search for...'
23741
                                        }
23742
                                    }
23743
                                });
23744
                            } else if (rec.FixedValue != '') { // add by taufan
23745
                                cols.push({
23746
                                    text: rec.HeaderTitle,
23747
                                    hidden: Hidden_,
23748
                                    dataIndex: rec.FieldName,
23749
                                    filter: {
23750
                                        itemDefaults: {
23751
                                            emptyText: 'Search for...'
23752
                                        }
23753
                                    },
23754
                                    renderer: function (value) {
23755
                                        var val = "";
23756
                                        var storeData = [];
23757
                                        var str = rec.FixedValue;
23758
                                        var hasil = str.split('||');
23759
                                        hasil.forEach(function (h) {
23760
                                            store_ = h.split('=')
23761
                                            storeData.push({
23762
                                                code: store_[0],
23763
                                                desc: store_[1]
23764
                                            });
23765
                                        });
23766
                                        var item = storeData.find(x => x.code == value);
23767
                                        if (item != undefined) {
23768
                                            val = item.desc;
23769
                                        }
23770
                                        return val;
23771
                                    }
23772
                                });
23773
                            } else {
23774
                                _xtype = 'textfield';
23775
                                if (rec.Length > 250) {
23776
                                    _xtype = 'textareafield';
23777
                                }
23778
                                var _custumFunc = null;
23779
                                Ext.Ajax.request({
23780
                                    async: false,
23781
                                    method: 'POST',
23782
                                    url: '/UserControl/GetStore',
23783
                                    params: {
23784
                                        tableName: 'SDATATABLEFIELD',
23785
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
23786
                                    },
23787
                                    success: function (response) {
23788
                                        var results = Ext.decode(response.responseText);
23789
                                        data_ = results.data[0];
23790
                                        if (data_ != undefined) {
23791
                                            _custumFunc = data_.SelectFunction;
23792
                                        }
23793
                                    }
23794
                                });
23795
                                cols.push({
23796
                                    text: rec.HeaderTitle,
23797
                                    xtype: 'gridcolumn',
23798
                                    hidden: Hidden_,
23799
                                    dataIndex: rec.FieldName,
23800
                                    filter: {
23801
                                        itemDefaults: {
23802
                                            emptyText: 'Search for...'
23803
                                        }
23804
                                    },
23805
                                    cellWrap: true,
23806
                                    //autoSizeColumn: true,
23807
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
23808
                                    flex: (rec.Length == 'EISelfComent') ? 1 : 0,
23809
                                    renderer: function (v) {
23810
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
23811
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
23812
                                        return result
23813
                                    }
23814
                                });
23815
                            }
23816
                            break
23817
                    }
23818
                } else {
23819
                    cols.push({
23820
                        text: rec.HeaderTitle,
23821
                        hidden: Hidden_,
23822
                        dataIndex: rec.FieldName,
23823
                        hidden: true,
23824
                        filter: {
23825
                            itemDefaults: {
23826
                                emptyText: 'Search for...'
23827
                            }
23828
                        }
23829
                    });
23830
                }
23831
            });
23832

    
23833
        };
23834
        //Sesuaikan Header Layout
23835
        var col = me.headerLayout;
23836
        if (me.headerLayout != undefined) {
23837
            cols.forEach((f) => {
23838
                col = me.find(f, col);
23839
            })
23840
            cols = col;
23841
        }
23842
        addData = addData + "}";
23843
        Ext.applyIf(me, {            
23844
            items: [{
23845
                xtype: 'grid',
23846
                id: gridName,
23847
                name: gridName,
23848
                tableName: me.tableName,
23849
                tableNameT: me.tableNameT,
23850
                tableNameKey: me.tableNameKey,
23851
                tableNameTKey: me.tableNameTKey,
23852
                minHeight: me.minHeight,
23853
                maxHeight: me.maxHeight,
23854
                //height: me.height,                
23855
                //scrollable: true,
23856
                //flex: 1,
23857
                addFlag: true,
23858
                deleteFlag: true,
23859
                store: Ext.create('Ext.data.Store', {
23860
                    storeId: storeID,
23861
                    fields: fieldStore,
23862
                    //groupField: 'QuestionGroup',
23863
                    grouper: {
23864
                        sortProperty: 'SeqQuest',
23865
                        groupFn: function (record) {
23866
                            return record.get('QuestionGroup');
23867
                        }
23868
                    },
23869
                    proxy: {
23870
                        method: 'POST',
23871
                        type: 'ajax',
23872
                        url: '',
23873
                        reader: {
23874
                            type: 'json',
23875
                            root: 'data'
23876
                        }
23877
                    }
23878
                }),
23879
                dockedItems: [{
23880
                    xtype: 'toolbar',
23881
                    dock: 'bottom',
23882
                    items: [
23883
                        {
23884
                            xtype: 'label',
23885
                            html: me.labelText,
23886
                            margin: '0 0 10 0'
23887
                        },
23888
                        {
23889
                            text: 'Add',
23890
                            hidden: hide_,
23891
                            name: tableName + 'Add',
23892
                            iconCls: 'fa-plus-circle',
23893
                            style: 'font-family: FontAwesome',
23894
                            handler: function () {
23895
                                var grid = Ext.getCmp(gridName);
23896
                                if (grid.addFlag === true) {
23897
                                    var store = Ext.StoreMgr.lookup(storeID)
23898
                                    idx = store.getCount();
23899
                                    var action = getParam('action');
23900
                                    var data = '';
23901
                                    var Sequence = 0;
23902
                                    if (idx == 0) {
23903
                                        Sequence = 1;
23904
                                    } else {
23905
                                        Sequence = 1 + idx;
23906
                                    }
23907
                                    var seq = 'Sequence';
23908
                                    var SequenceValue = Sequence;
23909
                                    eval(addData);
23910
                                    data[seq] = SequenceValue;
23911
                                    store.insert(idx, data);
23912
                                }
23913
                            }
23914
                        },
23915
                        {
23916
                            text: 'Delete',
23917
                            hidden: hide_,
23918
                            name: tableName + 'DeleteText',
23919
                            iconCls: 'fa-trash-o',
23920
                            style: 'font-family: FontAwesome',
23921
                            handler: function () {
23922
                                var grid = Ext.getCmp(gridName);
23923
                                if (grid.deleteFlag === true) {
23924
                                    var me = this,
23925
                                        store = Ext.StoreMgr.lookup(storeID)
23926
                                    var grid = Ext.getCmp(gridName);
23927
                                    Ext.MessageBox.show({
23928
                                        title: 'Remove tab',
23929
                                        msg: "This will remove. Do you want to continue?",
23930
                                        buttons: Ext.MessageBox.YESNO,
23931
                                        fn: function (choice) {
23932
                                            console.log(choice);
23933
                                            if (choice === 'yes') {
23934
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
23935
                                                if (selection) {
23936
                                                    store.remove(selection);
23937
                                                }
23938
                                            }
23939
                                        }
23940
                                    });
23941
                                }
23942
                            }
23943
                        },
23944
                        {
23945
                            text: 'Edit',
23946
                            hidden: hide_,
23947
                            name: tableName + 'EditText',
23948
                            bizprocid: me.bizprocid,
23949
                            taskid: me.taskid,
23950
                            TableName: tableName,
23951
                            iconCls: 'fa-edit',
23952
                            style: 'font-family: FontAwesome',
23953
                            handler: function () {
23954
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
23955
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
23956
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23957
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
23958
                                //if (frmForm == undefined) {
23959
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
23960
                                //        bizprocid: this.bizprocid,
23961
                                //        taskid: this.taskid,
23962
                                //        name: 'form' + this.TableName,
23963
                                //        tableName: this.TableName,
23964
                                //    });
23965
                                //}
23966
                                ////frmForm.reset();
23967
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
23968
                                //frmForm.show();
23969

    
23970
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
23971
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23972
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
23973
                                if (dtrec) {
23974
                                    //frmDisplay.reset();
23975
                                    frmForm.reset();
23976
                                    frmForm.getForm().setValues(dtrec.data);
23977
                                    //frmDisplay.setHidden(true);
23978
                                    frmForm.setHidden(false);
23979
                                    //grdPanel.setHidden(true);
23980
                                    action = "1";
23981
                                }
23982

    
23983
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
23984
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
23985
                                //if (dtrec) {
23986
                                //    var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
23987
                                //    var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
23988
                                //    var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
23989
                                //    pnlT.setHidden(false);                                   
23990
                                //}
23991
                            }
23992
                        }
23993
                    ]
23994
                }
23995
                ],
23996
                columns: {
23997
                    defaults: {
23998
                        menuDisabled: true
23999
                    },
24000
                    items: cols
24001
                },
24002
                //selType: checkSelection,
24003
                //plugins: {
24004
                //    ptype: 'actionColumnRowEditing', //rowediting
24005
                //    pluginId: 'rowEditing',
24006
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
24007
                //    clicksToEdit: 2,
24008
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
24009
                //    listeners: {}
24010
                //},
24011
                listeners: {
24012
                    //'beforeedit': function (editor) {
24013
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
24014
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
24015
                    //}
24016
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
24017
                        var me = this;
24018
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24019
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24020
                        var dtrec = record;
24021
                        if (dtrec) {
24022
                            //frmDisplay.reset();
24023
                            //frmForm.reset();
24024
                            frmForm.getForm().setValues(dtrec.data);
24025
                            //grdPanel.setHeight(0);
24026
                            //frmDisplay.setHidden(true);
24027
                            frmForm.setHidden(false);
24028
                            //grdPanel.setHidden(true);
24029

    
24030
                            //var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24031
                            //var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24032
                            //var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24033
                            //pnlT.setTitle('<div style=\"font-size:14px; font-weight: bold;\">Goal ' + dtrec.data[me.tableNameKey] + '-Tasks</div>');
24034
                            //pnlT.setHidden(false);
24035

    
24036
                            action = "1";
24037
                        }
24038
                    },
24039
                    'itemclickx': function (this_, record, item, index, e, eOpts) {
24040
                        var me = this;
24041
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24042
                        frmForm.setHidden(true);
24043
                        ////var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
24044
                        //var dtrec = record;
24045
                        //if (dtrec) {
24046
                        //    //frmDisplay.reset();
24047
                        //    //frmForm.reset();
24048
                        //    frmForm.getForm().setValues(dtrec.data);
24049
                        //    //grdPanel.setHeight(0);
24050
                        //    //frmDisplay.setHidden(true);
24051
                        //    frmForm.setHidden(false);
24052
                        //    //grdPanel.setHidden(true);
24053
                        //    action = "1";
24054
                        //}
24055
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24056
                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24057
                        if (dtrec) {
24058
                            var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24059
                            var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24060
                            var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24061
                            pnlT.setTitle('<div style=\"font-size:14px; font-weight: bold;\">Goal ' + dtrec.data[me.tableNameKey] + '-Tasks</div>');
24062
                            pnlT.setHidden(false);
24063
                        }
24064
                    }
24065
                },
24066
                features: features,
24067
                viewConfig: {
24068
                    listeners: {
24069
                        refresh: function (dataview) {
24070
                            Ext.each(dataview.panel.columns, function (column) {
24071
                                //column.autoSize();
24072
                            })
24073
                        }
24074
                    }
24075
                }
24076
            }
24077
            ]
24078
        });
24079
        me.callParent(arguments);  
24080
    },
24081
    listeners: {
24082
        boxready: function (dataview) {
24083
            var grd = Ext.ComponentQuery.query('[name=grid' + this.tableName + ']')[0];
24084
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
24085
        }
24086
    }
24087
});
24088

    
24089
/*NonEditableGridT ESS Generator YN 20211216 */
24090
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGridT', {
24091
    extend: 'Ext.form.Panel',
24092
    alias: ['widget.minovaworkflownoneditablegridT'],
24093
    requires: [
24094
        'Ext.grid.plugin.CellEditing',
24095
        'Ext.grid.RowNumberer',
24096
        'Ext.grid.Panel',
24097
    ],
24098
    anchor: '100%',
24099
    tableName: undefined,
24100
    tableNameP: undefined,
24101
    tableNameKey: undefined,
24102
    tableNameFKey: undefined,
24103
    tableNamePKey: undefined,
24104
    parentKey: undefined,
24105
    hideButton: undefined,
24106
    multiSelect: undefined,
24107
    formname: this.name,
24108
    bizprocid: undefined,
24109
    bizflowid: undefined,
24110
    taskid: undefined,
24111
    features: undefined,
24112
    height: 400,
24113
    minHeight: 20,
24114
    maxHeight: 400,
24115
    initComponent: function () {
24116
        var me = this;
24117
        var isLookup = me.isLookup;
24118
        var hide_ = false;
24119
        var widthLock = 250;
24120
        var checkSelection = '';
24121
        if (me.hideButton == true) {
24122
            hide_ = true;
24123
        }
24124
        if (me.multiSelect) {
24125
            locking = false;
24126
            checkSelection = 'checkboxmodel';
24127
            widthLock = 40;
24128
        }
24129
        var tableName = me.tableName;
24130
        var features = me.features;
24131
        var cols = [];
24132
        var fieldStore = [];
24133
        var _url = 'GetAllField';
24134
        var hasil = null;
24135
        var height = me.height;
24136
        var storeID = 'store' + me.tableName + '_' + me.parentKey;
24137
        var gridName = 'grid' + me.name;
24138
        if (me.storeName) {
24139
            storeID = me.storeName;
24140
        }
24141
        var LangID = MinovaUtil.GetLangID();
24142
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24143
        Ext.Ajax.request({
24144
            async: false,
24145
            method: 'POST',
24146
            url: '/UserControl/GetStore',
24147
            params: {
24148
                tableName: 'PDSWFSTRUCTUREFIELD',
24149
                param: parameter
24150
            },
24151
            success: function (response) {
24152
                var results = Ext.decode(response.responseText);
24153
                hasil = results.data;
24154
            }
24155
        });
24156
        //cols.push({
24157
        //    xtype: 'rownumberer'
24158
        //});
24159
        var addData = 'var data={';
24160
        if (hasil.length > 0) {
24161
            Ext.each(hasil, function (rec) {
24162
                fieldStore.push(rec.FieldName);
24163
                if (rec.FieldName != 'Sequence') {
24164
                    addData = addData + rec.FieldName + ":" + "'',";
24165
                }
24166
                var null_ = null;
24167
                var ReadOnly_ = false;
24168
                if (rec.IsRequired == '1') {
24169
                    null_ = false;
24170
                } else {
24171
                    null_ = true;
24172
                }
24173
                var Hidden_ = false;
24174
                if (rec.IsReadOnly == '1') {
24175
                    ReadOnly_ = true;
24176
                }
24177
                if (rec.IsVisible == '1') {
24178
                    switch (rec.FormatRef) {
24179
                        case "date":
24180
                            cols.push({
24181
                                xtype: 'minovadatecolumn',
24182
                                hidden: Hidden_,
24183
                                text: rec.HeaderTitle,
24184
                                dataIndex: rec.FieldName,
24185
                                filter: {
24186
                                    itemDefaults: {
24187
                                        emptyText: 'Search for...',
24188
                                    }
24189
                                }
24190
                            });
24191
                            break
24192
                        case "amount":
24193
                            cols.push({
24194
                                xtype: 'minovacurrancycolumn',
24195
                                align: 'right',
24196
                                text: rec.HeaderTitle,
24197
                                dataIndex: rec.FieldName,
24198
                                hidden: Hidden_,
24199
                                filter: {
24200
                                    itemDefaults: {
24201
                                        emptyText: 'Search for...'
24202
                                    }
24203
                                }
24204
                            });
24205
                            break
24206
                        default:
24207
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
24208
                                cols.push({
24209
                                    text: rec.HeaderTitle,
24210
                                    dataIndex: rec.FieldName,
24211
                                    width: 100,
24212
                                    filter: {
24213
                                        type: 'string',
24214
                                        itemDefaults: {
24215
                                            emptyText: 'Search for...'
24216
                                        }
24217
                                    }
24218
                                });
24219
                            } else if (rec.SearchType == '0') {
24220
                                var valueField = null;
24221
                                var displayValue = null;
24222
                                var TableRef = undefined;
24223
                                if (rec.TableRef != '') {
24224
                                    TableRef = rec.TableRef;
24225
                                    Ext.Ajax.request({
24226
                                        async: false,
24227
                                        method: 'POST',
24228
                                        url: '/UserControl/GetStore',
24229
                                        params: {
24230
                                            tableName: 'SDATATABLEFIELD',
24231
                                            param: 'TableName[equal]' + rec.TableRef
24232
                                        },
24233
                                        success: function (response) {
24234
                                            var results = Ext.decode(response.responseText);
24235
                                            data_ = results.data;
24236
                                            if (data_ != undefined) {
24237
                                                valueField_ = $.grep(data_, function (r) {
24238
                                                    return r.ValueField == '1'
24239
                                                });
24240
                                                valueField = valueField_[0].FieldName
24241
                                                displayValue_ = $.grep(data_, function (r) {
24242
                                                    return r.DisplayValue == '1'
24243
                                                });
24244
                                                displayValue = displayValue_[0].FieldName
24245
                                            }
24246
                                        }
24247
                                    });
24248
                                }
24249
                                Ext.create('Ext.data.Store', {
24250
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24251
                                    autoLoad: true,
24252
                                    proxy: {
24253
                                        method: 'POST',
24254
                                        type: 'ajax',
24255
                                        url: '/UserControl/GetStoreAuth',
24256
                                        extraParams: {
24257
                                            tableName: TableRef,
24258
                                            param: rec.ParamCombo,
24259
                                            menuId: MinovaUtil.GetMenuID()
24260
                                        },
24261
                                        reader: {
24262
                                            type: 'json',
24263
                                            root: 'data',
24264
                                            totalProperty: 'data[0].TotalCount'
24265
                                        }
24266
                                    }
24267
                                });
24268
                                cols.push({
24269
                                    //xtype : 'minovacombocolumn',
24270
                                    hidden: Hidden_,
24271
                                    text: rec.HeaderTitle,
24272
                                    dataIndex: rec.FieldName,
24273
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
24274
                                    //valueField : valueField,
24275
                                    //displayField : displayValue,
24276
                                    //store : 'store_' + me.tableName + rec.FieldName,
24277
                                    renderer: function (value) {
24278
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24279
                                        var index = store.find(valueField, value);
24280
                                        var val = "";
24281
                                        if (index != -1) {
24282
                                            var rc = store.getAt(index);
24283
                                            val = rc.get(displayValue);
24284
                                        } else {
24285
                                            val = value;
24286
                                        }
24287
                                        return val;
24288
                                    },
24289
                                    filter: {
24290
                                        type: 'list',
24291
                                        itemDefaults: {
24292
                                            emptyText: 'Search for...'
24293
                                        }
24294
                                    }
24295
                                });
24296
                            } else if (rec.SearchType == '5') {
24297
                                var valueField = null;
24298
                                var displayValue = null;
24299
                                var AdditionaldisplayValue = null;
24300
                                var TableRef = undefined;
24301
                                if (rec.TableRef != '') {
24302
                                    TableRef = rec.TableRef;
24303
                                    Ext.Ajax.request({
24304
                                        async: false,
24305
                                        method: 'POST',
24306
                                        url: '/UserControl/GetStore',
24307
                                        params: {
24308
                                            tableName: 'SDATATABLEFIELD',
24309
                                            param: 'TableName[equal]' + rec.TableRef
24310
                                        },
24311
                                        success: function (response) {
24312
                                            var results = Ext.decode(response.responseText);
24313
                                            data_ = results.data;
24314
                                            if (data_ != undefined) {
24315
                                                valueField_ = $.grep(data_, function (r) {
24316
                                                    return r.ValueField == '1'
24317
                                                });
24318
                                                if (valueField_.length > 0) {
24319
                                                    valueField = valueField_[0].FieldName
24320
                                                }
24321

    
24322
                                                displayValue_ = $.grep(data_, function (r) {
24323
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
24324
                                                });
24325
                                                if (displayValue_.length > 0) {
24326
                                                    displayValue = displayValue_[0].FieldName;
24327
                                                }
24328
                                                if (displayValue_.length >= 2) {
24329
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
24330
                                                }
24331
                                            }
24332
                                        }
24333
                                    });
24334
                                }
24335
                                Ext.create('Ext.data.Store', {
24336
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24337
                                    autoLoad: true,
24338
                                    proxy: {
24339
                                        method: 'POST',
24340
                                        type: 'ajax',
24341
                                        url: '/UserControl/GetStoreAuth',
24342
                                        extraParams: {
24343
                                            tableName: TableRef,
24344
                                            param: rec.ParamCombo,
24345
                                            menuId: MinovaUtil.GetMenuID()
24346
                                        },
24347
                                        reader: {
24348
                                            type: 'json',
24349
                                            root: 'data',
24350
                                            totalProperty: 'data[0].TotalCount'
24351
                                        }
24352
                                    }
24353
                                });
24354
                                cols.push({
24355
                                    //xtype : 'minovacombocolumn',
24356
                                    hidden: Hidden_,
24357
                                    text: rec.HeaderTitle,
24358
                                    dataIndex: rec.FieldName,
24359
                                    //valueField : valueField,
24360
                                    //displayField : displayValue,
24361
                                    //store : 'store_' + me.tableName + rec.FieldName,
24362
                                    tpl: Ext.create('Ext.XTemplate',
24363
                                        '<ul class="x-list-plain"><tpl for=".">',
24364
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
24365
                                        '</tpl></ul>'),
24366
                                    displayTpl: Ext.create('Ext.XTemplate',
24367
                                        '<tpl for=".">',
24368
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
24369
                                        '</tpl>'),
24370
                                    renderer: function (value) {
24371
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24372
                                        var index = store.find(valueField, value);
24373
                                        var val = "";
24374
                                        if (index != -1) {
24375
                                            var rc = store.getAt(index);
24376
                                            //val = rc.get(displayValue);
24377
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
24378
                                        } else {
24379
                                            val = value;
24380
                                        }
24381
                                        return val;
24382
                                    },
24383
                                    filter: {
24384
                                        type: 'list',
24385
                                        itemDefaults: {
24386
                                            emptyText: 'Search for...'
24387
                                        }
24388
                                    }
24389
                                });
24390
                            } else if (rec.SearchType == '2') {
24391
                                var triger = (rec.TriggerCombo).split('$');
24392
                                var targetField_ = triger[0];
24393
                                var fieldValue_ = triger[1];
24394
                                cols.push({
24395
                                    text: rec.HeaderTitle,
24396
                                    hidden: Hidden_,
24397
                                    dataIndex: rec.FieldName,
24398
                                    filter: {
24399
                                        itemDefaults: {
24400
                                            emptyText: 'Search for...'
24401
                                        }
24402
                                    }
24403
                                });
24404
                            } else if (rec.SearchType == '3') {
24405
                                cols.push({
24406
                                    text: rec.HeaderTitle,
24407
                                    hidden: Hidden_,
24408
                                    dataIndex: rec.FieldName,
24409
                                    filter: {
24410
                                        itemDefaults: {
24411
                                            emptyText: 'Search for...'
24412
                                        }
24413
                                    }
24414
                                });
24415
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
24416
                                var triger = (rec.TriggerCombo).split('&');
24417
                                var targetField_ = triger[0];
24418
                                var fieldValue_ = triger[0];
24419
                                cols.push({
24420
                                    text: rec.HeaderTitle,
24421
                                    hidden: Hidden_,
24422
                                    dataIndex: rec.FieldName,
24423
                                    filter: {
24424
                                        itemDefaults: {
24425
                                            emptyText: 'Search for...'
24426
                                        }
24427
                                    }
24428
                                });
24429
                            } else if (rec.SearchType == '4' && isLookup != true) {
24430
                                cols.push({
24431
                                    text: rec.HeaderTitle,
24432
                                    hidden: Hidden_,
24433
                                    dataIndex: rec.FieldName,
24434
                                    filter: {
24435
                                        itemDefaults: {
24436
                                            emptyText: 'Search for...'
24437
                                        }
24438
                                    }
24439
                                });
24440
                            } else if (rec.FixedValue != '') { // add by taufan
24441
                                cols.push({
24442
                                    text: rec.HeaderTitle,
24443
                                    hidden: Hidden_,
24444
                                    dataIndex: rec.FieldName,
24445
                                    filter: {
24446
                                        itemDefaults: {
24447
                                            emptyText: 'Search for...'
24448
                                        }
24449
                                    },
24450
                                    renderer: function (value) {
24451
                                        var val = "";
24452
                                        var storeData = [];
24453
                                        var str = rec.FixedValue;
24454
                                        var hasil = str.split('||');
24455
                                        hasil.forEach(function (h) {
24456
                                            store_ = h.split('=')
24457
                                            storeData.push({
24458
                                                code: store_[0],
24459
                                                desc: store_[1]
24460
                                            });
24461
                                        });
24462
                                        var item = storeData.find(x => x.code == value);
24463
                                        if (item != undefined) {
24464
                                            val = item.desc;
24465
                                        }
24466
                                        return val;
24467
                                    }
24468
                                });
24469
                            } else {
24470
                                _xtype = 'textfield';
24471
                                if (rec.Length > 250) {
24472
                                    _xtype = 'textareafield';
24473
                                }
24474
                                var _custumFunc = null;
24475
                                Ext.Ajax.request({
24476
                                    async: false,
24477
                                    method: 'POST',
24478
                                    url: '/UserControl/GetStore',
24479
                                    params: {
24480
                                        tableName: 'SDATATABLEFIELD',
24481
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
24482
                                    },
24483
                                    success: function (response) {
24484
                                        var results = Ext.decode(response.responseText);
24485
                                        data_ = results.data[0];
24486
                                        if (data_ != undefined) {
24487
                                            _custumFunc = data_.SelectFunction;
24488
                                        }
24489
                                    }
24490
                                });
24491
                                cols.push({
24492
                                    text: rec.HeaderTitle,
24493
                                    xtype: 'gridcolumn',
24494
                                    hidden: Hidden_,
24495
                                    dataIndex: rec.FieldName,
24496
                                    filter: {
24497
                                        itemDefaults: {
24498
                                            emptyText: 'Search for...'
24499
                                        }
24500
                                    },
24501
                                    cellWrap: true,
24502
                                    width: (rec.Length * 8) > 400 ? 400 : rec.Length * 8,
24503
                                    renderer: function (v) {
24504
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
24505
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
24506
                                        return result
24507
                                    }
24508
                                });
24509
                            }
24510
                            break
24511
                    }
24512
                } else {
24513
                    cols.push({
24514
                        text: rec.HeaderTitle,
24515
                        hidden: Hidden_,
24516
                        dataIndex: rec.FieldName,
24517
                        hidden: true,
24518
                        filter: {
24519
                            itemDefaults: {
24520
                                emptyText: 'Search for...'
24521
                            }
24522
                        }
24523
                    });
24524
                }
24525
            });
24526

    
24527
        };
24528

    
24529
        addData = addData + "}";
24530
        Ext.applyIf(me, {
24531
            items: [{
24532
                xtype: 'grid',
24533
                id: gridName,
24534
                name: gridName,
24535
                tablename: me.tableName,
24536
                minHeight: me.minHeight,
24537
                maxHeight: me.maxHeight,
24538
                addFlag: true,
24539
                deleteFlag: true,
24540
                store: Ext.create('Ext.data.Store', {
24541
                    storeId: storeID,
24542
                    fields: fieldStore,
24543
                    //groupField: 'QuestionGroup',
24544
                    grouper: {
24545
                        sortProperty: 'SeqQuest',
24546
                        groupFn: function (record) {
24547
                            return record.get('QuestionGroup');
24548
                        }
24549
                    },
24550
                    proxy: {
24551
                        method: 'POST',
24552
                        type: 'ajax',
24553
                        url: '',
24554
                        reader: {
24555
                            type: 'json',
24556
                            root: 'data'
24557
                        }
24558
                    }
24559
                }),
24560
                dockedItems: [{
24561
                    xtype: 'toolbar',
24562
                    items: [
24563
                        {
24564
                            text: 'Add',
24565
                            hidden: hide_,
24566
                            name: tableName + 'Add',
24567
                            iconCls: 'fa-plus-circle',
24568
                            style: 'font-family: FontAwesome',
24569
                            handler: function () {
24570
                                var grid = Ext.getCmp(gridName);
24571
                                if (grid.addFlag === true) {
24572
                                    var store = Ext.StoreMgr.lookup(storeID)
24573
                                    idx = store.getCount();
24574
                                    var action = getParam('action');
24575
                                    var data = '';
24576
                                    var Sequence = 0;
24577
                                    if (idx == 0) {
24578
                                        Sequence = 1;
24579
                                    } else {
24580
                                        Sequence = 1 + idx;
24581
                                    }
24582
                                    var seq = 'Sequence';
24583
                                    var SequenceValue = Sequence;
24584
                                    eval(addData);
24585
                                    var grdParent = Ext.ComponentQuery.query('[name=grid' + me.tableNameP + ']')[0];
24586
                                    var dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
24587
                                    if (dtParent == undefined) {
24588
                                        grdParent.getView().getSelectionModel().select(0);
24589
                                        dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
24590
                                    }
24591
                                    data[seq] = SequenceValue;
24592
                                    data[me.tableNameFKey] = dtParent.data[me.tableNamePKey];
24593
                                    data[me.tableNameKey] = SequenceValue.toString();
24594
                                    store.insert(idx, data);
24595
                                    grid.getView().getSelectionModel().select(idx);
24596
                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24597
                                    frmForm.reset();
24598
                                    frmForm.getForm().setValues(data);
24599
                                    //frmDisplay.setHidden(true);
24600
                                    frmForm.setHidden(false);
24601
                                }
24602
                            }
24603
                        },
24604
                        {
24605
                            text: 'Delete',
24606
                            hidden: hide_,
24607
                            name: tableName + 'DeleteText',
24608
                            iconCls: 'fa-trash-o',
24609
                            style: 'font-family: FontAwesome',
24610
                            handler: function () {
24611
                                var grid = Ext.getCmp(gridName);
24612
                                if (grid.deleteFlag === true) {
24613
                                    //var me = this,
24614
                                    store = Ext.StoreMgr.lookup(storeID)
24615
                                    var grid = Ext.getCmp(gridName);
24616
                                    Ext.MessageBox.show({
24617
                                        title: 'Remove tab',
24618
                                        msg: "This will remove. Do you want to continue?",
24619
                                        buttons: Ext.MessageBox.YESNO,
24620
                                        fn: function (choice) {
24621
                                            console.log(choice);
24622
                                            if (choice === 'yes') {
24623
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
24624
                                                if (selection) {
24625
                                                    store.remove(selection);
24626
                                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24627
                                                    frmForm.reset();
24628
                                                    //frmDisplay.setHidden(true);
24629
                                                    frmForm.setHidden(true);
24630
                                                }
24631
                                            }
24632
                                        }
24633
                                    });
24634
                                }
24635
                            }
24636
                        },
24637
                        {
24638
                            text: 'Edit',
24639
                            hidden: hide_,
24640
                            name: tableName + 'EditText',
24641
                            bizprocid: me.bizprocid,
24642
                            taskid: me.taskid,
24643
                            TableName: tableName,
24644
                            iconCls: 'fa-edit',
24645
                            style: 'font-family: FontAwesome',
24646
                            handler: function () {
24647
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
24648
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24649
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24650
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24651
                                //if (frmForm == undefined) {
24652
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24653
                                //        bizprocid: this.bizprocid,
24654
                                //        taskid: this.taskid,
24655
                                //        name: 'form' + this.TableName,
24656
                                //        tableName: this.TableName,
24657
                                //    });
24658
                                //}
24659
                                ////frmForm.reset();
24660
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
24661
                                //frmForm.show();
24662

    
24663
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24664
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24665
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24666
                                if (dtrec) {
24667
                                    //frmDisplay.reset();
24668
                                    frmForm.reset();
24669
                                    frmForm.getForm().setValues(dtrec.data);
24670
                                    //frmDisplay.setHidden(true);
24671
                                    frmForm.setHidden(false);
24672
                                    //grdPanel.setHidden(true);
24673
                                    action = "1";
24674
                                }
24675
                            }
24676
                        }
24677
                    ]
24678
                }
24679
                ],
24680
                columns: cols,
24681
                //selType: checkSelection,
24682
                //plugins: {
24683
                //    ptype: 'actionColumnRowEditing', //rowediting
24684
                //    pluginId: 'rowEditing',
24685
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
24686
                //    clicksToEdit: 2,
24687
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
24688
                //    listeners: {}
24689
                //},
24690
                listeners: {
24691
                    //'beforeedit': function (editor) {
24692
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
24693
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
24694
                    //}
24695
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
24696
                        //var me = this;
24697
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24698
                        //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
24699
                        var dtrec = record;
24700
                        if (dtrec) {
24701
                            //frmDisplay.reset();
24702
                            //frmForm.reset();
24703
                            frmForm.getForm().setValues(dtrec.data);
24704
                            //grdPanel.setHeight(0);
24705
                            //frmDisplay.setHidden(true);
24706
                            frmForm.setHidden(false);
24707
                            //grdPanel.setHidden(true);
24708
                            action = "1";
24709
                        }
24710
                    }
24711
                },
24712
                features: features,
24713
                viewConfig: {
24714
                    listeners: {
24715
                        refresh: function (dataview) {
24716
                            Ext.each(dataview.panel.columns, function (column) {
24717
                                //column.autoSize();
24718
                            })
24719
                        }
24720
                    }
24721
                }
24722
            }
24723
            ]
24724
        });
24725
        me.callParent(arguments);
24726
    },
24727
    listeners: {
24728
        boxready: function (dataview) {
24729
            var grd = Ext.ComponentQuery.query('[name=grid' + this.name + ']')[0];
24730
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
24731
        }
24732
    }
24733
});
24734

    
24735
/*Form ESS Generator YN 20211216*/
24736
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24737
    extend: 'Ext.form.Panel',
24738
    alias: ['widget.MinovaWorkflowFormGrid', 'widget.minovaworkflowformgrid', 'widget.workflowformgrid'],
24739
    controller: 'workflowformgrid',
24740
    formname: this.name,
24741
    bizprocid: undefined,
24742
    bizflowid: undefined,
24743
    taskid: undefined,
24744
    tableName: undefined,
24745
    tableNameT: undefined,
24746
    titleform: undefined,
24747
    labelWidth: 150,
24748
    //resizable: true,
24749
    border: true,
24750
    autoScroll: true,
24751
    minHeight: 20,
24752
    layout: {
24753
        type: 'hbox'
24754
    },
24755
    listeners: {
24756
        render: function () {
24757
            if (this.titleform != undefined) {
24758
                this.setTitle(this.titleform);
24759
            }
24760
        },
24761
    },
24762
    buttonAlign: 'left',
24763
    defaults: {
24764
        layout: 'anchor',
24765
        xtype: 'container',
24766
        flex: 1,
24767
        margin: '10px',
24768
        //defaultType: 'textfield',
24769
        //anchor: '100%',
24770
        ////style: 'width: 50%',
24771
    },
24772
    initComponent: function () {
24773
        var col1 = [];
24774
        var col2 = [];
24775
        var me = this;
24776
        var LangID = localStorage.LangId;
24777
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24778
        var formname_ = me.name;
24779
        var nameTable_ = me.tableName;
24780
        //var labelWidth = 150;
24781
        Ext.Ajax.request({
24782
            async: false,
24783
            method: 'POST',
24784
            url: '/UserControl/GetStore',
24785
            params: {
24786
                tableName: 'PDSWFSTRUCTUREFIELD',
24787
                param: parameter
24788
            },
24789
            success: function (response) {
24790
                var results = Ext.decode(response.responseText);
24791
                hasil = results.data;
24792
            }
24793
        });
24794
        if (hasil.length > 0) {
24795
            Ext.each(hasil, function (rec) {
24796
                var formfield = undefined;
24797
                var readonly = false;
24798
                var ishidden = false;
24799
                var allowblank = true;
24800
                var startDt = null;
24801
                var endDt = null;
24802
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
24803
                    startDt = 'StartDate';
24804
                    endDt = 'EndDate';
24805
                }
24806
                if (rec.IsReadOnly == '1') {
24807
                    readonly = true;
24808
                }
24809
                if (rec.IsRequired == '1') {
24810
                    allowblank = false;
24811
                }
24812
                if (rec.IsVisible == '0') {
24813
                    ishidden = true;
24814
                }
24815
                if (rec.SearchType == "") //textfield
24816
                {
24817
                    switch (rec.FormatRef) {
24818
                        case "date":
24819
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
24820
                                formfield = new Ext.form.DateField({
24821
                                    allowBlank: allowblank,
24822
                                    fieldLabel: rec.ScreenCaption,
24823
                                    readOnly: readonly,
24824
                                    msgTarget: 'side',
24825
                                    //labelCls: 'label-minova',
24826
                                    labelWidth: me.labelWidth,
24827
                                    hidden: ishidden,
24828
                                    name: rec.FieldName,
24829
                                    submitFormat: 'Ymd',
24830
                                    value: rec.DefaultValue,
24831
                                    anchor: '100%',
24832
                                    vtype: 'daterange',
24833
                                    start: startDt,
24834
                                    end: endDt,
24835
                                    formname: formname_,
24836
                                    nameTable: nameTable_,
24837
                                    hideMode: 'visibility',
24838
                                    listeners: {
24839
                                        change: function (val) {
24840
                                            var _label = val.name;
24841
                                            var _form = val.formname;
24842
                                            var _Value = val.getValue();
24843
                                            var target = rec.TriggerCombo;
24844
                                            var custumFunc = rec.SelectFunction;
24845
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
24846
                                                Ext.Ajax.request({
24847
                                                    async: false,
24848
                                                    method: 'POST',
24849
                                                    url: '/UserControl/GetStore',
24850
                                                    params: {
24851
                                                        tableName: 'PCMFUNC',
24852
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
24853
                                                    },
24854
                                                    success: function (response) {
24855
                                                        var results = Ext.decode(response.responseText);
24856
                                                        data_ = results.data[0];
24857
                                                        if (data_ != undefined) {
24858
                                                            custumFunc = data_.FunctionCode;
24859
                                                        }
24860
                                                    }
24861
                                                });
24862
                                            }
24863
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
24864
                                            if (frm) {
24865
                                                if (custumFunc) {
24866
                                                    eval(custumFunc)
24867
                                                }
24868
                                            }
24869
                                        }
24870
                                    }
24871
                                });
24872
                            } else {
24873
                                formfield = new Ext.form.DateField({
24874
                                    allowBlank: allowblank,
24875
                                    fieldLabel: rec.ScreenCaption,
24876
                                    readOnly: readonly,
24877
                                    msgTarget: 'side',
24878
                                    //labelCls: 'label-minova',
24879
                                    labelWidth: me.labelWidth,
24880
                                    hidden: ishidden,
24881
                                    name: rec.FieldName,
24882
                                    submitFormat: 'Ymd',
24883
                                    value: rec.DefaultValue,
24884
                                    anchor: '100%',
24885
                                    formname: formname_,
24886
                                    nameTable: nameTable_,
24887
                                    hideMode: 'visibility',
24888
                                    listeners: {
24889
                                        change: function (val) {
24890
                                            var _label = val.name;
24891
                                            var _form = val.formname;
24892
                                            var _Value = val.getValue();
24893
                                            var target = rec.TriggerCombo;
24894
                                            var custumFunc = rec.SelectFunction;
24895
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
24896
                                                Ext.Ajax.request({
24897
                                                    async: false,
24898
                                                    method: 'POST',
24899
                                                    url: '/UserControl/GetStore',
24900
                                                    params: {
24901
                                                        tableName: 'PCMFUNC',
24902
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
24903
                                                    },
24904
                                                    success: function (response) {
24905
                                                        var results = Ext.decode(response.responseText);
24906
                                                        data_ = results.data[0];
24907
                                                        if (data_ != undefined) {
24908
                                                            custumFunc = data_.FunctionCode;
24909
                                                        }
24910
                                                    }
24911
                                                });
24912
                                            }
24913
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
24914
                                            if (frm) {
24915
                                                if (custumFunc) {
24916
                                                    eval(custumFunc)
24917
                                                }
24918
                                            }
24919
                                        }
24920
                                    }
24921
                                });
24922
                            }
24923
                            break;
24924
                        case "time":
24925
                            formfield = new Ext.form.TimeField({
24926
                                allowBlank: allowblank,
24927
                                fieldLabel: rec.ScreenCaption,
24928
                                readOnly: readonly,
24929
                                //labelCls: 'label-minova',
24930
                                labelWidth: me.labelWidth,
24931
                                hidden: ishidden,
24932
                                name: rec.FieldName,
24933
                                msgTarget: 'side',
24934
                                format: 'Hi',
24935
                                submitFormat: 'Hi',
24936
                                increment: 5,
24937
                                value: rec.DefaultValue,
24938
                                anchor: '100%',
24939
                                formname: formname_,
24940
                                nameTable: nameTable_,
24941
                                listeners: {
24942
                                    change: function (val) {
24943
                                        var _label = val.name;
24944
                                        var _form = val.formname;
24945
                                        var _Value = val.getValue();
24946
                                        var target = rec.TriggerCombo;
24947
                                        var custumFunc = rec.SelectFunction;
24948
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
24949
                                            Ext.Ajax.request({
24950
                                                async: false,
24951
                                                method: 'POST',
24952
                                                url: '/UserControl/GetStore',
24953
                                                params: {
24954
                                                    tableName: 'PCMFUNC',
24955
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
24956
                                                },
24957
                                                success: function (response) {
24958
                                                    var results = Ext.decode(response.responseText);
24959
                                                    data_ = results.data[0];
24960
                                                    if (data_ != undefined) {
24961
                                                        custumFunc = data_.FunctionCode;
24962
                                                    }
24963
                                                }
24964
                                            });
24965
                                        }
24966
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
24967
                                        if (frm) {
24968
                                            if (custumFunc) {
24969
                                                eval(custumFunc)
24970
                                            }
24971
                                        }
24972
                                    }
24973
                                }
24974
                            });
24975
                            break;
24976
                        case "amount":
24977
                            formfield = new Ext.form.TextField({
24978
                                allowBlank: allowblank,
24979
                                fieldLabel: rec.ScreenCaption,
24980
                                readOnly: readonly,
24981
                                //labelCls: 'label-minova',
24982
                                labelWidth: me.labelWidth,
24983
                                hidden: ishidden,
24984
                                name: rec.FieldName,
24985
                                msgTarget: 'side',
24986
                                value: rec.DefaultValue,
24987
                                maxLength: rec.Length,
24988
                                anchor: '100%',
24989
                                formname: formname_,
24990
                                nameTable: nameTable_,
24991
                                fieldStyle: 'text-align:right;',
24992
                                listeners: {
24993
                                    change: function (val) {
24994
                                        var _label = val.name;
24995
                                        var _form = val.formname;
24996
                                        var _Value = val.getValue();
24997
                                        var target = rec.TriggerCombo;
24998
                                        var custumFunc = rec.SelectFunction;
24999
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25000
                                            Ext.Ajax.request({
25001
                                                async: false,
25002
                                                method: 'POST',
25003
                                                url: '/UserControl/GetStore',
25004
                                                params: {
25005
                                                    tableName: 'PCMFUNC',
25006
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25007
                                                },
25008
                                                success: function (response) {
25009
                                                    var results = Ext.decode(response.responseText);
25010
                                                    data_ = results.data[0];
25011
                                                    if (data_ != undefined) {
25012
                                                        custumFunc = data_.FunctionCode;
25013
                                                    }
25014
                                                }
25015
                                            });
25016
                                        }
25017
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25018
                                        if (frm) {
25019
                                            if (custumFunc) {
25020
                                                eval(custumFunc)
25021
                                            }
25022
                                        }
25023
                                    }
25024
                                }
25025
                            });
25026
                            break;
25027
                        case "file":
25028
                            formfield = new MinovaUtil.MinovaES.UploadFile({
25029
                                allowBlank: allowblank,
25030
                                fieldLabel: rec.ScreenCaption,
25031
                                readOnly: readonly,
25032
                                readOnlyCls: 'minova-readonly',
25033
                                hidden: ishidden,
25034
                                //labelCls: 'label-minova',
25035
                                name: rec.FieldName,
25036
                                msgTarget: 'side',
25037
                                fieldname: rec.FieldName,
25038
                                IsPrimaryKey: rec.IsPrimaryKey,
25039
                                tableName: rec.TableRef,
25040
                                triggerCls: 'x-form-search-trigger',
25041
                                formtarget: me.formname,
25042
                                anchor: '100%',
25043
                                formname: formname_,
25044
                                nameTable: nameTable_,
25045
                                listeners: {
25046
                                    change: function (val) {
25047
                                        var _label = val.name;
25048
                                        var _form = val.formname;
25049
                                        var _Value = val.getValue();
25050
                                        var target = rec.TriggerCombo;
25051
                                        var custumFunc = rec.SelectFunction;
25052
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25053
                                            Ext.Ajax.request({
25054
                                                async: false,
25055
                                                method: 'POST',
25056
                                                url: '/UserControl/GetStore',
25057
                                                params: {
25058
                                                    tableName: 'PCMFUNC',
25059
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25060
                                                },
25061
                                                success: function (response) {
25062
                                                    var results = Ext.decode(response.responseText);
25063
                                                    data_ = results.data[0];
25064
                                                    if (data_ != undefined) {
25065
                                                        custumFunc = data_.FunctionCode;
25066
                                                    }
25067
                                                }
25068
                                            });
25069
                                        }
25070
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25071
                                        if (frm) {
25072
                                            if (target) {
25073
                                                var f = frm.getForm().findField(target)
25074
                                                _store = f.getStore();
25075
                                                var _tbl = _store.proxy.extraParams.tableName;
25076
                                                var oldParam = _store.proxy.extraParams.param;
25077
                                                _store.proxy.extraParams = {
25078
                                                    tableName: _tbl,
25079
                                                    param: _label + '[=]' + _Value
25080
                                                };
25081
                                                _store.load();
25082
                                            }
25083
                                            if (custumFunc) {
25084
                                                eval(custumFunc)
25085
                                            }
25086
                                        }
25087
                                    }
25088
                                }
25089
                            });
25090
                            break;
25091
                        default:
25092
                            if (rec.DataType == 0) {
25093
                                if (rec.Length > 250) {
25094
                                    formfield = new Ext.form.TextArea({
25095
                                        allowBlank: allowblank,
25096
                                        fieldLabel: rec.ScreenCaption,
25097
                                        readOnly: readonly,
25098
                                        ////labelCls: 'label-minova',
25099
                                        labelWidth: me.labelWidth,
25100
                                        hidden: ishidden,
25101
                                        name: rec.FieldName,
25102
                                        msgTarget: 'side',
25103
                                        value: rec.DefaultValue,
25104
                                        maxLength: rec.Length,
25105
                                        anchor: '100%',
25106
                                        grow: true,
25107
                                        formname: formname_,
25108
                                        nameTable: nameTable_,
25109
                                        listeners: {
25110
                                            change: function (val) {
25111
                                                var _label = val.name;
25112
                                                var _form = val.formname;
25113
                                                var _Value = val.getValue();
25114
                                                var target = rec.TriggerCombo;
25115
                                                var custumFunc = rec.SelectFunction;
25116
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25117
                                                    Ext.Ajax.request({
25118
                                                        async: false,
25119
                                                        method: 'POST',
25120
                                                        url: '/UserControl/GetStore',
25121
                                                        params: {
25122
                                                            tableName: 'PCMFUNC',
25123
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25124
                                                        },
25125
                                                        success: function (response) {
25126
                                                            var results = Ext.decode(response.responseText);
25127
                                                            data_ = results.data[0];
25128
                                                            if (data_ != undefined) {
25129
                                                                custumFunc = data_.FunctionCode;
25130
                                                            }
25131
                                                        }
25132
                                                    });
25133
                                                }
25134
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25135
                                                if (frm) {
25136
                                                    if (custumFunc) {
25137
                                                        eval(custumFunc)
25138
                                                    }
25139
                                                }
25140
                                            }
25141
                                        }
25142
                                    });
25143
                                } else {
25144
                                    if (rec.FixedValue != '') {
25145
                                        var storeData = [];
25146
                                        var str = rec.FixedValue;
25147
                                        var hasil = str.split('||');
25148
                                        hasil.forEach(function (h) {
25149
                                            store_ = h.split('=')
25150
                                            storeData.push({
25151
                                                code: store_[0],
25152
                                                desc: store_[1],
25153
                                            });
25154
                                        });
25155
                                        formfield = new Ext.form.ComboBox({
25156
                                            allowBlank: allowblank,
25157
                                            fieldLabel: rec.ScreenCaption,
25158
                                            forceSelection: true,
25159
                                            readOnly: readonly,
25160
                                            //labelCls: 'label-minova',
25161
                                            labelWidth: me.labelWidth,
25162
                                            hidden: ishidden,
25163
                                            name: rec.FieldName,
25164
                                            msgTarget: 'side',
25165
                                            value: rec.DefaultValue,
25166
                                            anchor: '100%',
25167
                                            formname: formname_,
25168
                                            nameTable: nameTable_,
25169
                                            formtarget: me.formname,
25170
                                            store: Ext.create('Ext.data.Store', {
25171
                                                storeId: 'store' + rec.FieldName,
25172
                                                autoLoad: true,
25173
                                                data: storeData
25174

    
25175
                                            }),
25176
                                            listeners: {
25177
                                                change: function (val) {
25178
                                                    var _label = val.name;
25179
                                                    var _form = val.formtarget;
25180
                                                    var _Value = val.getValue();
25181
                                                    var target = rec.TriggerCombo;
25182
                                                    var custumFunc = rec.SelectFunction;
25183
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25184
                                                    if (frm) {
25185
                                                        if (target) {
25186
                                                            var f = frm.getForm().findField(target)
25187
                                                            _store = f.getStore();
25188
                                                            var _tbl = _store.proxy.extraParams.tableName;
25189
                                                            var oldParam = _store.proxy.extraParams.param;
25190
                                                            _store.proxy.extraParams = {
25191
                                                                tableName: _tbl,
25192
                                                                param: _label + '[=]' + _Value
25193
                                                            };
25194
                                                            _store.load();
25195
                                                        }
25196
                                                        if (custumFunc) {
25197
                                                            eval(custumFunc)
25198
                                                        }
25199
                                                    }
25200
                                                }
25201
                                            },
25202
                                            queryMode: 'local',
25203
                                            valueField: 'code',
25204
                                            displayField: 'desc',
25205
                                        });
25206
                                    } else {
25207
                                        formfield = new Ext.form.TextField({
25208
                                            allowBlank: allowblank,
25209
                                            fieldLabel: rec.ScreenCaption,
25210
                                            readOnly: readonly,
25211
                                            //labelCls: 'label-minova',
25212
                                            labelWidth: me.labelWidth,
25213
                                            hidden: ishidden,
25214
                                            name: rec.FieldName,
25215
                                            msgTarget: 'side',
25216
                                            value: rec.DefaultValue,
25217
                                            maxLength: rec.Length,
25218
                                            anchor: '100%',
25219
                                            formname: formname_,
25220
                                            nameTable: nameTable_,
25221
                                            listeners: {
25222
                                                change: function (val) {
25223
                                                    var _label = val.name;
25224
                                                    var _form = val.formname;
25225
                                                    var _Value = val.getValue();
25226
                                                    var target = rec.TriggerCombo;
25227
                                                    var custumFunc = rec.SelectFunction;
25228
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25229
                                                        Ext.Ajax.request({
25230
                                                            async: false,
25231
                                                            method: 'POST',
25232
                                                            url: '/UserControl/GetStore',
25233
                                                            params: {
25234
                                                                tableName: 'PCMFUNC',
25235
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25236
                                                            },
25237
                                                            success: function (response) {
25238
                                                                var results = Ext.decode(response.responseText);
25239
                                                                data_ = results.data[0];
25240
                                                                if (data_ != undefined) {
25241
                                                                    custumFunc = data_.FunctionCode;
25242
                                                                }
25243
                                                            }
25244
                                                        });
25245
                                                    }
25246
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25247
                                                    if (frm) {
25248
                                                        if (custumFunc) {
25249
                                                            eval(custumFunc)
25250
                                                        }
25251
                                                    }
25252
                                                }
25253
                                            }
25254
                                        });
25255
                                    }
25256
                                }
25257
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
25258
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
25259
                                    allowBlank: allowblank,
25260
                                    fieldLabel: rec.ScreenCaption,
25261
                                    readOnly: readonly,
25262
                                    //labelCls: 'label-minova',
25263
                                    labelWidth: me.labelWidth,
25264
                                    msgTarget: 'side',
25265
                                    hidden: ishidden,
25266
                                    name: rec.FieldName,
25267
                                    value: rec.DefaultValue,
25268
                                    maxLength: rec.Length,
25269
                                    anchor: '100%',
25270
                                    formname: formname_,
25271
                                    nameTable: nameTable_,
25272
                                    fieldStyle: 'text-align:right;',
25273
                                    listeners: {
25274
                                        change: function (val) {
25275
                                            var _label = val.name;
25276
                                            var _form = val.formname;
25277
                                            var _Value = val.getValue();
25278
                                            var target = rec.TriggerCombo;
25279
                                            var custumFunc = rec.SelectFunction;
25280
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25281
                                                Ext.Ajax.request({
25282
                                                    async: false,
25283
                                                    method: 'POST',
25284
                                                    url: '/UserControl/GetStore',
25285
                                                    params: {
25286
                                                        tableName: 'PCMFUNC',
25287
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25288
                                                    },
25289
                                                    success: function (response) {
25290
                                                        var results = Ext.decode(response.responseText);
25291
                                                        data_ = results.data[0];
25292
                                                        if (data_ != undefined) {
25293
                                                            custumFunc = data_.FunctionCode;
25294
                                                        }
25295
                                                    }
25296
                                                });
25297
                                            }
25298
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25299
                                            if (frm) {
25300
                                                if (target) {
25301
                                                    var f = frm.getForm().findField(target)
25302
                                                    _store = f.getStore();
25303
                                                    var _tbl = _store.proxy.extraParams.tableName;
25304
                                                    var oldParam = _store.proxy.extraParams.param;
25305
                                                    _store.proxy.extraParams = {
25306
                                                        tableName: _tbl,
25307
                                                        param: _label + '[=]' + _Value
25308
                                                    };
25309
                                                    _store.load();
25310
                                                }
25311
                                                if (custumFunc) {
25312
                                                    eval(custumFunc)
25313
                                                }
25314
                                            }
25315
                                        }
25316
                                    }
25317
                                });
25318
                            } else if (rec.DataType == 3) {
25319
                                formfield = new Ext.form.TextField({
25320
                                    allowBlank: allowblank,
25321
                                    fieldLabel: rec.ScreenCaption,
25322
                                    readOnly: readonly,
25323
                                    //labelCls: 'label-minova',
25324
                                    labelWidth: me.labelWidth,
25325
                                    msgTarget: 'side',
25326
                                    hidden: ishidden,
25327
                                    name: rec.FieldName,
25328
                                    value: rec.DefaultValue,
25329
                                    maxLength: rec.Length,
25330
                                    precision: rec.Prec,
25331
                                    anchor: '100%',
25332
                                    formname: formname_,
25333
                                    nameTable: nameTable_,
25334
                                    fieldStyle: 'text-align:right;',
25335
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
25336
                                    listeners: {
25337
                                        change: function (val) {
25338
                                            var _label = val.name;
25339
                                            var _form = val.formname;
25340
                                            var _Value = val.getValue();
25341
                                            var target = rec.TriggerCombo;
25342
                                            var custumFunc = rec.SelectFunction;
25343
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25344
                                                Ext.Ajax.request({
25345
                                                    async: false,
25346
                                                    method: 'POST',
25347
                                                    url: '/UserControl/GetStore',
25348
                                                    params: {
25349
                                                        tableName: 'PCMFUNC',
25350
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25351
                                                    },
25352
                                                    success: function (response) {
25353
                                                        var results = Ext.decode(response.responseText);
25354
                                                        data_ = results.data[0];
25355
                                                        if (data_ != undefined) {
25356
                                                            custumFunc = data_.FunctionCode;
25357
                                                        }
25358
                                                    }
25359
                                                });
25360
                                            }
25361
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25362
                                            if (frm) {
25363
                                                if (target) {
25364
                                                    var f = frm.getForm().findField(target)
25365
                                                    _store = f.getStore();
25366
                                                    var _tbl = _store.proxy.extraParams.tableName;
25367
                                                    var oldParam = _store.proxy.extraParams.param;
25368
                                                    _store.proxy.extraParams = {
25369
                                                        tableName: _tbl,
25370
                                                        param: _label + '[=]' + _Value
25371
                                                    };
25372
                                                    _store.load();
25373
                                                }
25374
                                                if (custumFunc) {
25375
                                                    eval(custumFunc)
25376
                                                }
25377
                                            }
25378
                                        }
25379
                                    }
25380
                                });
25381
                            }
25382
                    }
25383
                } else if (rec.SearchType != "") {
25384
                    if (rec.SearchType == "0") //combobox
25385
                    {
25386
                        valueField = null;
25387
                        displayValue = null;
25388
                        if (rec.TableRef != "") {
25389
                            Ext.Ajax.request({
25390
                                async: false,
25391
                                method: 'POST',
25392
                                url: '/UserControl/GetStore',
25393
                                params: {
25394
                                    tableName: 'SDATATABLEFIELD',
25395
                                    param: 'TableName[equal]' + rec.TableRef
25396
                                },
25397
                                success: function (response) {
25398
                                    var results = Ext.decode(response.responseText);
25399
                                    data_ = results.data;
25400
                                    if (data_ != undefined) {
25401
                                        valueField_ = $.grep(data_, function (r) {
25402
                                            return r.ValueField == '1'
25403
                                        });
25404
                                        if (valueField_.length > 0) {
25405
                                            valueField = valueField_[0].FieldName
25406
                                        }
25407
                                        displayValue_ = $.grep(data_, function (r) {
25408
                                            return r.DisplayValue == '1'
25409
                                        });
25410
                                        if (displayValue_.length > 0) {
25411
                                            displayValue = displayValue_[0].FieldName
25412
                                        }
25413
                                    }
25414
                                }
25415
                            });
25416
                        }
25417
                        formfield = new Ext.form.ComboBox({
25418
                            allowBlank: allowblank,
25419
                            fieldLabel: rec.ScreenCaption,
25420
                            forceSelection: true,
25421
                            anyMatch: true,
25422
                            readOnly: readonly,
25423
                            //labelCls: 'label-minova',
25424
                            labelWidth: me.labelWidth,
25425
                            hidden: ishidden,
25426
                            msgTarget: 'side',
25427
                            name: rec.FieldName,
25428
                            formname: formname_,
25429
                            nameTable: nameTable_,
25430
                            value: rec.DefaultValue,
25431
                            anchor: '100%', //width: '95%',
25432
                            //store: Ext.StoreMgr.lookup('store' + rec.FieldName) ? Ext.StoreMgr.lookup('store' + rec.FieldName):
25433
                            store: Ext.create('Ext.data.Store', {
25434
                                storeId: 'store' + rec.FieldName,
25435
                                autoLoad: false,
25436
                                proxy: {
25437
                                    method: 'POST',
25438
                                    type: 'ajax',
25439
                                    url: '/UserControl/GetStore',
25440
                                    extraParams: {
25441
                                        tableName: rec.TableRef,
25442
                                        param: rec.ParamCombo
25443
                                    },
25444
                                    reader: {
25445
                                        type: 'json',
25446
                                        root: 'data',
25447
                                        totalProperty: 'data[0].TotalCount'
25448
                                    }
25449
                                }
25450
                            }),
25451
                            formtarget: formname_,
25452
                            listeners: {
25453
                                afterrender: function (f) {
25454
                                    var store_ = f.getStore();
25455
                                    store_.load();
25456
                                },
25457
                                change: function (val) {
25458
                                    var _label = val.name;
25459
                                    var _form = val.formtarget;
25460
                                    var _Value = val.getValue();
25461
                                    var target = rec.TriggerCombo;
25462
                                    var custumFunc = rec.SelectFunction;
25463
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25464
                                    if (frm) {
25465

    
25466
                                        if (target) {
25467
                                            var f = frm.getForm().findField(target)
25468
                                            _store = f.getStore();
25469
                                            var _tbl = _store.proxy.extraParams.tableName;
25470
                                            var oldParam = _store.proxy.extraParams.param;
25471
                                            _store.proxy.extraParams = {
25472
                                                tableName: _tbl,
25473
                                                param: _label + '[=]' + _Value
25474
                                            };
25475
                                            _store.load();
25476
                                        }
25477
                                        if (custumFunc) {
25478
                                            eval(custumFunc)
25479
                                        }
25480
                                    }
25481
                                }
25482
                            },
25483
                            queryMode: 'local',
25484
                            displayField: displayValue,
25485
                            valueField: valueField,
25486
                        });
25487
                    } else if (rec.SearchType == '2') //Lookup
25488
                    {
25489
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
25490
                            allowBlank: allowblank,
25491
                            fieldLabel: rec.ScreenCaption,
25492
                            readOnly: readonly,
25493
                            IsPrimaryKey: rec.IsPrimaryKey,
25494
                            msgTarget: 'side',
25495
                            //labelCls: 'label-minova',
25496
                            labelWidth: me.labelWidth,
25497
                            hidden: ishidden,
25498
                            name: rec.FieldName,
25499
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
25500
                            triggerCls: 'x-form-search-trigger',
25501
                            vtype: 'alphanum', // disable space
25502
                            formtarget: me.formname, // nama form  yang akan di set value-nya
25503
                            anchor: '100%',
25504
                            formname: formname_,
25505
                            nameTable: nameTable_,
25506
                            LookupFunction: rec.LookupFunction,
25507
                            SearchFunction: rec.SearchFunction,
25508
                            listeners: {
25509
                                change: function (val) {
25510
                                    var _label = val.name;
25511
                                    var _form = val.formname;
25512
                                    var _Value = val.getValue();
25513
                                    var target = rec.TriggerCombo;
25514
                                    var custumFunc = rec.SelectFunction;
25515
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25516
                                        Ext.Ajax.request({
25517
                                            async: false,
25518
                                            method: 'POST',
25519
                                            url: '/UserControl/GetStore',
25520
                                            params: {
25521
                                                tableName: 'PCMFUNC',
25522
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25523
                                            },
25524
                                            success: function (response) {
25525
                                                var results = Ext.decode(response.responseText);
25526
                                                data_ = results.data[0];
25527
                                                if (data_ != undefined) {
25528
                                                    custumFunc = data_.FunctionCode;
25529
                                                }
25530
                                            }
25531
                                        });
25532
                                    }
25533
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25534
                                    if (frm) {
25535

    
25536
                                        if (target) {
25537
                                            var f = frm.getForm().findField(target)
25538
                                            _store = f.getStore();
25539
                                            var _tbl = _store.proxy.extraParams.tableName;
25540
                                            var oldParam = _store.proxy.extraParams.param;
25541
                                            _store.proxy.extraParams = {
25542
                                                tableName: _tbl,
25543
                                                param: _label + '[=]' + _Value
25544
                                            };
25545
                                            _store.load();
25546
                                        }
25547

    
25548
                                        if (custumFunc) {
25549
                                            eval(custumFunc)
25550
                                        }
25551

    
25552
                                    }
25553

    
25554
                                },
25555

    
25556
                            },
25557
                        });
25558
                    } else if (rec.SearchType == '3') //lookup tree
25559
                    {
25560
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
25561
                            allowBlank: allowblank,
25562
                            fieldLabel: rec.ScreenCaption,
25563
                            readOnly: readonly,
25564
                            IsPrimaryKey: rec.IsPrimaryKey,
25565
                            //labelCls: 'label-minova',
25566
                            labelWidth: me.labelWidth,
25567
                            hidden: ishidden,
25568
                            name: rec.FieldName,
25569
                            msgTarget: 'side',
25570
                            triggerCls: 'x-form-search-trigger',
25571
                            treeSructure: rec.SearchFunction, //'O-O-P',
25572
                            objClassValue: rec.ParamCombo, //'O',
25573
                            formname: formname_,
25574
                            targetField: rec.FieldName,
25575
                            nameTable: nameTable_,
25576
                            editable: false,
25577
                            anchor: '100%',
25578
                            listeners: {
25579
                                change3: function (val) {
25580
                                    var _label = val.name;
25581
                                    var _form = val.formname;
25582
                                    var _Value = val.getValue();
25583
                                    var target = rec.TriggerCombo;
25584
                                    var custumFunc = rec.SelectFunction;
25585
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25586
                                        Ext.Ajax.request({
25587
                                            async: false,
25588
                                            method: 'POST',
25589
                                            url: '/UserControl/GetStore',
25590
                                            params: {
25591
                                                tableName: 'PCMFUNC',
25592
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25593
                                            },
25594
                                            success: function (response) {
25595
                                                var results = Ext.decode(response.responseText);
25596
                                                data_ = results.data[0];
25597
                                                if (data_ != undefined) {
25598
                                                    custumFunc = data_.FunctionCode;
25599
                                                }
25600
                                            }
25601
                                        });
25602
                                    }
25603
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25604
                                    if (frm) {
25605

    
25606
                                        if (target) {
25607
                                            var f = frm.getForm().findField(target)
25608
                                            _store = f.getStore();
25609
                                            var _tbl = _store.proxy.extraParams.tableName;
25610
                                            var oldParam = _store.proxy.extraParams.param;
25611
                                            _store.proxy.extraParams = {
25612
                                                tableName: _tbl,
25613
                                                param: _label + '[=]' + _Value
25614
                                            };
25615
                                            _store.load();
25616
                                        }
25617
                                        if (custumFunc) {
25618
                                            eval(custumFunc)
25619
                                        }
25620
                                    }
25621
                                },
25622
                                blur: function (val) {
25623
                                    //if(val.value.split('-').length != 2){
25624
                                    var _label = val.name;
25625
                                    var _form = val.formname;
25626
                                    var _Value = val.getValue();
25627
                                    var target = rec.TriggerCombo;
25628
                                    var custumFunc = rec.SelectFunction;
25629
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25630
                                        Ext.Ajax.request({
25631
                                            async: false,
25632
                                            method: 'POST',
25633
                                            url: '/UserControl/GetStore',
25634
                                            params: {
25635
                                                tableName: 'PCMFUNC',
25636
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25637
                                            },
25638
                                            success: function (response) {
25639
                                                var results = Ext.decode(response.responseText);
25640
                                                data_ = results.data[0];
25641
                                                if (data_ != undefined) {
25642
                                                    custumFunc = data_.FunctionCode;
25643
                                                }
25644
                                            }
25645
                                        });
25646
                                    }
25647
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25648
                                    if (frm) {
25649

    
25650
                                        if (target) {
25651
                                            var f = frm.getForm().findField(target)
25652
                                            _store = f.getStore();
25653
                                            var _tbl = _store.proxy.extraParams.tableName;
25654
                                            var oldParam = _store.proxy.extraParams.param;
25655
                                            _store.proxy.extraParams = {
25656
                                                tableName: _tbl,
25657
                                                param: _label + '[=]' + _Value
25658
                                            };
25659
                                            _store.load();
25660
                                        }
25661
                                        if (custumFunc) {
25662
                                            eval(custumFunc)
25663
                                        }
25664
                                    }
25665
                                    //}
25666
                                }
25667

    
25668
                            }
25669
                        });
25670
                    }
25671
                }
25672
                if (isDesk) {
25673
                    if (rec.ColumnNo == 1) {
25674
                        col1.push(formfield);
25675
                    } else {
25676
                        col2.push(formfield);
25677
                    }
25678
                } else {
25679
                    col1.push(formfield);
25680
                }
25681

    
25682
            });
25683
        }
25684
        Ext.applyIf(me, {
25685
            items:
25686
                [
25687
                    {
25688
                        //width: 450,
25689
                        //style: 'width: 50%',
25690
                        defaults: {
25691
                            layout: 'anchor',
25692
                            xtype: 'container',
25693
                            flex: 1,
25694
                            margin: '10px',
25695
                            //defaultType: 'textfield',
25696
                            //anchor: '100%',
25697
                            ////style: 'width: 50%',
25698
                        },
25699
                        items: col1,
25700
                        flex: 1,
25701
                    },
25702
                    {
25703
                        //width: 450,
25704
                        //style: 'width: 50%',
25705
                        defaults: {
25706
                            layout: 'anchor',
25707
                            xtype: 'container',
25708
                            flex: 1,
25709
                            margin: '10px',
25710
                            //defaultType: 'textfield',
25711
                            //anchor: '100%',
25712
                            ////style: 'width: 50%',
25713
                        },
25714
                        items: col2,
25715
                        flex: 1,
25716
                    }
25717
                ]
25718
        });
25719
        this.callParent();
25720
    },
25721
    listeners: {
25722
        boxready: function (dataview) {
25723
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
25724
        }
25725
    },
25726
    buttons: [{
25727
        text: 'Update',
25728
        handler: 'onSaveClick'
25729
    }, {
25730
        text: 'Cancel',
25731
        handler: 'onCancelClick'
25732
    }]
25733
});
25734

    
25735
/*Form ESS GeneratorT YN 20211216*/
25736
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridT', {
25737
    extend: 'Ext.form.Panel',
25738
    alias: ['widget.MinovaWorkflowFormGridT', 'widget.minovaworkflowformgridT', 'widget.workflowformgridT'],
25739
    controller: 'workflowformgrid',
25740
    formname: this.name,
25741
    bizprocid: undefined,
25742
    bizflowid: undefined,
25743
    taskid: undefined,
25744
    tableName: undefined,
25745
    tableNameT: undefined,
25746
    parentKey: undefined,
25747
    titleform: undefined,
25748
    //resizable: true,
25749
    border: true,
25750
    autoScroll: true,
25751
    minHeight: 20,
25752
    layout: {
25753
        type: 'hbox'
25754
    },
25755
    listeners: {
25756
        render: function () {
25757
            if (this.titleform != undefined) {
25758
                this.setTitle(this.titleform);
25759
            }
25760
        },
25761
    },
25762
    buttonAlign: 'left',
25763
    defaults: {
25764
        layout: 'anchor',
25765
        xtype: 'container',
25766
        flex: 1,
25767
        margin: '10px',
25768
        //defaultType: 'textfield',
25769
        //anchor: '100%',
25770
        ////style: 'width: 50%',
25771
    },
25772
    initComponent: function () {
25773
        var col1 = [];
25774
        var col2 = [];
25775
        var me = this;
25776
        var LangID = localStorage.LangId;
25777
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
25778
        var formname_ = me.name;
25779
        var nameTable_ = me.tableName;
25780
        var labelWidth = 150;
25781
        Ext.Ajax.request({
25782
            async: false,
25783
            method: 'POST',
25784
            url: '/UserControl/GetStore',
25785
            params: {
25786
                tableName: 'PDSWFSTRUCTUREFIELD',
25787
                param: parameter
25788
            },
25789
            success: function (response) {
25790
                var results = Ext.decode(response.responseText);
25791
                hasil = results.data;
25792
            }
25793
        });
25794
        if (hasil.length > 0) {
25795
            Ext.each(hasil, function (rec) {
25796
                var formfield = undefined;
25797
                var readonly = false;
25798
                var ishidden = false;
25799
                var allowblank = true;
25800
                var startDt = null;
25801
                var endDt = null;
25802
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25803
                    startDt = 'StartDate';
25804
                    endDt = 'EndDate';
25805
                }
25806
                if (rec.IsReadOnly == '1') {
25807
                    readonly = true;
25808
                }
25809
                if (rec.IsRequired == '1') {
25810
                    allowblank = false;
25811
                }
25812
                if (rec.IsVisible == '0') {
25813
                    ishidden = true;
25814
                }
25815
                if (rec.SearchType == "") //textfield
25816
                {
25817
                    switch (rec.FormatRef) {
25818
                        case "date":
25819
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25820
                                formfield = new Ext.form.DateField({
25821
                                    allowBlank: allowblank,
25822
                                    fieldLabel: rec.ScreenCaption,
25823
                                    readOnly: readonly,
25824
                                    msgTarget: 'side',
25825
                                    //labelCls: 'label-minova',
25826
                                    labelWidth: labelWidth,
25827
                                    hidden: ishidden,
25828
                                    name: rec.FieldName,
25829
                                    submitFormat: 'Ymd',
25830
                                    value: rec.DefaultValue,
25831
                                    anchor: '100%',
25832
                                    vtype: 'daterange',
25833
                                    start: startDt,
25834
                                    end: endDt,
25835
                                    formname: formname_,
25836
                                    nameTable: nameTable_,
25837
                                    hideMode: 'visibility',
25838
                                    listeners: {
25839
                                        change: function (val) {
25840
                                            var _label = val.name;
25841
                                            var _form = val.formname;
25842
                                            var _Value = val.getValue();
25843
                                            var target = rec.TriggerCombo;
25844
                                            var custumFunc = rec.SelectFunction;
25845
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25846
                                                Ext.Ajax.request({
25847
                                                    async: false,
25848
                                                    method: 'POST',
25849
                                                    url: '/UserControl/GetStore',
25850
                                                    params: {
25851
                                                        tableName: 'PCMFUNC',
25852
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25853
                                                    },
25854
                                                    success: function (response) {
25855
                                                        var results = Ext.decode(response.responseText);
25856
                                                        data_ = results.data[0];
25857
                                                        if (data_ != undefined) {
25858
                                                            custumFunc = data_.FunctionCode;
25859
                                                        }
25860
                                                    }
25861
                                                });
25862
                                            }
25863
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25864
                                            if (frm) {
25865
                                                if (custumFunc) {
25866
                                                    eval(custumFunc)
25867
                                                }
25868
                                            }
25869
                                        }
25870
                                    }
25871
                                });
25872
                            } else {
25873
                                formfield = new Ext.form.DateField({
25874
                                    allowBlank: allowblank,
25875
                                    fieldLabel: rec.ScreenCaption,
25876
                                    readOnly: readonly,
25877
                                    msgTarget: 'side',
25878
                                    //labelCls: 'label-minova',
25879
                                    labelWidth: labelWidth,
25880
                                    hidden: ishidden,
25881
                                    name: rec.FieldName,
25882
                                    submitFormat: 'Ymd',
25883
                                    value: rec.DefaultValue,
25884
                                    anchor: '100%',
25885
                                    formname: formname_,
25886
                                    nameTable: nameTable_,
25887
                                    hideMode: 'visibility',
25888
                                    listeners: {
25889
                                        change: function (val) {
25890
                                            var _label = val.name;
25891
                                            var _form = val.formname;
25892
                                            var _Value = val.getValue();
25893
                                            var target = rec.TriggerCombo;
25894
                                            var custumFunc = rec.SelectFunction;
25895
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25896
                                                Ext.Ajax.request({
25897
                                                    async: false,
25898
                                                    method: 'POST',
25899
                                                    url: '/UserControl/GetStore',
25900
                                                    params: {
25901
                                                        tableName: 'PCMFUNC',
25902
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25903
                                                    },
25904
                                                    success: function (response) {
25905
                                                        var results = Ext.decode(response.responseText);
25906
                                                        data_ = results.data[0];
25907
                                                        if (data_ != undefined) {
25908
                                                            custumFunc = data_.FunctionCode;
25909
                                                        }
25910
                                                    }
25911
                                                });
25912
                                            }
25913
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25914
                                            if (frm) {
25915
                                                if (custumFunc) {
25916
                                                    eval(custumFunc)
25917
                                                }
25918
                                            }
25919
                                        }
25920
                                    }
25921
                                });
25922
                            }
25923
                            break;
25924
                        case "time":
25925
                            formfield = new Ext.form.TimeField({
25926
                                allowBlank: allowblank,
25927
                                fieldLabel: rec.ScreenCaption,
25928
                                readOnly: readonly,
25929
                                //labelCls: 'label-minova',
25930
                                labelWidth: labelWidth,
25931
                                hidden: ishidden,
25932
                                name: rec.FieldName,
25933
                                msgTarget: 'side',
25934
                                format: 'Hi',
25935
                                submitFormat: 'Hi',
25936
                                increment: 5,
25937
                                value: rec.DefaultValue,
25938
                                anchor: '100%',
25939
                                formname: formname_,
25940
                                nameTable: nameTable_,
25941
                                listeners: {
25942
                                    change: function (val) {
25943
                                        var _label = val.name;
25944
                                        var _form = val.formname;
25945
                                        var _Value = val.getValue();
25946
                                        var target = rec.TriggerCombo;
25947
                                        var custumFunc = rec.SelectFunction;
25948
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25949
                                            Ext.Ajax.request({
25950
                                                async: false,
25951
                                                method: 'POST',
25952
                                                url: '/UserControl/GetStore',
25953
                                                params: {
25954
                                                    tableName: 'PCMFUNC',
25955
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
25956
                                                },
25957
                                                success: function (response) {
25958
                                                    var results = Ext.decode(response.responseText);
25959
                                                    data_ = results.data[0];
25960
                                                    if (data_ != undefined) {
25961
                                                        custumFunc = data_.FunctionCode;
25962
                                                    }
25963
                                                }
25964
                                            });
25965
                                        }
25966
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25967
                                        if (frm) {
25968
                                            if (custumFunc) {
25969
                                                eval(custumFunc)
25970
                                            }
25971
                                        }
25972
                                    }
25973
                                }
25974
                            });
25975
                            break;
25976
                        case "amount":
25977
                            formfield = new Ext.form.TextField({
25978
                                allowBlank: allowblank,
25979
                                fieldLabel: rec.ScreenCaption,
25980
                                readOnly: readonly,
25981
                                //labelCls: 'label-minova',
25982
                                labelWidth: labelWidth,
25983
                                hidden: ishidden,
25984
                                name: rec.FieldName,
25985
                                msgTarget: 'side',
25986
                                value: rec.DefaultValue,
25987
                                maxLength: rec.Length,
25988
                                anchor: '100%',
25989
                                formname: formname_,
25990
                                nameTable: nameTable_,
25991
                                fieldStyle: 'text-align:right;',
25992
                                listeners: {
25993
                                    change: function (val) {
25994
                                        var _label = val.name;
25995
                                        var _form = val.formname;
25996
                                        var _Value = val.getValue();
25997
                                        var target = rec.TriggerCombo;
25998
                                        var custumFunc = rec.SelectFunction;
25999
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26000
                                            Ext.Ajax.request({
26001
                                                async: false,
26002
                                                method: 'POST',
26003
                                                url: '/UserControl/GetStore',
26004
                                                params: {
26005
                                                    tableName: 'PCMFUNC',
26006
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26007
                                                },
26008
                                                success: function (response) {
26009
                                                    var results = Ext.decode(response.responseText);
26010
                                                    data_ = results.data[0];
26011
                                                    if (data_ != undefined) {
26012
                                                        custumFunc = data_.FunctionCode;
26013
                                                    }
26014
                                                }
26015
                                            });
26016
                                        }
26017
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26018
                                        if (frm) {
26019
                                            if (custumFunc) {
26020
                                                eval(custumFunc)
26021
                                            }
26022
                                        }
26023
                                    }
26024
                                }
26025
                            });
26026
                            break;
26027
                        case "file":
26028
                            formfield = new MinovaUtil.MinovaES.UploadFile({
26029
                                allowBlank: allowblank,
26030
                                fieldLabel: rec.ScreenCaption,
26031
                                readOnly: readonly,
26032
                                readOnlyCls: 'minova-readonly',
26033
                                hidden: ishidden,
26034
                                //labelCls: 'label-minova',
26035
                                name: rec.FieldName,
26036
                                msgTarget: 'side',
26037
                                fieldname: rec.FieldName,
26038
                                IsPrimaryKey: rec.IsPrimaryKey,
26039
                                tableName: rec.TableRef,
26040
                                triggerCls: 'x-form-search-trigger',
26041
                                formtarget: me.formname,
26042
                                anchor: '100%',
26043
                                formname: formname_,
26044
                                nameTable: nameTable_,
26045
                                listeners: {
26046
                                    change: function (val) {
26047
                                        var _label = val.name;
26048
                                        var _form = val.formname;
26049
                                        var _Value = val.getValue();
26050
                                        var target = rec.TriggerCombo;
26051
                                        var custumFunc = rec.SelectFunction;
26052
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26053
                                            Ext.Ajax.request({
26054
                                                async: false,
26055
                                                method: 'POST',
26056
                                                url: '/UserControl/GetStore',
26057
                                                params: {
26058
                                                    tableName: 'PCMFUNC',
26059
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26060
                                                },
26061
                                                success: function (response) {
26062
                                                    var results = Ext.decode(response.responseText);
26063
                                                    data_ = results.data[0];
26064
                                                    if (data_ != undefined) {
26065
                                                        custumFunc = data_.FunctionCode;
26066
                                                    }
26067
                                                }
26068
                                            });
26069
                                        }
26070
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26071
                                        if (frm) {
26072
                                            if (target) {
26073
                                                var f = frm.getForm().findField(target)
26074
                                                _store = f.getStore();
26075
                                                var _tbl = _store.proxy.extraParams.tableName;
26076
                                                var oldParam = _store.proxy.extraParams.param;
26077
                                                _store.proxy.extraParams = {
26078
                                                    tableName: _tbl,
26079
                                                    param: _label + '[=]' + _Value
26080
                                                };
26081
                                                _store.load();
26082
                                            }
26083
                                            if (custumFunc) {
26084
                                                eval(custumFunc)
26085
                                            }
26086
                                        }
26087
                                    }
26088
                                }
26089
                            });
26090
                            break;
26091
                        default:
26092
                            if (rec.DataType == 0) {
26093
                                if (rec.Length > 250) {
26094
                                    formfield = new Ext.form.TextArea({
26095
                                        allowBlank: allowblank,
26096
                                        fieldLabel: rec.ScreenCaption,
26097
                                        readOnly: readonly,
26098
                                        ////labelCls: 'label-minova',
26099
                                        labelWidth: labelWidth,
26100
                                        hidden: ishidden,
26101
                                        name: rec.FieldName,
26102
                                        msgTarget: 'side',
26103
                                        value: rec.DefaultValue,
26104
                                        maxLength: rec.Length,
26105
                                        anchor: '100%',
26106
                                        grow: true,
26107
                                        formname: formname_,
26108
                                        nameTable: nameTable_,
26109
                                        listeners: {
26110
                                            change: function (val) {
26111
                                                var _label = val.name;
26112
                                                var _form = val.formname;
26113
                                                var _Value = val.getValue();
26114
                                                var target = rec.TriggerCombo;
26115
                                                var custumFunc = rec.SelectFunction;
26116
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26117
                                                    Ext.Ajax.request({
26118
                                                        async: false,
26119
                                                        method: 'POST',
26120
                                                        url: '/UserControl/GetStore',
26121
                                                        params: {
26122
                                                            tableName: 'PCMFUNC',
26123
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26124
                                                        },
26125
                                                        success: function (response) {
26126
                                                            var results = Ext.decode(response.responseText);
26127
                                                            data_ = results.data[0];
26128
                                                            if (data_ != undefined) {
26129
                                                                custumFunc = data_.FunctionCode;
26130
                                                            }
26131
                                                        }
26132
                                                    });
26133
                                                }
26134
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26135
                                                if (frm) {
26136
                                                    if (custumFunc) {
26137
                                                        eval(custumFunc)
26138
                                                    }
26139
                                                }
26140
                                            }
26141
                                        }
26142
                                    });
26143
                                } else {
26144
                                    if (rec.FixedValue != '') {
26145
                                        var storeData = [];
26146
                                        var str = rec.FixedValue;
26147
                                        var hasil = str.split('||');
26148
                                        hasil.forEach(function (h) {
26149
                                            store_ = h.split('=')
26150
                                            storeData.push({
26151
                                                code: store_[0],
26152
                                                desc: store_[1],
26153
                                            });
26154
                                        });
26155
                                        formfield = new Ext.form.ComboBox({
26156
                                            allowBlank: allowblank,
26157
                                            fieldLabel: rec.ScreenCaption,
26158
                                            forceSelection: true,
26159
                                            readOnly: readonly,
26160
                                            //labelCls: 'label-minova',
26161
                                            labelWidth: labelWidth,
26162
                                            hidden: ishidden,
26163
                                            name: rec.FieldName,
26164
                                            msgTarget: 'side',
26165
                                            value: rec.DefaultValue,
26166
                                            anchor: '100%',
26167
                                            formname: formname_,
26168
                                            nameTable: nameTable_,
26169
                                            formtarget: me.formname,
26170
                                            store: Ext.create('Ext.data.Store', {
26171
                                                storeId: 'store' + rec.FieldName,
26172
                                                autoLoad: true,
26173
                                                data: storeData
26174

    
26175
                                            }),
26176
                                            listeners: {
26177
                                                change: function (val) {
26178
                                                    var _label = val.name;
26179
                                                    var _form = val.formtarget;
26180
                                                    var _Value = val.getValue();
26181
                                                    var target = rec.TriggerCombo;
26182
                                                    var custumFunc = rec.SelectFunction;
26183
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26184
                                                    if (frm) {
26185
                                                        if (target) {
26186
                                                            var f = frm.getForm().findField(target)
26187
                                                            _store = f.getStore();
26188
                                                            var _tbl = _store.proxy.extraParams.tableName;
26189
                                                            var oldParam = _store.proxy.extraParams.param;
26190
                                                            _store.proxy.extraParams = {
26191
                                                                tableName: _tbl,
26192
                                                                param: _label + '[=]' + _Value
26193
                                                            };
26194
                                                            _store.load();
26195
                                                        }
26196
                                                        if (custumFunc) {
26197
                                                            eval(custumFunc)
26198
                                                        }
26199
                                                    }
26200
                                                }
26201
                                            },
26202
                                            queryMode: 'local',
26203
                                            valueField: 'code',
26204
                                            displayField: 'desc',
26205
                                        });
26206
                                    } else {
26207
                                        formfield = new Ext.form.TextField({
26208
                                            allowBlank: allowblank,
26209
                                            fieldLabel: rec.ScreenCaption,
26210
                                            readOnly: readonly,
26211
                                            //labelCls: 'label-minova',
26212
                                            labelWidth: labelWidth,
26213
                                            hidden: ishidden,
26214
                                            name: rec.FieldName,
26215
                                            msgTarget: 'side',
26216
                                            value: rec.DefaultValue,
26217
                                            maxLength: rec.Length,
26218
                                            anchor: '100%',
26219
                                            formname: formname_,
26220
                                            nameTable: nameTable_,
26221
                                            listeners: {
26222
                                                change: function (val) {
26223
                                                    var _label = val.name;
26224
                                                    var _form = val.formname;
26225
                                                    var _Value = val.getValue();
26226
                                                    var target = rec.TriggerCombo;
26227
                                                    var custumFunc = rec.SelectFunction;
26228
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26229
                                                        Ext.Ajax.request({
26230
                                                            async: false,
26231
                                                            method: 'POST',
26232
                                                            url: '/UserControl/GetStore',
26233
                                                            params: {
26234
                                                                tableName: 'PCMFUNC',
26235
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26236
                                                            },
26237
                                                            success: function (response) {
26238
                                                                var results = Ext.decode(response.responseText);
26239
                                                                data_ = results.data[0];
26240
                                                                if (data_ != undefined) {
26241
                                                                    custumFunc = data_.FunctionCode;
26242
                                                                }
26243
                                                            }
26244
                                                        });
26245
                                                    }
26246
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26247
                                                    if (frm) {
26248
                                                        if (custumFunc) {
26249
                                                            eval(custumFunc)
26250
                                                        }
26251
                                                    }
26252
                                                }
26253
                                            }
26254
                                        });
26255
                                    }
26256
                                }
26257
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
26258
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
26259
                                    allowBlank: allowblank,
26260
                                    fieldLabel: rec.ScreenCaption,
26261
                                    readOnly: readonly,
26262
                                    //labelCls: 'label-minova',
26263
                                    labelWidth: labelWidth,
26264
                                    msgTarget: 'side',
26265
                                    hidden: ishidden,
26266
                                    name: rec.FieldName,
26267
                                    value: rec.DefaultValue,
26268
                                    maxLength: rec.Length,
26269
                                    anchor: '100%',
26270
                                    formname: formname_,
26271
                                    nameTable: nameTable_,
26272
                                    fieldStyle: 'text-align:right;',
26273
                                    listeners: {
26274
                                        change: function (val) {
26275
                                            var _label = val.name;
26276
                                            var _form = val.formname;
26277
                                            var _Value = val.getValue();
26278
                                            var target = rec.TriggerCombo;
26279
                                            var custumFunc = rec.SelectFunction;
26280
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26281
                                                Ext.Ajax.request({
26282
                                                    async: false,
26283
                                                    method: 'POST',
26284
                                                    url: '/UserControl/GetStore',
26285
                                                    params: {
26286
                                                        tableName: 'PCMFUNC',
26287
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26288
                                                    },
26289
                                                    success: function (response) {
26290
                                                        var results = Ext.decode(response.responseText);
26291
                                                        data_ = results.data[0];
26292
                                                        if (data_ != undefined) {
26293
                                                            custumFunc = data_.FunctionCode;
26294
                                                        }
26295
                                                    }
26296
                                                });
26297
                                            }
26298
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26299
                                            if (frm) {
26300
                                                if (target) {
26301
                                                    var f = frm.getForm().findField(target)
26302
                                                    _store = f.getStore();
26303
                                                    var _tbl = _store.proxy.extraParams.tableName;
26304
                                                    var oldParam = _store.proxy.extraParams.param;
26305
                                                    _store.proxy.extraParams = {
26306
                                                        tableName: _tbl,
26307
                                                        param: _label + '[=]' + _Value
26308
                                                    };
26309
                                                    _store.load();
26310
                                                }
26311
                                                if (custumFunc) {
26312
                                                    eval(custumFunc)
26313
                                                }
26314
                                            }
26315
                                        }
26316
                                    }
26317
                                });
26318
                            } else if (rec.DataType == 3) {
26319
                                formfield = new Ext.form.TextField({
26320
                                    allowBlank: allowblank,
26321
                                    fieldLabel: rec.ScreenCaption,
26322
                                    readOnly: readonly,
26323
                                    //labelCls: 'label-minova',
26324
                                    labelWidth: labelWidth,
26325
                                    msgTarget: 'side',
26326
                                    hidden: ishidden,
26327
                                    name: rec.FieldName,
26328
                                    value: rec.DefaultValue,
26329
                                    maxLength: rec.Length,
26330
                                    precision: rec.Prec,
26331
                                    anchor: '100%',
26332
                                    formname: formname_,
26333
                                    nameTable: nameTable_,
26334
                                    fieldStyle: 'text-align:right;',
26335
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
26336
                                    listeners: {
26337
                                        change: function (val) {
26338
                                            var _label = val.name;
26339
                                            var _form = val.formname;
26340
                                            var _Value = val.getValue();
26341
                                            var target = rec.TriggerCombo;
26342
                                            var custumFunc = rec.SelectFunction;
26343
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26344
                                                Ext.Ajax.request({
26345
                                                    async: false,
26346
                                                    method: 'POST',
26347
                                                    url: '/UserControl/GetStore',
26348
                                                    params: {
26349
                                                        tableName: 'PCMFUNC',
26350
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26351
                                                    },
26352
                                                    success: function (response) {
26353
                                                        var results = Ext.decode(response.responseText);
26354
                                                        data_ = results.data[0];
26355
                                                        if (data_ != undefined) {
26356
                                                            custumFunc = data_.FunctionCode;
26357
                                                        }
26358
                                                    }
26359
                                                });
26360
                                            }
26361
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26362
                                            if (frm) {
26363
                                                if (target) {
26364
                                                    var f = frm.getForm().findField(target)
26365
                                                    _store = f.getStore();
26366
                                                    var _tbl = _store.proxy.extraParams.tableName;
26367
                                                    var oldParam = _store.proxy.extraParams.param;
26368
                                                    _store.proxy.extraParams = {
26369
                                                        tableName: _tbl,
26370
                                                        param: _label + '[=]' + _Value
26371
                                                    };
26372
                                                    _store.load();
26373
                                                }
26374
                                                if (custumFunc) {
26375
                                                    eval(custumFunc)
26376
                                                }
26377
                                            }
26378
                                        }
26379
                                    }
26380
                                });
26381
                            }
26382
                    }
26383
                } else if (rec.SearchType != "") {
26384
                    if (rec.SearchType == "0") //combobox
26385
                    {
26386
                        valueField = null;
26387
                        displayValue = null;
26388
                        if (rec.TableRef != "") {
26389
                            Ext.Ajax.request({
26390
                                async: false,
26391
                                method: 'POST',
26392
                                url: '/UserControl/GetStore',
26393
                                params: {
26394
                                    tableName: 'SDATATABLEFIELD',
26395
                                    param: 'TableName[equal]' + rec.TableRef
26396
                                },
26397
                                success: function (response) {
26398
                                    var results = Ext.decode(response.responseText);
26399
                                    data_ = results.data;
26400
                                    if (data_ != undefined) {
26401
                                        valueField_ = $.grep(data_, function (r) {
26402
                                            return r.ValueField == '1'
26403
                                        });
26404
                                        if (valueField_.length > 0) {
26405
                                            valueField = valueField_[0].FieldName
26406
                                        }
26407
                                        displayValue_ = $.grep(data_, function (r) {
26408
                                            return r.DisplayValue == '1'
26409
                                        });
26410
                                        if (displayValue_.length > 0) {
26411
                                            displayValue = displayValue_[0].FieldName
26412
                                        }
26413
                                    }
26414
                                }
26415
                            });
26416
                        }
26417
                        formfield = new Ext.form.ComboBox({
26418
                            allowBlank: allowblank,
26419
                            fieldLabel: rec.ScreenCaption,
26420
                            forceSelection: true,
26421
                            anyMatch: true,
26422
                            readOnly: readonly,
26423
                            //labelCls: 'label-minova',
26424
                            labelWidth: labelWidth,
26425
                            hidden: ishidden,
26426
                            msgTarget: 'side',
26427
                            name: rec.FieldName,
26428
                            formname: formname_,
26429
                            nameTable: nameTable_,
26430
                            value: rec.DefaultValue,
26431
                            anchor: '100%', //width: '95%',
26432
                            store: Ext.create('Ext.data.Store', {
26433
                                storeId: 'store' + rec.FieldName,
26434
                                autoLoad: false,
26435
                                proxy: {
26436
                                    method: 'POST',
26437
                                    type: 'ajax',
26438
                                    url: '/UserControl/GetStore',
26439
                                    extraParams: {
26440
                                        tableName: rec.TableRef,
26441
                                        param: rec.ParamCombo
26442
                                    },
26443
                                    reader: {
26444
                                        type: 'json',
26445
                                        root: 'data',
26446
                                        totalProperty: 'data[0].TotalCount'
26447
                                    }
26448
                                }
26449
                            }),
26450
                            formtarget: formname_,
26451
                            listeners: {
26452
                                afterrender: function (f) {
26453
                                    var store_ = f.getStore();
26454
                                    store_.load();
26455
                                },
26456
                                change: function (val) {
26457
                                    var _label = val.name;
26458
                                    var _form = val.formtarget;
26459
                                    var _Value = val.getValue();
26460
                                    var target = rec.TriggerCombo;
26461
                                    var custumFunc = rec.SelectFunction;
26462
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26463
                                    if (frm) {
26464

    
26465
                                        if (target) {
26466
                                            var f = frm.getForm().findField(target)
26467
                                            _store = f.getStore();
26468
                                            var _tbl = _store.proxy.extraParams.tableName;
26469
                                            var oldParam = _store.proxy.extraParams.param;
26470
                                            _store.proxy.extraParams = {
26471
                                                tableName: _tbl,
26472
                                                param: _label + '[=]' + _Value
26473
                                            };
26474
                                            _store.load();
26475
                                        }
26476
                                        if (custumFunc) {
26477
                                            eval(custumFunc)
26478
                                        }
26479
                                    }
26480
                                }
26481
                            },
26482
                            queryMode: 'local',
26483
                            displayField: displayValue,
26484
                            valueField: valueField,
26485
                        });
26486
                    } else if (rec.SearchType == '2') //Lookup
26487
                    {
26488
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
26489
                            allowBlank: allowblank,
26490
                            fieldLabel: rec.ScreenCaption,
26491
                            readOnly: readonly,
26492
                            IsPrimaryKey: rec.IsPrimaryKey,
26493
                            msgTarget: 'side',
26494
                            //labelCls: 'label-minova',
26495
                            labelWidth: labelWidth,
26496
                            hidden: ishidden,
26497
                            name: rec.FieldName,
26498
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
26499
                            triggerCls: 'x-form-search-trigger',
26500
                            vtype: 'alphanum', // disable space
26501
                            formtarget: me.formname, // nama form  yang akan di set value-nya
26502
                            anchor: '100%',
26503
                            formname: formname_,
26504
                            nameTable: nameTable_,
26505
                            LookupFunction: rec.LookupFunction,
26506
                            SearchFunction: rec.SearchFunction,
26507
                            listeners: {
26508
                                change: function (val) {
26509
                                    var _label = val.name;
26510
                                    var _form = val.formname;
26511
                                    var _Value = val.getValue();
26512
                                    var target = rec.TriggerCombo;
26513
                                    var custumFunc = rec.SelectFunction;
26514
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26515
                                        Ext.Ajax.request({
26516
                                            async: false,
26517
                                            method: 'POST',
26518
                                            url: '/UserControl/GetStore',
26519
                                            params: {
26520
                                                tableName: 'PCMFUNC',
26521
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26522
                                            },
26523
                                            success: function (response) {
26524
                                                var results = Ext.decode(response.responseText);
26525
                                                data_ = results.data[0];
26526
                                                if (data_ != undefined) {
26527
                                                    custumFunc = data_.FunctionCode;
26528
                                                }
26529
                                            }
26530
                                        });
26531
                                    }
26532
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26533
                                    if (frm) {
26534

    
26535
                                        if (target) {
26536
                                            var f = frm.getForm().findField(target)
26537
                                            _store = f.getStore();
26538
                                            var _tbl = _store.proxy.extraParams.tableName;
26539
                                            var oldParam = _store.proxy.extraParams.param;
26540
                                            _store.proxy.extraParams = {
26541
                                                tableName: _tbl,
26542
                                                param: _label + '[=]' + _Value
26543
                                            };
26544
                                            _store.load();
26545
                                        }
26546

    
26547
                                        if (custumFunc) {
26548
                                            eval(custumFunc)
26549
                                        }
26550

    
26551
                                    }
26552

    
26553
                                },
26554

    
26555
                            },
26556
                        });
26557
                    } else if (rec.SearchType == '3') //lookup tree
26558
                    {
26559
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
26560
                            allowBlank: allowblank,
26561
                            fieldLabel: rec.ScreenCaption,
26562
                            readOnly: readonly,
26563
                            IsPrimaryKey: rec.IsPrimaryKey,
26564
                            //labelCls: 'label-minova',
26565
                            labelWidth: labelWidth,
26566
                            hidden: ishidden,
26567
                            name: rec.FieldName,
26568
                            msgTarget: 'side',
26569
                            triggerCls: 'x-form-search-trigger',
26570
                            treeSructure: rec.SearchFunction, //'O-O-P',
26571
                            objClassValue: rec.ParamCombo, //'O',
26572
                            formname: formname_,
26573
                            targetField: rec.FieldName,
26574
                            nameTable: nameTable_,
26575
                            editable: false,
26576
                            anchor: '100%',
26577
                            listeners: {
26578
                                change3: function (val) {
26579
                                    var _label = val.name;
26580
                                    var _form = val.formname;
26581
                                    var _Value = val.getValue();
26582
                                    var target = rec.TriggerCombo;
26583
                                    var custumFunc = rec.SelectFunction;
26584
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26585
                                        Ext.Ajax.request({
26586
                                            async: false,
26587
                                            method: 'POST',
26588
                                            url: '/UserControl/GetStore',
26589
                                            params: {
26590
                                                tableName: 'PCMFUNC',
26591
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26592
                                            },
26593
                                            success: function (response) {
26594
                                                var results = Ext.decode(response.responseText);
26595
                                                data_ = results.data[0];
26596
                                                if (data_ != undefined) {
26597
                                                    custumFunc = data_.FunctionCode;
26598
                                                }
26599
                                            }
26600
                                        });
26601
                                    }
26602
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26603
                                    if (frm) {
26604

    
26605
                                        if (target) {
26606
                                            var f = frm.getForm().findField(target)
26607
                                            _store = f.getStore();
26608
                                            var _tbl = _store.proxy.extraParams.tableName;
26609
                                            var oldParam = _store.proxy.extraParams.param;
26610
                                            _store.proxy.extraParams = {
26611
                                                tableName: _tbl,
26612
                                                param: _label + '[=]' + _Value
26613
                                            };
26614
                                            _store.load();
26615
                                        }
26616
                                        if (custumFunc) {
26617
                                            eval(custumFunc)
26618
                                        }
26619
                                    }
26620
                                },
26621
                                blur: function (val) {
26622
                                    //if(val.value.split('-').length != 2){
26623
                                    var _label = val.name;
26624
                                    var _form = val.formname;
26625
                                    var _Value = val.getValue();
26626
                                    var target = rec.TriggerCombo;
26627
                                    var custumFunc = rec.SelectFunction;
26628
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26629
                                        Ext.Ajax.request({
26630
                                            async: false,
26631
                                            method: 'POST',
26632
                                            url: '/UserControl/GetStore',
26633
                                            params: {
26634
                                                tableName: 'PCMFUNC',
26635
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26636
                                            },
26637
                                            success: function (response) {
26638
                                                var results = Ext.decode(response.responseText);
26639
                                                data_ = results.data[0];
26640
                                                if (data_ != undefined) {
26641
                                                    custumFunc = data_.FunctionCode;
26642
                                                }
26643
                                            }
26644
                                        });
26645
                                    }
26646
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26647
                                    if (frm) {
26648

    
26649
                                        if (target) {
26650
                                            var f = frm.getForm().findField(target)
26651
                                            _store = f.getStore();
26652
                                            var _tbl = _store.proxy.extraParams.tableName;
26653
                                            var oldParam = _store.proxy.extraParams.param;
26654
                                            _store.proxy.extraParams = {
26655
                                                tableName: _tbl,
26656
                                                param: _label + '[=]' + _Value
26657
                                            };
26658
                                            _store.load();
26659
                                        }
26660
                                        if (custumFunc) {
26661
                                            eval(custumFunc)
26662
                                        }
26663
                                    }
26664
                                    //}
26665
                                }
26666

    
26667
                            }
26668
                        });
26669
                    }
26670
                }
26671
                if (isDesk) {
26672
                    if (rec.ColumnNo == 1) {
26673
                        col1.push(formfield);
26674
                    } else {
26675
                        col2.push(formfield);
26676
                    }
26677
                } else {
26678
                    col1.push(formfield);
26679
                }
26680

    
26681
            });
26682
        }
26683
        Ext.applyIf(me, {
26684
            items:
26685
                [
26686
                    {
26687
                        //width: 450,
26688
                        //style: 'width: 50%',
26689
                        defaults: {
26690
                            layout: 'anchor',
26691
                            xtype: 'container',
26692
                            flex: 1,
26693
                            margin: '10px',
26694
                            //defaultType: 'textfield',
26695
                            //anchor: '100%',
26696
                            ////style: 'width: 50%',
26697
                        },
26698
                        items: col1,
26699
                        flex: 1,
26700
                    },
26701
                    {
26702
                        //width: 450,
26703
                        //style: 'width: 50%',
26704
                        defaults: {
26705
                            layout: 'anchor',
26706
                            xtype: 'container',
26707
                            flex: 1,
26708
                            margin: '10px',
26709
                            //defaultType: 'textfield',
26710
                            //anchor: '100%',
26711
                            ////style: 'width: 50%',
26712
                        },
26713
                        items: col2,
26714
                        flex: 1,
26715
                    }
26716
                ]
26717
        });
26718
        this.callParent();
26719
    },
26720
    listeners: {
26721
        boxready: function (dataview) {
26722
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
26723
        }
26724
    },
26725
    buttons: [{
26726
        text: 'Update',
26727
        handler: 'onSaveClick'
26728
    }, {
26729
        text: 'Cancel',
26730
        handler: 'onCancelClick'
26731
    }]
26732
});
26733

    
26734
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridController', {
26735
    extend: 'Ext.app.ViewController',
26736
    alias: 'controller.workflowformgrid',
26737
    //afterrender: function () {
26738
    //    this.reset();
26739
    //},
26740

    
26741
    onSaveClick: function () {
26742
        // Save the changes pending in the dialog's child session back to the
26743
        // parent session.
26744
        //this.dialog.getSession().save();
26745
        var frmPanel = this.getView();
26746
        //var panel = this.up('form');
26747
        //var form = panel.getForm();
26748
        if (frmPanel.isValid()) {
26749
            //Ext.Msg.alert('Success');
26750
            var grdPanel = Ext.ComponentQuery.query('[name=grid' + frmPanel.tableName + ']')[0];
26751
            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
26752
            values = frmPanel.getValues();
26753
            try {               
26754
                dtrec.set(values);
26755
                }
26756
            catch (e) {
26757
                //grdPanel.reconfigure();
26758
                console.log(e);
26759
            }
26760
            frmPanel.hide();
26761
            //this.onCancelClick();
26762
        } else {
26763
            fieldNames = [];
26764
            fields = this.getInvalidFields(frmPanel);
26765
            for (var i = 0; i < fields.length; i++) {
26766
                field = fields[i];
26767
                fieldNames.push(i + 1 + '. ' + field.fieldLabel + ' (' + field.activeErrors[0] + ')');
26768
            }
26769
            console.debug(fieldNames);
26770
            Ext.MessageBox.alert('Invalid Fields', 'The following fields are invalid: </br> ' + fieldNames.join(' </br>'));
26771
        }
26772
    },
26773

    
26774
    onCancelClick: function () {
26775
        //this.getView().remove(this.dialog);
26776
        //this.dialog = null;
26777
        var frmPanel = this.getView();
26778
        //frmPanel.reset();
26779
        frmPanel.hide();
26780
    },
26781

    
26782
    getInvalidFields: function (frmPanel) {
26783
        var invalidFields = [];
26784
        Ext.suspendLayouts();
26785
        frmPanel.getForm().getFields().filterBy(function (field) {
26786
            if (field.validate()) return;
26787
            invalidFields.push(field);
26788
        });
26789
        Ext.resumeLayouts(true);
26790
        return invalidFields;
26791
    },
26792
});
26793

    
26794
/*Form ESS Generator Layout: Auto if just 1 column YN 20211216*/
26795
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm1', {
26796
    extend: 'Ext.form.Panel',
26797
    alias: ['widget.MinovaWorkflowForm1', 'widget.minovaworkflowform1', 'widget.workflowform1'],
26798
    formname: this.name,
26799
    bizprocid: undefined,
26800
    bizflowid: undefined,
26801
    taskid: undefined,
26802
    tableName: undefined,
26803
    tableNameT: undefined,
26804
    parentKey: undefined,
26805
    titleform: undefined,
26806
    name: undefined,
26807
    labelAlign: 'left',
26808
    labelWidth: 150,
26809
    labelSeparator: undefined,
26810
    //resizable: true,
26811
    border: true,
26812
    autoScroll: true,
26813
    minHeight: 20,
26814
    marginDefault: 10,
26815
    layout: {
26816
        type: 'hbox'
26817
    },
26818
    listeners: {
26819
        render: function () {
26820
            if (this.titleform != undefined) {
26821
                this.setTitle(this.titleform);
26822
            }
26823
        },
26824
    },
26825
    defaults: {
26826
        layout: 'anchor',
26827
        xtype: 'container',
26828
        flex: 1,
26829
        margin: this.marginDefault,
26830
        //defaultType: 'textfield',
26831
        //anchor: '100%',
26832
        ////style: 'width: 50%',
26833
    },
26834
    initComponent: function () {
26835
        var col1 = [];
26836
        var col2 = [];
26837
        var me = this;
26838
        var LangID = localStorage.LangId;
26839
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
26840
        var formname_ = me.name;
26841
        var nameTable_ = me.tableName;
26842
        var labelWidth = me.labelWidth;
26843
        Ext.Ajax.request({
26844
            async: false,
26845
            method: 'POST',
26846
            url: '/UserControl/GetStore',
26847
            params: {
26848
                tableName: 'PDSWFSTRUCTUREFIELD',
26849
                param: parameter
26850
            },
26851
            success: function (response) {
26852
                var results = Ext.decode(response.responseText);
26853
                hasil = results.data;
26854
            }
26855
        });
26856
        if (hasil.length > 0) {
26857
            Ext.each(hasil, function (rec) {
26858
                var formfield = undefined;
26859
                var readonly = false;
26860
                var ishidden = false;
26861
                var allowblank = true;
26862
                var startDt = null;
26863
                var endDt = null;
26864
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
26865
                    startDt = 'StartDate';
26866
                    endDt = 'EndDate';
26867
                }
26868
                if (rec.IsReadOnly == '1') {
26869
                    readonly = true;
26870
                }
26871
                if (rec.IsRequired == '1') {
26872
                    allowblank = false;
26873
                }
26874
                if (rec.IsVisible == '0') {
26875
                    ishidden = true;
26876
                }
26877
                if (rec.SearchType == "") //textfield
26878
                {
26879
                    switch (rec.FormatRef) {
26880
                        case "date":
26881
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
26882
                                formfield = new Ext.form.DateField({
26883
                                    allowBlank: allowblank,
26884
                                    fieldLabel: rec.ScreenCaption,
26885
                                    readOnly: readonly,
26886
                                    msgTarget: 'side',
26887
                                    //labelCls: 'label-minova',
26888
                                    labelWidth: labelWidth,
26889
                                    hidden: ishidden,
26890
                                    name: rec.FieldName,
26891
                                    submitFormat: 'Ymd',
26892
                                    value: rec.DefaultValue,
26893
                                    anchor: '100%',
26894
                                    vtype: 'daterange',
26895
                                    start: startDt,
26896
                                    end: endDt,
26897
                                    formname: formname_,
26898
                                    nameTable: nameTable_,
26899
                                    hideMode: 'visibility',
26900
                                    listeners: {
26901
                                        change: function (val) {
26902
                                            var _label = val.name;
26903
                                            var _form = val.formname;
26904
                                            var _Value = val.getValue();
26905
                                            var target = rec.TriggerCombo;
26906
                                            var custumFunc = rec.SelectFunction;
26907
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26908
                                                Ext.Ajax.request({
26909
                                                    async: false,
26910
                                                    method: 'POST',
26911
                                                    url: '/UserControl/GetStore',
26912
                                                    params: {
26913
                                                        tableName: 'PCMFUNC',
26914
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26915
                                                    },
26916
                                                    success: function (response) {
26917
                                                        var results = Ext.decode(response.responseText);
26918
                                                        data_ = results.data[0];
26919
                                                        if (data_ != undefined) {
26920
                                                            custumFunc = data_.FunctionCode;
26921
                                                        }
26922
                                                    }
26923
                                                });
26924
                                            }
26925
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26926
                                            if (frm) {
26927
                                                if (custumFunc) {
26928
                                                    eval(custumFunc)
26929
                                                }
26930
                                            }
26931
                                        }
26932
                                    }
26933
                                });
26934
                            } else {
26935
                                formfield = new Ext.form.DateField({
26936
                                    allowBlank: allowblank,
26937
                                    fieldLabel: rec.ScreenCaption,
26938
                                    readOnly: readonly,
26939
                                    msgTarget: 'side',
26940
                                    //labelCls: 'label-minova',
26941
                                    labelWidth: labelWidth,
26942
                                    hidden: ishidden,
26943
                                    name: rec.FieldName,
26944
                                    submitFormat: 'Ymd',
26945
                                    value: rec.DefaultValue,
26946
                                    anchor: '100%',
26947
                                    formname: formname_,
26948
                                    nameTable: nameTable_,
26949
                                    hideMode: 'visibility',
26950
                                    listeners: {
26951
                                        change: function (val) {
26952
                                            var _label = val.name;
26953
                                            var _form = val.formname;
26954
                                            var _Value = val.getValue();
26955
                                            var target = rec.TriggerCombo;
26956
                                            var custumFunc = rec.SelectFunction;
26957
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26958
                                                Ext.Ajax.request({
26959
                                                    async: false,
26960
                                                    method: 'POST',
26961
                                                    url: '/UserControl/GetStore',
26962
                                                    params: {
26963
                                                        tableName: 'PCMFUNC',
26964
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26965
                                                    },
26966
                                                    success: function (response) {
26967
                                                        var results = Ext.decode(response.responseText);
26968
                                                        data_ = results.data[0];
26969
                                                        if (data_ != undefined) {
26970
                                                            custumFunc = data_.FunctionCode;
26971
                                                        }
26972
                                                    }
26973
                                                });
26974
                                            }
26975
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26976
                                            if (frm) {
26977
                                                if (custumFunc) {
26978
                                                    eval(custumFunc)
26979
                                                }
26980
                                            }
26981
                                        }
26982
                                    }
26983
                                });
26984
                            }
26985
                            break;
26986
                        case "time":
26987
                            formfield = new Ext.form.TimeField({
26988
                                allowBlank: allowblank,
26989
                                fieldLabel: rec.ScreenCaption,
26990
                                readOnly: readonly,
26991
                                //labelCls: 'label-minova',
26992
                                labelWidth: labelWidth,
26993
                                hidden: ishidden,
26994
                                name: rec.FieldName,
26995
                                msgTarget: 'side',
26996
                                format: 'Hi',
26997
                                submitFormat: 'Hi',
26998
                                increment: 5,
26999
                                value: rec.DefaultValue,
27000
                                anchor: '100%',
27001
                                formname: formname_,
27002
                                nameTable: nameTable_,
27003
                                listeners: {
27004
                                    change: function (val) {
27005
                                        var _label = val.name;
27006
                                        var _form = val.formname;
27007
                                        var _Value = val.getValue();
27008
                                        var target = rec.TriggerCombo;
27009
                                        var custumFunc = rec.SelectFunction;
27010
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27011
                                            Ext.Ajax.request({
27012
                                                async: false,
27013
                                                method: 'POST',
27014
                                                url: '/UserControl/GetStore',
27015
                                                params: {
27016
                                                    tableName: 'PCMFUNC',
27017
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
27018
                                                },
27019
                                                success: function (response) {
27020
                                                    var results = Ext.decode(response.responseText);
27021
                                                    data_ = results.data[0];
27022
                                                    if (data_ != undefined) {
27023
                                                        custumFunc = data_.FunctionCode;
27024
                                                    }
27025
                                                }
27026
                                            });
27027
                                        }
27028
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27029
                                        if (frm) {
27030
                                            if (custumFunc) {
27031
                                                eval(custumFunc)
27032
                                            }
27033
                                        }
27034
                                    }
27035
                                }
27036
                            });
27037
                            break;
27038
                        case "amount":
27039
                            formfield = new Ext.form.TextField({
27040
                                allowBlank: allowblank,
27041
                                fieldLabel: rec.ScreenCaption,
27042
                                readOnly: readonly,
27043
                                //labelCls: 'label-minova',
27044
                                labelWidth: labelWidth,
27045
                                hidden: ishidden,
27046
                                name: rec.FieldName,
27047
                                msgTarget: 'side',
27048
                                value: rec.DefaultValue,
27049
                                maxLength: rec.Length,
27050
                                anchor: '100%',
27051
                                formname: formname_,
27052
                                nameTable: nameTable_,
27053
                                fieldStyle: 'text-align:right;',
27054
                                listeners: {
27055
                                    change: function (val) {
27056
                                        var _label = val.name;
27057
                                        var _form = val.formname;
27058
                                        var _Value = val.getValue();
27059
                                        var target = rec.TriggerCombo;
27060
                                        var custumFunc = rec.SelectFunction;
27061
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27062
                                            Ext.Ajax.request({
27063
                                                async: false,
27064
                                                method: 'POST',
27065
                                                url: '/UserControl/GetStore',
27066
                                                params: {
27067
                                                    tableName: 'PCMFUNC',
27068
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27069
                                                },
27070
                                                success: function (response) {
27071
                                                    var results = Ext.decode(response.responseText);
27072
                                                    data_ = results.data[0];
27073
                                                    if (data_ != undefined) {
27074
                                                        custumFunc = data_.FunctionCode;
27075
                                                    }
27076
                                                }
27077
                                            });
27078
                                        }
27079
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27080
                                        if (frm) {
27081
                                            if (custumFunc) {
27082
                                                eval(custumFunc)
27083
                                            }
27084
                                        }
27085
                                    }
27086
                                }
27087
                            });
27088
                            break;
27089
                        case "file":
27090
                            formfield = new MinovaUtil.MinovaES.UploadFile({
27091
                                allowBlank: allowblank,
27092
                                fieldLabel: rec.ScreenCaption,
27093
                                readOnly: readonly,
27094
                                readOnlyCls: 'minova-readonly',
27095
                                hidden: ishidden,
27096
                                //labelCls: 'label-minova',
27097
                                name: rec.FieldName,
27098
                                msgTarget: 'side',
27099
                                fieldname: rec.FieldName,
27100
                                IsPrimaryKey: rec.IsPrimaryKey,
27101
                                tableName: rec.TableRef,
27102
                                triggerCls: 'x-form-search-trigger',
27103
                                formtarget: me.formname,
27104
                                anchor: '100%',
27105
                                formname: formname_,
27106
                                nameTable: nameTable_,
27107
                                listeners: {
27108
                                    change: function (val) {
27109
                                        var _label = val.name;
27110
                                        var _form = val.formname;
27111
                                        var _Value = val.getValue();
27112
                                        var target = rec.TriggerCombo;
27113
                                        var custumFunc = rec.SelectFunction;
27114
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27115
                                            Ext.Ajax.request({
27116
                                                async: false,
27117
                                                method: 'POST',
27118
                                                url: '/UserControl/GetStore',
27119
                                                params: {
27120
                                                    tableName: 'PCMFUNC',
27121
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27122
                                                },
27123
                                                success: function (response) {
27124
                                                    var results = Ext.decode(response.responseText);
27125
                                                    data_ = results.data[0];
27126
                                                    if (data_ != undefined) {
27127
                                                        custumFunc = data_.FunctionCode;
27128
                                                    }
27129
                                                }
27130
                                            });
27131
                                        }
27132
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27133
                                        if (frm) {
27134
                                            if (target) {
27135
                                                var f = frm.getForm().findField(target)
27136
                                                _store = f.getStore();
27137
                                                var _tbl = _store.proxy.extraParams.tableName;
27138
                                                var oldParam = _store.proxy.extraParams.param;
27139
                                                _store.proxy.extraParams = {
27140
                                                    tableName: _tbl,
27141
                                                    param: _label + '[=]' + _Value
27142
                                                };
27143
                                                _store.load();
27144
                                            }
27145
                                            if (custumFunc) {
27146
                                                eval(custumFunc)
27147
                                            }
27148
                                        }
27149
                                    }
27150
                                }
27151
                            });
27152
                            break;
27153
                        default:
27154
                            if (rec.DataType == 0) {
27155
                                if (rec.Length > 250) {
27156
                                    formfield = new Ext.form.TextArea({
27157
                                        allowBlank: allowblank,
27158
                                        fieldLabel: rec.ScreenCaption,
27159
                                        readOnly: readonly,
27160
                                        labelAlign: me.labelAlign,
27161
                                        labelSeparator: me.labelSeparator,
27162
                                        //labelCls: 'label-minova',
27163
                                        labelWidth: labelWidth,
27164
                                        hidden: ishidden,
27165
                                        name: rec.FieldName,
27166
                                        msgTarget: 'side',
27167
                                        value: rec.DefaultValue,
27168
                                        maxLength: rec.Length,
27169
                                        anchor: '100%',
27170
                                        grow: true,
27171
                                        formname: formname_,
27172
                                        nameTable: nameTable_,
27173
                                        listeners: {
27174
                                            change: function (val) {
27175
                                                var _label = val.name;
27176
                                                var _form = val.formname;
27177
                                                var _Value = val.getValue();
27178
                                                var target = rec.TriggerCombo;
27179
                                                var custumFunc = rec.SelectFunction;
27180
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27181
                                                    Ext.Ajax.request({
27182
                                                        async: false,
27183
                                                        method: 'POST',
27184
                                                        url: '/UserControl/GetStore',
27185
                                                        params: {
27186
                                                            tableName: 'PCMFUNC',
27187
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27188
                                                        },
27189
                                                        success: function (response) {
27190
                                                            var results = Ext.decode(response.responseText);
27191
                                                            data_ = results.data[0];
27192
                                                            if (data_ != undefined) {
27193
                                                                custumFunc = data_.FunctionCode;
27194
                                                            }
27195
                                                        }
27196
                                                    });
27197
                                                }
27198
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27199
                                                if (frm) {
27200
                                                    if (custumFunc) {
27201
                                                        eval(custumFunc)
27202
                                                    }
27203
                                                }
27204
                                            }
27205
                                        }
27206
                                    });
27207
                                } else {
27208
                                    if (rec.FixedValue != '') {
27209
                                        var storeData = [];
27210
                                        var str = rec.FixedValue;
27211
                                        var hasil = str.split('||');
27212
                                        hasil.forEach(function (h) {
27213
                                            store_ = h.split('=')
27214
                                            storeData.push({
27215
                                                code: store_[0],
27216
                                                desc: store_[1],
27217
                                            });
27218
                                        });
27219
                                        formfield = new Ext.form.ComboBox({
27220
                                            allowBlank: allowblank,
27221
                                            fieldLabel: rec.ScreenCaption,
27222
                                            forceSelection: true,
27223
                                            readOnly: readonly,
27224
                                            //labelCls: 'label-minova',
27225
                                            labelWidth: labelWidth,
27226
                                            hidden: ishidden,
27227
                                            name: rec.FieldName,
27228
                                            msgTarget: 'side',
27229
                                            value: rec.DefaultValue,
27230
                                            anchor: '100%',
27231
                                            formname: formname_,
27232
                                            nameTable: nameTable_,
27233
                                            formtarget: me.formname,
27234
                                            store: Ext.create('Ext.data.Store', {
27235
                                                storeId: 'store' + rec.FieldName,
27236
                                                autoLoad: true,
27237
                                                data: storeData
27238

    
27239
                                            }),
27240
                                            listeners: {
27241
                                                change: function (val) {
27242
                                                    var _label = val.name;
27243
                                                    var _form = val.formtarget;
27244
                                                    var _Value = val.getValue();
27245
                                                    var target = rec.TriggerCombo;
27246
                                                    var custumFunc = rec.SelectFunction;
27247
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27248
                                                    if (frm) {
27249
                                                        if (target) {
27250
                                                            var f = frm.getForm().findField(target)
27251
                                                            _store = f.getStore();
27252
                                                            var _tbl = _store.proxy.extraParams.tableName;
27253
                                                            var oldParam = _store.proxy.extraParams.param;
27254
                                                            _store.proxy.extraParams = {
27255
                                                                tableName: _tbl,
27256
                                                                param: _label + '[=]' + _Value
27257
                                                            };
27258
                                                            _store.load();
27259
                                                        }
27260
                                                        if (custumFunc) {
27261
                                                            eval(custumFunc)
27262
                                                        }
27263
                                                    }
27264
                                                }
27265
                                            },
27266
                                            queryMode: 'local',
27267
                                            valueField: 'code',
27268
                                            displayField: 'desc',
27269
                                        });
27270
                                    } else {
27271
                                        formfield = new Ext.form.TextField({
27272
                                            allowBlank: allowblank,
27273
                                            fieldLabel: rec.ScreenCaption,
27274
                                            readOnly: readonly,
27275
                                            //labelCls: 'label-minova',
27276
                                            labelWidth: labelWidth,
27277
                                            hidden: ishidden,
27278
                                            name: rec.FieldName,
27279
                                            msgTarget: 'side',
27280
                                            value: rec.DefaultValue,
27281
                                            maxLength: rec.Length,
27282
                                            anchor: '100%',
27283
                                            formname: formname_,
27284
                                            nameTable: nameTable_,
27285
                                            listeners: {
27286
                                                change: function (val) {
27287
                                                    var _label = val.name;
27288
                                                    var _form = val.formname;
27289
                                                    var _Value = val.getValue();
27290
                                                    var target = rec.TriggerCombo;
27291
                                                    var custumFunc = rec.SelectFunction;
27292
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27293
                                                        Ext.Ajax.request({
27294
                                                            async: false,
27295
                                                            method: 'POST',
27296
                                                            url: '/UserControl/GetStore',
27297
                                                            params: {
27298
                                                                tableName: 'PCMFUNC',
27299
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27300
                                                            },
27301
                                                            success: function (response) {
27302
                                                                var results = Ext.decode(response.responseText);
27303
                                                                data_ = results.data[0];
27304
                                                                if (data_ != undefined) {
27305
                                                                    custumFunc = data_.FunctionCode;
27306
                                                                }
27307
                                                            }
27308
                                                        });
27309
                                                    }
27310
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27311
                                                    if (frm) {
27312
                                                        if (custumFunc) {
27313
                                                            eval(custumFunc)
27314
                                                        }
27315
                                                    }
27316
                                                }
27317
                                            }
27318
                                        });
27319
                                    }
27320
                                }
27321
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
27322
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
27323
                                    allowBlank: allowblank,
27324
                                    fieldLabel: rec.ScreenCaption,
27325
                                    readOnly: readonly,
27326
                                    //labelCls: 'label-minova',
27327
                                    labelWidth: labelWidth,
27328
                                    msgTarget: 'side',
27329
                                    hidden: ishidden,
27330
                                    name: rec.FieldName,
27331
                                    value: rec.DefaultValue,
27332
                                    maxLength: rec.Length,
27333
                                    anchor: '100%',
27334
                                    formname: formname_,
27335
                                    nameTable: nameTable_,
27336
                                    fieldStyle: 'text-align:right;',
27337
                                    listeners: {
27338
                                        change: function (val) {
27339
                                            var _label = val.name;
27340
                                            var _form = val.formname;
27341
                                            var _Value = val.getValue();
27342
                                            var target = rec.TriggerCombo;
27343
                                            var custumFunc = rec.SelectFunction;
27344
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27345
                                                Ext.Ajax.request({
27346
                                                    async: false,
27347
                                                    method: 'POST',
27348
                                                    url: '/UserControl/GetStore',
27349
                                                    params: {
27350
                                                        tableName: 'PCMFUNC',
27351
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27352
                                                    },
27353
                                                    success: function (response) {
27354
                                                        var results = Ext.decode(response.responseText);
27355
                                                        data_ = results.data[0];
27356
                                                        if (data_ != undefined) {
27357
                                                            custumFunc = data_.FunctionCode;
27358
                                                        }
27359
                                                    }
27360
                                                });
27361
                                            }
27362
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27363
                                            if (frm) {
27364
                                                if (target) {
27365
                                                    var f = frm.getForm().findField(target)
27366
                                                    _store = f.getStore();
27367
                                                    var _tbl = _store.proxy.extraParams.tableName;
27368
                                                    var oldParam = _store.proxy.extraParams.param;
27369
                                                    _store.proxy.extraParams = {
27370
                                                        tableName: _tbl,
27371
                                                        param: _label + '[=]' + _Value
27372
                                                    };
27373
                                                    _store.load();
27374
                                                }
27375
                                                if (custumFunc) {
27376
                                                    eval(custumFunc)
27377
                                                }
27378
                                            }
27379
                                        }
27380
                                    }
27381
                                });
27382
                            } else if (rec.DataType == 3) {
27383
                                formfield = new Ext.form.TextField({
27384
                                    allowBlank: allowblank,
27385
                                    fieldLabel: rec.ScreenCaption,
27386
                                    readOnly: readonly,
27387
                                    //labelCls: 'label-minova',
27388
                                    labelWidth: labelWidth,
27389
                                    msgTarget: 'side',
27390
                                    hidden: ishidden,
27391
                                    name: rec.FieldName,
27392
                                    value: rec.DefaultValue,
27393
                                    maxLength: rec.Length,
27394
                                    precision: rec.Prec,
27395
                                    anchor: '100%',
27396
                                    formname: formname_,
27397
                                    nameTable: nameTable_,
27398
                                    fieldStyle: 'text-align:right;',
27399
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
27400
                                    listeners: {
27401
                                        change: function (val) {
27402
                                            var _label = val.name;
27403
                                            var _form = val.formname;
27404
                                            var _Value = val.getValue();
27405
                                            var target = rec.TriggerCombo;
27406
                                            var custumFunc = rec.SelectFunction;
27407
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27408
                                                Ext.Ajax.request({
27409
                                                    async: false,
27410
                                                    method: 'POST',
27411
                                                    url: '/UserControl/GetStore',
27412
                                                    params: {
27413
                                                        tableName: 'PCMFUNC',
27414
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27415
                                                    },
27416
                                                    success: function (response) {
27417
                                                        var results = Ext.decode(response.responseText);
27418
                                                        data_ = results.data[0];
27419
                                                        if (data_ != undefined) {
27420
                                                            custumFunc = data_.FunctionCode;
27421
                                                        }
27422
                                                    }
27423
                                                });
27424
                                            }
27425
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27426
                                            if (frm) {
27427
                                                if (target) {
27428
                                                    var f = frm.getForm().findField(target)
27429
                                                    _store = f.getStore();
27430
                                                    var _tbl = _store.proxy.extraParams.tableName;
27431
                                                    var oldParam = _store.proxy.extraParams.param;
27432
                                                    _store.proxy.extraParams = {
27433
                                                        tableName: _tbl,
27434
                                                        param: _label + '[=]' + _Value
27435
                                                    };
27436
                                                    _store.load();
27437
                                                }
27438
                                                if (custumFunc) {
27439
                                                    eval(custumFunc)
27440
                                                }
27441
                                            }
27442
                                        }
27443
                                    }
27444
                                });
27445
                            }
27446
                    }
27447
                } else if (rec.SearchType != "") {
27448
                    if (rec.SearchType == "0") //combobox
27449
                    {
27450
                        valueField = null;
27451
                        displayValue = null;
27452
                        if (rec.TableRef != "") {
27453
                            Ext.Ajax.request({
27454
                                async: false,
27455
                                method: 'POST',
27456
                                url: '/UserControl/GetStore',
27457
                                params: {
27458
                                    tableName: 'SDATATABLEFIELD',
27459
                                    param: 'TableName[equal]' + rec.TableRef
27460
                                },
27461
                                success: function (response) {
27462
                                    var results = Ext.decode(response.responseText);
27463
                                    data_ = results.data;
27464
                                    if (data_ != undefined) {
27465
                                        valueField_ = $.grep(data_, function (r) {
27466
                                            return r.ValueField == '1'
27467
                                        });
27468
                                        if (valueField_.length > 0) {
27469
                                            valueField = valueField_[0].FieldName
27470
                                        }
27471
                                        displayValue_ = $.grep(data_, function (r) {
27472
                                            return r.DisplayValue == '1'
27473
                                        });
27474
                                        if (displayValue_.length > 0) {
27475
                                            displayValue = displayValue_[0].FieldName
27476
                                        }
27477
                                    }
27478
                                }
27479
                            });
27480
                        }
27481
                        formfield = new Ext.form.ComboBox({
27482
                            allowBlank: allowblank,
27483
                            fieldLabel: rec.ScreenCaption,
27484
                            forceSelection: true,
27485
                            anyMatch: true,
27486
                            readOnly: readonly,
27487
                            //labelCls: 'label-minova',
27488
                            labelWidth: labelWidth,
27489
                            hidden: ishidden,
27490
                            msgTarget: 'side',
27491
                            name: rec.FieldName,
27492
                            formname: formname_,
27493
                            nameTable: nameTable_,
27494
                            value: rec.DefaultValue,
27495
                            anchor: '100%',
27496
                            store: Ext.create('Ext.data.Store', {
27497
                                storeId: 'store' + rec.FieldName,
27498
                                autoLoad: false,
27499
                                proxy: {
27500
                                    method: 'POST',
27501
                                    type: 'ajax',
27502
                                    url: '/UserControl/GetStore',
27503
                                    extraParams: {
27504
                                        tableName: rec.TableRef,
27505
                                        param: rec.ParamCombo
27506
                                    },
27507
                                    reader: {
27508
                                        type: 'json',
27509
                                        root: 'data',
27510
                                        totalProperty: 'data[0].TotalCount'
27511
                                    }
27512
                                }
27513
                            }),                            
27514
                            formtarget: formname_,
27515
                            listeners: {
27516
                                afterrender: function (f) {
27517
                                    var store_ = f.getStore();
27518
                                    store_.load();
27519
                                },
27520
                                change: function (val) {
27521
                                    var _label = val.name;
27522
                                    var _form = val.formtarget;
27523
                                    var _Value = val.getValue();
27524
                                    var target = rec.TriggerCombo;
27525
                                    var custumFunc = rec.SelectFunction;
27526
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27527
                                    if (frm) {
27528

    
27529
                                        if (target) {
27530
                                            var f = frm.getForm().findField(target)
27531
                                            _store = f.getStore();
27532
                                            var _tbl = _store.proxy.extraParams.tableName;
27533
                                            var oldParam = _store.proxy.extraParams.param;
27534
                                            _store.proxy.extraParams = {
27535
                                                tableName: _tbl,
27536
                                                param: _label + '[=]' + _Value
27537
                                            };
27538
                                            _store.load();
27539
                                        }
27540
                                        if (custumFunc) {
27541
                                            eval(custumFunc)
27542
                                        }
27543
                                    }
27544
                                }
27545
                            },
27546
                            queryMode: 'local',
27547
                            displayField: displayValue,
27548
                            valueField: valueField,
27549
                        });
27550
                    } else if (rec.SearchType == '2') //Lookup
27551
                    {
27552
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
27553
                            allowBlank: allowblank,
27554
                            fieldLabel: rec.ScreenCaption,
27555
                            readOnly: readonly,
27556
                            IsPrimaryKey: rec.IsPrimaryKey,
27557
                            msgTarget: 'side',
27558
                            //labelCls: 'label-minova',
27559
                            labelWidth: labelWidth,
27560
                            hidden: ishidden,
27561
                            name: rec.FieldName,
27562
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
27563
                            triggerCls: 'x-form-search-trigger',
27564
                            vtype: 'alphanum', // disable space
27565
                            formtarget: me.formname, // nama form  yang akan di set value-nya
27566
                            anchor: '100%',
27567
                            formname: formname_,
27568
                            nameTable: nameTable_,
27569
                            LookupFunction: rec.LookupFunction,
27570
                            SearchFunction: rec.SearchFunction,
27571
                            listeners: {
27572
                                change: function (val) {
27573
                                    var _label = val.name;
27574
                                    var _form = val.formname;
27575
                                    var _Value = val.getValue();
27576
                                    var target = rec.TriggerCombo;
27577
                                    var custumFunc = rec.SelectFunction;
27578
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27579
                                        Ext.Ajax.request({
27580
                                            async: false,
27581
                                            method: 'POST',
27582
                                            url: '/UserControl/GetStore',
27583
                                            params: {
27584
                                                tableName: 'PCMFUNC',
27585
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27586
                                            },
27587
                                            success: function (response) {
27588
                                                var results = Ext.decode(response.responseText);
27589
                                                data_ = results.data[0];
27590
                                                if (data_ != undefined) {
27591
                                                    custumFunc = data_.FunctionCode;
27592
                                                }
27593
                                            }
27594
                                        });
27595
                                    }
27596
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27597
                                    if (frm) {
27598

    
27599
                                        if (target) {
27600
                                            var f = frm.getForm().findField(target)
27601
                                            _store = f.getStore();
27602
                                            var _tbl = _store.proxy.extraParams.tableName;
27603
                                            var oldParam = _store.proxy.extraParams.param;
27604
                                            _store.proxy.extraParams = {
27605
                                                tableName: _tbl,
27606
                                                param: _label + '[=]' + _Value
27607
                                            };
27608
                                            _store.load();
27609
                                        }
27610

    
27611
                                        if (custumFunc) {
27612
                                            eval(custumFunc)
27613
                                        }
27614

    
27615
                                    }
27616

    
27617
                                },
27618

    
27619
                            },
27620
                        });
27621
                    } else if (rec.SearchType == '3') //lookup tree
27622
                    {
27623
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
27624
                            allowBlank: allowblank,
27625
                            fieldLabel: rec.ScreenCaption,
27626
                            readOnly: readonly,
27627
                            IsPrimaryKey: rec.IsPrimaryKey,
27628
                            //labelCls: 'label-minova',
27629
                            labelWidth: labelWidth,
27630
                            hidden: ishidden,
27631
                            name: rec.FieldName,
27632
                            msgTarget: 'side',
27633
                            triggerCls: 'x-form-search-trigger',
27634
                            treeSructure: rec.SearchFunction, //'O-O-P',
27635
                            objClassValue: rec.ParamCombo, //'O',
27636
                            formname: formname_,
27637
                            targetField: rec.FieldName,
27638
                            nameTable: nameTable_,
27639
                            editable: false,
27640
                            anchor: '100%',
27641
                            listeners: {
27642
                                change3: function (val) {
27643
                                    var _label = val.name;
27644
                                    var _form = val.formname;
27645
                                    var _Value = val.getValue();
27646
                                    var target = rec.TriggerCombo;
27647
                                    var custumFunc = rec.SelectFunction;
27648
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27649
                                        Ext.Ajax.request({
27650
                                            async: false,
27651
                                            method: 'POST',
27652
                                            url: '/UserControl/GetStore',
27653
                                            params: {
27654
                                                tableName: 'PCMFUNC',
27655
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27656
                                            },
27657
                                            success: function (response) {
27658
                                                var results = Ext.decode(response.responseText);
27659
                                                data_ = results.data[0];
27660
                                                if (data_ != undefined) {
27661
                                                    custumFunc = data_.FunctionCode;
27662
                                                }
27663
                                            }
27664
                                        });
27665
                                    }
27666
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27667
                                    if (frm) {
27668

    
27669
                                        if (target) {
27670
                                            var f = frm.getForm().findField(target)
27671
                                            _store = f.getStore();
27672
                                            var _tbl = _store.proxy.extraParams.tableName;
27673
                                            var oldParam = _store.proxy.extraParams.param;
27674
                                            _store.proxy.extraParams = {
27675
                                                tableName: _tbl,
27676
                                                param: _label + '[=]' + _Value
27677
                                            };
27678
                                            _store.load();
27679
                                        }
27680
                                        if (custumFunc) {
27681
                                            eval(custumFunc)
27682
                                        }
27683
                                    }
27684
                                },
27685
                                blur: function (val) {
27686
                                    //if(val.value.split('-').length != 2){
27687
                                    var _label = val.name;
27688
                                    var _form = val.formname;
27689
                                    var _Value = val.getValue();
27690
                                    var target = rec.TriggerCombo;
27691
                                    var custumFunc = rec.SelectFunction;
27692
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27693
                                        Ext.Ajax.request({
27694
                                            async: false,
27695
                                            method: 'POST',
27696
                                            url: '/UserControl/GetStore',
27697
                                            params: {
27698
                                                tableName: 'PCMFUNC',
27699
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27700
                                            },
27701
                                            success: function (response) {
27702
                                                var results = Ext.decode(response.responseText);
27703
                                                data_ = results.data[0];
27704
                                                if (data_ != undefined) {
27705
                                                    custumFunc = data_.FunctionCode;
27706
                                                }
27707
                                            }
27708
                                        });
27709
                                    }
27710
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27711
                                    if (frm) {
27712

    
27713
                                        if (target) {
27714
                                            var f = frm.getForm().findField(target)
27715
                                            _store = f.getStore();
27716
                                            var _tbl = _store.proxy.extraParams.tableName;
27717
                                            var oldParam = _store.proxy.extraParams.param;
27718
                                            _store.proxy.extraParams = {
27719
                                                tableName: _tbl,
27720
                                                param: _label + '[=]' + _Value
27721
                                            };
27722
                                            _store.load();
27723
                                        }
27724
                                        if (custumFunc) {
27725
                                            eval(custumFunc)
27726
                                        }
27727
                                    }
27728
                                    //}
27729
                                }
27730

    
27731
                            }
27732
                        });
27733
                    } else if (rec.SearchType == '10') //Checkboxgroup
27734
                    {
27735
                        if (rec.TableRef != "") {
27736
                            Ext.Ajax.request({
27737
                                async: false,
27738
                                method: 'POST',
27739
                                url: '/UserControl/GetStore',
27740
                                params: {
27741
                                    tableName: 'SDATATABLEFIELD',
27742
                                    param: 'TableName[equal]' + rec.TableRef
27743
                                },
27744
                                success: function (response) {
27745
                                    var results = Ext.decode(response.responseText);
27746
                                    data_ = results.data;
27747
                                    if (data_ != undefined) {
27748
                                        valueField_ = $.grep(data_, function (r) {
27749
                                            return r.ValueField == '1'
27750
                                        });
27751
                                        if (valueField_.length > 0) {
27752
                                            valueField = valueField_[0].FieldName
27753
                                        }
27754
                                        displayValue_ = $.grep(data_, function (r) {
27755
                                            return r.DisplayValue == '1'
27756
                                        });
27757
                                        if (displayValue_.length > 0) {
27758
                                            displayValue = displayValue_[0].FieldName
27759
                                        }
27760
                                    }
27761
                                }
27762
                            });
27763
                        }
27764
                        formfield = new MinovaUtil.MinovaES.StoreCheckboxGroup({
27765
                            //xtype: 'storecheckboxgroup',
27766
                            //allowBlank: allowblank,
27767
                            name: 'cbg' + rec.FieldName,
27768
                            nametxt: rec.FieldName,
27769
                            formname: formname_,
27770
                            nameTable: nameTable_,
27771
                            value: rec.DefaultValue,
27772
                            fieldLabel: rec.ScreenCaption,
27773
                            labelAlign: me.labelAlign,
27774
                            labelSeparator: me.labelSeparator,
27775
                            readOnly: readonly,
27776
                            //forceSelection: true,
27777
                            //anyMatch: true,
27778
                            //readOnly: readonly,
27779
                            ////labelCls: 'label-minova',
27780
                            labelWidth: labelWidth,
27781
                            //hidden: ishidden,
27782
                            //msgTarget: 'side',
27783
                            //name: rec.FieldName,
27784
                            //formname: formname_,
27785
                            //nameTable: nameTable_,
27786
                            //value: rec.DefaultValue,
27787
                            //width: '95%',
27788
                            store: Ext.create('Ext.data.Store', {
27789
                                storeId: 'store' + rec.FieldName,
27790
                                autoLoad: true,
27791
                                proxy: {
27792
                                    method: 'POST',
27793
                                    type: 'ajax',
27794
                                    url: '/UserControl/GetStore',
27795
                                    extraParams: {
27796
                                        tableName: rec.TableRef,
27797
                                        param: rec.ParamCombo
27798
                                    },
27799
                                    reader: {
27800
                                        type: 'json',
27801
                                        root: 'data',
27802
                                        totalProperty: 'data[0].TotalCount'
27803
                                    }
27804
                                }
27805
                            }),
27806
                            //formtarget: formname_,
27807
                            columns: 2,
27808
                            vertical: true,
27809
                            mapFn: function (storeItem) {
27810
                                var txfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode + ']')[0];
27811
                                var txvalue = '';
27812
                                if (txfield) txvalue = txfield.value;
27813
                                var cbfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode + ']')[0];
27814
                                var cbchecked = false;
27815
                                if (cbfield) cbchecked = (cbfield.value === 'true');
27816
                                return {
27817
                                    // Here, we define which store fields map 
27818
                                    // to which checkbox configuration property.
27819
                                    // The field "label" should map to boxLabel
27820
                                    // The field "value" should map to inputValue
27821
                                    // xtype and name are hardcoded for all checkboxes in this group.
27822
                                    xtype: 'container',
27823
                                    items: [
27824
                                        {
27825
                                            xtype: 'checkbox',
27826
                                            boxLabel: storeItem.data.ProblemDesc,
27827
                                            name: 'cb_' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
27828
                                            nametxt: rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
27829
                                            formname: formname_,
27830
                                            nameTable: nameTable_,
27831
                                            readOnly: readonly,
27832
                                            isshowtext: storeItem.data.IsShowText,
27833
                                            inputValue: storeItem.data.ProblemCode,
27834
                                            checked: cbchecked,
27835
                                            listeners: {
27836
                                                click: {
27837
                                                    element: 'el', //bind to the underlying el property on the panel
27838
                                                    fn: function (id) {
27839
                                                        var MyComp = Ext.getCmp(this.id);
27840
                                                        var frmForm = Ext.ComponentQuery.query('[name=tx_' + this.el.component.nametxt.replace("_CB_", "_TX_") + ']')[0];
27841
                                                        if (this.el.component.isshowtext == '1') {
27842
                                                            frmForm.setHidden(!MyComp.checked);
27843
                                                            frmForm.setValue('');
27844
                                                        }
27845
                                                        var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
27846
                                                        cb_.setValue(MyComp.checked);
27847
                                                    }
27848
                                                },
27849
                                                //change: function (val) {
27850
                                                //    alert('ok');
27851
                                                //},
27852
                                            }
27853
                                        }, {
27854
                                            xtype: 'textareafield',
27855
                                            name: 'tx_' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
27856
                                            nametxt: rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
27857
                                            formname: formname_,
27858
                                            nameTable: nameTable_,
27859
                                            readOnly: readonly,
27860
                                            width: '100%',
27861
                                            value: txvalue,
27862
                                            hidden: !((storeItem.data.IsShowText === '1') && (cbchecked)),
27863
                                            listeners: {
27864
                                                change: function (id, newValue, oldValue, eOpts) {
27865
                                                    var frmForm = Ext.ComponentQuery.query('[name=' + id.nametxt + ']')[0];
27866
                                                    frmForm.setValue(newValue);
27867
                                                },
27868
                                            }
27869
                                        }]
27870
                                };
27871
                            }
27872
                        });
27873
                    } else if (rec.SearchType == '11') //Checkbox
27874
                    {
27875
                        formfield = new Ext.Container({
27876
                            items: [
27877
                                {
27878
                                    xtype: 'checkbox',
27879
                                    boxLabel: rec.ScreenCaption,
27880
                                    name: 'cb_' + rec.FieldName,
27881
                                    nametxt: rec.FieldName,
27882
                                    hidden: ishidden,
27883
                                    readOnly: readonly,
27884
                                    tableName: rec.TableRef, //name tabel yang jadi ref-nya
27885
                                    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
27886
                                    listeners: {
27887
                                        click: {
27888
                                            element: 'el', //bind to the underlying el property on the panel
27889
                                            fn: function (id) {
27890
                                                var MyComp = Ext.getCmp(this.id);
27891
                                                var frmForm = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
27892
                                                frmForm.setValue(MyComp.checked);
27893
                                            }
27894
                                        }
27895
                                    }
27896
                                },
27897
                                {
27898
                                    xtype: 'textfield',
27899
                                    name: rec.FieldName,
27900
                                    namecb: 'cb_' + rec.FieldName,
27901
                                    formname: formname_,
27902
                                    nameTable: nameTable_,
27903
                                    readOnly: readonly,
27904
                                    value: rec.DefaultValue,
27905
                                    hidden: true,
27906
                                    listeners: {
27907
                                        change: function (id, newValue, oldValue, eOpts) {
27908
                                            var cbfield = Ext.ComponentQuery.query('[name=' + id.namecb + ']')[0];
27909
                                            var cbchecked = false;
27910
                                            if (cbfield) cbchecked = (newValue === 'true');
27911
                                            cbfield.setValue(cbchecked);
27912
                                        },
27913
                                    }
27914
                                }]
27915
                            
27916
                        })
27917
                        //formfield = new Ext.form.field.Checkbox({
27918
                        //    boxLabel: rec.ScreenCaption,
27919
                        //    name: rec.FieldName,
27920
                        //    name: 'cb_' + rec.FieldName,
27921
                        //    nametxt: rec.FieldName,
27922
                        //    hidden: ishidden,
27923
                        //    readOnly: readonly,
27924
                        //    name: rec.FieldName,
27925
                        //    tableName: rec.TableRef, //name tabel yang jadi ref-nya
27926
                        //    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
27927
                        //    listeners: {
27928
                        //        click: {
27929
                        //            element: 'el', //bind to the underlying el property on the panel
27930
                        //            fn: function (id) {
27931
                        //                var MyComp = Ext.getCmp(this.id);
27932
                        //                var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
27933
                        //                cb_.setValue(MyComp.checked);
27934
                        //            }
27935
                        //        }
27936
                        //    }
27937
                        //    //value: rec.DefaultValue,
27938
                        //})
27939
                    }
27940
                }
27941
                if (isDesk) {
27942
                    if (rec.ColumnNo == 1) {
27943
                        col1.push(formfield);
27944
                    } else {
27945
                        col2.push(formfield);
27946
                    }
27947
                } else {
27948
                    col1.push(formfield);
27949
                }
27950

    
27951
            });
27952
        }
27953
        Ext.applyIf(me, {
27954
            items:
27955
                [
27956
                    {
27957
                        //width: 450,
27958
                        //style: 'width: 50%',
27959
                        defaults: {
27960
                            layout: 'anchor',
27961
                            xtype: 'container',
27962
                            flex: 1,
27963
                            margin: me.marginDefault,
27964
                            //defaultType: 'textfield',
27965
                            //anchor: '100%',
27966
                            ////style: 'width: 50%',
27967
                        },
27968
                        items: col1,
27969
                        flex: 1,
27970
                    },
27971
                    {
27972
                        //width: 450,
27973
                        //style: 'width: 50%',
27974
                        defaults: {
27975
                            layout: 'anchor',
27976
                            xtype: 'container',
27977
                            flex: 1,
27978
                            margin: me.marginDefault,
27979
                            //defaultType: 'textfield',
27980
                            //anchor: '100%',
27981
                            ////style: 'width: 50%',
27982
                        },
27983
                        items: col2,
27984
                        flex: 1,
27985
                    }
27986
                ]
27987
        });
27988
        this.callParent();
27989
    }
27990
});
27991

    
27992
/*EditableGrid ESS Generator YN 20211216 */
27993
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid2', {
27994
    extend: 'Ext.form.Panel',
27995
    alias: ['widget.minovaworkfloweditablegrid2', 'widget.workfloweditablegrid2'],
27996
    requires: [
27997
        'Ext.grid.plugin.CellEditing',
27998
        'Ext.grid.RowNumberer',
27999
        'Ext.grid.Panel',
28000
    ],
28001
    anchor: '100%',
28002
    tableName: undefined,
28003
    hideButton: undefined,
28004
    multiSelect: undefined,
28005
    formname: this.name,
28006
    bizprocid: undefined,
28007
    bizflowid: undefined,
28008
    taskid: undefined,
28009
    features: undefined,
28010
    minHeight: 200,
28011
    maxHeight: 400, 
28012
    headerLayout: undefined,
28013
    summaryType: undefined,
28014
    initComponent: function () {
28015
        var me = this;
28016
        var isLookup = me.isLookup;
28017
        var hide_ = false;
28018
        var widthLock = 250;
28019
        var checkSelection = '';
28020
        if (me.hideButton == true) {
28021
            hide_ = true;
28022
        }
28023
        if (me.multiSelect) {
28024
            locking = false;
28025
            checkSelection = 'checkboxmodel';
28026
            widthLock = 40;
28027
        }
28028
        var tableName = me.tableName;
28029
        var features = me.features;
28030
        var cols = [];
28031
        var fieldStore = [];
28032
        var _url = 'GetAllField';
28033
        var hasil = null;
28034
        var height = me.height;
28035
        var storeID = 'store' + me.tableName;
28036
        var gridName = 'grid' + me.name;
28037
        if (me.storeName) {
28038
            storeID = me.storeName;
28039
        }
28040
        var LangID = MinovaUtil.GetLangID();
28041
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
28042
        Ext.Ajax.request({
28043
            async: false,
28044
            method: 'POST',
28045
            url: '/UserControl/GetStore',
28046
            params: {
28047
                tableName: 'PDSWFSTRUCTUREFIELD',
28048
                param: parameter
28049
            },
28050
            success: function (response) {
28051
                var results = Ext.decode(response.responseText);
28052
                hasil = results.data;
28053
            }
28054
        });
28055
        cols.push({
28056
            xtype: 'rownumberer'
28057
        });
28058
        var addData = 'var data={';
28059
        if (hasil.length > 0) {
28060
            Ext.each(hasil, function (rec) {
28061
                fieldStore.push(rec.FieldName);
28062
                if (rec.FieldName != 'Sequence') {
28063
                    addData = addData + rec.FieldName + ":" + "'',";
28064
                }
28065
                var null_ = null;
28066
                var ReadOnly_ = false;
28067
                if (rec.IsRequired == '1') {
28068
                    null_ = false;
28069
                } else {
28070
                    null_ = true;
28071
                }
28072
                var Hidden_ = false;
28073
                if (rec.IsReadOnly == '1') {
28074
                    ReadOnly_ = true;
28075
                }
28076
                if (rec.IsVisible == '1') {
28077
                    switch (rec.FormatRef) {
28078
                        case "date":
28079
                            cols.push({
28080
                                xtype: 'minovadatecolumn',
28081
                                hidden: Hidden_,
28082
                                text: rec.HeaderTitle,
28083
                                dataIndex: rec.FieldName,
28084
                                filter: {
28085
                                    itemDefaults: {
28086
                                        emptyText: 'Search for...',
28087
                                    }
28088
                                },
28089
                                editor: {
28090
                                    allowBlank: null_,
28091
                                    xtype: 'datefield',
28092
                                    hideMode: 'visibility',
28093
                                    readOnly: ReadOnly_,
28094
                                    id: tableName + rec.FieldName,
28095
                                    fieldGrid: rec.FieldName,
28096
                                    nameTable: rec.TableName,
28097
                                    value: rec.DefaultValue
28098
                                }
28099
                            });
28100
                            break
28101
                        case "amount":
28102
                            cols.push({
28103
                                xtype: 'minovacurrancycolumn',
28104
                                align: 'right',
28105
                                text: rec.HeaderTitle,
28106
                                dataIndex: rec.FieldName,
28107
                                hidden: Hidden_,
28108
                                filter: {
28109
                                    itemDefaults: {
28110
                                        emptyText: 'Search for...'
28111
                                    }
28112
                                },
28113
                                editor: {
28114
                                    allowBlank: null_,
28115
                                    xtype: 'minovacurrencyfield',
28116
                                    readOnly: ReadOnly_,
28117
                                    id: tableName + rec.FieldName,
28118
                                    nameTable: rec.TableName,
28119
                                    fieldGrid: rec.FieldName,
28120
                                    fieldStyle: 'text-align:right;',
28121
                                    value: '0'
28122
                                }
28123
                            });
28124
                            break
28125
                        default:
28126
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
28127
                                cols.push({
28128
                                    text: rec.HeaderTitle,
28129
                                    dataIndex: rec.FieldName,
28130
                                    width: 100,
28131
                                    filter: {
28132
                                        type: 'string',
28133
                                        itemDefaults: {
28134
                                            emptyText: 'Search for...'
28135
                                        }
28136
                                    }
28137
                                });
28138
                            } else if (rec.SearchType == '0') {
28139
                                var valueField = null;
28140
                                var displayValue = null;
28141
                                var TableRef = undefined;
28142
                                if (rec.TableRef != '') {
28143
                                    TableRef = rec.TableRef;
28144
                                    Ext.Ajax.request({
28145
                                        async: false,
28146
                                        method: 'POST',
28147
                                        url: '/UserControl/GetStore',
28148
                                        params: {
28149
                                            tableName: 'SDATATABLEFIELD',
28150
                                            param: 'TableName[equal]' + rec.TableRef
28151
                                        },
28152
                                        success: function (response) {
28153
                                            var results = Ext.decode(response.responseText);
28154
                                            data_ = results.data;
28155
                                            if (data_ != undefined) {
28156
                                                valueField_ = $.grep(data_, function (r) {
28157
                                                    return r.ValueField == '1'
28158
                                                });
28159
                                                valueField = valueField_[0].FieldName
28160
                                                displayValue_ = $.grep(data_, function (r) {
28161
                                                    return r.DisplayValue == '1'
28162
                                                });
28163
                                                displayValue = displayValue_[0].FieldName
28164
                                            }
28165
                                        }
28166
                                    });
28167
                                }
28168
                                Ext.create('Ext.data.Store', {
28169
                                    storeId: 'store_' + me.tableName + rec.FieldName,
28170
                                    autoLoad: true,
28171
                                    proxy: {
28172
                                        method: 'POST',
28173
                                        type: 'ajax',
28174
                                        url: '/UserControl/GetStoreAuth',
28175
                                        extraParams: {
28176
                                            tableName: TableRef,
28177
                                            param: rec.ParamCombo,
28178
                                            menuId: MinovaUtil.GetMenuID()
28179
                                        },
28180
                                        reader: {
28181
                                            type: 'json',
28182
                                            root: 'data',
28183
                                            totalProperty: 'data[0].TotalCount'
28184
                                        }
28185
                                    }
28186
                                });
28187
                                cols.push({
28188
                                    //xtype : 'minovacombocolumn',
28189
                                    hidden: Hidden_,
28190
                                    text: rec.HeaderTitle,
28191
                                    dataIndex: rec.FieldName,
28192
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
28193
                                    summaryType: function (records) {
28194
                                        var suma = 0;
28195
                                        if (me.summaryType == 'average') {
28196
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
28197
                                            Ext.each(records, function (record, index) {
28198
                                                if (record.get(rec.FieldName)) {
28199
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
28200
                                                }
28201
                                            });
28202
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
28203
                                        }
28204
                                        else if (me.summaryType == 'sum') {
28205
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
28206
                                            Ext.each(records, function (record, index) {
28207
                                                if (record.get(rec.FieldName)) {
28208
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
28209
                                                }
28210
                                            });
28211
                                        }
28212
                                        return suma;
28213
                                    },
28214
                                    //valueField : valueField,
28215
                                    //displayField : displayValue,
28216
                                    //store : 'store_' + me.tableName + rec.FieldName,
28217
                                    editor: {
28218
                                        allowBlank: null_,
28219
                                        xtype: 'minovacombobox',
28220
                                        readOnly: ReadOnly_,
28221
                                        id: rec.TableName + rec.FieldName,
28222
                                        nameTable: rec.TableName,
28223
                                        fieldGrid: rec.FieldName,
28224
                                        valueField: valueField,
28225
                                        displayField: displayValue,
28226
                                        store: 'store_' + me.tableName + rec.FieldName,
28227
                                        value: rec.DefaultValue
28228
                                    },
28229
                                    renderer: function (value) {
28230
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
28231
                                        var index = store.find(valueField, value);
28232
                                        var val = "";
28233
                                        if (index != -1) {
28234
                                            var rc = store.getAt(index);
28235
                                            val = rc.get(displayValue);
28236
                                        } else {
28237
                                            val = value;
28238
                                        }
28239
                                        return val;
28240
                                    },
28241
                                    filter: {
28242
                                        type: 'list',
28243
                                        itemDefaults: {
28244
                                            emptyText: 'Search for...'
28245
                                        }
28246
                                    }
28247
                                });
28248
                            } else if (rec.SearchType == '5') {
28249
                                var valueField = null;
28250
                                var displayValue = null;
28251
                                var AdditionaldisplayValue = null;
28252
                                var TableRef = undefined;
28253
                                if (rec.TableRef != '') {
28254
                                    TableRef = rec.TableRef;
28255
                                    Ext.Ajax.request({
28256
                                        async: false,
28257
                                        method: 'POST',
28258
                                        url: '/UserControl/GetStore',
28259
                                        params: {
28260
                                            tableName: 'SDATATABLEFIELD',
28261
                                            param: 'TableName[equal]' + rec.TableRef
28262
                                        },
28263
                                        success: function (response) {
28264
                                            var results = Ext.decode(response.responseText);
28265
                                            data_ = results.data;
28266
                                            if (data_ != undefined) {
28267
                                                valueField_ = $.grep(data_, function (r) {
28268
                                                    return r.ValueField == '1'
28269
                                                });
28270
                                                if (valueField_.length > 0) {
28271
                                                    valueField = valueField_[0].FieldName
28272
                                                }
28273

    
28274
                                                displayValue_ = $.grep(data_, function (r) {
28275
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
28276
                                                });
28277
                                                if (displayValue_.length > 0) {
28278
                                                    displayValue = displayValue_[0].FieldName;
28279
                                                }
28280
                                                if (displayValue_.length >= 2) {
28281
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
28282
                                                }
28283
                                            }
28284
                                        }
28285
                                    });
28286
                                }
28287
                                Ext.create('Ext.data.Store', {
28288
                                    storeId: 'store_' + me.tableName + rec.FieldName,
28289
                                    autoLoad: true,
28290
                                    proxy: {
28291
                                        method: 'POST',
28292
                                        type: 'ajax',
28293
                                        url: '/UserControl/GetStoreAuth',
28294
                                        extraParams: {
28295
                                            tableName: TableRef,
28296
                                            param: rec.ParamCombo,
28297
                                            menuId: MinovaUtil.GetMenuID()
28298
                                        },
28299
                                        reader: {
28300
                                            type: 'json',
28301
                                            root: 'data',
28302
                                            totalProperty: 'data[0].TotalCount'
28303
                                        }
28304
                                    }
28305
                                });
28306
                                cols.push({
28307
                                    //xtype : 'minovacombocolumn',
28308
                                    hidden: Hidden_,
28309
                                    text: rec.HeaderTitle,
28310
                                    dataIndex: rec.FieldName,
28311
                                    //valueField : valueField,
28312
                                    //displayField : displayValue,
28313
                                    //store : 'store_' + me.tableName + rec.FieldName,
28314
                                    tpl: Ext.create('Ext.XTemplate',
28315
                                        '<ul class="x-list-plain"><tpl for=".">',
28316
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
28317
                                        '</tpl></ul>'),
28318
                                    displayTpl: Ext.create('Ext.XTemplate',
28319
                                        '<tpl for=".">',
28320
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
28321
                                        '</tpl>'),
28322
                                    editor: {
28323
                                        allowBlank: null_,
28324
                                        xtype: 'combobox',
28325
                                        readOnly: ReadOnly_,
28326
                                        id: rec.TableName + rec.FieldName,
28327
                                        nameTable: rec.TableName,
28328
                                        fieldGrid: rec.FieldName,
28329
                                        valueField: valueField,
28330
                                        displayField: displayValue,
28331
                                        store: 'store_' + me.tableName + rec.FieldName,
28332
                                        value: rec.DefaultValue,
28333
                                        tpl: Ext.create('Ext.XTemplate',
28334
                                            '<ul class="x-list-plain"><tpl for=".">',
28335
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
28336
                                            '</tpl></ul>'),
28337
                                        displayTpl: Ext.create('Ext.XTemplate',
28338
                                            '<tpl for=".">',
28339
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
28340
                                            '</tpl>')
28341
                                    },
28342
                                    renderer: function (value) {
28343
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
28344
                                        var index = store.find(valueField, value);
28345
                                        var val = "";
28346
                                        if (index != -1) {
28347
                                            var rc = store.getAt(index);
28348
                                            //val = rc.get(displayValue);
28349
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
28350
                                        } else {
28351
                                            val = value;
28352
                                        }
28353
                                        return val;
28354
                                    },
28355
                                    filter: {
28356
                                        type: 'list',
28357
                                        itemDefaults: {
28358
                                            emptyText: 'Search for...'
28359
                                        }
28360
                                    }
28361
                                });
28362
                            } else if (rec.SearchType == '2') {
28363
                                var triger = (rec.TriggerCombo).split('$');
28364
                                var targetField_ = triger[0];
28365
                                var fieldValue_ = triger[1];
28366
                                cols.push({
28367
                                    text: rec.HeaderTitle,
28368
                                    hidden: Hidden_,
28369
                                    dataIndex: rec.FieldName,
28370
                                    filter: {
28371
                                        itemDefaults: {
28372
                                            emptyText: 'Search for...'
28373
                                        }
28374
                                    },
28375
                                    editor: {
28376
                                        allowBlank: null_,
28377
                                        xtype: 'minovalookupgrid',
28378
                                        readOnly: ReadOnly_,
28379
                                        isGrid: true,
28380
                                        fieldTarget: targetField_,
28381
                                        fieldValue: fieldValue_,
28382
                                        isGrid: true,
28383
                                        id: tableName + rec.FieldName,
28384
                                        tableName: rec.TableRef,
28385
                                        triggerCls: 'x-form-search-trigger',
28386
                                        vtype: 'alphanum',
28387
                                        nameTable: rec.TableName,
28388
                                        fieldGrid: rec.FieldName,
28389
                                        listeners: {
28390
                                            change: function (val) {
28391
                                                var custumFunc = rec.SelectFunction;
28392
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28393
                                                    Ext.Ajax.request({
28394
                                                        async: false,
28395
                                                        method: 'POST',
28396
                                                        url: '/UserControl/GetStore',
28397
                                                        params: {
28398
                                                            tableName: 'PCMFUNC',
28399
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28400
                                                        },
28401
                                                        success: function (response) {
28402
                                                            var results = Ext.decode(response.responseText);
28403
                                                            data_ = results.data[0];
28404
                                                            if (data_ != undefined) {
28405
                                                                custumFunc = data_.FunctionCode;
28406
                                                            }
28407
                                                        }
28408
                                                    });
28409
                                                }
28410
                                                if (custumFunc) {
28411
                                                    eval(custumFunc)
28412
                                                }
28413
                                            }
28414
                                        }
28415
                                    }
28416
                                });
28417
                            } else if (rec.SearchType == '3') {
28418
                                cols.push({
28419
                                    text: rec.HeaderTitle,
28420
                                    hidden: Hidden_,
28421
                                    dataIndex: rec.FieldName,
28422
                                    filter: {
28423
                                        itemDefaults: {
28424
                                            emptyText: 'Search for...'
28425
                                        }
28426
                                    },
28427
                                    editor: {
28428
                                        allowBlank: null_,
28429
                                        xtype: 'MinovaLookupTree',
28430
                                        readOnly: ReadOnly_,
28431
                                        id: tableName + rec.FieldName,
28432
                                        tableName: rec.TableRef,
28433
                                        triggerCls: 'x-form-search-trigger',
28434
                                        vtype: 'alphanum',
28435
                                        treeSructure: rec.SearchFunction,
28436
                                        objClassValue: rec.ParamCombo,
28437
                                        nameTable: rec.TableName,
28438
                                        fieldGrid: rec.FieldName,
28439
                                        listeners: {
28440
                                            change: function (val) {
28441
                                                var custumFunc = rec.SelectFunction;
28442
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28443
                                                    Ext.Ajax.request({
28444
                                                        async: false,
28445
                                                        method: 'POST',
28446
                                                        url: '/UserControl/GetStore',
28447
                                                        params: {
28448
                                                            tableName: 'PCMFUNC',
28449
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28450
                                                        },
28451
                                                        success: function (response) {
28452
                                                            var results = Ext.decode(response.responseText);
28453
                                                            data_ = results.data[0];
28454
                                                            if (data_ != undefined) {
28455
                                                                custumFunc = data_.FunctionCode;
28456
                                                            }
28457
                                                        }
28458
                                                    });
28459
                                                }
28460
                                                if (custumFunc) {
28461
                                                    eval(custumFunc)
28462
                                                }
28463
                                            }
28464
                                        }
28465
                                    }
28466
                                });
28467
                            } else if (rec.SearchType != '0' && rec.SearchType != '1' && rec.SearchType != '3' && (rec.FieldName == 'EmployeeID' || rec.FieldName == 'ApplicantID' || rec.FieldName == 'EmployeeIDFrom' || rec.FieldName == 'EmployeeIDTo') && isLookup != true) {
28468
                                var triger = (rec.TriggerCombo).split('&');
28469
                                var targetField_ = triger[0];
28470
                                var fieldValue_ = triger[0];
28471
                                cols.push({
28472
                                    text: rec.HeaderTitle,
28473
                                    hidden: Hidden_,
28474
                                    dataIndex: rec.FieldName,
28475
                                    filter: {
28476
                                        itemDefaults: {
28477
                                            emptyText: 'Search for...'
28478
                                        }
28479
                                    },
28480
                                    editor: {
28481
                                        allowBlank: null_,
28482
                                        xtype: 'lookupemployee',
28483
                                        readOnly: ReadOnly_,
28484
                                        isGrid: true,
28485
                                        fieldTarget: targetField_,
28486
                                        fieldValue: fieldValue_,
28487
                                        isGrid: true,
28488
                                        id: tableName + rec.FieldName,
28489
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
28490
                                        triggerCls: 'x-form-search-trigger',
28491
                                        vtype: 'alphanum', // disable space
28492
                                        nameTable: rec.TableName,
28493
                                        fieldGrid: rec.FieldName,
28494
                                        listeners: {
28495
                                            change: function (val) {
28496
                                                var custumFunc = rec.SelectFunction;
28497
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28498
                                                    Ext.Ajax.request({
28499
                                                        async: false,
28500
                                                        method: 'POST',
28501
                                                        url: '/UserControl/GetStore',
28502
                                                        params: {
28503
                                                            tableName: 'PCMFUNC',
28504
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28505
                                                        },
28506
                                                        success: function (response) {
28507
                                                            var results = Ext.decode(response.responseText);
28508
                                                            data_ = results.data[0];
28509
                                                            if (data_ != undefined) {
28510
                                                                custumFunc = data_.FunctionCode;
28511
                                                            }
28512
                                                        }
28513
                                                    });
28514
                                                }
28515
                                                if (custumFunc) {
28516
                                                    eval(custumFunc)
28517
                                                }
28518
                                            }
28519
                                        }
28520
                                    }
28521
                                });
28522
                            } else if (rec.SearchType == '4' && isLookup != true) {
28523
                                cols.push({
28524
                                    text: rec.HeaderTitle,
28525
                                    hidden: Hidden_,
28526
                                    dataIndex: rec.FieldName,
28527
                                    filter: {
28528
                                        itemDefaults: {
28529
                                            emptyText: 'Search for...'
28530
                                        }
28531
                                    },
28532
                                    editor: {
28533
                                        allowBlank: null_,
28534
                                        xtype: 'lookupemployee',
28535
                                        readOnly: ReadOnly_,
28536
                                        isGrid: true,
28537
                                        fieldTarget: targetField_,
28538
                                        fieldValue: fieldValue_,
28539
                                        isGrid: true,
28540
                                        id: tableName + rec.FieldName,
28541
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
28542
                                        triggerCls: 'x-form-search-trigger',
28543
                                        vtype: 'alphanum', // disable space
28544
                                        nameTable: rec.TableName,
28545
                                        fieldGrid: rec.FieldName,
28546
                                        listeners: {
28547
                                            change: function (val) {
28548
                                                var custumFunc = rec.SelectFunction;
28549
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28550
                                                    Ext.Ajax.request({
28551
                                                        async: false,
28552
                                                        method: 'POST',
28553
                                                        url: '/UserControl/GetStore',
28554
                                                        params: {
28555
                                                            tableName: 'PCMFUNC',
28556
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28557
                                                        },
28558
                                                        success: function (response) {
28559
                                                            var results = Ext.decode(response.responseText);
28560
                                                            data_ = results.data[0];
28561
                                                            if (data_ != undefined) {
28562
                                                                custumFunc = data_.FunctionCode;
28563
                                                            }
28564
                                                        }
28565
                                                    });
28566
                                                }
28567
                                                if (custumFunc) {
28568
                                                    eval(custumFunc)
28569
                                                }
28570
                                            }
28571
                                        }
28572
                                    }
28573
                                });
28574
                            } else if (rec.FixedValue != '') { // add by taufan
28575
                                cols.push({
28576
                                    text: rec.HeaderTitle,
28577
                                    hidden: Hidden_,
28578
                                    dataIndex: rec.FieldName,
28579
                                    filter: {
28580
                                        itemDefaults: {
28581
                                            emptyText: 'Search for...'
28582
                                        }
28583
                                    },
28584
                                    editor: {
28585
                                        allowBlank: null_,
28586
                                        xtype: 'minovafixvalue',
28587
                                        readOnly: ReadOnly_,
28588
                                        id: rec.TableName + rec.FieldName,
28589
                                        name: rec.TableName + rec.FieldName,
28590
                                        nameTable: rec.TableName,
28591
                                        fieldGrid: rec.FieldName,
28592
                                        fixedValue: rec.FixedValue,
28593
                                        valueField: 'code',
28594
                                        displayField: 'desc',
28595
                                        value: rec.DefaultValue
28596
                                    },
28597
                                    renderer: function (value) {
28598
                                        var val = "";
28599
                                        var storeData = [];
28600
                                        var str = rec.FixedValue;
28601
                                        var hasil = str.split('||');
28602
                                        hasil.forEach(function (h) {
28603
                                            store_ = h.split('=')
28604
                                            storeData.push({
28605
                                                code: store_[0],
28606
                                                desc: store_[1]
28607
                                            });
28608
                                        });
28609
                                        var item = storeData.find(x => x.code == value);
28610
                                        if (item != undefined) {
28611
                                            val = item.desc;
28612
                                        }
28613
                                        return val;
28614
                                    }
28615
                                });
28616
                            } else {
28617
                                _xtype = 'textfield';
28618
                                if (rec.Length > 250) {
28619
                                    _xtype = 'textareafield';
28620
                                }
28621
                                var _custumFunc = null;
28622
                                Ext.Ajax.request({
28623
                                    async: false,
28624
                                    method: 'POST',
28625
                                    url: '/UserControl/GetStore',
28626
                                    params: {
28627
                                        tableName: 'SDATATABLEFIELD',
28628
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
28629
                                    },
28630
                                    success: function (response) {
28631
                                        var results = Ext.decode(response.responseText);
28632
                                        data_ = results.data[0];
28633
                                        if (data_ != undefined) {
28634
                                            _custumFunc = data_.SelectFunction;
28635
                                        }
28636
                                    }
28637
                                });
28638
                                cols.push({
28639
                                    text: rec.HeaderTitle,
28640
                                    xtype: 'gridcolumn',
28641
                                    hidden: Hidden_,
28642
                                    dataIndex: rec.FieldName,
28643
                                    filter: {
28644
                                        itemDefaults: {
28645
                                            emptyText: 'Search for...'
28646
                                        }
28647
                                    },
28648
                                    cellWrap: true,
28649
                                    editor: {
28650
                                        allowBlank: null_,
28651
                                        xtype: _xtype,
28652
                                        readOnly: ReadOnly_,
28653
                                        id: tableName + rec.FieldName,
28654
                                        nameTable: rec.TableName,
28655
                                        fieldGrid: rec.FieldName,
28656
                                        value: rec.DefaultValue,
28657
                                        grow: true,
28658
                                        listeners: {
28659
                                            change: function (val) {
28660
                                                if (_custumFunc) {
28661
                                                    eval(_custumFunc)
28662
                                                }
28663
                                            }
28664
                                            /*change: function (val) {
28665
                                                var custumFunc = null;
28666
                                                Ext.Ajax.request({
28667
                                                    async: false,
28668
                                                    method: 'POST',
28669
                                                    url: '/UserControl/GetStore',
28670
                                                    params: {
28671
                                                        tableName: 'SDATATABLEFIELD',
28672
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
28673
                                                    },
28674
                                                    success: function (response) {
28675
                                                        var results = Ext.decode(response.responseText);
28676
                                                        data_ = results.data[0];
28677
                                                        if (data_ != undefined) {
28678
                                                            custumFunc = data_.SelectFunction;
28679
                                                            //console.log(data_)
28680
                                                        }
28681
                                                    }
28682
                                                });
28683

    
28684
                                                if (custumFunc) {
28685
                                                    eval(custumFunc)
28686
                                                }
28687
                                            } */
28688
                                        }
28689
                                    },
28690
                                    renderer: function (v) {
28691
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
28692
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
28693
                                        return result
28694
                                    }
28695
                                });
28696
                            }
28697
                            break
28698
                    }
28699
                } else {
28700
                    cols.push({
28701
                        text: rec.HeaderTitle,
28702
                        hidden: Hidden_,
28703
                        dataIndex: rec.FieldName,
28704
                        hidden: true,
28705
                        editor: {
28706
                            allowBlank: true,
28707
                            xtype: 'textfield',
28708
                            readOnly: ReadOnly_,
28709
                            id: tableName + rec.FieldName,
28710
                            nameTable: rec.TableName,
28711
                            fieldGrid: rec.FieldName,
28712
                            value: rec.DefaultValue
28713
                        },
28714
                        filter: {
28715
                            itemDefaults: {
28716
                                emptyText: 'Search for...'
28717
                            }
28718
                        }
28719
                    });
28720
                }
28721
            });
28722

    
28723
        };
28724
        cols.push({
28725
            xtype: 'actioncolumn',
28726
            text: 'Edit',
28727
            maxWidth: 150,
28728
            minWidth: 50,
28729
            border: false,
28730
            itemId: 'startEditActionColumn',
28731
            align: 'center',
28732
            items: [
28733
                {
28734
                    iconCls: 'x-fa fa-pencil-square-o',
28735
                    handler: function (grid, rowIndex, colIndex) {
28736
                        grid.editingPlugin.startEdit(rowIndex, 0);
28737
                    }
28738
                }
28739
            ]
28740
        });
28741
        addData = addData + "}";
28742
        Ext.applyIf(me, {
28743
            items: [{
28744
                xtype: 'grid',
28745
                id: gridName,
28746
                name: gridName,
28747
                height: height,
28748
                minHeight: me.minHeight,
28749
                maxHeight: me.maxHeight,
28750
                addFlag: true,
28751
                deleteFlag: true,
28752
                store: Ext.create('Ext.data.Store', {
28753
                    storeId: storeID,
28754
                    fields: fieldStore,
28755
                    //groupField: 'QuestionGroup',
28756
                    grouper: {
28757
                        sortProperty: 'SeqQuest',
28758
                        groupFn: function (record) {
28759
                            return record.get('QuestionGroup');
28760
                        }
28761
                    },
28762
                    proxy: {
28763
                        method: 'POST',
28764
                        type: 'ajax',
28765
                        url: '',
28766
                        reader: {
28767
                            type: 'json',
28768
                            root: 'data'
28769
                        }
28770
                    }
28771
                }),
28772
                dockedItems: [{
28773
                    xtype: 'toolbar',
28774
                    items: [{
28775
                        text: 'Add',
28776
                        hidden: hide_,
28777
                        name: tableName + 'Add',
28778
                        iconCls: 'fa-plus-circle',
28779
                        style: 'font-family: FontAwesome',
28780
                        handler: function () {
28781
                            var grid = Ext.getCmp(gridName);
28782
                            if (grid.addFlag === true) {
28783
                                var store = Ext.StoreMgr.lookup(storeID)
28784
                                idx = store.getCount();
28785
                                var action = getParam('action');
28786
                                var data = '';
28787
                                var Sequence = 0;
28788
                                if (idx == 0) {
28789
                                    Sequence = 1;
28790
                                } else {
28791
                                    Sequence = 1 + idx;
28792
                                }
28793
                                var seq = 'Sequence';
28794
                                var SequenceValue = Sequence;
28795
                                eval(addData);
28796
                                data[seq] = SequenceValue;
28797
                                store.insert(idx, data);
28798
                            }
28799
                        }
28800
                    }, {
28801
                        text: 'Delete',
28802
                        hidden: hide_,
28803
                        name: tableName + 'DeleteText',
28804
                        iconCls: 'fa-trash-o',
28805
                        style: 'font-family: FontAwesome',
28806
                        handler: function () {
28807
                            var grid = Ext.getCmp(gridName);
28808
                            if (grid.deleteFlag === true) {
28809
                                var me = this,
28810
                                    store = Ext.StoreMgr.lookup(storeID)
28811
                                var grid = Ext.getCmp(gridName);
28812
                                Ext.MessageBox.show({
28813
                                    title: 'Remove tab',
28814
                                    msg: "This will remove. Do you want to continue?",
28815
                                    buttons: Ext.MessageBox.YESNO,
28816
                                    fn: function (choice) {
28817
                                        console.log(choice);
28818
                                        if (choice === 'yes') {
28819
                                            var selection = grid.getView().getSelectionModel().getSelection()[0];
28820
                                            if (selection) {
28821
                                                store.remove(selection);
28822
                                            }
28823
                                        }
28824
                                    }
28825
                                });
28826
                            }
28827
                        }
28828
                    }
28829
                    ]
28830
                }
28831
                ],
28832
                columns: cols,
28833
                selType: checkSelection,
28834
                plugins: {
28835
                    ptype: 'actionColumnRowEditing', //rowediting
28836
                    pluginId: 'rowEditing',
28837
                    hiddenColumnsOnEdit: ['startEditActionColumn'],
28838
                    clicksToEdit: 2,
28839
                    saveButtonIconCls: 'x-fa fa-floppy-o',
28840
                    listeners: {}
28841
                },
28842
                //listeners: {
28843
                //    'beforeedit': function (editor) {
28844
                //        editor.getEditor().floatingButtons.items.items[0].hide();
28845
                //        editor.getEditor().floatingButtons.items.items[1].hide();
28846
                //    }
28847
                //},
28848
                features: features,
28849
                viewConfig: {
28850
                    listeners: {
28851
                        refresh: function (dataview) {
28852
                            Ext.each(dataview.panel.columns, function (column) {
28853
                                column.autoSize();
28854
                            })
28855
                        }
28856
                    }
28857
                }
28858
            }
28859
            ]
28860
        });
28861
        me.callParent(arguments);
28862
    }
28863
});
28864

    
28865
/*Grid Display ESS Generator YN 20211216 */
28866
Ext.define('MinovaUtil.MinovaES.MinovaGridDisplay', {
28867
    extend: 'Ext.grid.Panel',
28868
    requires: ['Ext.grid.RowNumberer'],
28869
    alias: 'widget.minovagriddisplay',
28870
    //alternateClassName : 'Ext.grid.MinovaGrid',
28871
    tableName: undefined,
28872
    isLookup: undefined,
28873
    param: undefined,
28874
    pagesize: undefined,
28875
    storeName: undefined,
28876
    layoutType: undefined,
28877
    enableLocking: true,
28878
    initComponent: function () {
28879
        var me = this;
28880
        var cols_ = [];
28881
        var fieldeditor = {};
28882
        var hasil = null;
28883
        var autoLoad = true;
28884
        var LangID = MinovaUtil.GetLangID();
28885
        parameter = null;
28886
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
28887
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
28888
        } else {
28889
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
28890
        }
28891
        Ext.Ajax.request({
28892
            async: false,
28893
            method: 'POST',
28894
            url: '/UserControl/GetStore',
28895
            params: {
28896
                tableName: 'PDSBS0007',
28897
                param: parameter
28898
            },
28899
            success: function (response) {
28900
                var results = Ext.decode(response.responseText);
28901
                hasil = results.data;
28902
            }
28903
        });
28904
        if (hasil.length > 0) {
28905
            Ext.each(hasil, function (rec) {
28906
                var null_ = null;
28907
                if (rec.IsPrimaryKey == true) {
28908
                    null_ = false;
28909
                }
28910
                if (rec.IsRequired == true) {
28911
                    null_ = false;
28912
                } else {
28913
                    null_ = true;
28914
                }
28915
                if (rec.GridView == 1) {
28916
                    switch (rec.FormatRef) {
28917
                        case "date":
28918
                            cols_.push({
28919
                                xtype: 'minovadatecolumn',
28920
                                text: rec.HeaderTitle,
28921
                                dataIndex: rec.FieldName,
28922
                                width: 100,
28923
                                filter: {
28924
                                    type: 'date',
28925
                                    itemDefaults: {
28926
                                        emptyText: 'Search for...'
28927
                                    }
28928
                                }
28929
                            });
28930
                            break
28931
                        case "amountencrypt":
28932
                            cols_.push({
28933
                                xtype: 'minovaamountcolumn',
28934
                                text: rec.HeaderTitle,
28935
                                dataIndex: rec.FieldName,
28936
                                align: 'right',
28937
                                width: 100,
28938
                                filter: {
28939
                                    type: 'string',
28940
                                    itemDefaults: {
28941
                                        emptyText: 'Search for...'
28942
                                    }
28943
                                }
28944
                            });
28945
                            break
28946
                        case "amount":
28947
                            cols_.push({
28948
                                xtype: 'minovacurrancycolumn',
28949
                                text: rec.HeaderTitle,
28950
                                dataIndex: rec.FieldName,
28951
                                align: 'right',
28952
                                width: 100,
28953
                                filter: {
28954
                                    type: 'number',
28955
                                    itemDefaults: {
28956
                                        emptyText: 'Search for...'
28957
                                    }
28958
                                }
28959
                            });
28960
                            break
28961
                        case "datetime":
28962
                            cols_.push({
28963
                                xtype: 'minovadatetimecolumn',
28964
                                text: rec.HeaderTitle,
28965
                                dataIndex: rec.FieldName,
28966
                                width: 140,
28967
                                filter: {
28968
                                    type: 'string',
28969
                                    itemDefaults: {
28970
                                        emptyText: 'Search for...'
28971
                                    }
28972
                                }
28973
                            });
28974
                            break
28975
                        default:
28976
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
28977
                                cols_.push({
28978
                                    text: rec.HeaderTitle,
28979
                                    dataIndex: rec.FieldName,
28980
                                    width: 100,
28981
                                    filter: {
28982
                                        type: 'string',
28983
                                        itemDefaults: {
28984
                                            emptyText: 'Search for...'
28985
                                        }
28986
                                    }
28987
                                });
28988
                            } else if (rec.SearchType == '2') {
28989
                                cols_.push({
28990
                                    xtype: 'minovalookupcolumn',
28991
                                    text: rec.HeaderTitle,
28992
                                    tableName: rec.TableRef,
28993
                                    dataIndex: rec.FieldName,
28994
                                    filter: {
28995
                                        itemDefaults: {
28996
                                            emptyText: 'Search for...'
28997
                                        }
28998
                                    }
28999
                                });
29000
                            } else if (rec.TableRef != "") {
29001
                                if (rec.TableRef != null) {
29002
                                    var valueField = null;
29003
                                    Ext.Ajax.request({
29004
                                        async: false,
29005
                                        method: 'POST',
29006
                                        url: '/UserControl/GetStore',
29007
                                        params: {
29008
                                            tableName: 'SDATATABLEFIELD',
29009
                                            param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
29010
                                        },
29011
                                        success: function (response) {
29012
                                            var results = Ext.decode(response.responseText);
29013
                                            data_ = results.data[0];
29014
                                            if (data_ != undefined) {
29015
                                                valueField = data_.FieldName;
29016
                                            }
29017
                                        }
29018
                                    });
29019

    
29020
                                    displayValue = null;
29021
                                    Ext.Ajax.request({
29022
                                        async: false,
29023
                                        method: 'POST',
29024
                                        url: '/UserControl/GetStore',
29025
                                        params: {
29026
                                            tableName: 'SDATATABLEFIELD',
29027
                                            param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
29028
                                        },
29029
                                        success: function (response) {
29030
                                            var results = Ext.decode(response.responseText);
29031
                                            data_ = results.data[0];
29032
                                            if (data_ != undefined) {
29033
                                                displayValue = data_.FieldName;
29034
                                                //console.log(data_)
29035
                                            }
29036
                                        }
29037
                                    });
29038
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
29039
                                    var count_ = 0;
29040
                                    if (store_) {
29041
                                        count_ = store_.count();
29042
                                    }
29043
                                    if (count_ == 0) {
29044
                                        Ext.create('Ext.data.Store', {
29045
                                            storeId: 'store_' + rec.FieldName,
29046
                                            autoLoad: true,
29047
                                            proxy: {
29048
                                                method: 'POST',
29049
                                                type: 'ajax',
29050
                                                url: '/UserControl/GetStore',
29051
                                                extraParams: {
29052
                                                    tableName: rec.TableRef,
29053
                                                    param: rec.ParamCombo
29054
                                                },
29055
                                                reader: {
29056
                                                    type: 'json',
29057
                                                    root: 'data',
29058
                                                    totalProperty: 'data[0].TotalCount'
29059
                                                }
29060
                                            }
29061
                                        })
29062
                                    }
29063
                                    cols_.push({
29064
                                        xtype: 'minovacombocolumn',
29065
                                        text: rec.HeaderTitle,
29066
                                        dataIndex: rec.FieldName,
29067
                                        valueField: valueField,
29068
                                        displayField: displayValue,
29069
                                        store: 'store_' + rec.FieldName,
29070
                                        filter: {
29071
                                            type: 'list',
29072
                                            itemDefaults: {
29073
                                                emptyText: 'Search for...'
29074
                                            }
29075
                                        }
29076
                                    });
29077
                                }
29078

    
29079
                            } else {
29080
                                cols_.push({
29081
                                    text: rec.HeaderTitle,
29082
                                    dataIndex: rec.FieldName,
29083
                                    width: rec.Length * 6.5 + 20, //(rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29084
                                    flex: ((rec.Length * 6.5 + 20) >= 800)?1:0,
29085
                                    //autoSizeColumn: true,
29086
                                    cellWrap: true,
29087
                                    hidden: (rec.IsHidden=='1')? true:false,
29088
                                    filter: {
29089
                                        itemDefaults: {
29090
                                            emptyText: 'Search for...'
29091
                                        }
29092
                                    }
29093
                                });
29094
                            }
29095
                            break
29096
                    }
29097
                }
29098
                else {
29099
                    cols_.push({
29100
                        text: rec.HeaderTitle,
29101
                        dataIndex: rec.FieldName,
29102
                        hidden: true,
29103
                        filter: {
29104
                            itemDefaults: {
29105
                                emptyText: 'Search for...'
29106
                            }
29107
                        }
29108
                    });
29109
                }
29110
            });
29111
        };
29112
        var param_ = me.param;
29113
        if (param_ == undefined) {
29114
            param_ = ''
29115
        }
29116

    
29117
        var jsStoreGrid = new Ext.create('Ext.data.Store', {
29118
            storeId: me.storeName,
29119
            autoLoad: false,
29120
            proxy: {
29121
                method: 'POST',
29122
                type: 'ajax',
29123
                url: '/UserControl/GetStore',
29124
                extraParams: {
29125
                    tableName: me.tableName,
29126
                    param: param_
29127
                },
29128
                reader: {
29129
                    type: 'json',
29130
                    root: 'data',
29131
                    totalProperty: 'data[0].TotalCount'
29132
                }
29133
            }
29134
        });
29135

    
29136
        Ext.applyIf(me, {
29137
            defaults: {
29138
                autoSizeColumn: true,
29139
            },
29140
            columns: cols_,
29141
            store: jsStoreGrid,
29142
            viewConfig: {
29143
                listeners: {
29144
                    refresh: function (dataview) {
29145
                        Ext.each(dataview.panel.columns, function (column) {
29146
                            if (column.autoSizeColumn === true)
29147
                                column.autoSize();
29148
                        })
29149
                    }
29150
                }
29151
            },
29152
        });
29153
        me.callParent(arguments);
29154
    }
29155

    
29156
});
29157

    
29158
/*https://fiddle.sencha.com/#fiddle/1544&view/editor */
29159
Ext.define('MinovaUtil.MinovaES.StoreCheckboxGroup', {
29160
    extend: 'Ext.form.CheckboxGroup',
29161
    xtype: 'storecheckboxgroup', // <- this "xtype" is a unique name of the component.
29162
    name: undefined,
29163
    nametxt: undefined,
29164
    formname: undefined,
29165
    nameTable: undefined,
29166
    initComponent: function () {
29167
        var me = this;
29168
        if (!me.store) throw "No store defined for StoreCheckboxGroup";
29169
        if (!me.mapFn) throw "No mapFn defined for StoreCheckboxGroup";
29170
        if (me.items) throw "Items may not be defined for StoreCheckboxGroup; we get them from the store!";
29171
        var checklistStore = me.store, // <-- using the required "store" property
29172
            renderCheckboxes = function () {
29173
                me.removeAll();
29174
                //me.add(formfield = new Ext.form.TextField({
29175
                //    name: me.nametxt,
29176
                //    formname: me.formname,
29177
                //    nameTable: me.nameTable,
29178
                //}));
29179
                me.add(
29180
                    checklistStore.getRange().map(me.mapFn)); // <-- using the required "mapFn" property
29181
            };
29182
        me.callParent(arguments);
29183
        renderCheckboxes(); // <-- using the function I defined above
29184
        checklistStore.on({
29185
            load: renderCheckboxes, // <-------- binding the
29186
            update: renderCheckboxes, // <------ function to
29187
            datachanged: renderCheckboxes, // <- the store
29188
            filterchange: renderCheckboxes // <- events
29189
        });
29190
    }
29191
});
29192
/* END YN 20211216 */
(8-8/10)