Project

General

Profile

Bug #1441 » MinovaXtype.js

Tri Rizqiaty, 08/11/2022 03:21 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
                        pnl.mask('Loading...');
884
                        setTimeout(function () {
885
                            pnl.unmask();
886
                        }, 100);
887
                    }
888
                },
889
                items: [{
890
                    xtype: 'minovaform',
891
                    bodyBorder: false,
892
                    MaxHeigth: '100',
893
                    cls: 'borderLookup',
894
                    border: false,
895
                    MaxHeigth: '30',
896
                    scroll: true,
897
                    isLookup: true,
898
                    name: "formLookupFilter",
899
                    tableName: this.tableName,
900
                    buttons: [{
901
                        text: 'Search',
902
                        //iconCls : 'fa-edit',
903
                        //style : 'font-family: FontAwesome',
904
                        handler: function () {
905

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

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

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

    
965
                            var me = this;
966
                            var selection = this.getView().getSelectionModel().getSelection()[0];
967
                            var pnlMain = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0];
968
                            var name_ = 'form[name=' + formtarget_ + ']';
969
                            if (pnlMain) {
970
                                name_ = 'form[name=' + formtarget_ + pnlMain.nameTable + ']';
971
                            }
972

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

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

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

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

    
1151

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

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

    
1190
        //    }, ]
1191
        //}).show();
1192

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

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

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

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

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

    
1271
            }
1272

    
1273
            f.setRawValue(hasil)
1274
        },
1275
    },
1276
    //end
1277

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

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

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

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

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

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

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

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

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

    
1687
        if (hasil.length > 0) {
1688

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

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

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

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

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

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

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

    
2199
            store: jsStoreGrid,
2200

    
2201
            plugins: [{
2202
                ptype: 'gridfilters'
2203
            }
2204
            ],
2205

    
2206
        });
2207
        me.callParent(arguments);
2208
    }
2209

    
2210
});
2211

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

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

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

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

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

    
2291
        if (hasil.length > 0) {
2292

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

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

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

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

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

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

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

    
2797
            store: jsStoreGrid,
2798

    
2799
            plugins: [{
2800
                ptype: 'gridfilters'
2801
            }
2802
            ],
2803

    
2804
        });
2805
        me.callParent(arguments);
2806
    }
2807

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

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

    
2876
                    }
2877

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

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

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

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

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

    
2956
                    }
2957
                    Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
2958

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

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

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

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

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

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

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

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

    
3050
                        }
3051

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

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

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

    
3078
                        formDisplay.setHidden(true);
3079
                        formEdit.setActionSubmit(1)
3080
                        formEdit.setSubmitProc(true)
3081
                        formEdit.setHidden(false);
3082

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

    
3110
    getTableName: function () {
3111
        return this.tableName;
3112
    },
3113

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

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

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

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

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

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

    
3431
            store: jsStoreGrid,
3432

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

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

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

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

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

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

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

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

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

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

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

    
5083
                                    }
5084

    
5085
                                },
5086

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

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

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

    
5199
                            }
5200
                        });
5201
                    }
5202
                }
5203
                if (isDesk) {
5204
                    if (rec.ColumnNo == 1) {
5205
                        col1.push(formfield);
5206
                    } else if (rec.ColumnNo == 2) {
5207
                        col2.push(formfield);
5208
                    } else {
5209
                        col0.push(formfield);
5210
                    }
5211
                } else {
5212
                    if (rec.ColumnNo == 1 || rec.ColumnNo == 2) {
5213
                        col1.push(formfield);
5214
                    } else {
5215
                        col0.push(formfield);
5216
                    }
5217
                }
5218
                //if (isDesk) {
5219
                //    if (rec.ColumnNo == 1) {
5220
                //        col1.push(formfield);
5221
                //    } else {
5222
                //        col2.push(formfield);
5223
                //    }
5224
                //} else {
5225
                //    col1.push(formfield);
5226
                //}
5227

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

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

    
5369
                                            if (data_ != undefined) {
5370
                                                if (data_.length > 0) {
5371
                                                    valueField_ = $.grep(data_, function (r) {
5372
                                                        return r.ValueField == '1'
5373
                                                    });
5374
                                                    valueField = valueField_[0].FieldName
5375
                                                    displayValue_ = $.grep(data_, function (r) {
5376
                                                        return r.DisplayValue == '1'
5377
                                                    });
5378
                                                    displayValue = displayValue_[0].FieldName
5379
                                                }
5380
                                            }
5381
                                        }
5382
                                    });
5383
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
5384
                                    var count_ = 0;
5385
                                    if (store_) {
5386
                                        count_ = store_.count();
5387
                                    }
5388
                                    if (count_ == 0) {
5389
                                        var storeRef = Ext.create('Ext.data.Store', {
5390
                                            storeId: 'store_' + rec.FieldName,
5391
                                            autoLoad: false,
5392
                                            proxy: {
5393
                                                method: 'POST',
5394
                                                type: 'ajax',
5395
                                                url: '/UserControl/GetStore',
5396
                                                extraParams: {
5397
                                                    tableName: rec.TableRef,
5398
                                                    param: rec.ParamCombo
5399
                                                },
5400
                                                reader: {
5401
                                                    type: 'json',
5402
                                                    root: 'data',
5403
                                                    totalProperty: 'data[0].TotalCount'
5404
                                                }
5405
                                            }
5406
                                        });
5407
                                        storeRef.load();
5408

    
5409
                                        //Ext.create('Ext.data.Store', {
5410
                                        //    storeId: 'store_' + rec.FieldName,
5411
                                        //    autoLoad: true,
5412
                                        //    proxy: {
5413
                                        //        method: 'POST',
5414
                                        //        type: 'ajax',
5415
                                        //        url: '/UserControl/GetStore',
5416
                                        //        extraParams: {
5417
                                        //            tableName: rec.TableRef,
5418
                                        //            param: rec.ParamCombo
5419
                                        //        },
5420
                                        //        reader: {
5421
                                        //            type: 'json',
5422
                                        //            root: 'data',
5423
                                        //            totalProperty: 'data[0].TotalCount'
5424
                                        //        }
5425
                                        //    }
5426
                                        //})
5427
                                    }
5428
                                    cols_.push({
5429
                                        xtype: 'minovacombocolumn',
5430
                                        text: rec.HeaderTitle,
5431
                                        dataIndex: rec.FieldName,
5432
                                        valueField: valueField,
5433
                                        displayField: displayValue,
5434
                                        store: 'store_' + rec.FieldName,
5435
                                        filter: {
5436
                                            type: 'list',
5437
                                            itemDefaults: {
5438
                                                emptyText: 'Search for...'
5439
                                            }
5440
                                        }
5441
                                    });
5442
                                }
5443
                            } else {
5444
                                cols_.push({
5445
                                    text: rec.HeaderTitle,
5446
                                    dataIndex: rec.FieldName,
5447
                                    filter: {
5448
                                        itemDefaults: {
5449
                                            emptyText: 'Search for...'
5450
                                        }
5451
                                    }
5452
                                });
5453
                            }
5454
                            break
5455
                    }
5456
                } else {
5457
                    cols_.push({
5458
                        text: rec.HeaderTitle,
5459
                        dataIndex: rec.FieldName,
5460
                        hidden: true,
5461
                        filter: {
5462
                            itemDefaults: {
5463
                                emptyText: 'Search for...'
5464
                            }
5465
                        }
5466
                    });
5467
                }
5468
            });
5469
        };
5470
        var param_ = me.param;
5471
        if (param_ == undefined) {
5472
            param_ = ''
5473
        }
5474
        var jsStoreGrid = new Ext.data.Store({
5475
            storeId: me.storeName,
5476
            autoLoad: autoLoad,
5477
            pageSize: 10,
5478
            proxy: {
5479
                method: 'POST',
5480
                type: 'ajax',
5481
                url: '/UserControl/GetStorePagingAuth',
5482
                extraParams: {
5483
                    tableName: me.tableName,
5484
                    param: param_,
5485
                    menuId: MinovaUtil.GetMenuID()
5486
                },
5487
                reader: {
5488
                    type: 'json',
5489
                    root: 'data',
5490
                    totalProperty: 'totalRecords'
5491
                }
5492
            }
5493
        });
5494
        Ext.applyIf(me, {
5495
            autoScroll: true,
5496
            enableLocking: locking,
5497
            lockedGridConfig: {
5498
                header: false,
5499
                collapsible: true,
5500
                width: widthLock,
5501
                forceFit: locking,
5502
                listeners: {
5503
                    render: function (grid) {
5504
                        var pagingToolbar = grid.child('pagingtoolbar');
5505
                        if (pagingToolbar) {
5506
                            grid.remove(pagingToolbar, true);
5507
                        }
5508
                    }
5509
                }
5510
            },
5511
            listeners: {
5512
                viewready: function () {
5513
                    if (autoLoad == false) {
5514
                        this.getStore().loadPage(1);
5515
                    }
5516

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

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

    
6185
                                                if (custumFunc) {
6186
                                                    eval(custumFunc)
6187
                                                }
6188
                                            }
6189
                                        }
6190
                                    }
6191
                                });
6192
                            }
6193
                            break
6194
                    }
6195
                } else {
6196
                    cols.push({
6197
                        text: rec.HeaderTitle,
6198
                        hidden: Hidden_,
6199
                        dataIndex: rec.FieldName,
6200
                        hidden: true,
6201
                        editor: {
6202
                            allowBlank: true,
6203
                            xtype: 'textfield',
6204
                            readOnly: ReadOnly_,
6205
                            id: tableName + rec.FieldName,
6206
                            nameTable: rec.TableName,
6207
                            fieldGrid: rec.FieldName,
6208
                            value: rec.DefaultValue
6209
                        },
6210
                        filter: {
6211
                            itemDefaults: {
6212
                                emptyText: 'Search for...'
6213
                            }
6214
                        }
6215
                    });
6216
                }
6217
            });
6218

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

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

    
6686
                                                    }
6687

    
6688
                                                },
6689

    
6690
                                            }
6691
                                        }
6692
                                    });
6693
                                } else if (rec.SearchType == "3") {
6694
                                    cols.push({
6695
                                        text: rec.HeaderTitle,
6696
                                        dataIndex: rec.FieldName,
6697
                                        editor: {
6698
                                            xtype: 'minovalookuptree',
6699
                                            allowBlank: allowblank,
6700
                                            fieldLabel: rec.ScreenCaption,
6701
                                            readOnly: readonly,
6702
                                            labelCls: 'label-minova',
6703
                                            labelWidth: 150,
6704
                                            name: 'grid' + tableName + rec.FieldName,
6705
                                            id: 'grid' + tableName + rec.FieldName,
6706
                                            msgTarget: 'side',
6707
                                            triggerCls: 'x-form-search-trigger',
6708
                                            treeSructure: rec.SearchFunction, //'O-O-P',
6709
                                            objClassValue: rec.ParamCombo, //'O',
6710
                                            formname: me.formname,
6711
                                            targetField: rec.FieldName,
6712
                                            anchor: '100%',
6713
                                            listeners: {
6714
                                                change: function (val) {
6715
                                                    var _label = val.name;
6716
                                                    var _form = val.formname;
6717
                                                    var _Value = val.getValue();
6718
                                                    var target = rec.TriggerCombo;
6719
                                                    var custumFunc = rec.SelectFunction;
6720
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6721
                                                        Ext.Ajax.request({
6722
                                                            async: false,
6723
                                                            method: 'POST',
6724
                                                            url: '/UserControl/GetStore',
6725
                                                            params: {
6726
                                                                tableName: 'PCMFUNC',
6727
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6728
                                                            },
6729
                                                            success: function (response) {
6730
                                                                var results = Ext.decode(response.responseText);
6731
                                                                data_ = results.data[0];
6732
                                                                if (data_ != undefined) {
6733
                                                                    custumFunc = data_.FunctionCode;
6734
                                                                }
6735
                                                            }
6736
                                                        });
6737
                                                    }
6738
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6739
                                                    if (frm) {
6740

    
6741
                                                        if (target) {
6742
                                                            var f = frm.getForm().findField(target)
6743
                                                            _store = f.getStore();
6744
                                                            var _tbl = _store.proxy.extraParams.tableName;
6745
                                                            var oldParam = _store.proxy.extraParams.param;
6746
                                                            _store.proxy.extraParams = {
6747
                                                                tableName: _tbl,
6748
                                                                param: _label + '[=]' + _Value
6749
                                                            };
6750
                                                            _store.load();
6751
                                                        }
6752
                                                        if (custumFunc) {
6753
                                                            eval(custumFunc)
6754
                                                        }
6755
                                                    }
6756
                                                }
6757
                                            }
6758
                                        }
6759
                                    });
6760
                                } else if (rec.SearchType == "4") {
6761
                                    cols.push({
6762
                                        text: rec.HeaderTitle,
6763
                                        dataIndex: rec.FieldName,
6764
                                        editor: {
6765
                                            xtype: 'lookupemployee',
6766
                                            allowBlank: allowblank,
6767
                                            fieldLabel: rec.ScreenCaption,
6768
                                            readOnly: readonly,
6769
                                            labelCls: 'label-minova',
6770
                                            name: 'grid' + tableName + rec.FieldName,
6771
                                            id: 'grid' + tableName + rec.FieldName,
6772
                                            msgTarget: 'side',
6773
                                            fieldname: rec.FieldName,
6774
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
6775
                                            triggerCls: 'x-form-search-trigger',
6776
                                            vtype: 'alphanum', // disable space
6777
                                            formtarget: formname, // nama form  yang akan di set value-nya
6778
                                            isLookup: isLookup,
6779
                                            anchor: '100%',
6780
                                            formname: formname,
6781
                                            listeners: {
6782
                                                change: function (val) {
6783
                                                    var _label = val.name;
6784
                                                    var _form = val.formname;
6785
                                                    var _Value = val.getValue();
6786
                                                    var target = rec.TriggerCombo;
6787
                                                    var custumFunc = rec.SelectFunction;
6788
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
6789
                                                        Ext.Ajax.request({
6790
                                                            async: false,
6791
                                                            method: 'POST',
6792
                                                            url: '/UserControl/GetStore',
6793
                                                            params: {
6794
                                                                tableName: 'PCMFUNC',
6795
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
6796
                                                            },
6797
                                                            success: function (response) {
6798
                                                                var results = Ext.decode(response.responseText);
6799
                                                                data_ = results.data[0];
6800
                                                                if (data_ != undefined) {
6801
                                                                    custumFunc = data_.FunctionCode;
6802
                                                                }
6803
                                                            }
6804
                                                        });
6805
                                                    }
6806
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6807
                                                    if (frm) {
6808

    
6809
                                                        if (target) {
6810
                                                            var f = frm.getForm().findField(target)
6811
                                                            _store = f.getStore();
6812
                                                            var _tbl = _store.proxy.extraParams.tableName;
6813
                                                            var oldParam = _store.proxy.extraParams.param;
6814
                                                            _store.proxy.extraParams = {
6815
                                                                tableName: _tbl,
6816
                                                                param: _label + '[=]' + _Value
6817
                                                            };
6818
                                                            _store.load();
6819
                                                        }
6820
                                                        if (custumFunc) {
6821
                                                            eval(custumFunc)
6822
                                                        }
6823

    
6824
                                                    }
6825

    
6826
                                                },
6827

    
6828
                                            },
6829
                                        }
6830
                                    });
6831
                                }
6832
                            } else {
6833
                                if (rec.FixedValue != "") {
6834
                                    var storeData = [];
6835
                                    var str = rec.FixedValue;
6836
                                    var hasil = str.split('||');
6837
                                    hasil.forEach(function (h) {
6838
                                        store_ = h.split('=')
6839
                                        storeData.push({
6840
                                            code: store_[0],
6841
                                            desc: store_[1],
6842
                                        });
6843
                                    });
6844
                                    cols.push({
6845
                                        xtype: 'minovacombocolumn',
6846
                                        text: rec.HeaderTitle,
6847
                                        dataIndex: rec.FieldName,
6848
                                        valueField: valueField,
6849
                                        displayField: displayValue,
6850
                                        store: Ext.create('Ext.data.Store', {
6851
                                            storeId: 'store' + rec.FieldName,
6852
                                            autoLoad: true,
6853
                                            data: storeData
6854

    
6855
                                        }),
6856
                                        editor: {
6857
                                            xtype: 'combobox',
6858
                                            allowBlank: allowblank,
6859
                                            forceSelection: true,
6860
                                            readOnly: readonly,
6861
                                            labelCls: 'label-minova',
6862
                                            labelWidth: 150,
6863
                                            name: 'grid' + tableName + rec.FieldName,
6864
                                            id: 'grid' + tableName + rec.FieldName,
6865
                                            msgTarget: 'side',
6866
                                            value: rec.DefaultValue,
6867
                                            anchor: '100%',
6868
                                            formname: me.formname,
6869
                                            formtarget: me.formname,
6870
                                            store: Ext.create('Ext.data.Store', {
6871
                                                storeId: 'store' + rec.FieldName,
6872
                                                autoLoad: true,
6873
                                                data: storeData
6874

    
6875
                                            }),
6876
                                            listeners: {
6877
                                                change: function (val) {
6878
                                                    var _label = val.name;
6879
                                                    var _form = val.formtarget;
6880
                                                    var _Value = val.getValue();
6881
                                                    var target = rec.TriggerCombo;
6882
                                                    var custumFunc = rec.SelectFunction;
6883
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
6884
                                                    if (frm) {
6885
                                                        if (target) {
6886
                                                            var f = frm.getForm().findField(target)
6887
                                                            _store = f.getStore();
6888
                                                            var _tbl = _store.proxy.extraParams.tableName;
6889
                                                            var oldParam = _store.proxy.extraParams.param;
6890
                                                            _store.proxy.extraParams = {
6891
                                                                tableName: _tbl,
6892
                                                                param: _label + '[=]' + _Value
6893
                                                            };
6894
                                                            _store.load();
6895
                                                        }
6896
                                                        if (custumFunc) {
6897
                                                            eval(custumFunc)
6898
                                                        }
6899
                                                    }
6900
                                                }
6901
                                            },
6902
                                            queryMode: 'local',
6903
                                            valueField: 'code',
6904
                                            displayField: 'desc',
6905
                                        }
6906
                                    })
6907
                                } else {
6908
                                    cols.push({
6909
                                        text: rec.HeaderTitle,
6910
                                        dataIndex: rec.FieldName,
6911
                                        editor: {
6912
                                            allowBlank: allowblank,
6913
                                            xtype: 'textfield',
6914
                                            readOnly: readonly,
6915
                                            name: 'grid' + tableName + rec.FieldName,
6916
                                            id: 'grid' + tableName + rec.FieldName,
6917
                                            value: rec.DefaultValue
6918
                                        }
6919
                                    });
6920
                                }
6921
                            }
6922
                            break;
6923
                    }
6924
                } else {
6925
                    cols.push({
6926
                        text: rec.HeaderTitle,
6927
                        dataIndex: rec.FieldName,
6928
                        hidden: true,
6929
                        editor: {
6930
                            allowBlank: true,
6931
                            xtype: 'textfield',
6932
                            readOnly: false,
6933
                            name: 'grid' + tableName + rec.FieldName,
6934
                            id: 'grid' + tableName + rec.FieldName,
6935
                        }
6936
                    });
6937
                }
6938
            });
6939
        };
6940

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

    
7091
            }
7092
            if (this.titleform != undefined) {
7093
                this.setTitle(this.titleform);
7094
            }
7095
        },
7096

    
7097
    },
7098
    defaults: {
7099
        layout: 'form',
7100
        xtype: 'container',
7101
        defaultType: 'textfield',
7102
        style: 'width: 50%',
7103
        //height: 1000
7104
    },
7105
    initComponent: function () {
7106
        var col1 = [];
7107
        var col2 = [];
7108
        var me = this;
7109
        LangID = localStorage.LangId;
7110
        isLookup = me.isLookup;
7111
        //var _url = 'GetAllField';
7112

    
7113
        if (isLookup == 1 || isLookup == true || isLookup == 'Y') {}
7114
        isDisplay = me.isDisplay;
7115
        var hasil = null;
7116
        //hamid 200916
7117
        //Ext.Ajax.request({
7118
        //	async : false,
7119
        //	method : 'POST',
7120
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
7121
        //	success : function (response) {
7122
        //		var results = Ext.decode(response.responseText);
7123
        //		hasil = results.data;
7124
        //	}
7125
        //});
7126
        //end
7127

    
7128

    
7129
        //hamid
7130
        //if (me.isLookup == 1 || isLookup == true || isLookup == 'Y') {
7131
        parameter = null;
7132
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7133
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupFilter='1'"
7134
        } else if (me.searchcustomization == true) {
7135
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',IsCustomizationFilter='1'"
7136
        } else {
7137
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
7138
        }
7139
        Ext.Ajax.request({
7140
            async: false,
7141
            method: 'POST',
7142
            url: '/UserControl/GetStore',
7143
            params: {
7144
                tableName: 'PDSBS0007',
7145
                param: parameter
7146
            },
7147
            success: function (response) {
7148
                var results = Ext.decode(response.responseText);
7149
                hasil = results.data;
7150
            }
7151
        });
7152
        //end
7153
        if (hasil.length > 0) {
7154
            // hasil = hasil.sort(MinovaUtil.SortBy("Sequence"))
7155
            var me = this;
7156
            Ext.each(hasil, function (rec) {
7157
                var null_ = null;
7158
                if (rec.IsPrimaryKey == true) {
7159
                    null_ = false;
7160
                }
7161
                if (rec.IsRequired == true) {
7162
                    null_ = false;
7163
                } else {
7164
                    null_ = true;
7165
                }
7166
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, isDisplay, me.tableName, me.isLookup);
7167
                var descField = undefined;
7168
                //if (isDisplay == true && rec.SearchType !='') {
7169
                //    descField = new Ext.form.Display({
7170
                //        fieldCode:'codeDisplay'+rec.name+rec.tableName,
7171
                //        allowBlank: true,
7172
                //        fieldLabel: 'Desc ' + rec.ScreenCaption,
7173
                //        readOnly: true,
7174
                //        maxLength: rec.Length,
7175
                //        anchor: '100%',
7176
                //        submitValue: false
7177
                //    });
7178
                //}
7179
                //else {
7180
                //    if (rec.SearchType == '2') {// lookup
7181
                //        descField = new Ext.form.TextField({
7182
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7183
                //            allowBlank: true,
7184
                //            fieldLabel: 'Desc ' + rec.ScreenCaption,
7185
                //            readOnly: true,
7186
                //            maxLength: rec.Length,
7187
                //            anchor: '100%',
7188
                //            submitValue: false
7189
                //        });
7190
                //    }
7191
                //    if (rec.SearchType == '3') {// tree
7192
                //        descField = new Ext.form.TextField({
7193
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7194
                //            allowBlank: true,
7195
                //            fieldLabel: 'Desc ' + rec.ScreenCaption,
7196
                //            readOnly: true,
7197
                //            maxLength: rec.Length,
7198
                //            anchor: '100%',
7199
                //            submitValue: false
7200
                //        });
7201
                //    }
7202
                //    if (rec.SearchType == '4' && me.isLookup != true) {
7203
                //        descField = new Ext.form.TextField({
7204
                //            fieldCode: 'codeEdit' + rec.name + rec.tableName,
7205
                //            allowBlank: true,
7206
                //            fieldLabel: 'Full Name',
7207
                //            readOnly: true,
7208
                //            maxLength: rec.Length,
7209
                //            anchor: '100%',
7210
                //            submitValue: false
7211
                //        });
7212
                //    }
7213

    
7214
                //}
7215

    
7216
                if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
7217
                    col1.push(formfield);
7218
                    if (descField) {
7219
                        col1.push(descField)
7220
                    }
7221
                } else {
7222
                    if (isDesk) {
7223
                        if (rec.ColumnNo == 1) {
7224
                            col1.push(formfield);
7225
                            if (descField) {
7226
                                col1.push(descField)
7227
                            }
7228
                        } else {
7229
                            col2.push(formfield);
7230
                            if (descField) {
7231
                                col2.push(descField)
7232
                            }
7233
                        }
7234
                    } else {
7235
                        col1.push(formfield);
7236
                        if (descField) {
7237
                            col1.push(descField)
7238
                        }
7239
                    }
7240

    
7241
                }
7242

    
7243
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
7244
                    formfieldKey = new Ext.form.TextField({
7245
                        hidden: true,
7246
                        name: "Key_" + rec.FieldName,
7247
                    });
7248
                    col2.push(formfieldKey);
7249
                }
7250

    
7251
            });
7252
            //console.log(col1);
7253
        }
7254
        Ext.applyIf(me, {
7255
            items: [{
7256
                //width: 450,
7257
                style: 'width: 50%',
7258
                items: col1
7259
            }, {
7260
                //width: 450,
7261
                style: 'width: 50%',
7262
                items: col2
7263
            }
7264
            ],
7265
        });
7266
        this.callParent();
7267
    }
7268
});
7269

    
7270
Ext.define('MinovaUtil.MinovaES.MinovaGridForm', {
7271
    extend: 'Ext.form.Panel',
7272
    alias: ['widget.minovagridform', 'widget.MinovaGridForm'],
7273
    tableName: undefined, //nama tabel
7274
    param: undefined, //param query
7275
    pagesize: undefined,
7276
    storename: undefined,
7277
    titleform: undefined,
7278
    titlegrid: undefined,
7279
    heightgrid: undefined,
7280
    heightform: undefined,
7281
    iseditform: undefined,
7282
    lastheightform: undefined,
7283
    layoutType: undefined,
7284
    lastpage: undefined,
7285
    lastTitle: undefined,
7286
    getLastTitle: function () {
7287
        return this.lastTitle;
7288
    },
7289
    setLastTitle: function (value) {
7290
        var me = this;
7291
        me.lastTitle = value;
7292
        return me;
7293
    },
7294
    getLastpage: function () {
7295
        return this.lastpage;
7296
    },
7297
    setLastpage: function (value) {
7298
        var me = this;
7299
        me.lastpage = value;
7300
        return me;
7301
    },
7302
    getLayoutType: function () {
7303
        return this.layoutType;
7304
    },
7305
    setLayoutType: function (value) {
7306
        var me = this;
7307
        me.layoutType = value;
7308
        return me;
7309
    },
7310
    getLastheightform: function () {
7311
        return this.lastheightform;
7312
    },
7313
    setLastheightform: function (value) {
7314
        var me = this;
7315
        me.lastheightform = value;
7316
        return me;
7317
    },
7318

    
7319
    getIsEditform: function () {
7320
        return this.iseditform;
7321
    },
7322
    setIsEditform: function (value) {
7323
        var me = this;
7324
        me.iseditform = value;
7325
        return me;
7326
    },
7327
    initComponent: function () {
7328
        var me = this;
7329
        var storename = me.storename;
7330
        if (storename == "" || storename == undefined) {
7331
            storename = "store" + me.tableName;
7332
        }
7333
        var tableName = me.tableName;
7334
        Ext.applyIf(me, {
7335
            items: [{
7336
                layoutType: "MinovaGridForm",
7337
                title: me.titlegrid,
7338
                xtype: "minovagrid",
7339
                tableName: tableName, // nama tebel/dataset
7340
                name: "MinovaGridFormGrid" + tableName, //name bebeas
7341
                param: me.param, // parameter filteran
7342
                pagesize: me.pagesize, // jumlah record yang muncul per page
7343
                storename: storename, //nama store bebas
7344
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7345
                height: 330,
7346
                bodyPadding: 0,
7347
                dockedItems: [{
7348
                    xtype: 'pagingtoolbar',
7349
                    store: storename, // harus sama dengan naa store diatas
7350
                    dock: 'bottom', //posisi paging
7351
                    pageSize: me.pagesize,
7352
                    displayInfo: true
7353
                }
7354
                ],
7355

    
7356
                listeners: {
7357
                    viewready: function () {
7358
                        //alert('ready')
7359
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7360
                        formEdit.setHidden(true);
7361

    
7362
                        if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7363
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7364
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7365
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7366
                        } else {
7367
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7368
                            //Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7369
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7370
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7371
                        }
7372
                    },
7373
                    selectionchange: function () {
7374
                        //case md
7375
                        var layout = null;
7376
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7377
                        if (pnl) {
7378
                            layout = pnl.getLayoutType();
7379

    
7380
                        }
7381
                        //end case
7382

    
7383
                        if (layout == 'L003') {
7384
                            var selection = this.getView().getSelectionModel().getSelection()[0];
7385
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7386
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7387
                            if (selection) {
7388
                                formDisplay.getForm().setValues(selection.data);
7389
                                formEdit.getForm().setValues(selection.data);
7390
                            }
7391

    
7392
                        }
7393
                    },
7394
                    itemdblclick: function () {
7395
                        var me = this;
7396
                        //case md
7397
                        var layout = null;
7398
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7399
                        if (pnl) {
7400
                            layout = pnl.getLayoutType();
7401

    
7402
                        } else {
7403
                            pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7404
                            layout = pnl.getLayoutType();
7405
                        }
7406
                        //end case
7407
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + this.tableName + ']')[0];
7408
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + this.tableName + ']')[0];
7409
                        var submit_ = formEdit.getSubmitProc();
7410
                        var selection = me.getView().getSelectionModel().getSelection()[0];
7411
                        if (submit_ == undefined) {
7412
                            submit_ = false;
7413
                        }
7414
                        if (submit_ == false) {
7415

    
7416
                            formDisplay.getForm().setValues(selection.data);
7417
                            formEdit.getForm().setValues(selection.data);
7418
                            if (layout == 'L003') {
7419
                                formDisplay.setHidden(false);
7420
                                Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + this.tableName + ']')[0].setHidden(true);
7421
                                var heigh = pnl.getLastheightform();
7422

    
7423
                                var pDetail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7424
                                if (pDetail) {
7425
                                    pDetail.setHeight(heigh + 100);
7426
                                } else {
7427
                                    pDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7428
                                    var mainPnl_ = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]
7429
                                    var mainPnl = mainPnl_.getHeight();
7430
                                    //pDetail.setHeight(mainPnl + 100);
7431

    
7432
                                }
7433
                            } else {
7434
                                formDisplay.setTitle("View")
7435
                                formEdit.setTitle("Edit")
7436
                            }
7437
                        } else {
7438
                            alert('still process')
7439
                        }
7440

    
7441
                    },
7442
                    beforeedit: function () {
7443
                        return false;
7444
                    }
7445
                }
7446
            }, {
7447
                xtype: 'minovaform',
7448
                name: "MinovaGridFormDisplay" + tableName,
7449
                tableName: tableName, // nama tabel /dataset
7450
                isLookup: '', // 1 or 'Y' for lookup
7451
                isDisplay: true, // true== form is displayfield
7452
                buttons: [{
7453
                    text: 'Edit',
7454
                    name: 'Edit' + tableName,
7455
                    iconCls: 'fa-edit',
7456
                    style: 'font-family: FontAwesome',
7457
                    handler: function () {
7458

    
7459
                        f = this.up().up();
7460
                        f.setSubmitProc(false);
7461
                        f.setHidden(true);
7462
                        //f.setActionSubmit(1);
7463
                        Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7464
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7465
                        formEdit.setSubmitProc(true);
7466
                        formEdit.setHidden(false);
7467
                        formEdit.setActionSubmit(1);
7468
                        var p = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7469
                        if (p) {
7470
                            var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7471
                            var lastTitile = p.getTitle();
7472
                            pnl.setLastTitle(lastTitile);
7473
                            p.setTitle('Edit - ' + lastTitile)
7474

    
7475
                        }
7476

    
7477
                    }
7478
                }, {
7479
                    text: 'Back to Grid',
7480
                    name: 'Edit' + tableName,
7481
                    iconCls: 'fa-reply',
7482
                    style: 'font-family: FontAwesome',
7483
                    handler: function () {
7484
                        var layout = null;
7485
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7486
                        if (pnl) {
7487
                            layout = pnl.getLayoutType();
7488

    
7489
                        }
7490

    
7491
                        f = this.up().up();
7492
                        f.setSubmitProc(false);
7493
                        f.setHidden(true);
7494
                        Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7495
                        Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0].setHidden(true);
7496

    
7497
                        if (layout == 'L003') {
7498
                            var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7499
                            grid_.setHidden(false);
7500
                            Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7501
                            Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7502
                        }
7503
                    }
7504
                }
7505
                ],
7506
            }, {
7507
                xtype: 'minovaform',
7508
                name: "MinovaGridFormEdit" + tableName,
7509
                tableName: tableName, // nama tabel /dataset
7510
                isLookup: '', // 1 or 'Y' for lookup
7511
                isDisplay: false, // true== form is displayfield
7512
                buttons: [{
7513
                    text: 'Save',
7514
                    name: 'btnSaveMD',
7515
                    name: 'Save' + tableName,
7516
                    iconCls: 'fa-save',
7517
                    style: 'font-family: FontAwesome',
7518
                    handler: function () {
7519
                        f = this.up().up();
7520
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7521

    
7522
                        if (formEdit.getForm().isValid()) {
7523

    
7524
                            if (Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0]) {
7525
                                var action_ = formEdit.getActionSubmit();
7526
                                var main_ = Ext.ComponentQuery.query('[name=mainORM]')[0];
7527
                                var record = main_.getRecordSelect();
7528

    
7529
                                if (record == undefined) {
7530
                                    var treeDetail = Ext.ComponentQuery.query('[name=treeDetail]')[0];
7531
                                    treeDetail.getSelectionModel().select(0);
7532
                                    record = treeDetail.getView().getSelectionModel().getSelection()[0];
7533

    
7534
                                }
7535
                                var frmValue = formEdit.getValues();
7536
                                var InitStartDate = 'InitStartDate';
7537
                                var InitStartDateValue = record.get('StartDate');
7538
                                frmValue[InitStartDate] = InitStartDateValue;
7539

    
7540
                                var InitEndDate = 'InitEndDate';
7541
                                var InitEndDateValue = record.get('EndDate');
7542
                                frmValue[InitEndDate] = InitEndDateValue;
7543

    
7544
                                var InitParentObject = 'InitParentObject';
7545
                                var InitParentObjectValue = record.get('ObjectId');
7546
                                if (InitParentObjectValue == undefined) {
7547
                                    InitParentObjectValue = "";
7548
                                }
7549
                                frmValue[InitParentObject] = InitParentObjectValue;
7550

    
7551
                                var InitParentClass = 'InitParentClass';
7552
                                var InitParentClassValue = record.get('ObjectType');
7553
                                if (InitParentClassValue == undefined) {
7554
                                    InitParentClassValue = "";
7555
                                }
7556
                                frmValue[InitParentClass] = InitParentClassValue;
7557
                                var frmValue_ = Ext.encode(frmValue);
7558

    
7559
                                Ext.Ajax.request({
7560
                                    method: 'POST',
7561
                                    url: '/Devt/SaveMaintainORM',
7562
                                    params: {
7563
                                        tableName: f.tableName,
7564
                                        data: frmValue_,
7565
                                        action: action_,
7566
                                        /*
7567
                                        InitStartDate: InitStartDate,
7568
                                        InitEndaDate: InitEndaDate,
7569
                                        InitParentObject: InitParentObject,
7570
                                        InitParentClass: InitParentClass
7571
                                         */
7572
                                    },
7573
                                    waitMsg: 'Saving Data...',
7574
                                    success: function (response) {
7575
                                        var result = Ext.decode(response.responseText);
7576
                                        if (result.success) {
7577
                                            MinovaMessage('Not Null', '000006', '', 'S')
7578

    
7579
                                            var pnl = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7580
                                            if (pnl) {
7581
                                                Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0].setHeight(394);
7582
                                                layout = pnl.getLayoutType();
7583
                                                pnl.setLastpage(undefined);
7584
                                                var last = 'MinovaGridFormGrid' + f.tableName;
7585
                                                var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7586

    
7587
                                                var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7588
                                                formEdit.setSubmitProc(false);
7589
                                                formEdit.setHidden(true);
7590
                                                grid_.setHidden(false);
7591
                                                grid_.getStore().reload()
7592

    
7593
                                            }
7594
                                            if (layout == 'L003') {
7595
                                                var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7596
                                                grid_.setHidden(false);
7597
                                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7598
                                                var detail = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7599
                                                if (detail) {
7600
                                                    detail.setHeight(grid_.getHeight() + 100)
7601
                                                } else {
7602
                                                    var p = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7603
                                                    var p_ = Ext.ComponentQuery.query('[name=DetailMD]')[0];
7604
                                                    p_.setTitle(p.getLastTitle());
7605
                                                }
7606

    
7607
                                            }
7608

    
7609
                                        } else {
7610
                                            MinovaMessage('Not Null', '000005', result.message.text, 'E')
7611
                                        }
7612
                                        var grid = Ext.ComponentQuery.query('[name=gridMenuMDOrm]')[0];
7613
                                        var s = grid.getStore();
7614
                                        s.removeAll();
7615
                                        var ObjectType = getParam("ObjectType");
7616
                                        var Lang = null;
7617
                                        Ext.Ajax.request({
7618
                                            async: false,
7619
                                            method: 'POST',
7620
                                            url: '/Devt/GetLangID',
7621
                                            success: function (response) {
7622
                                                Lang = response.responseText;
7623
                                            }
7624
                                        });
7625
                                        Ext.Ajax.request({
7626
                                            async: true,
7627
                                            method: 'POST',
7628
                                            url: '/UserControl/GetStore',
7629
                                            params: {
7630
                                                tableName: 'PHRCM0006',
7631
                                                param: 'Language[equal]' + Lang + ',ObjectClass[equal]' + ObjectType
7632

    
7633
                                            },
7634
                                            success: function (response) {
7635
                                                var results = Ext.decode(response.responseText);
7636
                                                var data_ = results.data;
7637
                                                s.loadData(results.data);
7638
                                                // console.log(data_)
7639
                                            }
7640
                                        });
7641
                                    },
7642
                                    failure: function (response) {
7643
                                        var result = Ext.decode(response.responseText);
7644
                                        console.log(result);
7645
                                    }
7646
                                });
7647
                            } else {
7648
                                var frmValue = Ext.encode(formEdit.getValues());
7649
                                Ext.Ajax.request({
7650
                                    method: 'POST',
7651
                                    url: '/Devt/SaveTable',
7652
                                    params: {
7653
                                        tableName: f.tableName,
7654
                                        data: frmValue,
7655
                                        action: formEdit.getActionSubmit()
7656
                                    },
7657
                                    waitMsg: 'Saving Data...',
7658
                                    success: function (response) {
7659
                                        var result = Ext.decode(response.responseText);
7660
                                        if (result.success) {
7661
                                            MinovaMessage('Not Null', '000006', '', 'S')
7662

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

    
7665
                                            if (pnl) {
7666
                                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(394);
7667
                                                layout = pnl.getLayoutType();
7668
                                                pnl.setLastpage(undefined);
7669
                                                var last = 'MinovaGridFormGrid' + f.tableName;
7670
                                                var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0]
7671

    
7672
                                                var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7673
                                                formEdit.setSubmitProc(false);
7674
                                                formEdit.setHidden(true);
7675
                                                grid_.setHidden(false);
7676
                                                grid_.getStore().reload()
7677
                                                var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7678
                                                mpnl.setTitle(pnl.getLastTitle());
7679

    
7680
                                            }
7681
                                            if (layout == 'L003') {
7682
                                                var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7683
                                                grid_.setHidden(false);
7684
                                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7685
                                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7686
                                            }
7687

    
7688
                                        } else {
7689
                                            MinovaMessage('Not Null', '000005', result.message.text, 'E')
7690
                                        }
7691
                                    },
7692
                                    failure: function (response) {
7693
                                        var result = Ext.decode(response.responseText);
7694
                                        //console.log(result);
7695
                                    }
7696
                                });
7697
                            }
7698

    
7699
                        }
7700
                    }
7701
                }, {
7702
                    text: 'Delete',
7703
                    iconCls: 'fa-trash-o',
7704
                    name: 'Delete',
7705
                    style: 'font-family: FontAwesome',
7706
                    action: 'CRUDdelete',
7707
                    handler: function () {
7708
                        //add fungsi Delete
7709
                        f = this.up().up();
7710
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridFormEdit' + f.tableName + ']')[0];
7711
                        var frmValue = Ext.encode(formEdit.getValues());
7712
                        if (formEdit.getForm().isValid()) {
7713
                            Ext.Ajax.request({
7714
                                method: 'POST',
7715
                                url: '/Devt/SaveTable',
7716
                                params: {
7717
                                    tableName: f.tableName,
7718
                                    data: frmValue,
7719
                                    action: 2
7720
                                },
7721
                                waitMsg: 'Saving Data...',
7722
                                success: function (response) {
7723
                                    var result = Ext.decode(response.responseText);
7724
                                    if (result.success) {
7725
                                        MinovaMessage('Not Null', '000006', '', 'S')
7726

    
7727
                                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7728
                                        if (pnl) {
7729
                                            layout = pnl.getLayoutType();
7730
                                            pnl.setLastpage(undefined);
7731

    
7732
                                        }
7733
                                        if (layout == 'L003') {
7734
                                            var grid_ = Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + f.tableName + ']')[0];
7735
                                            grid_.setHidden(false);
7736
                                            Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(true);
7737
                                            Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(grid_.getHeight() + 100)
7738
                                        }
7739

    
7740
                                    } else {
7741
                                        MinovaMessage('Not Null', '000005', result.message.text, 'E')
7742
                                    }
7743
                                },
7744
                                failure: function (response) {
7745
                                    var result = Ext.decode(response.responseText);
7746
                                    //console.log(result);
7747
                                }
7748
                            });
7749
                        }
7750
                    }
7751

    
7752
                }, {
7753
                    text: 'Cancel',
7754
                    iconCls: 'fa-reply',
7755
                    style: 'font-family: FontAwesome',
7756
                    handler: function () {
7757
                        f = this.up().up();
7758
                        f.setSubmitProc(false);
7759
                        f.setHidden(true);
7760
                        var pnl = Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0];
7761

    
7762
                        if (pnl) {
7763
                            //'L001'=grid L002 =heder detail L003=card L004=custom
7764
                            layout = pnl.getLayoutType();
7765
                            var last = 'MinovaGridFormGrid' + f.tableName;
7766
                            var grid_ = Ext.ComponentQuery.query('[name=' + last + ']')[0];
7767
                            grid_.setHidden(false);
7768
                            pnl.setLastpage(undefined);
7769
                            var mpnl = Ext.ComponentQuery.query('[name=DetailMD]')[0]
7770
                            mpnl.setTitle(pnl.getLastTitle());
7771
                            if (layout == 'L003') {
7772
                                Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(400);
7773
                            } else {
7774
                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7775
                            }
7776
                        } else {
7777
                            // Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7778
                            var mdDetail = Ext.ComponentQuery.query('[name=MinovaORMDetail]')[0];
7779
                            layout = mdDetail.getLayoutType();
7780
                            if (layout == 'L003') {
7781
                                var panelDetail = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0];
7782
                                Ext.ComponentQuery.query('[name=MinovaGridFormGrid' + tableName + ']')[0].setHidden(false)
7783

    
7784
                                panelDetail.setHeight(400);
7785
                            } else {
7786
                                Ext.ComponentQuery.query('[name=MinovaGridFormDisplay' + f.tableName + ']')[0].setHidden(false);
7787
                            }
7788
                        }
7789

    
7790
                    }
7791
                }
7792
                ],
7793
            }
7794
            ]
7795
        });
7796
        me.callParent(arguments);
7797
    }
7798
});
7799

    
7800
Ext.define('MinovaUtil.MinovaES.MinovaGridCard', {
7801
    extend: 'Ext.form.Panel',
7802
    alias: ['widget.minovagridcard', 'widget.MinovaGridCard'],
7803
    tableName: undefined, //nama tabel
7804
    param: undefined, //param query
7805
    //hidebutton: undefined,
7806
    pagesize: undefined,
7807
    storename: undefined,
7808
    titleform: undefined,
7809
    titlegrid: undefined,
7810
    heightgrid: undefined,
7811
    heightform: undefined,
7812
    iseditform: undefined,
7813

    
7814
    getIsEditform: function () {
7815
        return this.iseditform;
7816
    },
7817
    setIsEditform: function (value) {
7818
        var me = this;
7819
        me.iseditform = value;
7820
        return me;
7821
    },
7822
    initComponent: function () {
7823
        var me = this;
7824
        var storename = me.storename;
7825
        if (storename == "" || storename == undefined) {
7826
            storename = "store" + me.tableName;
7827
        }
7828
        var tableName = me.tableName;
7829
        Ext.applyIf(me, {
7830
            items: [{
7831
                layoutType: "MinovaGridCard",
7832
                //title: me.titlegrid,
7833
                xtype: "minovagrid",
7834
                tableName: tableName, // nama tebel/dataset
7835
                name: "MinovaGridCardGrid" + tableName, //name bebeas
7836
                param: me.param, // parameter filteran
7837
                pagesize: me.pagesize, // jumlah record yang muncul per page
7838
                storename: storename, //nama store bebas
7839
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
7840
                height: 330,
7841
                bodyPadding: 0,
7842
                dockedItems: [{
7843
                    xtype: 'pagingtoolbar',
7844
                    store: storename, // harus sama dengan naa store diatas
7845
                    dock: 'bottom', //posisi paging
7846
                    pageSize: me.pagesize,
7847
                    displayInfo: true
7848
                }
7849
                ],
7850

    
7851
                listeners: {
7852
                    viewready: function () {
7853
                        if (MinovaUtil.GetActionMenu() == 0 || MinovaUtil.GetActionMenu() == undefined || MinovaUtil.GetActionMenu() == "") {
7854
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(true)
7855
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(true)
7856
                        } else {
7857
                            Ext.ComponentQuery.query('[name=actionBtn]')[0].setHidden(false)
7858
                            //Ext.ComponentQuery.query('[name=Edit_]')[0].setHidden(true)
7859
                            Ext.ComponentQuery.query('[name=Delete_]')[0].setHidden(true)
7860
                            Ext.ComponentQuery.query('[name=Edit' + me.tableName + ']')[0].setHidden(false)
7861
                        }
7862
                        //case orm
7863
                        if (this.layoutType == "MinovaGridCard") {
7864
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7865
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7866
                            formDisplay.setHidden(true);
7867
                            formEdit.setHidden(true);
7868
                        } else if (this.layoutType == "MinovaGridForm") {
7869
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7870
                            formEdit.setHidden(true);
7871
                        } else {
7872
                            var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7873
                            var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7874
                            formDisplay.setHidden(true);
7875
                            formEdit.setHidden(true);
7876
                        }
7877

    
7878
                    },
7879
                    itemdblclick: function () {
7880
                        //alert('a')
7881
                        var me = this;
7882

    
7883
                        var formDisplay = undefined;
7884
                        var formEdit = undefined;
7885
                        //case md orm
7886

    
7887
                        if (this.layoutType == "MinovaGridCard") {
7888
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7889
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7890
                        } else if (this.layoutType == "MinovaGridForm") {
7891
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7892
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7893
                            // formDisplay.setHidden(true);
7894

    
7895
                        } else {
7896
                            formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + this.tableName + ']')[0];
7897
                            formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + this.tableName + ']')[0];
7898

    
7899
                        }
7900
                        var submit_ = formEdit.getSubmitProc();
7901
                        var selection = me.getView().getSelectionModel().getSelection()[0];
7902
                        if (submit_ == undefined) {
7903
                            submit_ = false;
7904
                        }
7905
                        if (submit_ == false) {
7906

    
7907
                            if (this.layoutType == "MinovaGridCard") {
7908

    
7909
                                formDisplay.getForm().setValues(selection.data);
7910
                                formEdit.getForm().setValues(selection.data);
7911
                                formDisplay.setHidden(false);
7912
                                formEdit.setHidden(true);
7913
                                this.setHidden(true);
7914
                            } else if (this.layoutType == "MinovaGridForm") {
7915
                                formEdit.setHidden(true);
7916
                                formDisplay.getForm().setValues(selection.data);
7917
                                formEdit.getForm().setValues(selection.data);
7918
                            } else {
7919
                                formDisplay.setHidden(true);
7920
                                formEdit.setHidden(true);
7921

    
7922
                                formDisplay.getForm().setValues(selection.data);
7923
                                formEdit.getForm().setValues(selection.data);
7924
                            }
7925
                            // untuk case ORM
7926
                            var display_ = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + tableName + ']')[0].getHeight();
7927
                            if (display_) {
7928
                                var pnlORM = Ext.ComponentQuery.query('[name=PanelOrmMdDetail]')[0]
7929
                                var pnlMD = Ext.ComponentQuery.query('[name=PanelMdDetail]')[0]
7930
                                if (pnlORM) {
7931
                                    pnlORM.setHeight(pnl + 100);
7932
                                }
7933
                                if (pnlMD) {
7934
                                    Ext.ComponentQuery.query('[name=MinovaMdDetail]')[0].setHeight(pnlMD + 600);
7935
                                    Ext.ComponentQuery.query('[name=PanelMdDetail]')[0].setHeight(pnlMD + 600);
7936
                                }
7937
                            }
7938
                            //end case ORM and MD
7939
                        } else {
7940
                            alert('still process')
7941
                        }
7942

    
7943
                    },
7944
                    beforeedit: function () {
7945
                        return false;
7946
                    }
7947
                }
7948
            }, {
7949
                xtype: 'minovaform',
7950
                name: "MinovaGridCardDisplay" + tableName,
7951
                tableName: tableName, // nama tabel /dataset
7952
                isLookup: '', // 1 or 'Y' for lookup
7953
                isDisplay: true, // true== form is displayfield
7954
                buttons: [{
7955
                    text: 'Edit',
7956
                    name: 'Edit' + tableName,
7957
                    iconCls: 'fa-edit',
7958
                    style: 'font-family: FontAwesome',
7959
                    handler: function () {
7960
                        f = this.up().up();
7961
                        f.setSubmitProc(false);
7962
                        f.setHidden(true);
7963
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
7964
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(true);
7965
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(false);
7966

    
7967
                    }
7968
                }, {
7969
                    text: 'Back to Grid',
7970
                    name: 'Cancel' + tableName,
7971
                    iconCls: 'fa-reply',
7972
                    style: 'font-family: FontAwesome',
7973
                    handler: function () {
7974
                        f = this.up().up();
7975
                        f.setSubmitProc(false);
7976
                        f.setHidden(true);
7977
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
7978
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
7979
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
7980

    
7981
                    }
7982
                }
7983
                ],
7984
            }, {
7985
                xtype: 'minovaform',
7986
                name: "MinovaGridCardEdit" + tableName,
7987
                tableName: tableName, // nama tabel /dataset
7988
                isLookup: '', // 1 or 'Y' for lookup
7989
                isDisplay: false, // true== form is displayfield
7990
                buttons: [{
7991
                    text: 'Save',
7992
                    name: 'Save' + tableName,
7993
                    iconCls: 'fa-save',
7994
                    style: 'font-family: FontAwesome',
7995
                    handler: function () {
7996
                        f = this.up().up();
7997
                        var formEdit = Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0];
7998
                    }
7999
                }, {
8000
                    text: 'Delete',
8001
                    iconCls: 'fa-trash-o',
8002
                    name: 'Delete',
8003
                    style: 'font-family: FontAwesome',
8004
                    action: 'CRUDdelete'
8005
                }, {
8006
                    text: 'Back to Grid',
8007
                    name: 'EditForm' + tableName,
8008
                    iconCls: 'fa-reply',
8009
                    style: 'font-family: FontAwesome',
8010
                    handler: function () {
8011
                        f = this.up().up();
8012
                        f.setSubmitProc(false);
8013
                        f.setHidden(true);
8014
                        var formDisplay = Ext.ComponentQuery.query('[name=MinovaGridCardDisplay' + f.tableName + ']')[0].setHidden(true);
8015
                        Ext.ComponentQuery.query('[name=MinovaGridCardGrid' + f.tableName + ']')[0].setHidden(false);
8016
                        Ext.ComponentQuery.query('[name=MinovaGridCardEdit' + f.tableName + ']')[0].setHidden(true);
8017

    
8018
                    }
8019
                }
8020
                ],
8021
            }
8022
            ]
8023
        });
8024
        me.callParent(arguments);
8025
    }
8026
});
8027

    
8028
Ext.define('MinovaUtil.MinovaES.MinovaFloatField', {
8029
    extend: 'Ext.form.field.Number',
8030
    alias: 'widget.minovafloatfield',
8031
    hideTrigger: true,
8032
    allowDecimals: true,
8033
    precision: undefined,
8034
    isValid: function () {
8035
        var b = this,
8036
		a = b.disabled,
8037
		c = b.forceValidation || !a;
8038
        return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8039
    },
8040
    setValue: function (v) {
8041
        this.setRawValue(this.getFormattedValue(v));
8042
    },
8043
    getValue: function () {
8044
        var val = this.removeFormat(this.getRawValue());
8045
        this.value = val;
8046
        return val;
8047
    },
8048
    getSubmitValue: function () {
8049
        return this.removeFormat(this.getRawValue());
8050
    },
8051
    removeFormat: function (v) {
8052
        if (Ext.isEmpty(v))
8053
            return v;
8054
        else {
8055
            v = v.replace(Ext.util.Format.currencySign, '');
8056
            v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8057
            return v;
8058
        }
8059
    },
8060
    onFocus: function () {
8061
        this.setRawValue(this.removeFormat(this.getRawValue()));
8062
    },
8063
    onBlur: function () {
8064
        this.setRawValue(this.getFormattedValue(this.getValue()));
8065
    },
8066
    getFormattedValue: function (v) {
8067
        var prec = '';
8068
        if (this.precision != '' && this.precision > 0) {
8069
            for (var i = 0; i < this.precision; i++) {
8070
                prec = prec + '0'
8071
            }
8072
        }
8073
        return Ext.util.Format.number(v, '0,000.' + prec);
8074
    }
8075
});
8076
Ext.define('MinovaUtil.MinovaES.MinovaNumberField', {
8077
    extend: 'Ext.form.field.Number',
8078
    alias: 'widget.minovanumberfield',
8079
    //hideTrigger: true,
8080
    isValid: function () {
8081
        var b = this,
8082
		a = b.disabled,
8083
		c = b.forceValidation || !a;
8084
        return c ? b.validateValue(b.processRawValue(b.getValue())) : a
8085
    },
8086
    setValue: function (v) {
8087
        this.setRawValue(this.getFormattedValue(v));
8088
    },
8089
    getValue: function () {
8090
        var val = this.removeFormat(this.getRawValue());
8091
        this.value = val;
8092
        return val;
8093
    },
8094
    getSubmitValue: function () {
8095
        return this.removeFormat(this.getRawValue());
8096
    },
8097
    removeFormat: function (v) {
8098
        if (Ext.isEmpty(v))
8099
            return v;
8100
        else {
8101
            v = v.replace(Ext.util.Format.currencySign, '');
8102
            v = v.replace(new RegExp('[' + Ext.util.Format.thousandSeparator + ']', 'g'), '');
8103
            return v;
8104
        }
8105
    },
8106
    onFocus: function () {
8107
        this.setRawValue(this.removeFormat(this.getRawValue()));
8108
    },
8109
    onBlur: function () {
8110
        this.setRawValue(this.getFormattedValue(this.getValue()));
8111
    },
8112
    getFormattedValue: function (v) {
8113
        return Ext.util.Format.number(v, '0,000');
8114
    }
8115
});
8116

    
8117
Ext.define('MinovaUtil.MinovaES.SysDateTime', {
8118
    extend: 'Ext.form.field.Text',
8119
    alias: ['widget.minovasysdatetime'],
8120
    undefinedText: '&#160;',
8121
    setValue: function (v) {
8122
        var value = v;
8123
        var hasil = null;
8124
        /*
8125
		if (value === undefined) {
8126
		return this.undefinedText;
8127
		}
8128
		if (value === null) {
8129
		return this.setRawValue(null);
8130
		}
8131
		 */
8132
        //hamid 200916
8133
        //if (value != null || value != "" || value != undefined) {
8134
        //    return this.setRawValue(null);
8135
        if (value == "" || value == null) {
8136
            return this.setRawValue("");
8137
            //end
8138
        } else {
8139
            var d = value.substring(6, 8);
8140
            var m = value.substring(4, 6);
8141
            var y = value.substring(0, 4);
8142
            var h = value.substring(8, 10);
8143
            var mt = value.substring(10, 12);
8144
            var s = value.substring(12, 14);
8145
            hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
8146
        }
8147

    
8148
        this.setRawValue(hasil);
8149
    },
8150
    getRawValue: function () {
8151
        return this.getValue();
8152
    },
8153
    getValue: function () {
8154
        var value = this.rawValue;
8155
        var hasil = null;
8156
        if (value != undefined) {
8157
            var d = value.substring(0, 2);
8158
            var m = value.substring(3, 5);
8159
            var y = value.substring(6, 10);
8160
            var h = value.substring(14, 16);
8161
            var mt = value.substring(17, 19);
8162
            var s = value.substring(20, 22);
8163
            hasil = y + m + d + h + mt + s;
8164
        }
8165
        return hasil;
8166
    }
8167
});
8168
Ext.define('MinovaUtil.MinovaES.MinovaDateTime', {
8169
    extend: 'Ext.form.field.Trigger',
8170
    alias: ['widget.minovadatetime', 'widget.MinovaDateTime'],
8171
    tableName: undefined,
8172
    param: undefined,
8173
    anchor: '50%',
8174
    initComponent: function () {
8175
        var me = this;
8176
        Ext.applyIf(me, {});
8177
        me.callParent(arguments);
8178
    },
8179
    onTriggerClick: function () {
8180
        Ext.create('Ext.window.Window', {
8181
            title: 'Hello',
8182
            modal: true,
8183
            layout: 'fit',
8184
            dockedItems: [{
8185
                xtype: 'toolbar',
8186
                dock: 'bottom',
8187
                align: 'center',
8188
                items: [{
8189
                    xtype: 'tbspacer'
8190
                }, {
8191
                    xtype: 'button',
8192
                    text: 'Today'
8193
                }, {
8194
                    xtype: 'tbspacer'
8195
                }, ]
8196
            }
8197
            ],
8198
            items: [{
8199
                xtype: 'panel',
8200
                layout: 'hbox',
8201
                items: [{
8202
                    xtype: 'datepicker',
8203
                    name: 'date',
8204
                    showToday: false,
8205
                    handler: function (picker, date) {}
8206

    
8207
                }, {
8208
                    xtype: 'sliderfield',
8209
                    width: 60,
8210
                    name: 'hour',
8211
                    labelAlign: 'top',
8212
                    fieldLabel: 'Hour',
8213
                    value: 0,
8214
                    increment: 1,
8215
                    minValue: 0,
8216
                    maxValue: 24,
8217
                    margin: '10 5 3 20',
8218
                    renderTo: Ext.getBody(),
8219
                }, {
8220
                    xtype: 'sliderfield',
8221
                    width: 60,
8222
                    name: 'minute',
8223
                    labelAlign: 'top',
8224
                    fieldLabel: 'Minute',
8225
                    value: 0,
8226
                    increment: 1,
8227
                    minValue: 0,
8228
                    maxValue: 60,
8229
                    margin: '10 5 3 20',
8230
                    renderTo: Ext.getBody(),
8231
                }, {
8232
                    xtype: 'sliderfield',
8233
                    width: 60,
8234
                    name: 'second',
8235
                    labelAlign: 'top',
8236
                    fieldLabel: 'Second',
8237
                    value: 0,
8238
                    increment: 1,
8239
                    minValue: 0,
8240
                    maxValue: 60,
8241
                    margin: '10 5 3 20',
8242
                    renderTo: Ext.getBody(),
8243
                }
8244
                ]
8245
            }
8246
            ]
8247
        }).show();
8248
    }
8249
});
8250

    
8251
Ext.define('MinovaUtil.MinovaES.MinovaMDORM', {
8252
    extend: 'Ext.form.Panel',
8253
    alias: ['widget.minovamdorm'],
8254

    
8255
    //controller: 'sample',
8256
    controller: 'orm-manage-controller',
8257
    tableName: undefined, //nama tabel
8258
    param: undefined, //param query
8259
    pagesize: undefined,
8260
    storename: undefined,
8261
    titleform: undefined,
8262
    titlegrid: undefined,
8263
    heightgrid: undefined,
8264
    heightform: undefined,
8265
    iseditform: undefined,
8266
    lastheightform: undefined,
8267
    layoutType: undefined,
8268
    lastpage: undefined,
8269
    lastTitle: undefined,
8270
    getLastTitle: function () {
8271
        return this.lastTitle;
8272
    },
8273
    setLastTitle: function (value) {
8274
        var me = this;
8275
        me.lastTitle = value;
8276
        return me;
8277
    },
8278
    getLastpage: function () {
8279
        return this.lastpage;
8280
    },
8281
    setLastpage: function (value) {
8282
        var me = this;
8283
        me.lastpage = value;
8284
        return me;
8285
    },
8286
    getLayoutType: function () {
8287
        return this.layoutType;
8288
    },
8289
    setLayoutType: function (value) {
8290
        var me = this;
8291
        me.layoutType = value;
8292
        return me;
8293
    },
8294
    getLastheightform: function () {
8295
        return this.lastheightform;
8296
    },
8297
    setLastheightform: function (value) {
8298
        var me = this;
8299
        me.lastheightform = value;
8300
        return me;
8301
    },
8302

    
8303
    getIsEditform: function () {
8304
        return this.iseditform;
8305
    },
8306
    setIsEditform: function (value) {
8307
        var me = this;
8308
        me.iseditform = value;
8309
        return me;
8310
    },
8311
    initComponent: function () {
8312
        var me = this;
8313
        var userAction = MinovaUtil.GetActionMenu();
8314
        var crudBtn = true;
8315
        if (userAction == '1') {
8316
            crudBtn = false
8317
        }
8318
        var storename = me.storename;
8319
        if (storename == "" || storename == undefined) {
8320
            storename = "store" + me.tableName;
8321
        }
8322
        var tableName = me.tableName;
8323
        Ext.applyIf(me, {
8324
            items: [{
8325
                layoutType: "MinovaGridForm",
8326
                title: me.titlegrid,
8327
                xtype: "minovagridmd",
8328
                tableName: tableName, // nama tebel/dataset
8329
                name: "MinovaGridFormGrid", //name bebeas
8330
                param: me.param, // parameter filteran
8331
                pagesize: me.pagesize, // jumlah record yang muncul per page
8332
                storename: storename, //nama store bebas
8333
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
8334
                height: 330,
8335
                bodyPadding: 0,
8336
                tbar: [{
8337
                    xtype: 'button',
8338
                    text: 'Action',
8339
                    hidden: crudBtn,
8340
                    name: 'actionGrid',
8341
                    menu: [{
8342
                        text: 'Add',
8343
                        action: 'addGrid',
8344
                        name: 'addGridORM',
8345
                        action: 'CRUDaddNewRecord',
8346
                        style: 'font-family: FontAwesome',
8347
                        itemId: 'AddData',
8348
                        iconCls: 'fa-plus-circle',
8349

    
8350
                    }, {
8351
                        text: 'Copy',
8352
                        action: 'copyGrid',
8353
                        name: 'CopyGridORM',
8354
                        iconCls: 'fa-copy',
8355
                        style: 'font-family: FontAwesome',
8356
                    }, {
8357
                        text: 'Edit',
8358
                        action: 'editGrid',
8359
                        name: 'EditGridORM',
8360
                        iconCls: 'fa-edit',
8361
                        style: 'font-family: FontAwesome',
8362
                    }, {
8363
                        text: 'Delete',
8364
                        name: 'DeleteGridORM',
8365
                        hidden: true,
8366
                        iconCls: 'fa-trash-o',
8367
                        style: 'font-family: FontAwesome',
8368
                    }
8369
                    ]
8370
                }, {
8371
                    xtype: 'tbfill'
8372
                }, {
8373
                    text: 'Clear Filters',
8374
                    tooltip: 'Clear all filters',
8375
                    name: 'clearbtn',
8376
                    handler: function () {
8377
                        var tolbar = this.up()
8378
                        var grid_ = tolbar.up()
8379
                        grid_.filters.clearFilters()
8380
                    }
8381
                }, ],
8382

    
8383
                dockedItems: [{
8384
                    xtype: 'pagingtoolbar',
8385
                    store: storename, // harus sama dengan naa store diatas
8386
                    dock: 'bottom', //posisi paging
8387
                    pageSize: me.pagesize,
8388
                    displayInfo: true
8389
                }
8390
                ],
8391
                listeners: {
8392
                    afterrender: function (me) {
8393
                        if (MinovaUtil.GetActionMenu() == "1") {}
8394
                        else {}
8395
                    },
8396

    
8397
                },
8398

    
8399
            }, {
8400
                xtype: 'minovaform',
8401
                name: "MinovaGridFormDisplay",
8402
                //name: "MinovaGridFormEdit",
8403
                border: false,
8404
                tableName: tableName, // nama tabel /dataset
8405
                isLookup: '', // 1 or 'Y' for lookup
8406
                isDisplay: true, // true== form is displayfield
8407
                /*
8408
                buttons: [{
8409
                text: 'Edit',
8410
                name: 'EditDisplay',
8411
                iconCls: 'fa-edit',
8412
                style: 'font-family: FontAwesome',
8413
                }, {
8414
                text: 'Back to Grid',
8415
                name: 'BackGrid',
8416
                iconCls: 'fa-reply',
8417
                style: 'font-family: FontAwesome',
8418
                }
8419
                ],
8420
                 */
8421
            }, {
8422
                xtype: 'minovaform',
8423
                //name: "MinovaGridFormDisplay",
8424
                name: "MinovaGridFormEdit",
8425
                border: false,
8426
                tableName: tableName, // nama tabel /dataset
8427
                isLookup: '', // 1 or 'Y' for lookup
8428
                isDisplay: false, // true== form is displayfield
8429
                /*
8430
                buttons: [{
8431
                text: 'Save',
8432
                name: 'btnSaveMD',
8433
                iconCls: 'fa-save',
8434
                style: 'font-family: FontAwesome',
8435
                }, {
8436
                text: 'Delete',
8437
                iconCls: 'fa-trash-o',
8438
                name: 'btnDeleteMD',
8439
                style: 'font-family: FontAwesome',
8440
                action: 'CRUDdelete',
8441
                }, {
8442
                text: 'Cancel',
8443
                name: 'btnCancelMD',
8444
                iconCls: 'fa-reply',
8445
                style: 'font-family: FontAwesome',
8446
                }
8447
                ],
8448
                 */
8449
            }
8450
            ]
8451

    
8452
        });
8453
        me.callParent(arguments);
8454
    }
8455
});
8456

    
8457
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMD', {
8458
    extend: 'Ext.form.Panel',
8459
    alias: ['widget.MinovaHeadermd', 'widget.MinovaHeaderMD'],
8460
    allTableName: undefined,
8461
    param: undefined,
8462
    //frame: true,
8463
    resizable: true,
8464
    autoScroll: true,
8465
    minHeight: 20,
8466
    layout: 'column',
8467
    name: 'HeaderMD',
8468
    getAllTableName: function () {
8469
        return this.allTableName;
8470
    },
8471
    setAllTableName: function (value) {
8472
        var me = this;
8473
        me.allTableName = value;
8474
        return me;
8475
    },
8476
    listeners: {
8477
        afterrender: function (me) {
8478

    
8479
            var nowDate = MinovaUtil.GetNowDate()
8480
            var allTbl = me.getAllTableName();
8481
            //alert(allTbl);
8482
            var splitTable = allTbl.split(',')
8483
            splitTable.forEach(function (tbl) {
8484
                // console.log(tbl);
8485
                //set values form
8486
                var nowDate = MinovaUtil.GetNowDate();
8487
                parameter = null;
8488
                if (me.isEmployee == true) {
8489
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
8490
                } else {
8491
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8492
                }
8493
                Ext.Ajax.request({
8494
                    method: 'POST',
8495
                    //async: false,
8496
                    url: '/UserControl/GetStore',
8497
                    params: {
8498
                        tableName: tbl,
8499
                        param: parameter
8500
                    },
8501
                    success: function (response) {
8502
                        var results = Ext.decode(response.responseText);
8503
                        hasil = results.data;
8504
                        //console.log(hasil)
8505
                        if (hasil.length > 0) {
8506
                            me.getForm().setValues(hasil[0]);
8507

    
8508
                            //console.log(me)
8509
                        }
8510

    
8511
                    }
8512
                });
8513
            });
8514

    
8515
            //setTimeout(function () {
8516
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
8517
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
8518
            //}, 100);
8519

    
8520
        },
8521

    
8522
    },
8523

    
8524
    initComponent: function () {
8525
        var me = this;
8526
        var col1 = [];
8527
        var col2 = [];
8528
        var hasil = null;
8529
        //get moduletype
8530
        //var ModuleType = 'PA';
8531
        //var ModuleType = MinovaUtil.GetModuleType()
8532
        //get Lang
8533
        var LangId = localStorage.LangId;
8534
        var allTable = null;
8535
        var tbl = null;
8536
        var tblTemp = null;
8537
        var nowDate = MinovaUtil.GetNowDate();
8538
        //var Photo_ = 'nophoto.gif';
8539
        var Photo = 'nophoto.gif';
8540
        tableName = null;
8541
        parameter = null;
8542
        // get Photo
8543
        //hamid200916
8544
        if (me.isEmployee == true) {
8545
            tableName = 'PHRPA0001';
8546
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
8547
        } else {
8548
            tableName = 'PHRRC0001';
8549
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
8550
        }
8551
        Ext.Ajax.request({
8552
            method: 'POST',
8553
            async: false,
8554
            url: '/UserControl/GetStore',
8555
            params: {
8556
                tableName: tableName,
8557
                param: parameter
8558
            },
8559
            success: function (response) {
8560
                var results = Ext.decode(response.responseText);
8561
                hasil = results.data;
8562
                if (hasil.length > 0) {
8563
                    dataPhoto = hasil[0].Picture
8564
                    if (dataPhoto != "") {
8565
                        Photo = dataPhoto;
8566
                    }
8567
                }
8568

    
8569
            }
8570
        });
8571

    
8572
        var hasil = undefined;
8573
        Ext.Ajax.request({
8574
            async: false,
8575
            method: 'POST',
8576
            url: '/UserControl/GetStore',
8577
            params: {
8578
                tableName: 'PDSBS0009',
8579
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
8580
            },
8581
            success: function (response) {
8582
                hasil = Ext.decode(response.responseText).data;
8583

    
8584
            }
8585
        });
8586

    
8587
        //sorting results
8588
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
8589
        if (hasil.length > 0) {
8590
            Ext.each(hasil, function (rec) {
8591
                tblTemp = rec.TableName;
8592
                if (tbl != tblTemp) {
8593
                    tbl = tblTemp;
8594
                    if (allTable == null) {
8595
                        allTable = tbl
8596
                    } else {
8597
                        allTable = allTable + ',' + tbl
8598
                    }
8599

    
8600
                }
8601
                // build form
8602
                if (rec.TableRef != '') {
8603
                    valueField = null;
8604
                    displayValue = null;
8605
                    Ext.Ajax.request({
8606
                        async: false,
8607
                        method: 'POST',
8608
                        url: '/UserControl/GetStore',
8609
                        params: {
8610
                            tableName: 'SDATATABLEFIELD',
8611
                            param: 'TableName[equal]' + rec.TableRef
8612
                        },
8613
                        success: function (response) {
8614
                            var results = Ext.decode(response.responseText);
8615
                            data_ = results.data;
8616
                            if (data_ != undefined) {
8617
                                valueField_ = $.grep(data_, function (r) {
8618
                                    return r.ValueField == '1'
8619
                                });
8620
                                if (valueField_.length > 0) {
8621
                                    valueField = valueField_[0].FieldName
8622
                                }
8623

    
8624
                                displayValue_ = $.grep(data_, function (r) {
8625
                                    return r.DisplayValue == '1'
8626
                                });
8627
                                if (displayValue_.length > 0) {
8628
                                    displayValue = displayValue_[0].FieldName
8629
                                }
8630
                            }
8631
                        }
8632
                    });
8633

    
8634
                    formfield = new Ext.form.Display({
8635
                        fieldLabel: rec.ScreenCaption,
8636
                        name: rec.FieldName,
8637
                        //value: rec.DefaultValue,
8638
                        padding: 0,
8639
                        labelCls: 'label-minova',
8640
                        labelWidth: 150,
8641
                        anchor: '80%',
8642
                        store: Ext.create('Ext.data.Store', {
8643
                            storeId: 'storeDisplay' + rec.FieldName,
8644
                            //autoLoad: true,
8645
                            proxy: {
8646
                                method: 'POST',
8647
                                type: 'ajax',
8648
                                extraParams: {
8649
                                    tableName: rec.TableRef,
8650
                                    param: ''
8651
                                },
8652
                                reader: {
8653
                                    type: 'json',
8654
                                    root: 'data',
8655
                                    totalProperty: 'data[0].TotalCount'
8656
                                }
8657
                            }
8658
                        }),
8659
                        listeners: {
8660
                            afterrender: function (f) {
8661
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
8662
                                var ParamCombo = rec.ParamCombo;
8663
                                var param = '';
8664
                                //if (ParamCombo != '') {
8665
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
8666
                                    var splitParam = ParamCombo.split(']');
8667
                                    switch (rec.FieldName) {
8668
                                        case 'Position':
8669
                                            ParamCombo = 'P'
8670
                                            break;
8671
                                        case 'CostCenter':
8672
                                            ParamCombo = 'CC'
8673
                                            break;
8674
                                        case 'Organization':
8675
                                            ParamCombo = 'O'
8676
                                            break;
8677
                                        case 'Job':
8678
                                            ParamCombo = 'J'
8679
                                            break;
8680
                                    }
8681
                                    //if (splitParam.length == 1) {
8682
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
8683
                                    //} else {
8684
                                    //    param = ParamCombo;
8685
                                    //}
8686
                                }
8687
                                //}
8688
                                Ext.Ajax.request({
8689
                                    method: 'POST',
8690
                                    async: false,
8691
                                    url: '/UserControl/GetStore',
8692
                                    params: {
8693
                                        tableName: rec.TableRef,
8694
                                        param: param
8695
                                    },
8696
                                    success: function (response) {
8697
                                        var results = Ext.decode(response.responseText);
8698

    
8699
                                        //dt = results.data;
8700
                                        store.loadData(results.data);
8701

    
8702
                                    }
8703
                                });
8704
                            },
8705
                            change: function (f) {
8706
                                //alert(this.valueField, value);
8707
                                var display = this.displayField;
8708
                                var value = this.getValue();
8709
                                var st = f.store
8710
                                var r = st.findRecord(f.valueField, f.value)
8711
                                if (r != null) {
8712
                                    f.setRawValue(r.get(f.displayField))
8713
                                } else {
8714
                                    f.setRawValue(f.value);
8715

    
8716
                                }
8717
                            }
8718

    
8719
                        },
8720
                        queryMode: 'local',
8721
                        displayField: displayValue,
8722
                        valueField: valueField,
8723
                    });
8724
                } else {
8725
                    formfield = new Ext.form.Display({
8726
                        fieldLabel: rec.ScreenCaption,
8727
                        name: rec.FieldName,
8728
                        labelCls: 'label-minova',
8729
                        labelWidth: 150,
8730
                        //value: rec.DefaultValue,
8731
                        padding: 0,
8732
                        anchor: '80%'
8733
                    });
8734
                }
8735
                if (isDesk) {
8736
                    if (rec.Column == 1) {
8737
                        col1.push(formfield);
8738
                    } else {
8739
                        col2.push(formfield);
8740
                    }
8741
                } else {
8742
                    col1.push(formfield);
8743
                }
8744

    
8745
            });
8746
            //set allTable
8747
            this.setAllTableName(allTable);
8748
        }
8749

    
8750
        Ext.applyIf(me, {
8751
            items: [{
8752
                bodyPadding: 0,
8753
                width: 400,
8754
                margin: '10 5 3 30',
8755
                items: col1
8756
            }, {
8757
                bodyPadding: 0,
8758
                width: 400,
8759
                margin: '10 5 3 30',
8760
                items: col2
8761
            }, {
8762
                width: 150,
8763
                //margin: '10 5 3 30',
8764
                items: [{
8765
                    xtype: 'image',
8766
                    id: 'imageusermd',
8767
                    name: 'imageusermd',
8768
                    width: 120,
8769
                    height: 150,
8770
                    padding: 5,
8771
                    border: true,
8772
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
8773
                }
8774
                ]
8775
            }
8776
            ],
8777
        });
8778
        me.callParent(arguments);
8779

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

    
8916
                    formfield = new Ext.form.Display({
8917
                        fieldLabel: rec.ScreenCaption,
8918
                        name: rec.FieldName,
8919
                        padding: 0,
8920
                        labelCls: 'label-minova',
8921
                        labelWidth: 150,
8922
                        anchor: '80%',
8923
                        store: Ext.create('Ext.data.Store', {
8924
                            storeId: 'storeDisplay' + rec.FieldName,
8925
                            proxy: {
8926
                                method: 'POST',
8927
                                type: 'ajax',
8928
                                extraParams: {
8929
                                    tableName: rec.TableRef,
8930
                                    param: ''
8931
                                },
8932
                                reader: {
8933
                                    type: 'json',
8934
                                    root: 'data',
8935
                                    totalProperty: 'data[0].TotalCount'
8936
                                }
8937
                            }
8938
                        }),
8939
                        listeners: {
8940
                            afterrender: function (f) {
8941
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
8942
                                var ParamCombo = rec.ParamCombo;
8943
                                var param = '';
8944
                                Ext.Ajax.request({
8945
                                    method: 'POST',
8946
                                    async: false,
8947
                                    url: '/UserControl/GetStore',
8948
                                    params: {
8949
                                        tableName: rec.TableRef,
8950
                                        param: param
8951
                                    },
8952
                                    success: function (response) {
8953
                                        var results = Ext.decode(response.responseText);
8954
                                        store.loadData(results.data);
8955
                                    }
8956
                                });
8957
                            },
8958
                            change: function (f) {
8959
                                var display = this.displayField;
8960
                                var value = this.getValue();
8961
                                var st = f.store
8962
                                var r = st.findRecord(f.valueField, f.value)
8963
                                if (r != null) {
8964
                                    f.setRawValue(r.get(f.displayField))
8965
                                } else {
8966
                                    f.setRawValue(f.value);
8967
                                }
8968
                            }
8969
                        },
8970
                        queryMode: 'local',
8971
                        displayField: displayValue,
8972
                        valueField: valueField,
8973
                    });
8974
                } else {
8975
                    formfield = new Ext.form.Display({
8976
                        fieldLabel: rec.ScreenCaption,
8977
                        name: rec.FieldName,
8978
                        labelCls: 'label-minova',
8979
                        labelWidth: 150,
8980
                        padding: 0,
8981
                        anchor: '80%'
8982
                    });
8983
                }
8984
                if (isDesk) {
8985
                    if (rec.Column == 1) {
8986
                        col1.push(formfield);
8987
                    } else {
8988
                        col2.push(formfield);
8989
                    }
8990
                } else {
8991
                    col1.push(formfield);
8992
                }
8993

    
8994
            });
8995
            this.setAllTableName(allTable);
8996
        }
8997
        Ext.applyIf(me, {
8998
            items: [{
8999
                bodyPadding: 0,
9000
                width: 400,
9001
                margin: '10 5 3 30',
9002
                items: col1
9003
            }, {
9004
                bodyPadding: 0,
9005
                width: 400,
9006
                margin: '10 5 3 30',
9007
                items: col2
9008
            }, {
9009
                width: 150,
9010
                items: [{
9011
                    xtype: 'image',
9012
                    id: 'imageusermd',
9013
                    name: 'imageusermd',
9014
                    width: 120,
9015
                    height: 150,
9016
                    padding: 5,
9017
                    border: true,
9018
                    src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
9019
                }
9020
                ]
9021
            }
9022
            ]
9023
        });
9024
        me.callParent(arguments);
9025
    }
9026
});
9027
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateTimeColumn', {
9028
    extend: 'Ext.grid.column.Column',
9029
    alias: ['widget.minovadatetimecolumn'],
9030
    alternateClassName: 'Ext.grid.MinovaDateTimeColumn',
9031
    undefinedText: '&#160;',
9032
    defaultRenderer: function (value) {
9033
        //hamid200916
9034
        //if (value === undefined) {
9035
        if (value === "") {
9036
            return this.undefinedText;
9037
            //end
9038
        }
9039

    
9040
        var d = value.substring(6, 8);
9041
        var m = value.substring(4, 6);
9042
        var y = value.substring(0, 4);
9043
        var h = value.substring(8, 10);
9044
        var mt = value.substring(10, 12);
9045
        var s = value.substring(12, 14);
9046
        var hasil = d + '/' + m + '/' + y + '  ' + '  ' + h + ':' + mt + ':' + s;
9047
        return hasil;
9048
    }
9049
});
9050
Ext.define('MinovaUtil.MinovaES.Column.MinovaDateColumn', {
9051
    extend: 'Ext.grid.column.Column',
9052
    alias: ['widget.minovadatecolumn'],
9053
    alternateClassName: 'Ext.grid.MinovaDateColumn',
9054
    undefinedText: '&#160;',
9055
    defaultRenderer: function (value) {
9056
        if (value === "" || value === undefined || value === null) {
9057
            return "";
9058
        }
9059
        var d = value.substring(6, 8);
9060
        var m = value.substring(4, 6);
9061
        var y = value.substring(0, 4);
9062
        var hasil = d + '/' + m + '/' + y;
9063
        return hasil;
9064
    }
9065
});
9066
Ext.define('MinovaUtil.MinovaES.MinovaComboColumn', {
9067
    extend: 'Ext.grid.column.Column',
9068
    alias: ['widget.minovacombocolumn'],
9069
    initComponent: function () {
9070
        this.callParent(arguments);
9071
    },
9072
    defaultRenderer: function (value) {
9073
        if (typeof(this.store) !== 'object') {
9074
            Ext.data.StoreManager.lookup(this.store).load();
9075
            this.store = Ext.data.StoreManager.lookup(this.store);
9076
        }
9077
        var idx = this.store.findExact(this.valueField, value);
9078
        if (this.store.getAt(idx)) {
9079
            var result = this.store.getAt(idx).get(this.displayField);
9080
            value = result ? result : value;
9081
        }
9082
        return value;
9083
    }
9084
});
9085
//atien
9086
Ext.define('MinovaUtil.MinovaES.MinovaAmountColumn', {
9087
    extend: 'Ext.grid.column.Column',
9088
    alias: ['widget.minovaamountcolumn'],
9089
    initComponent: function () {
9090
        this.callParent(arguments);
9091
    },
9092
    defaultRenderer: function (value) {
9093
        if (value != "") {
9094
            Ext.Ajax.request({
9095
                async: false,
9096
                method: 'POST',
9097
                url: '/Devt/DecryptData',
9098
                params: {
9099
                    dt: value
9100

    
9101
                },
9102
                success: function (response) {
9103
                    var results = Ext.decode(response.responseText);
9104
                    value = results.data;
9105
                    Ext.util.Format.thousandSeparator = "."
9106

    
9107
                    value = Ext.util.Format.number(value, '0,000');
9108
                }
9109
            });
9110
        }
9111

    
9112
        return value;
9113
    }
9114
});
9115
//end amount column
9116
//hamid200916
9117
Ext.define('MinovaUtil.MinovaES.MinovaMDApplicant', {
9118
    extend: 'Ext.form.Panel',
9119
    alias: ['widget.minovamdApp', 'widget.MinovaMDApplicant'],
9120
    controller: 'recruitment-controller',
9121
    tableName: undefined, //nama tabel
9122
    param: undefined, //param query
9123
    pagesize: undefined,
9124
    storename: undefined,
9125
    titleform: undefined,
9126
    titlegrid: undefined,
9127
    heightgrid: undefined,
9128
    heightform: undefined,
9129
    iseditform: undefined,
9130
    lastheightform: undefined,
9131
    layoutType: undefined,
9132
    lastpage: undefined,
9133
    lastTitle: undefined,
9134
    getLastTitle: function () {
9135
        return this.lastTitle;
9136
    },
9137
    setLastTitle: function (value) {
9138
        var me = this;
9139
        me.lastTitle = value;
9140
        return me;
9141
    },
9142
    getLastpage: function () {
9143
        return this.lastpage;
9144
    },
9145
    setLastpage: function (value) {
9146
        var me = this;
9147
        me.lastpage = value;
9148
        return me;
9149
    },
9150
    getLayoutType: function () {
9151
        return this.layoutType;
9152
    },
9153
    setLayoutType: function (value) {
9154
        var me = this;
9155
        me.layoutType = value;
9156
        return me;
9157
    },
9158
    getLastheightform: function () {
9159
        return this.lastheightform;
9160
    },
9161
    setLastheightform: function (value) {
9162
        var me = this;
9163
        me.lastheightform = value;
9164
        return me;
9165
    },
9166

    
9167
    getIsEditform: function () {
9168
        return this.iseditform;
9169
    },
9170
    setIsEditform: function (value) {
9171
        var me = this;
9172
        me.iseditform = value;
9173
        return me;
9174
    },
9175
    initComponent: function () {
9176
        var me = this;
9177
        var storename = me.storename;
9178
        if (storename == "" || storename == undefined) {
9179
            storename = "store" + me.tableName;
9180
        }
9181
        var isHired = false;
9182
        nowDate = MinovaUtil.GetNowDate();
9183
        Ext.Ajax.request({
9184
            async: false,
9185
            method: 'POST',
9186
            url: '/UserControl/GetStore',
9187
            params: {
9188
                tableName: 'PHRRC0002',
9189
                param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
9190

    
9191
            },
9192
            success: function (response) {
9193
                var results = Ext.decode(response.responseText);
9194
                dataForm = results.data;
9195
                //cek is hired or blacklist
9196
                dataForm_ = $.grep(dataForm, function (r) {
9197
                    return r.ApplicantStatus == '05'
9198
                });
9199
                if (dataForm_.length == 0) {
9200
                    dataForm_ = $.grep(dataForm, function (r) {
9201
                        return r.ApplicantStatus == '99'
9202
                    });
9203
                }
9204
                if (dataForm_ != null && dataForm_.length > 0) {
9205
                    isHired = true;
9206
                }
9207
            }
9208
        });
9209

    
9210
        var tableName = me.tableName;
9211
        Ext.applyIf(me, {
9212
            items: [{
9213
                layoutType: "MinovaGridForm",
9214
                title: me.titlegrid,
9215
                xtype: "minovagrid1",
9216
                tableName: tableName, // nama tebel/dataset
9217
                name: "MinovaGridFormGrid",
9218
                param: me.param, // parameter filteran
9219
                pagesize: me.pagesize, // jumlah record yang muncul per page
9220
                storename: storename, //nama store bebas
9221
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9222
                height: 330,
9223
                bodyPadding: 0,
9224
                tbar: [{
9225

    
9226
                    xtype: 'button',
9227
                    text: 'Action',
9228
                    name: 'actionGrid',
9229
                    hidden: isHired,
9230
                    menu: [{
9231
                        text: 'Add',
9232
                        name: 'addGrid',
9233
                        action: 'CRUDaddNewRecord',
9234
                        style: 'font-family: FontAwesome',
9235
                        itemId: 'AddData',
9236
                        iconCls: 'fa-plus-circle',
9237
                        hidden: isHired
9238

    
9239
                    }, {
9240
                        text: 'Copy',
9241
                        name: 'CopyGrid',
9242
                        iconCls: 'fa-copy',
9243
                        style: 'font-family: FontAwesome',
9244
                        hidden: isHired
9245
                    }, {
9246
                        text: 'Edit',
9247
                        name: 'EditGrid',
9248
                        iconCls: 'fa-edit',
9249
                        style: 'font-family: FontAwesome',
9250
                        hidden: isHired
9251
                    }, {
9252
                        text: 'Delete',
9253
                        name: 'DeleteGrid',
9254
                        hidden: true,
9255
                        iconCls: 'fa-trash-o',
9256
                        style: 'font-family: FontAwesome',
9257
                    }
9258
                    ],
9259
                    listeners: {
9260
                        afterender: function () {
9261
                            var me = this;
9262
                            nowDate = MinovaUtil.GetNowDate();
9263
                            var isHired = false;
9264
                            Ext.Ajax.request({
9265
                                async: false,
9266
                                method: 'POST',
9267
                                url: '/UserControl/GetStore',
9268
                                params: {
9269
                                    tableName: 'PHRRC0027',
9270
                                    param: 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID") + ',ActivityType[=]8'
9271

    
9272
                                },
9273
                                success: function (response) {
9274
                                    var results = Ext.decode(response.responseText);
9275
                                    dataForm = results.data;
9276
                                    if (dataForm != null) {
9277
                                        isHired = true;
9278
                                    }
9279
                                }
9280
                            });
9281
                            if (isHired) {
9282
                                me.setHidden(true);
9283
                            } else {
9284
                                me.setHidden(false);
9285
                            }
9286

    
9287
                        },
9288

    
9289
                    },
9290
                }, {
9291
                    xtype: 'tbfill'
9292
                }, {
9293
                    text: 'Clear Filters',
9294
                    tooltip: 'Clear all filters',
9295
                    name: 'clearbtn',
9296
                    handler: function () {
9297
                        var tolbar = this.up()
9298
                        var grid_ = tolbar.up()
9299
                        grid_.filters.clearFilters()
9300
                    }
9301
                }, ],
9302

    
9303
                dockedItems: [{
9304
                    xtype: 'pagingtoolbar',
9305
                    store: storename, // harus sama dengan naa store diatas
9306
                    dock: 'bottom', //posisi paging
9307
                    pageSize: me.pagesize,
9308
                    displayInfo: true
9309
                }
9310
                ],
9311

    
9312
            }, {
9313
                xtype: 'minovaform',
9314
                name: "MinovaGridFormDisplay",
9315
                tableName: tableName, // nama tabel /dataset
9316
                isLookup: '', // 1 or 'Y' for lookup
9317
                isDisplay: true, // true== form is displayfield
9318
            }, {
9319
                xtype: 'minovaform',
9320
                name: "MinovaGridFormEdit",
9321
                tableName: tableName, // nama tabel /dataset
9322
                isLookup: '', // 1 or 'Y' for lookup
9323
                isDisplay: false, // true== form is displayfield
9324
            }
9325
            ]
9326
        });
9327
        me.callParent(arguments);
9328
    }
9329
});
9330
//end
9331

    
9332
Ext.define('MinovaUtil.MinovaES.MinovaMD', {
9333
    extend: 'Ext.form.Panel',
9334
    alias: ['widget.minovamd', 'widget.MinovaMD'],
9335
    controller: 'pa-controller',
9336
    tableName: undefined, //nama tabel
9337
    param: undefined, //param query
9338
    pagesize: undefined,
9339
    storename: undefined,
9340
    titleform: undefined,
9341
    titlegrid: undefined,
9342
    heightgrid: undefined,
9343
    heightform: undefined,
9344
    iseditform: undefined,
9345
    lastheightform: undefined,
9346
    layoutType: undefined,
9347
    lastpage: undefined,
9348
    lastTitle: undefined,
9349
    getLastTitle: function () {
9350
        return this.lastTitle;
9351
    },
9352
    setLastTitle: function (value) {
9353
        var me = this;
9354
        me.lastTitle = value;
9355
        return me;
9356
    },
9357
    getLastpage: function () {
9358
        return this.lastpage;
9359
    },
9360
    setLastpage: function (value) {
9361
        var me = this;
9362
        me.lastpage = value;
9363
        return me;
9364
    },
9365
    getLayoutType: function () {
9366
        return this.layoutType;
9367
    },
9368
    setLayoutType: function (value) {
9369
        var me = this;
9370
        me.layoutType = value;
9371
        return me;
9372
    },
9373
    getLastheightform: function () {
9374
        return this.lastheightform;
9375
    },
9376
    setLastheightform: function (value) {
9377
        var me = this;
9378
        me.lastheightform = value;
9379
        return me;
9380
    },
9381

    
9382
    getIsEditform: function () {
9383
        return this.iseditform;
9384
    },
9385
    setIsEditform: function (value) {
9386
        var me = this;
9387
        me.iseditform = value;
9388
        return me;
9389
    },
9390
    initComponent: function () {
9391
        var me = this;
9392
        var storename = me.storename;
9393
        if (storename == "" || storename == undefined) {
9394
            storename = "store" + me.tableName;
9395
        }
9396
        var tableName = me.tableName;
9397
        Ext.applyIf(me, {
9398
            items: [{
9399
                layoutType: "MinovaGridForm",
9400
                title: me.titlegrid,
9401
                xtype: "minovagrid1",
9402
                tableName: tableName, // nama tebel/dataset
9403
                name: "MinovaGridFormGrid",
9404
                param: me.param, // parameter filteran
9405
                pagesize: me.pagesize, // jumlah record yang muncul per page
9406
                storename: storename, //nama store bebas
9407
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9408
                height: 330,
9409
                bodyPadding: 0,
9410
                tbar: [{
9411
                    xtype: 'button',
9412
                    text: 'Action',
9413
                    name: 'actionGrid',
9414
                    menu: [{
9415
                        text: 'Add',
9416
                        name: 'addGrid',
9417
                        action: 'CRUDaddNewRecord',
9418
                        style: 'font-family: FontAwesome',
9419
                        itemId: 'AddData',
9420
                        iconCls: 'fa-plus-circle',
9421

    
9422
                    }, {
9423
                        text: 'Copy',
9424
                        name: 'CopyGrid',
9425
                        iconCls: 'fa-copy',
9426
                        style: 'font-family: FontAwesome',
9427
                    }, {
9428
                        text: 'Edit',
9429
                        name: 'EditGrid',
9430
                        iconCls: 'fa-edit',
9431
                        style: 'font-family: FontAwesome',
9432
                    }, {
9433
                        text: 'Delete',
9434
                        name: 'DeleteGrid',
9435
                        hidden: true,
9436
                        iconCls: 'fa-trash-o',
9437
                        style: 'font-family: FontAwesome',
9438
                    }
9439
                    ]
9440
                }, {
9441
                    xtype: 'tbfill'
9442
                }, {
9443
                    text: 'Clear Filters',
9444
                    tooltip: 'Clear all filters',
9445
                    name: 'clearbtn',
9446
                    handler: function () {
9447
                        var tolbar = this.up()
9448
                        var grid_ = tolbar.up()
9449
                        grid_.filters.clearFilters()
9450
                    }
9451
                }, ],
9452

    
9453
                dockedItems: [{
9454
                    xtype: 'pagingtoolbar',
9455
                    store: storename, // harus sama dengan naa store diatas
9456
                    dock: 'bottom', //posisi paging
9457
                    pageSize: me.pagesize,
9458
                    displayInfo: true
9459
                }
9460
                ],
9461

    
9462
            }, {
9463
                xtype: 'minovaform',
9464
                name: "MinovaGridFormDisplay",
9465
                tableName: tableName, // nama tabel /dataset
9466
                isLookup: '', // 1 or 'Y' for lookup
9467
                isDisplay: true, // true== form is displayfield
9468
            }, {
9469
                xtype: 'minovaform',
9470
                name: "MinovaGridFormEdit",
9471
                tableName: tableName, // nama tabel /dataset
9472
                isLookup: '', // 1 or 'Y' for lookup
9473
                isDisplay: false, // true== form is displayfield
9474
            }
9475
            ]
9476
        });
9477
        me.callParent(arguments);
9478
    }
9479
});
9480

    
9481
Ext.define('MinovaUtil.MinovaES.MinovaCustomization', {
9482
    extend: 'Ext.form.Panel',
9483
    alias: ['widget.minovacustomization', 'widget.MinovaCustomization'],
9484
    controller: 'treeCustomization',
9485
    tableName: undefined, //nama tabel
9486
    param: undefined, //param query
9487
    pagesize: undefined,
9488
    storename: undefined,
9489
    titleform: undefined,
9490
    titlegrid: undefined,
9491
    heightgrid: undefined,
9492
    heightform: undefined,
9493
    iseditform: undefined,
9494
    lastheightform: undefined,
9495
    layoutType: undefined,
9496
    lastpage: undefined,
9497
    lastTitle: undefined,
9498
    collapsibleForm: undefined,
9499
    getLastTitle: function () {
9500
        return this.lastTitle;
9501
    },
9502
    setLastTitle: function (value) {
9503
        var me = this;
9504
        me.lastTitle = value;
9505
        return me;
9506
    },
9507
    getLastpage: function () {
9508
        return this.lastpage;
9509
    },
9510
    setLastpage: function (value) {
9511
        var me = this;
9512
        me.lastpage = value;
9513
        return me;
9514
    },
9515
    getLayoutType: function () {
9516
        return this.layoutType;
9517
    },
9518
    setLayoutType: function (value) {
9519
        var me = this;
9520
        me.layoutType = value;
9521
        return me;
9522
    },
9523
    getLastheightform: function () {
9524
        return this.lastheightform;
9525
    },
9526
    setLastheightform: function (value) {
9527
        var me = this;
9528
        me.lastheightform = value;
9529
        return me;
9530
    },
9531

    
9532
    getIsEditform: function () {
9533
        return this.iseditform;
9534
    },
9535
    setIsEditform: function (value) {
9536
        var me = this;
9537
        me.iseditform = value;
9538
        return me;
9539
    },
9540
    initComponent: function () {
9541
        var me = this;
9542
        var storename = me.storename;
9543
        if (storename == "" || storename == undefined) {
9544
            storename = "store" + me.tableName;
9545
        }
9546
        var tableName = me.tableName;
9547
        var collapsibleForm_ = me.collapsibleForm;
9548
        // if (!collapsibleForm_) {
9549
        //  collapsibleForm_ = false;
9550
        //}
9551
        Ext.applyIf(me, {
9552
            items: [{
9553
                layoutType: "MinovaGridForm",
9554
                title: me.titlegrid,
9555
                xtype: "minovagrid1",
9556
                tableName: tableName, // nama tebel/dataset
9557
                name: "MinovaGridFormGrid",
9558
                param: me.param, // parameter filteran
9559
                pagesize: me.pagesize, // jumlah record yang muncul per page
9560
                storename: storename, //nama store bebas
9561
                isLookup: me.isLookup, // apakah grid untuk look up? jika ya isi dengan 1 atau 'Y' kalau bukan isi string kosong
9562
                height: 480,
9563
                bodyPadding: 0,
9564
                tbar: [{
9565
                    xtype: 'button',
9566
                    text: 'Action',
9567
                    name: 'actionGrid',
9568
                    menu: [{
9569
                        text: 'Add',
9570
                        name: 'addGrid',
9571
                        action: 'CRUDaddNewRecord',
9572
                        style: 'font-family: FontAwesome',
9573
                        itemId: 'AddData',
9574
                        iconCls: 'fa-plus-circle',
9575

    
9576
                    }, {
9577
                        text: 'Copy',
9578
                        name: 'CopyGrid',
9579
                        iconCls: 'fa-copy',
9580
                        style: 'font-family: FontAwesome',
9581
                    }, {
9582
                        text: 'Edit',
9583
                        name: 'EditGrid',
9584
                        iconCls: 'fa-edit',
9585
                        style: 'font-family: FontAwesome',
9586
                    }, {
9587
                        text: 'Delete',
9588
                        name: 'DeleteGrid',
9589
                        hidden: true,
9590
                        iconCls: 'fa-trash-o',
9591
                        style: 'font-family: FontAwesome',
9592
                    }
9593
                    ]
9594
                }, {
9595
                    xtype: 'tbfill'
9596
                }, {
9597
                    text: 'Search',
9598
                    tooltip: 'Search',
9599
                    tableName: tableName,
9600
                    name: 'btnSearchCust',
9601
                    handler: function () {
9602
                        //var tolbar = this.up()
9603
                        //var grid_ = tolbar.up()
9604
                        //alert(this.tableName)
9605

    
9606
                    }
9607

    
9608
                }, {
9609
                    text: 'Import/Export',
9610
                    tooltip: 'Import/Export',
9611
                    name: 'Import/Exportbtn',
9612

    
9613
                }, {
9614
                    text: 'Clear Filters',
9615
                    tooltip: 'Clear all filters',
9616
                    name: 'clearbtn',
9617
                    handler: function () {
9618
                        var tolbar = this.up()
9619
                        var grid_ = tolbar.up()
9620
                        grid_.filters.clearFilters()
9621
                    }
9622
                }
9623
                ],
9624

    
9625
                dockedItems: [{
9626
                    xtype: 'pagingtoolbar',
9627
                    store: storename, // harus sama dengan naa store diatas
9628
                    dock: 'bottom', //posisi paging
9629
                    pageSize: me.pagesize,
9630
                    displayInfo: true
9631
                }
9632
                ],
9633

    
9634
            }, {
9635
                xtype: 'minovaform',
9636
                //layout: 'anchor',
9637
                height: '200',
9638
                collapsible: collapsibleForm_,
9639
                name: "MinovaGridFormDisplay",
9640
                tableName: tableName, // nama tabel /dataset
9641
                isLookup: '', // 1 or 'Y' for lookup
9642
                isDisplay: true, // true== form is displayfield
9643
            }, {
9644
                xtype: 'minovaform',
9645
                //layout:'anchor',
9646
                collapsible: collapsibleForm_,
9647
                name: "MinovaGridFormEdit",
9648
                tableName: tableName, // nama tabel /dataset
9649
                isLookup: '', // 1 or 'Y' for lookup
9650
                isDisplay: false, // true== form is displayfield
9651
            }
9652
            ]
9653
        });
9654
        me.callParent(arguments);
9655
    }
9656
});
9657

    
9658
Ext.define('MinovaUtil.view.override.Panel', {
9659
    override: 'Ext.panel.Panel',
9660

    
9661
    print: function (pnl) {
9662

    
9663
        if (!pnl) {
9664
            pnl = this;
9665
        }
9666

    
9667
        // instantiate hidden iframe
9668

    
9669
        var iFrameId = "printerFrame";
9670
        var printFrame = Ext.get(iFrameId);
9671

    
9672
        if (printFrame == null) {
9673
            printFrame = Ext.getBody().appendChild({
9674
                id: iFrameId,
9675
                tag: 'iframe',
9676
                cls: 'x-hidden',
9677
                style: {
9678
                    display: "none"
9679
                }
9680
            });
9681
        }
9682

    
9683
        var cw = printFrame.dom.contentWindow;
9684

    
9685
        // instantiate application stylesheets in the hidden iframe
9686

    
9687
        var stylesheets = "";
9688
        for (var i = 0; i < document.styleSheets.length; i++) {
9689
            stylesheets += Ext.String.format('<link rel="stylesheet" href="{0}" />', document.styleSheets[i].href);
9690
        }
9691

    
9692
        // various style overrides
9693
        stylesheets += ''.concat(
9694
			"<style>",
9695
			".x-panel-body {overflow: visible !important;}",
9696
			// experimental - page break after embedded panels
9697
			// .x-panel {page-break-after: always; margin-top: 10px}",
9698
			"</style>");
9699

    
9700
        // get the contents of the panel and remove hardcoded overflow properties
9701
        var markup = pnl.getEl().dom.innerHTML;
9702
        while (markup.indexOf('overflow: auto;') >= 0) {
9703
            markup = markup.replace('overflow: auto;', '');
9704
        }
9705

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

    
9708
        // output to the iframe
9709
        cw.document.open();
9710
        cw.document.write(str);
9711
        cw.document.close();
9712

    
9713
        // remove style attrib that has hardcoded height property
9714
        cw.document.getElementsByTagName('DIV')[0].removeAttribute('style');
9715

    
9716
        // print the iframe
9717
        cw.print();
9718

    
9719
        // destroy the iframe
9720
        Ext.fly(iFrameId).destroy();
9721

    
9722
    }
9723
});
9724

    
9725
Ext.define('MinovaUtil.MinovaES.MinovaRptForm', {
9726
    extend: 'Ext.form.Panel',
9727
    alias: ['widget.MinovaRptForm', 'widget.minovarptform'],
9728
    ReportID: undefined,
9729
    SelectionType: undefined,
9730
    layout: 'column',
9731
    //frame : true,
9732
    defaults: {
9733
        layout: 'form',
9734
        xtype: 'container',
9735
        defaultType: 'textfield',
9736
        style: 'width: 50%',
9737
        //height: 1000
9738
    },
9739
    initComponent: function () {
9740
        var col1 = [];
9741
        var col2 = [];
9742
        var me = this;
9743
        var hasil = null;
9744
        var hideButton_ = me.hideButton;
9745
        Ext.Ajax.request({
9746
            async: false,
9747
            method: 'POST',
9748
            url: '/UserControl/GetStore',
9749
            params: {
9750
                tableName: 'PDSBS0006',
9751
                //param : "ReportID='" + me.ReportID + "' and SelectionType='" + me.SelectionType + "' and LangId='" + localStorage.LangId + "'"
9752
                param: "ReportID='" + me.ReportID + "',SelectionType='" + me.SelectionType + "',LangId='" + localStorage.LangId + "'"
9753
            },
9754
            success: function (response) {
9755
                var results = Ext.decode(response.responseText);
9756
                hasil = results.data;
9757
                //count = hasil.length
9758
            }
9759
        });
9760
        if (hasil.length > 0) {
9761
            hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
9762
            var me = this;
9763
            Ext.each(hasil, function (rec) {
9764
                var null_ = true;
9765
                if (rec.IsRequired == '1') {
9766
                    null_ = false;
9767
                } else {
9768
                    null_ = true;
9769
                }
9770
                var formfield = MinovaUtil.FieldGenerator.Form(me.name, rec, null_, false, me.tableName, me.isLookup);
9771
                if (isDesk) {
9772
                    if (rec.ColumnNo == 1) {
9773
                        col1.push(formfield);
9774
                    } else {
9775
                        col2.push(formfield);
9776
                    }
9777
                } else {
9778
                    col1.push(formfield);
9779
                }
9780
            });
9781

    
9782
        }
9783
        Ext.applyIf(me, {
9784
            items: [{
9785
                style: 'width: 50%',
9786
                items: col1
9787
            }, {
9788
                style: 'width: 50%',
9789
                items: col2
9790
            }
9791
            ],
9792
        });
9793
        this.callParent();
9794
    }
9795
});
9796

    
9797
Ext.define('MinovaUtil.MinovaES.MinovaRptSimple', {
9798
    extend: 'Ext.form.Panel',
9799
    alias: ['widget.MinovaRptSimple', 'widget.minovarptsimple'],
9800
    //layout: 'column',
9801
    controller: 'basereports-controller',
9802
    ReportID: undefined,
9803
    hideButton: undefined,
9804
    reportLayout: 'simple',
9805
    getReportLayout: function () {
9806
        return this.reportLayout;
9807
    },
9808
    setReportLayout: function (value) {
9809
        var me = this;
9810
        me.reportLayout = value;
9811
        return me;
9812
    },
9813

    
9814
    initComponent: function () {
9815
        var me = this;
9816
        var ReportID = me.ReportID;
9817
        var hideButton_ = me.hideButton;
9818
        var hide_ = false;
9819
        if (hideButton_) {
9820
            hide_ = true;
9821
        }
9822
        Ext.applyIf(me, {
9823
            items: [{
9824
                //title: 'Report Selection',
9825
                xtype: 'minovarptform',
9826
                hideButton: hide_,
9827
                name: 'minovarptsimple',
9828
                ReportID: ReportID,
9829
                SelectionType: '1',
9830
                bodyPadding: 10,
9831
                buttons: [{
9832
                    text: 'Search',
9833
                    name: 'SearchRpt',
9834
                    hidden: hide_
9835
                }, {
9836
                    text: 'Variant',
9837
                    style: 'font-family: FontAwesome',
9838
                    hidden: hide_,
9839
                    menu: [{
9840
                        text: 'Load Variant',
9841
                        name: 'loadvariant',
9842

    
9843
                    }, {
9844
                        text: 'Save Variant',
9845
                        name: 'savevariant',
9846

    
9847
                    }
9848
                    ],
9849

    
9850
                }
9851
                ],
9852

    
9853
            },
9854
				//{
9855
				//    title: 'Result',
9856
				//    height: 530,
9857
				//    collapsible: false,
9858
				//    name: 'resultPanel',
9859
				//    layout: 'fit',
9860
				//    html: '<div  id="formMdDiv"></div>',
9861
				//}
9862
            ],
9863
        });
9864
        this.callParent();
9865
    }
9866
});
9867

    
9868
Ext.define('MinovaUtil.MinovaES.MinovaRptAdvance', {
9869
    extend: 'Ext.form.Panel',
9870
    alias: ['widget.MinovaRptAdvance', 'widget.minovarptadvance'],
9871
    //layout: 'column',
9872
    controller: 'basereports-controller',
9873
    ReportID: undefined,
9874
    reportLayout: 'advance',
9875
    hideButton: undefined,
9876
    getReportLayout: function () {
9877
        return this.reportLayout;
9878
    },
9879
    setReportLayout: function (value) {
9880
        var me = this;
9881
        me.reportLayout = value;
9882
        return me;
9883
    },
9884

    
9885
    initComponent: function () {
9886
        var me = this;
9887
        var ReportID = me.ReportID;
9888
        var hideButton_ = me.hideButton;
9889
        var hide_ = false;
9890
        if (hideButton_) {
9891
            hide_ = true;
9892
        }
9893
        Ext.applyIf(me, {
9894
            items: [{
9895
                //title: 'Report Selection',
9896
                xtype: 'minovarptform',
9897
                hideButton: hide_,
9898
                name: 'minovarptadvance',
9899
                ReportID: ReportID,
9900
                SelectionType: '2',
9901
                bodyPadding: 10,
9902
                buttons: [{
9903
                    text: 'Search',
9904
                    name: 'SearchRpt',
9905
                    hidden: hide_
9906
                }, {
9907
                    text: 'Variant',
9908
                    hidden: hide_,
9909
                    style: 'font-family: FontAwesome',
9910
                    menu: [{
9911
                        text: 'Load Variant',
9912
                        name: 'loadvariant',
9913

    
9914
                    }, {
9915
                        text: 'Save Variant',
9916
                        name: 'savevariant',
9917

    
9918
                    }
9919
                    ],
9920

    
9921
                }
9922
                ],
9923

    
9924
            },
9925
				//{
9926
				//    title: 'Result',
9927
				//    height: 530,
9928
				//    collapsible: false,
9929
				//    name: 'resultPanel',
9930
				//    layout: 'fit',
9931
				//    html: '<div  id="formMdDiv"></div>',
9932
				//}
9933
            ],
9934
        });
9935
        this.callParent();
9936
    }
9937
});
9938

    
9939
Ext.define('MinovaUtil.MinovaES.MinovaRptAll', {
9940
    extend: 'Ext.form.Panel',
9941
    alias: ['widget.MinovaRptAll', 'widget.minovarptall'],
9942
    //layout: 'column',
9943
    controller: 'basereports-controller',
9944
    ReportID: undefined,
9945
    titleSimle: undefined,
9946
    titleAdvance: undefined,
9947
    reportLayout: 'all',
9948
    hideButton: undefined,
9949
    getReportLayout: function () {
9950
        return this.reportLayout;
9951
    },
9952
    setReportLayout: function (value) {
9953
        var me = this;
9954
        me.reportLayout = value;
9955
        return me;
9956
    },
9957

    
9958
    initComponent: function () {
9959
        var me = this;
9960
        var ReportID = me.ReportID;
9961
        var hideButton_ = me.hideButton;
9962
        var hide_ = false;
9963
        if (hideButton_) {
9964
            hide_ = true;
9965
        }
9966
        Ext.applyIf(me, {
9967
            items: [{
9968
                xtype: 'tabpanel',
9969
                name: 'mainTab',
9970
                buttons: [{
9971
                    text: 'Search',
9972
                    name: 'SearchRpt',
9973
                    hidden: hide_,
9974
                }, {
9975
                    text: 'Variant',
9976
                    hidden: hide_,
9977
                    style: 'font-family: FontAwesome',
9978
                    menu: [{
9979
                        text: 'Load Variant',
9980
                        name: 'loadvariant',
9981

    
9982
                    }, {
9983
                        text: 'Save Variant',
9984
                        name: 'savevariant',
9985

    
9986
                    }
9987
                    ],
9988

    
9989
                }
9990
                ],
9991

    
9992
                items: [{
9993
                    title: 'Simple',
9994
                    xtype: 'minovarptform',
9995
                    hideButton: hide_,
9996
                    name: 'simpleForm',
9997
                    ReportID: ReportID,
9998
                    SelectionType: '1',
9999
                    bodyPadding: 10,
10000

    
10001
                }, {
10002
                    title: 'Advance',
10003
                    xtype: 'minovarptform',
10004
                    hideButton: hide_,
10005
                    name: 'advanceForm',
10006
                    ReportID: ReportID,
10007
                    SelectionType: '2',
10008
                    bodyPadding: 10,
10009

    
10010
                }
10011
                ]
10012
            },
10013
				//{
10014
				//    title: 'Result',
10015
				//    height: 530,
10016
				//    collapsible: false,
10017
				//    name: 'resultPanel',
10018
				//    layout: 'fit',
10019
				//    html: '<div  id="formMdDiv"></div>',
10020
				//}
10021

    
10022
            ],
10023
        });
10024
        this.callParent();
10025
    }
10026
});
10027

    
10028
Ext.define('MinovaUtil.MinovaES.MinovaGridRpt', {
10029
    extend: 'Ext.grid.Panel',
10030
    requires: ['Ext.grid.RowNumberer'],
10031
    alias: 'widget.minovagridrpt',
10032
    alternateClassName: 'Ext.grid.MinovaGridRpt',
10033
    tableName: undefined,
10034
    param: undefined,
10035
    //pagesize: undefined,
10036
    storename: undefined,
10037
    //layoutType: undefined,
10038
    enableLocking: true,
10039
    tbar: [{
10040
        xtype: 'tbfill'
10041
    }, {
10042
        text: 'Clear Filters',
10043
        tooltip: 'Clear all filters',
10044
        name: 'clearbtn',
10045
        handler: function () {
10046
            var tolbar = this.up()
10047
            var grid_ = tolbar.up()
10048
            grid_.filters.clearFilters()
10049
        }
10050
    }, ],
10051
    getTableName: function () {
10052
        return this.tableName;
10053
    },
10054

    
10055
    initComponent: function () {
10056
        var me = this;
10057
        var cols_ = [];
10058
        var fieldeditor = {};
10059
        var hasil = null;
10060
        var autoLoad = true;
10061
        var _url = 'GetAllField';
10062

    
10063
        Ext.Ajax.request({
10064
            async: false,
10065
            method: 'POST',
10066
            url: '/Devt/' + _url + '?tableName=' + me.tableName,
10067
            success: function (response) {
10068
                var results = Ext.decode(response.responseText);
10069
                hasil = results.data;
10070
            }
10071
        });
10072
        var structure = undefined;
10073
        Ext.Ajax.request({
10074
            async: false,
10075
            method: 'POST',
10076
            url: '/UserControl/GetStore',
10077
            params: {
10078
                tableName: 'SDATATABLEFIELD',
10079
                param: 'TableName[equal]' + me.tableName
10080

    
10081
            },
10082
            success: function (response) {
10083
                var results = Ext.decode(response.responseText);
10084
                data_ = results.data;
10085
                if (data_ != undefined) {
10086
                    structure = data_;
10087
                }
10088
            }
10089
        });
10090
        if (hasil.length > 0) {
10091
            Ext.each(hasil, function (rec) {
10092
                // get field will be summary
10093

    
10094
                var summaryType = undefined;
10095
                if (structure != undefined) {
10096
                    _field = $.grep(structure, function (r) {
10097
                        return r.FieldName == rec.FieldName
10098
                    });
10099
                    summaryType = _field[0].SummaryType
10100
                }
10101

    
10102
                var null_ = null;
10103
                if (rec.IsPrimaryKey == true) {
10104
                    null_ = false;
10105
                }
10106
                if (rec.IsRequired == true) {
10107
                    null_ = false;
10108
                } else {
10109
                    null_ = true;
10110
                }
10111
                if (rec.GridView == 1) {
10112
                    switch (rec.FormatRef) {
10113
                        case "date":
10114
                            cols_.push({
10115
                                xtype: 'minovadatecolumn',
10116
                                text: rec.HeaderTitle,
10117
                                dataIndex: rec.FieldName,
10118
                                summaryType: summaryType,
10119
                                width: 100,
10120
                                filter: {
10121
                                    type: 'date',
10122
                                    itemDefaults: {
10123
                                        emptyText: 'Search for...'
10124
                                    }
10125
                                }
10126
                            });
10127
                            break
10128
                        case "amount":
10129
                            cols_.push({
10130
                                xtype: 'minovacurrancycolumn',
10131
                                align: 'right',
10132
                                text: rec.HeaderTitle,
10133
                                dataIndex: rec.FieldName,
10134
                                summaryType: summaryType,
10135
                                width: 100,
10136
                                filter: {
10137
                                    type: 'number',
10138
                                    itemDefaults: {
10139
                                        emptyText: 'Search for...'
10140
                                    }
10141
                                }
10142
                            });
10143
                            break
10144
                        case "datetime":
10145
                            cols_.push({
10146
                                xtype: 'minovadatetimecolumn',
10147
                                text: rec.HeaderTitle,
10148
                                dataIndex: rec.FieldName,
10149
                                summaryType: summaryType,
10150
                                width: 140,
10151
                                filter: {
10152
                                    type: 'string',
10153
                                    itemDefaults: {
10154
                                        emptyText: 'Search for...'
10155
                                    }
10156
                                }
10157
                            });
10158
                            break
10159
                        default:
10160
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
10161
                                cols_.push({
10162
                                    text: rec.HeaderTitle,
10163
                                    dataIndex: rec.FieldName,
10164
                                    summaryType: summaryType,
10165
                                    width: 100,
10166
                                    filter: {
10167
                                        type: 'string',
10168
                                        itemDefaults: {
10169
                                            emptyText: 'Search for...'
10170
                                        }
10171
                                    }
10172
                                });
10173
                            } else if (rec.TableRef != "") {
10174
                                if (rec.TableRef != null) {
10175
                                    var valueField = null;
10176
                                    var displayValue = null;
10177
                                    Ext.Ajax.request({
10178
                                        async: false,
10179
                                        method: 'POST',
10180
                                        url: '/UserControl/GetStore',
10181
                                        params: {
10182
                                            tableName: 'SDATATABLEFIELD',
10183
                                            param: 'TableName[equal]' + rec.TableRef
10184
                                        },
10185
                                        success: function (response) {
10186
                                            var results = Ext.decode(response.responseText);
10187
                                            data_ = results.data;
10188
                                            if (data_ != undefined) {
10189
                                                valueField_ = $.grep(data_, function (r) {
10190
                                                    return r.ValueField == '1'
10191
                                                });
10192
                                                valueField = valueField_[0].FieldName
10193
                                                displayValue_ = $.grep(data_, function (r) {
10194
                                                    return r.DisplayValue == '1'
10195
                                                });
10196
                                                displayValue = displayValue_[0].FieldName
10197

    
10198
                                            }
10199
                                        }
10200
                                    });
10201
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
10202
                                    var count_ = 0;
10203
                                    if (store_) {
10204
                                        count_ = store_.count();
10205
                                    }
10206
                                    if (count_ == 0) {
10207
                                        Ext.create('Ext.data.Store', {
10208
                                            storeId: 'store_' + rec.FieldName,
10209
                                            autoLoad: true,
10210
                                            proxy: {
10211
                                                method: 'POST',
10212
                                                type: 'ajax',
10213
                                                url: '/UserControl/GetStore',
10214
                                                extraParams: {
10215
                                                    tableName: rec.TableRef,
10216
                                                    param: rec.ParamCombo
10217
                                                },
10218
                                                reader: {
10219
                                                    type: 'json',
10220
                                                    root: 'data',
10221
                                                    totalProperty: 'data[0].TotalCount'
10222
                                                }
10223
                                            }
10224
                                        })
10225
                                    }
10226
                                    cols_.push({
10227
                                        xtype: 'minovacombocolumn',
10228
                                        TableRef: rec.TableRef,
10229
                                        text: rec.HeaderTitle,
10230
                                        summaryType: summaryType,
10231
                                        dataIndex: rec.FieldName,
10232
                                        valueField: valueField,
10233
                                        displayField: displayValue,
10234
                                        store: 'store_' + rec.FieldName,
10235
                                        filter: {
10236
                                            type: 'list',
10237
                                            itemDefaults: {
10238
                                                emptyText: 'Search for...'
10239
                                            }
10240
                                        }
10241
                                    });
10242
                                }
10243

    
10244
                            } else {
10245
                                cols_.push({
10246
                                    text: rec.HeaderTitle,
10247
                                    dataIndex: rec.FieldName,
10248
                                    summaryType: summaryType,
10249
                                    filter: {
10250
                                        itemDefaults: {
10251
                                            emptyText: 'Search for...'
10252
                                        }
10253
                                    }
10254
                                });
10255
                            }
10256
                            break
10257
                    }
10258
                } else {
10259
                    cols_.push({
10260
                        text: rec.HeaderTitle,
10261
                        dataIndex: rec.FieldName,
10262
                        hidden: true,
10263
                        filter: {
10264
                            itemDefaults: {
10265
                                emptyText: 'Search for...'
10266
                            }
10267
                        }
10268
                    });
10269
                }
10270
            });
10271
        };
10272
        var param_ = me.param;
10273
        if (param_ == undefined) {
10274
            param_ = ''
10275
        }
10276
        var jsStoreGrid = new Ext.data.Store({
10277
            storeId: me.storename,
10278
            autoLoad: false,
10279
            //pageSize: me.pagesize,
10280
            proxy: {
10281
                method: 'POST',
10282
                type: 'ajax',
10283
                url: '/UserControl/GetStore',
10284
                //extraParams: {
10285
                //    tableName: me.tableName,
10286
                //    param: param_
10287
                //},
10288
                reader: {
10289
                    type: 'json',
10290
                    root: 'data',
10291
                    totalProperty: 'totalRecords'
10292
                }
10293
            }
10294
        });
10295
        Ext.applyIf(me, {
10296
            autoScroll: true,
10297
            enableLocking: true,
10298
            lockedGridConfig: {
10299
                header: false,
10300
                collapsible: true,
10301
                width: 250,
10302
                forceFit: true,
10303
                listeners: {
10304
                    render: function (grid) {
10305
                        var pagingToolbar = grid.child('pagingtoolbar');
10306
                        if (pagingToolbar) {
10307
                            grid.remove(pagingToolbar, true);
10308
                        }
10309
                    }
10310
                }
10311
            },
10312
            listeners: {
10313
                viewready: function () {
10314
                    if (autoLoad == true) {
10315
                        this.getStore().loadPage(1);
10316
                    }
10317

    
10318
                },
10319
                beforeedit: function () {
10320
                    return false;
10321
                }
10322
            },
10323
            lockedViewConfig: {
10324
                scroll: 'horizontal'
10325
            },
10326
            viewConfig: {
10327
                emptyText: 'No Data Display',
10328
                deferEmptyText: false
10329
            },
10330
            //features: [{
10331
            //    ftype: 'summary'
10332
            //}],
10333
            columns: cols_,
10334

    
10335
            store: jsStoreGrid,
10336

    
10337
            plugins: [{
10338
                ptype: 'gridfilters'
10339
            },
10340

    
10341
            ],
10342

    
10343
        });
10344
        me.callParent(arguments);
10345
    }
10346

    
10347
});
10348

    
10349
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGrid', {
10350
    extend: 'Ext.form.Panel',
10351
    alias: ['widget.MinovaEditAbleGrid', 'widget.Minovaeditablegrid', 'widget.minovaeditablegrid'],
10352
    requires: [
10353
		'Ext.grid.plugin.CellEditing',
10354
		'Ext.grid.RowNumberer',
10355
		'Ext.grid.Panel',
10356
    ],
10357
	
10358
    //renderTo: 'panel-extjs',
10359
    anchor: '100%',
10360
    tableName: undefined,
10361
    hideButton: undefined,
10362
    multiSelect: undefined,
10363
    initComponent: function () {
10364
        var me = this;
10365
        var isLookup = me.isLookup;
10366
        var hide_ = false;
10367
        var widthLock = 250;
10368
        var checkSelection = '';
10369

    
10370
        if (me.hideButton == true) {
10371
            hide_ = true;
10372
        }
10373
        if (me.multiSelect) {
10374
            locking = false;
10375
            checkSelection = 'checkboxmodel';
10376
            widthLock = 40;
10377
        }
10378
        var tableName = me.tableName;
10379
        var cols = [];
10380
        var fieldStore = [];
10381
        var _url = 'GetAllField';
10382
        var hasil = null;
10383
        var height = me.height;
10384
        var storeID = 'store' + me.tableName;
10385
        var gridName = 'grid' + me.name;
10386
        if (me.storeName) {
10387
            storeID = me.storeName;
10388
        }
10389
        var LangID = MinovaUtil.GetLangID();
10390
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
10391
        Ext.Ajax.request({
10392
            async: false,
10393
            method: 'POST',
10394
            url: '/UserControl/GetStore',
10395
            params: {
10396
                tableName: 'PDSBS0007',
10397
                param: parameter
10398
            },
10399
            success: function (response) {
10400
                var results = Ext.decode(response.responseText);
10401
                hasil = results.data;
10402
            }
10403
        });
10404
        cols.push({
10405
            xtype: 'rownumberer'
10406
        });
10407
        var addData = 'var data={';
10408
        if (hasil.length > 0) {
10409
            Ext.each(hasil, function (rec) {
10410
                fieldStore.push(rec.FieldName);
10411
                if (rec.FieldName != 'Sequence') {
10412
                    addData = addData + rec.FieldName + ":" + "'',";
10413
                }
10414

    
10415
                var null_ = null;
10416
                var ReadOnly_ = false;
10417
                if (rec.IsPrimaryKey == true) {
10418
                    null_ = false;
10419
                }
10420
                if (rec.IsRequired == true) {
10421
                    null_ = false;
10422
                } else {
10423
                    null_ = true;
10424
                }
10425
                if (rec.ReadOnly == '1') {
10426
                    ReadOnly_ = true;
10427
                }
10428
                var Hidden_ = false;
10429
                if (rec.ReadOnly == '1') {
10430
                    ReadOnly_ = true;
10431
                }
10432

    
10433
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
10434
                    Hidden_ = true;
10435
                    null_ = true;
10436
                }
10437

    
10438
                if (rec.GridView == 1) {
10439
                    switch (rec.FormatRef) {
10440
                        case "date":
10441
                            cols.push({
10442
                                xtype: 'minovadatecolumn',
10443
                                hidden: Hidden_,
10444
                                text: rec.HeaderTitle,
10445
                                dataIndex: rec.FieldName,
10446
                                filter: {
10447
                                    itemDefaults: {
10448
                                        emptyText: 'Search for...',
10449

    
10450
                                    }
10451
                                },
10452
                                editor: {
10453
                                    allowBlank: null_,
10454
                                    xtype: 'datefield',
10455
                                    hideMode: 'visibility',
10456
                                    readOnly: ReadOnly_,
10457
                                    id: tableName + rec.FieldName,
10458
                                    fieldGrid: rec.FieldName,
10459
                                    nameTable: rec.TableName,
10460
                                }
10461
                            });
10462
                            break
10463
                        case "amount":
10464
                            cols.push({
10465
                                xtype: 'minovacurrancycolumn',
10466
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
10467
                                text: rec.HeaderTitle,
10468
                                align: 'right',
10469
                                dataIndex: rec.FieldName,
10470
                                hidden: Hidden_,
10471
                                filter: {
10472
                                    itemDefaults: {
10473
                                        emptyText: 'Search for...'
10474
                                    }
10475
                                },
10476
                                editor: {
10477
                                    allowBlank: null_,
10478
                                    xtype: 'minovacurrencyfield',
10479
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
10480
                                    //vtype: 'validateDecimal',
10481
                                    readOnly: ReadOnly_,
10482
                                    id: tableName + rec.FieldName,
10483
                                    nameTable: rec.TableName,
10484
                                    fieldGrid: rec.FieldName,
10485
                                    fieldStyle: 'text-align:right;',
10486
                                    value: '0',
10487
									listeners: { //// add by Tri nwh 20220711
10488
										change: function (val, recs) {
10489
											var fvalue = val.getValue();
10490
											var custumFunc = rec.SelectFunction;
10491
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10492
												Ext.Ajax.request({
10493
													async: false,
10494
													method: 'POST',
10495
													url: '/UserControl/GetStore',
10496
													params: {
10497
														tableName: 'PCMFUNC',
10498
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
10499
													},
10500
													success: function (response) {
10501
														var results = Ext.decode(response.responseText);
10502
														var dt = results.data[0];
10503
														if (dt != undefined) {
10504
															custumFunc = dt.FunctionCode;
10505
														}
10506
													}
10507
												});
10508
											}
10509
											if (custumFunc) {
10510
												eval(custumFunc)
10511
											}
10512
										}
10513
									}
10514
                                }
10515
                            });
10516
                            break
10517
                        case "time":
10518
                            var DefaultValue = rec.DefaultValue;
10519
                            if (DefaultValue == '') {
10520
                                defaultValue = '00:00';
10521
                            }
10522
                            cols.push({
10523
                                //xtype: 'minovatimecolumn',
10524
                                xtype: 'timefield',
10525
                                format: 'H:i',
10526
                                submitFormat: 'Hi',
10527
                                text: rec.HeaderTitle,
10528
                                dataIndex: rec.FieldName,
10529
                                hidden: Hidden_,
10530
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
10531
                                filter: {
10532
                                    itemDefaults: {
10533
                                        emptyText: 'Search for...'
10534
                                    }
10535
                                },
10536
                                editor: {
10537
                                    allowBlank: null_,
10538
                                    xtype: 'timefield',
10539
                                    readOnly: ReadOnly_,
10540
                                    id: tableName + rec.FieldName,
10541
                                    format: 'H:i',
10542
                                    submitFormat: 'Hi',
10543
                                    increment: 5,
10544
                                    value: DefaultValue,
10545
                                    anchor: '100%',
10546
                                    listeners: {}
10547
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
10548
                                }
10549
                            });
10550
                            break
10551
                            //case "datetime":
10552
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
10553
                            //        cols.push({
10554
                            //            xtype: 'minovadatetimecolumn',
10555
                            //            text: rec.HeaderTitle,
10556
                            //            dataIndex: rec.FieldName,
10557
                            //            filter: {
10558
                            //                itemDefaults: {
10559
                            //                    emptyText: 'Search for...'
10560
                            //                }
10561
                            //            },
10562
                            //            editor: {
10563
                            //                allowBlank: null_,
10564
                            //                xtype: 'textfield',
10565
                            //            }
10566
                            //        });
10567
                            //    }
10568
                            //    break
10569
                        default:
10570
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
10571
                                cols.push({
10572
                                    text: rec.HeaderTitle,
10573
                                    dataIndex: rec.FieldName,
10574
                                    width: 100,
10575
                                    filter: {
10576
                                        type: 'string',
10577
                                        itemDefaults: {
10578
                                            emptyText: 'Search for...'
10579
                                        }
10580
                                    }
10581
                                });
10582
                            } else if (rec.SearchType == '0') {
10583
                                var valueField = null;
10584
                                var displayValue = null;
10585
                                var TableRef = undefined;
10586
                                if (rec.TableRef != '') {
10587
                                    TableRef = rec.TableRef;
10588

    
10589
                                    Ext.Ajax.request({
10590
                                        async: false,
10591
                                        method: 'POST',
10592
                                        url: '/UserControl/GetStore',
10593
                                        params: {
10594
                                            tableName: 'SDATATABLEFIELD',
10595
                                            param: 'TableName[equal]' + rec.TableRef
10596
                                        },
10597
                                        success: function (response) {
10598
                                            var results = Ext.decode(response.responseText);
10599
                                            data_ = results.data;
10600
                                            if (data_ != undefined) {
10601
                                                valueField_ = $.grep(data_, function (r) {
10602
                                                    return r.ValueField == '1'
10603
                                                });
10604
                                                valueField = valueField_[0].FieldName
10605
                                                displayValue_ = $.grep(data_, function (r) {
10606
                                                    return r.DisplayValue == '1'
10607
                                                });
10608
                                                displayValue = displayValue_[0].FieldName
10609
                                            }
10610
                                        }
10611
                                    });
10612

    
10613
                                    //create Store
10614
                                    Ext.create('Ext.data.Store', {
10615
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10616
                                        autoLoad: true,
10617
                                        proxy: {
10618
                                            method: 'POST',
10619
                                            type: 'ajax',
10620
                                            url: '/UserControl/GetStoreAuth',
10621
                                            extraParams: {
10622
                                                tableName: TableRef,
10623
                                                param: rec.ParamCombo,
10624
                                                menuId: MinovaUtil.GetMenuID()
10625
                                            },
10626
                                            reader: {
10627
                                                type: 'json',
10628
                                                root: 'data',
10629
                                                totalProperty: 'data[0].TotalCount'
10630
                                            }
10631
                                        }
10632
                                    });
10633
                                } else if (rec.FixedValue != '') {
10634
                                    var storeData = [];
10635
                                    var str = rec.FixedValue;
10636
                                    var hasil = str.split('||');
10637
                                    hasil.forEach(function (h) {
10638
                                        store_ = h.split('=')
10639
                                        storeData.push({
10640
                                            code: store_[0],
10641
                                            desc: store_[1],
10642

    
10643
                                        });
10644
                                    });
10645

    
10646
                                    valueField = 'code';
10647
                                    displayValue = 'desc';
10648

    
10649
                                    Ext.create('Ext.data.Store', {
10650
                                        storeId: 'store_' + me.tableName + rec.FieldName,
10651
                                        autoLoad: true,
10652
                                        data: storeData
10653
                                    })
10654
                                }
10655

    
10656
                                cols.push({
10657
                                    xtype: 'minovacombocolumn',
10658
                                    hidden: Hidden_,
10659
                                    text: rec.HeaderTitle,
10660
                                    dataIndex: rec.FieldName,
10661
                                    valueField: valueField,
10662
                                    displayField: displayValue,
10663
                                    store: 'store_' + me.tableName + rec.FieldName,
10664
                                    editor: {
10665
                                        allowBlank: null_,
10666
                                        xtype: 'combobox',
10667
                                        readOnly: ReadOnly_,
10668
                                        id: tableName + rec.FieldName,
10669
                                        nameTable: rec.TableName,
10670
                                        fieldGrid: rec.FieldName,
10671
                                        valueField: valueField,
10672
                                        displayField: displayValue,
10673
                                        vtype: 'validateCombobox',
10674
                                        store: 'store_' + me.tableName + rec.FieldName,
10675
                                    },
10676
                                    filter: {
10677
                                        type: 'list',
10678
                                        itemDefaults: {
10679
                                            emptyText: 'Search for...'
10680
                                        }
10681
                                    }
10682
                                });
10683

    
10684
                            } else if (rec.SearchType == '5') {							
10685
                                var valueField = null;
10686
                                var displayValue = null;
10687
                                var AdditionaldisplayValue = null;
10688
                                var TableRef = undefined;
10689
                                if (rec.TableRef != '') {
10690
                                    TableRef = rec.TableRef;
10691
                                    Ext.Ajax.request({
10692
                                        async: false,
10693
                                        method: 'POST',
10694
                                        url: '/UserControl/GetStore',
10695
                                        params: {
10696
                                            tableName: 'SDATATABLEFIELD',
10697
                                            param: 'TableName[equal]' + rec.TableRef
10698
                                        },
10699
                                        success: function (response) {
10700
                                            var results = Ext.decode(response.responseText);
10701
                                            data_ = results.data;
10702
                                            if (data_ != undefined) {
10703
                                                valueField_ = $.grep(data_, function (r) {
10704
                                                    return r.ValueField == '1'
10705
                                                });
10706
                                                if (valueField_.length > 0) {
10707
                                                    valueField = valueField_[0].FieldName
10708
                                                }
10709

    
10710
                                                displayValue_ = $.grep(data_, function (r) {
10711
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
10712
                                                });
10713
                                                if (displayValue_.length > 0) {
10714
                                                    displayValue = displayValue_[0].FieldName;
10715
                                                }
10716
                                                if (displayValue_.length >= 2) {
10717
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
10718
                                                }
10719
                                            }
10720
                                        }
10721
                                    });
10722
                                }
10723
                                Ext.create('Ext.data.Store', {
10724
                                    storeId: 'store_' + me.tableName + rec.FieldName,
10725
                                    autoLoad: true,
10726
                                    proxy: {
10727
                                        method: 'POST',
10728
                                        type: 'ajax',
10729
                                        url: '/UserControl/GetStoreAuth',
10730
                                        extraParams: {
10731
                                            tableName: TableRef,
10732
                                            param: rec.ParamCombo,
10733
                                            menuId: MinovaUtil.GetMenuID()
10734
                                        },
10735
                                        reader: {
10736
                                            type: 'json',
10737
                                            root: 'data',
10738
                                            totalProperty: 'data[0].TotalCount'
10739
                                        }
10740
                                    }
10741
                                });
10742
                                cols.push({
10743
                                    xtype : 'minovacombocolumn',
10744
                                    hidden: Hidden_,
10745
                                    text: rec.HeaderTitle,
10746
                                    dataIndex: rec.FieldName,
10747
                                    valueField : valueField,
10748
                                    displayField : displayValue,
10749
                                    store : 'store_' + me.tableName + rec.FieldName,
10750
                                    tpl: Ext.create('Ext.XTemplate',
10751
                                            '<ul class="x-list-plain"><tpl for=".">',
10752
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10753
                                            '</tpl></ul>'),
10754
                                    displayTpl: Ext.create('Ext.XTemplate',
10755
                                        '<tpl for=".">',
10756
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10757
                                        '</tpl>'),
10758
                                    editor: {
10759
                                        allowBlank: null_,
10760
                                        xtype: 'combobox',
10761
                                        readOnly: ReadOnly_,
10762
                                        id: rec.TableName + rec.FieldName,
10763
                                        nameTable: rec.TableName,
10764
                                        fieldGrid: rec.FieldName,
10765
                                        valueField: valueField,
10766
                                        displayField: displayValue,
10767
                                        store: 'store_' + me.tableName + rec.FieldName,
10768
                                        value: rec.DefaultValue,
10769
                                        tpl: Ext.create('Ext.XTemplate',
10770
                                            '<ul class="x-list-plain"><tpl for=".">',
10771
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
10772
                                            '</tpl></ul>'),
10773
                                        displayTpl: Ext.create('Ext.XTemplate',
10774
                                            '<tpl for=".">',
10775
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
10776
                                            '</tpl>')
10777
                                    },
10778
                                    renderer: function (value) {
10779
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
10780
                                        var index = store.find(valueField, value);
10781
                                        var val = "";
10782
                                        if (index != -1) {
10783
                                            var rc = store.getAt(index);
10784
                                            //val = rc.get(displayValue);
10785
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
10786
                                        } else {
10787
                                            val = value;
10788
                                        }
10789
                                        return val;
10790
                                    },
10791
                                    filter: {
10792
                                        type: 'list',
10793
                                        itemDefaults: {
10794
                                            emptyText: 'Search for...'
10795
                                        }
10796
                                    }
10797
                                });
10798
                            } else if (rec.SearchType == '2') {
10799
                                var triger = (rec.TriggerCombo).split('$');
10800
                                var targetField_ = triger[0];
10801
                                var fieldValue_ = triger[1];
10802
                                cols.push({
10803
                                    text: rec.HeaderTitle,
10804
                                    hidden: Hidden_,
10805
                                    dataIndex: rec.FieldName,
10806
                                    filter: {
10807
                                        itemDefaults: {
10808
                                            emptyText: 'Search for...'
10809
                                        }
10810
                                    },
10811
                                    editor: {
10812
                                        allowBlank: null_,
10813
                                        xtype: 'minovalookupgrid',
10814
                                        readOnly: ReadOnly_,
10815
                                        isGrid: true,
10816
                                        fieldTarget: targetField_,
10817
                                        fieldValue: fieldValue_,
10818
                                        isGrid: true,
10819
                                        id: tableName + rec.FieldName,
10820
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10821
                                        triggerCls: 'x-form-search-trigger',
10822
                                        vtype: 'alphanum', // disable space
10823
                                        nameTable: rec.TableName,
10824
                                        fieldGrid: rec.FieldName,
10825
                                        LookupFunction: rec.LookupFunction,
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 == '3') {
10855
                                cols.push({
10856
                                    text: rec.HeaderTitle,
10857
                                    hidden: Hidden_,
10858
                                    dataIndex: rec.FieldName,
10859
                                    filter: {
10860
                                        itemDefaults: {
10861
                                            emptyText: 'Search for...'
10862
                                        }
10863
                                    },
10864
                                    editor: {
10865
                                        allowBlank: null_,
10866
                                        // xtype: 'minovalookuptreePopup',
10867
                                        xtype: 'MinovaLookupTree',
10868
                                        readOnly: ReadOnly_,
10869
                                        id: tableName + rec.FieldName,
10870
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10871
                                        triggerCls: 'x-form-search-trigger',
10872
                                        vtype: 'alphanum', // disable space
10873
                                        treeSructure: rec.SearchFunction, //'O-O-P',
10874
                                        objClassValue: rec.ParamCombo, //'O',
10875
                                        nameTable: rec.TableName,
10876
                                        fieldGrid: rec.FieldName,
10877
                                        listeners: {
10878
                                            change: function (val) {
10879
                                                var custumFunc = rec.SelectFunction;
10880
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10881
                                                    Ext.Ajax.request({
10882
                                                        async: false,
10883
                                                        method: 'POST',
10884
                                                        url: '/UserControl/GetStore',
10885
                                                        params: {
10886
                                                            tableName: 'PCMFUNC',
10887
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10888
                                                        },
10889
                                                        success: function (response) {
10890
                                                            var results = Ext.decode(response.responseText);
10891
                                                            data_ = results.data[0];
10892
                                                            if (data_ != undefined) {
10893
                                                                custumFunc = data_.FunctionCode;
10894
                                                            }
10895
                                                        }
10896
                                                    });
10897
                                                }
10898
                                                if (custumFunc) {
10899
                                                    eval(custumFunc)
10900
                                                }
10901
                                            }
10902
                                        }
10903
                                    }
10904
                                });
10905
                            } 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) { 
10906
                                var triger = (rec.TriggerCombo).split('&');
10907
                                var targetField_ = triger[0];
10908
                                var fieldValue_ = triger[0];
10909
                                cols.push({
10910
                                    text: rec.HeaderTitle,
10911
                                    hidden: Hidden_,
10912
                                    dataIndex: rec.FieldName,
10913
                                    filter: {
10914
                                        itemDefaults: {
10915
                                            emptyText: 'Search for...'
10916
                                        }
10917
                                    },
10918
                                    editor: {
10919
                                        allowBlank: null_,
10920
                                        xtype: 'lookupemployee',
10921
                                        readOnly: ReadOnly_,
10922
                                        isGrid: true,
10923
                                        fieldTarget: targetField_,
10924
                                        fieldValue: fieldValue_,
10925
                                        isGrid: true,
10926
                                        id: tableName + rec.FieldName,
10927
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10928
                                        triggerCls: 'x-form-search-trigger',
10929
                                        vtype: 'alphanum', // disable space
10930
                                        nameTable: rec.TableName,
10931
                                        fieldGrid: rec.FieldName,
10932
                                        listeners: {
10933
                                            change: function (val) {
10934
                                                var custumFunc = rec.SelectFunction;
10935
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10936
                                                    Ext.Ajax.request({
10937
                                                        async: false,
10938
                                                        method: 'POST',
10939
                                                        url: '/UserControl/GetStore',
10940
                                                        params: {
10941
                                                            tableName: 'PCMFUNC',
10942
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10943
                                                        },
10944
                                                        success: function (response) {
10945
                                                            var results = Ext.decode(response.responseText);
10946
                                                            data_ = results.data[0];
10947
                                                            if (data_ != undefined) {
10948
                                                                custumFunc = data_.FunctionCode;
10949
                                                            }
10950
                                                        }
10951
                                                    });
10952
                                                }
10953
                                                if (custumFunc) {
10954
                                                    eval(custumFunc)
10955
                                                }
10956
                                            }
10957
                                        }
10958
                                    }
10959
                                });
10960
                            } else if (rec.SearchType == '4' && isLookup != true) {
10961
                                cols.push({
10962

    
10963
                                    text: rec.HeaderTitle,
10964
                                    hidden: Hidden_,
10965
                                    dataIndex: rec.FieldName,
10966
                                    filter: {
10967
                                        itemDefaults: {
10968
                                            emptyText: 'Search for...'
10969
                                        }
10970
                                    },
10971
                                    editor: {
10972
                                        allowBlank: null_,
10973
                                        xtype: 'lookupemployee',
10974
                                        readOnly: ReadOnly_,
10975
                                        isGrid: true,
10976
                                        fieldTarget: targetField_,
10977
                                        fieldValue: fieldValue_,
10978
                                        isGrid: true,
10979
                                        id: tableName + rec.FieldName,
10980
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
10981
                                        triggerCls: 'x-form-search-trigger',
10982
                                        vtype: 'alphanum', // disable space
10983
                                        nameTable: rec.TableName,
10984
                                        fieldGrid: rec.FieldName,
10985
                                        listeners: {
10986
                                            change: function (val) {
10987
                                                var custumFunc = rec.SelectFunction;
10988
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
10989
                                                    Ext.Ajax.request({
10990
                                                        async: false,
10991
                                                        method: 'POST',
10992
                                                        url: '/UserControl/GetStore',
10993
                                                        params: {
10994
                                                            tableName: 'PCMFUNC',
10995
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
10996
                                                        },
10997
                                                        success: function (response) {
10998
                                                            var results = Ext.decode(response.responseText);
10999
                                                            data_ = results.data[0];
11000
                                                            if (data_ != undefined) {
11001
                                                                custumFunc = data_.FunctionCode;
11002
                                                            }
11003
                                                        }
11004
                                                    });
11005
                                                }
11006
                                                if (custumFunc) {
11007
                                                    eval(custumFunc)
11008
                                                }
11009
                                            }
11010
                                        }
11011
                                    }
11012
                                });
11013
                            } else { 
11014
                                if (rec.FieldDataType == 3) { //add by taufan 
11015
                                    cols.push({
11016
                                        text: rec.HeaderTitle,
11017
                                        hidden: Hidden_,
11018
                                        dataIndex: rec.FieldName,
11019
                                        filter: {
11020
                                            itemDefaults: {
11021
                                                emptyText: 'Search for...'
11022
                                            }
11023
                                        },
11024
                                        editor: {
11025
                                            allowBlank: null_,
11026
                                            xtype: 'textfield',
11027
                                            readOnly: ReadOnly_,
11028
                                            id: tableName + rec.FieldName,
11029
                                            nameTable: rec.TableName,
11030
                                            fieldGrid: rec.FieldName,
11031
                                            vtype: 'validateDecimal',
11032
                                            maxLength: rec.Length,
11033
                                            precision: rec.Prec,
11034
                                            fieldStyle: 'text-align:right;',
11035
                                            listeners: {
11036
                                                change: function (val) { 
11037
                                                    var custumFunc = null;
11038
                                                    Ext.Ajax.request({
11039
                                                        async: false,
11040
                                                        method: 'POST',
11041
                                                        url: '/UserControl/GetStore',
11042
                                                        params: {
11043
                                                            tableName: 'SDATATABLEFIELD',
11044
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11045
                                                        },
11046
                                                        success: function (response) { 
11047
                                                            var results = Ext.decode(response.responseText);
11048
                                                            data_ = results.data[0]; 
11049
                                                            if (data_ != undefined) {
11050
                                                                custumFunc = data_.SelectFunction;
11051
                                                                //console.log(data_)
11052
                                                            }
11053
                                                        }
11054
                                                    });
11055

    
11056
                                                    if (custumFunc) {
11057
                                                        eval(custumFunc)
11058
                                                    }
11059
                                                }
11060
                                            }
11061
                                        }
11062
                                    });
11063
                                } else { 
11064
                                    cols.push({
11065
                                        text: rec.HeaderTitle,
11066
                                        hidden: Hidden_,
11067
                                        dataIndex: rec.FieldName,
11068
                                        filter: {
11069
                                            itemDefaults: {
11070
                                                emptyText: 'Search for...'
11071
                                            }
11072
                                        },
11073
                                        editor: {
11074
                                            allowBlank: null_,
11075
                                            xtype: 'textfield',
11076
                                            readOnly: ReadOnly_,
11077
                                            id: tableName + rec.FieldName,
11078
                                            nameTable: rec.TableName,
11079
                                            fieldGrid: rec.FieldName,
11080
                                            listeners: {
11081
                                                change: function (val) { 
11082
                                                    var custumFunc = null;
11083
                                                    Ext.Ajax.request({
11084
                                                        async: false,
11085
                                                        method: 'POST',
11086
                                                        url: '/UserControl/GetStore',
11087
                                                        params: {
11088
                                                            tableName: 'SDATATABLEFIELD',
11089
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11090
                                                        },
11091
                                                        success: function (response) {
11092
                                                            var results = Ext.decode(response.responseText);
11093
                                                            data_ = results.data[0]; 
11094
                                                            if (data_ != undefined) {
11095
                                                                custumFunc = data_.SelectFunction; 
11096
                                                                //console.log(data_)
11097
                                                            }
11098
                                                        }
11099
                                                    });
11100

    
11101
                                                    if (custumFunc) {
11102
                                                        eval(custumFunc)
11103
                                                    }
11104
                                                }
11105
                                            }
11106
                                        }
11107
                                    });
11108
                                }
11109
                            }
11110

    
11111
                            break
11112

    
11113
                    }
11114
                } else {
11115
                    cols.push({
11116
                        text: rec.HeaderTitle,
11117
                        hidden: Hidden_,
11118
                        dataIndex: rec.FieldName,
11119
                        hidden: true,
11120
                        editor: {
11121
                            allowBlank: true,
11122
                            xtype: 'textfield',
11123
                            readOnly: ReadOnly_,
11124
                            id: tableName + rec.FieldName,
11125
                            nameTable: rec.TableName,
11126
                            fieldGrid: rec.FieldName,
11127
                        },
11128
                        filter: {
11129
                            itemDefaults: {
11130
                                emptyText: 'Search for...'
11131
                            }
11132
                        }
11133
                    });
11134
                }
11135
            });
11136

    
11137
        };
11138
        addData = addData + "}";
11139
        Ext.applyIf(me, {
11140
            items: [{
11141
                xtype: 'grid',
11142
                id: gridName,
11143
                name: gridName,
11144
                height: height,
11145
                viewConfig: {
11146
                    emptyText: 'No Data Display',
11147
                    deferEmptyText: false,
11148
                    //Add Nana For Autosize Column Mode
11149
                    listeners: {
11150
                        refresh: function (dataview) {
11151
                            Ext.each(dataview.panel.columns, function (column) {
11152
                                //if (column.autoSizeColumn == false)
11153
                                //	column.autoSizeColumn = true;
11154
                                column.autoSize();
11155
                                //dataview.store.reload();
11156
                            })
11157
                        }
11158
                    },
11159
                    render: function (comp) {
11160
                        comp.getStore().reload();
11161
                        console.log(comp);
11162
                    }
11163
                },
11164
                //store: 'gridStore',
11165
                store: Ext.create('Ext.data.Store', {
11166
                    storeId: storeID,
11167
                    fields: fieldStore,
11168
                    proxy: {
11169
                        method: 'POST',
11170
                        type: 'ajax',
11171
                        url: '',
11172
                        reader: {
11173
                            type: 'json',
11174
                            root: 'data'
11175
                        }
11176
                    }
11177
                }),
11178
                dockedItems: [{
11179
                    xtype: 'toolbar',
11180
                    items: [{
11181
                        text: 'Add',
11182
                        hidden: hide_,
11183
                        name: tableName + 'Add',
11184
                        iconCls: 'fa-plus-circle',
11185
                        style: 'font-family: FontAwesome',
11186
                        handler: function () {
11187
                            var store = Ext.StoreMgr.lookup(storeID)
11188
                            idx = store.getCount();
11189
                            var action = getParam('action');
11190
                            var data = '';
11191
                            var Sequence = 0;
11192
                            if (idx == 0) {
11193
                                Sequence = 1;
11194
                            } else {
11195
                                Sequence = 1 + idx;
11196
                            }
11197
                            //data = {
11198
                            //    Sequence: Sequence
11199
                            //};
11200

    
11201
                            var seq = 'Sequence';
11202
                            var SequenceValue = Sequence;
11203
                            eval(addData);
11204
                            data[seq] = SequenceValue;
11205

    
11206
                            store.insert(idx, data);
11207
                        }
11208

    
11209
                    }, {
11210
                        text: 'Delete',
11211
                        hidden: hide_,
11212
                        name: tableName + 'DeleteText',
11213
                        iconCls: 'fa-trash-o',
11214
                        style: 'font-family: FontAwesome',
11215
                        //disabled: true
11216
                        handler: function () {
11217
                            var me = this,
11218
                            store = Ext.StoreMgr.lookup(storeID)
11219

    
11220
                            var grid = Ext.getCmp(gridName);
11221

    
11222
                            Ext.MessageBox.show({
11223
                                title: 'Remove tab',
11224
                                msg: "This will remove. Do you want to continue?",
11225
                                buttons: Ext.MessageBox.YESNO,
11226
                                fn: function (choice) {
11227
                                    console.log(choice);
11228
                                    if (choice === 'yes') {
11229
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
11230
                                        if (selection) {
11231
                                            store.remove(selection);
11232
                                        }
11233
                                    }
11234
                                    //delete panel.pendingClose;
11235
                                }
11236
                            });
11237
                        }
11238

    
11239
                    }
11240
                    ]
11241
                }
11242
                ],
11243
                columns: cols,
11244
                selType: checkSelection,
11245
                //selType: 'rowmodel',
11246
                plugins: {
11247
                    ptype: 'rowediting',
11248
                    pluginId: 'rowEditing',
11249
                    clicksToEdit: 0,
11250
                    listeners: {
11251
                        //edit: 'onGridEditorEdit'
11252
                    }
11253
                }
11254
            }, ]
11255

    
11256
        });
11257

    
11258
        me.callParent(arguments);
11259
    }
11260
});
11261

    
11262
Ext.define('MinovaUtil.MinovaES.MinovaCellEditGrid', {
11263
    extend: 'Ext.form.Panel',
11264
    alias: ['widget.MinovaCellEditGrid', 'widget.minovacelleditgrid'],
11265
    requires: [
11266
		'Ext.grid.plugin.CellEditing',
11267
		'Ext.grid.Panel',
11268
    ],
11269

    
11270
    //renderTo: 'panel-extjs',
11271
    anchor: '100%',
11272
    tableName: undefined,
11273
    hideButton: undefined,
11274
    multiSelect: undefined,
11275
    initComponent: function () {
11276
        var me = this;
11277
        var isLookup = me.isLookup;
11278
        var hide_ = false;
11279
        var widthLock = 250;
11280
        var checkSelection = '';
11281

    
11282
        if (me.hideButton == true) {
11283
            hide_ = true;
11284
        }
11285
        if (me.multiSelect) {
11286
            locking = false;
11287
            checkSelection = 'checkboxmodel';
11288
            widthLock = 40;
11289
        }
11290
        var tableName = me.tableName;
11291
        var cols = [];
11292
        var fieldStore = [];
11293
        var _url = 'GetAllField';
11294
        var hasil = null;
11295
        var height = me.height;
11296
        var storeID = 'store' + me.tableName;
11297
        var gridName = 'grid' + me.name;
11298
        if (me.storeName) {
11299
            storeID = me.storeName;
11300
        }
11301
        var LangID = MinovaUtil.GetLangID();
11302
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
11303
        Ext.Ajax.request({
11304
            async: false,
11305
            method: 'POST',
11306
            url: '/UserControl/GetStore',
11307
            params: {
11308
                tableName: 'PDSBS0007',
11309
                param: parameter
11310
            },
11311
            success: function (response) {
11312
                var results = Ext.decode(response.responseText);
11313
                hasil = results.data;
11314
            }
11315
        });
11316
        if (hasil.length > 0) {
11317
            Ext.each(hasil, function (rec) {
11318
                fieldStore.push(rec.FieldName)
11319

    
11320
                var null_ = null;
11321
                var ReadOnly_ = false;
11322
                if (rec.IsPrimaryKey == true) {
11323
                    null_ = false;
11324
                }
11325
                if (rec.IsRequired == true) {
11326
                    null_ = false;
11327
                } else {
11328
                    null_ = true;
11329
                }
11330
                if (rec.ReadOnly == '1') {
11331
                    ReadOnly_ = true;
11332
                }
11333
                var Hidden_ = false;
11334
                if (rec.ReadOnly == '1') {
11335
                    ReadOnly_ = true;
11336
                }
11337

    
11338
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
11339
                    Hidden_ = true;
11340
                    null_ = true;
11341
                }
11342

    
11343
                if (rec.GridView == 1) {
11344
                    switch (rec.FormatRef) {
11345
                        case "date":
11346
                            cols.push({
11347
                                xtype: 'minovadatecolumn',
11348
                                hidden: Hidden_,
11349
                                text: rec.HeaderTitle,
11350
                                dataIndex: rec.FieldName,
11351
                                filter: {
11352
                                    itemDefaults: {
11353
                                        emptyText: 'Search for...',
11354

    
11355
                                    }
11356
                                },
11357
                                editor: {
11358
                                    allowBlank: null_,
11359
                                    xtype: 'datefield',
11360
                                    hideMode: 'visibility',
11361
                                    readOnly: ReadOnly_,
11362
                                    id: tableName + rec.FieldName,
11363
                                }
11364
                            });
11365
                            break
11366
                        case "amount":
11367
                            cols.push({
11368
                                xtype: 'minovacurrancycolumn',
11369
                                text: rec.HeaderTitle,
11370
                                align: 'right',
11371
                                dataIndex: rec.FieldName,
11372
                                hidden: Hidden_,
11373
                                filter: {
11374
                                    itemDefaults: {
11375
                                        emptyText: 'Search for...'
11376
                                    }
11377
                                },
11378
                                editor: {
11379
                                    allowBlank: null_,
11380
                                    xtype: 'textfield',
11381
                                    readOnly: ReadOnly_,
11382
                                    id: tableName + rec.FieldName,
11383
                                }
11384
                            });
11385
                            break
11386
                            //case "datetime":
11387
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
11388
                            //        cols.push({
11389
                            //            xtype: 'minovadatetimecolumn',
11390
                            //            text: rec.HeaderTitle,
11391
                            //            dataIndex: rec.FieldName,
11392
                            //            filter: {
11393
                            //                itemDefaults: {
11394
                            //                    emptyText: 'Search for...'
11395
                            //                }
11396
                            //            },
11397
                            //            editor: {
11398
                            //                allowBlank: null_,
11399
                            //                xtype: 'textfield',
11400
                            //            }
11401
                            //        });
11402
                            //    }
11403
                            //    break
11404
                        default:
11405
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
11406
                                cols.push({
11407
                                    text: rec.HeaderTitle,
11408
                                    dataIndex: rec.FieldName,
11409
                                    width: 100,
11410
                                    filter: {
11411
                                        type: 'string',
11412
                                        itemDefaults: {
11413
                                            emptyText: 'Search for...'
11414
                                        }
11415
                                    }
11416
                                });
11417
                            } else if (rec.SearchType == '0') {
11418
                                var valueField = null;
11419
                                var displayValue = null;
11420
                                var TableRef = undefined;
11421
                                if (rec.TableRef != '') {
11422
                                    TableRef = rec.TableRef;
11423

    
11424
                                    Ext.Ajax.request({
11425
                                        async: false,
11426
                                        method: 'POST',
11427
                                        url: '/UserControl/GetStore',
11428
                                        params: {
11429
                                            tableName: 'SDATATABLEFIELD',
11430
                                            param: 'TableName[equal]' + rec.TableRef
11431
                                        },
11432
                                        success: function (response) {
11433
                                            var results = Ext.decode(response.responseText);
11434
                                            data_ = results.data;
11435
                                            if (data_ != undefined) {
11436
                                                valueField_ = $.grep(data_, function (r) {
11437
                                                    return r.ValueField == '1'
11438
                                                });
11439
                                                valueField = valueField_[0].FieldName
11440
                                                displayValue_ = $.grep(data_, function (r) {
11441
                                                    return r.DisplayValue == '1'
11442
                                                });
11443
                                                displayValue = displayValue_[0].FieldName
11444
                                            }
11445
                                        }
11446
                                    });
11447

    
11448
                                    //create Store
11449
                                    Ext.create('Ext.data.Store', {
11450
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11451
                                        autoLoad: true,
11452
                                        proxy: {
11453
                                            method: 'POST',
11454
                                            type: 'ajax',
11455
                                            url: '/UserControl/GetStoreAuth',
11456
                                            extraParams: {
11457
                                                tableName: TableRef,
11458
                                                param: rec.ParamCombo,
11459
                                                menuId: MinovaUtil.GetMenuID()
11460
                                            },
11461
                                            reader: {
11462
                                                type: 'json',
11463
                                                root: 'data',
11464
                                                totalProperty: 'data[0].TotalCount'
11465
                                            }
11466
                                        }
11467
                                    });
11468

    
11469
                                } else if (rec.FixedValue != '') {
11470
                                    var storeData = [];
11471
                                    var str = rec.FixedValue;
11472
                                    var hasil = str.split('||');
11473
                                    hasil.forEach(function (h) {
11474
                                        store_ = h.split('=')
11475
                                        storeData.push({
11476
                                            code: store_[0],
11477
                                            desc: store_[1],
11478

    
11479
                                        });
11480
                                    });
11481

    
11482
                                    valueField = 'code';
11483
                                    displayValue = 'desc';
11484

    
11485
                                    Ext.create('Ext.data.Store', {
11486
                                        storeId: 'store_' + me.tableName + rec.FieldName,
11487
                                        autoLoad: true,
11488
                                        data: storeData
11489
                                    })
11490
                                }
11491

    
11492
                                cols.push({
11493
                                    xtype: 'minovacombocolumn',
11494
                                    hidden: Hidden_,
11495
                                    text: rec.HeaderTitle,
11496
                                    dataIndex: rec.FieldName,
11497
                                    valueField: valueField,
11498
                                    displayField: displayValue,
11499
                                    store: 'store_' + me.tableName + rec.FieldName,
11500
                                    editor: {
11501
                                        allowBlank: null_,
11502
                                        xtype: 'combobox',
11503
                                        readOnly: ReadOnly_,
11504
                                        id: tableName + rec.FieldName,
11505
                                        valueField: valueField,
11506
                                        displayField: displayValue,
11507
                                        store: 'store_' + me.tableName + rec.FieldName,
11508
                                    },
11509
                                    filter: {
11510
                                        type: 'list',
11511
                                        itemDefaults: {
11512
                                            emptyText: 'Search for...'
11513
                                        }
11514
                                    }
11515
                                });
11516

    
11517
                            } else if (rec.SearchType == '5') {							
11518
                                var valueField = null;
11519
                                var displayValue = null;
11520
                                var AdditionaldisplayValue = null;
11521
                                var TableRef = undefined;
11522
                                if (rec.TableRef != '') {
11523
                                    TableRef = rec.TableRef;
11524
                                    Ext.Ajax.request({
11525
                                        async: false,
11526
                                        method: 'POST',
11527
                                        url: '/UserControl/GetStore',
11528
                                        params: {
11529
                                            tableName: 'SDATATABLEFIELD',
11530
                                            param: 'TableName[equal]' + rec.TableRef
11531
                                        },
11532
                                        success: function (response) {
11533
                                            var results = Ext.decode(response.responseText);
11534
                                            data_ = results.data;
11535
                                            if (data_ != undefined) {
11536
                                                valueField_ = $.grep(data_, function (r) {
11537
                                                    return r.ValueField == '1'
11538
                                                });
11539
                                                if (valueField_.length > 0) {
11540
                                                    valueField = valueField_[0].FieldName
11541
                                                }
11542

    
11543
                                                displayValue_ = $.grep(data_, function (r) {
11544
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
11545
                                                });
11546
                                                if (displayValue_.length > 0) {
11547
                                                    displayValue = displayValue_[0].FieldName;
11548
                                                }
11549
                                                if (displayValue_.length >= 2) {
11550
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
11551
                                                }
11552
                                            }
11553
                                        }
11554
                                    });
11555
                                }
11556
                                Ext.create('Ext.data.Store', {
11557
                                    storeId: 'store_' + me.tableName + rec.FieldName,
11558
                                    autoLoad: true,
11559
                                    proxy: {
11560
                                        method: 'POST',
11561
                                        type: 'ajax',
11562
                                        url: '/UserControl/GetStoreAuth',
11563
                                        extraParams: {
11564
                                            tableName: TableRef,
11565
                                            param: rec.ParamCombo,
11566
                                            menuId: MinovaUtil.GetMenuID()
11567
                                        },
11568
                                        reader: {
11569
                                            type: 'json',
11570
                                            root: 'data',
11571
                                            totalProperty: 'data[0].TotalCount'
11572
                                        }
11573
                                    }
11574
                                });
11575
                                cols.push({
11576
                                    xtype : 'minovacombocolumn',
11577
                                    hidden: Hidden_,
11578
                                    text: rec.HeaderTitle,
11579
                                    dataIndex: rec.FieldName,
11580
                                    valueField : valueField,
11581
                                    displayField : displayValue,
11582
                                    store : 'store_' + me.tableName + rec.FieldName,
11583
                                    tpl: Ext.create('Ext.XTemplate',
11584
                                            '<ul class="x-list-plain"><tpl for=".">',
11585
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11586
                                            '</tpl></ul>'),
11587
                                    displayTpl: Ext.create('Ext.XTemplate',
11588
                                        '<tpl for=".">',
11589
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11590
                                        '</tpl>'),
11591
                                    editor: {
11592
                                        allowBlank: null_,
11593
                                        xtype: 'combobox',
11594
                                        readOnly: ReadOnly_,
11595
                                        id: rec.TableName + rec.FieldName,
11596
                                        nameTable: rec.TableName,
11597
                                        fieldGrid: rec.FieldName,
11598
                                        valueField: valueField,
11599
                                        displayField: displayValue,
11600
                                        store: 'store_' + me.tableName + rec.FieldName,
11601
                                        value: rec.DefaultValue,
11602
                                        tpl: Ext.create('Ext.XTemplate',
11603
                                            '<ul class="x-list-plain"><tpl for=".">',
11604
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
11605
                                            '</tpl></ul>'),
11606
                                        displayTpl: Ext.create('Ext.XTemplate',
11607
                                            '<tpl for=".">',
11608
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
11609
                                            '</tpl>')
11610
                                    },
11611
                                    renderer: function (value) {
11612
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
11613
                                        var index = store.find(valueField, value);
11614
                                        var val = "";
11615
                                        if (index != -1) {
11616
                                            var rc = store.getAt(index);
11617
                                            //val = rc.get(displayValue);
11618
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
11619
                                        } else {
11620
                                            val = value;
11621
                                        }
11622
                                        return val;
11623
                                    },
11624
                                    filter: {
11625
                                        type: 'list',
11626
                                        itemDefaults: {
11627
                                            emptyText: 'Search for...'
11628
                                        }
11629
                                    }
11630
                                });
11631
                            } else if (rec.SearchType == '2') {
11632
                                var triger = (rec.TriggerCombo).split('$');
11633
                                var targetField_ = triger[0];
11634
                                var fieldValue_ = triger[1];
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: 'minovalookupgrid',
11647
                                        readOnly: ReadOnly_,
11648
                                        isGrid: true,
11649
                                        fieldTarget: targetField_,
11650
                                        fieldValue: fieldValue_,
11651
                                        isGrid: true,
11652
                                        id: tableName + rec.FieldName,
11653
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11654
                                        triggerCls: 'x-form-search-trigger',
11655
                                        vtype: 'alphanum', // disable space
11656

    
11657
                                        listeners: {
11658
                                            change: function (val) {
11659
                                                var custumFunc = rec.SelectFunction;
11660
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11661
                                                    Ext.Ajax.request({
11662
                                                        async: false,
11663
                                                        method: 'POST',
11664
                                                        url: '/UserControl/GetStore',
11665
                                                        params: {
11666
                                                            tableName: 'PCMFUNC',
11667
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11668
                                                        },
11669
                                                        success: function (response) {
11670
                                                            var results = Ext.decode(response.responseText);
11671
                                                            data_ = results.data[0];
11672
                                                            if (data_ != undefined) {
11673
                                                                custumFunc = data_.FunctionCode;
11674
                                                            }
11675
                                                        }
11676
                                                    });
11677
                                                }
11678
                                                if (custumFunc) {
11679
                                                    eval(custumFunc)
11680
                                                }
11681
                                            }
11682
                                        }
11683
                                    }
11684
                                });
11685
                            } else if (rec.SearchType == '3') {
11686
                                cols.push({
11687
                                    text: rec.HeaderTitle,
11688
                                    hidden: Hidden_,
11689
                                    dataIndex: rec.FieldName,
11690
                                    filter: {
11691
                                        itemDefaults: {
11692
                                            emptyText: 'Search for...'
11693
                                        }
11694
                                    },
11695
                                    editor: {
11696
                                        allowBlank: null_,
11697
                                        // xtype: 'minovalookuptreePopup',
11698
                                        xtype: 'MinovaLookupTree',
11699
                                        readOnly: ReadOnly_,
11700
                                        id: tableName + rec.FieldName,
11701
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11702
                                        triggerCls: 'x-form-search-trigger',
11703
                                        vtype: 'alphanum', // disable space
11704
                                        treeSructure: rec.SearchFunction, //'O-O-P',
11705
                                        objClassValue: rec.ParamCombo, //'O',
11706
                                        listeners: {
11707
                                            change: function (val) {
11708
                                                var custumFunc = rec.SelectFunction;
11709
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11710
                                                    Ext.Ajax.request({
11711
                                                        async: false,
11712
                                                        method: 'POST',
11713
                                                        url: '/UserControl/GetStore',
11714
                                                        params: {
11715
                                                            tableName: 'PCMFUNC',
11716
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11717
                                                        },
11718
                                                        success: function (response) {
11719
                                                            var results = Ext.decode(response.responseText);
11720
                                                            data_ = results.data[0];
11721
                                                            if (data_ != undefined) {
11722
                                                                custumFunc = data_.FunctionCode;
11723
                                                            }
11724
                                                        }
11725
                                                    });
11726
                                                }
11727
                                                if (custumFunc) {
11728
                                                    eval(custumFunc)
11729
                                                }
11730
                                            }
11731
                                        }
11732
                                    }
11733
                                });
11734
                            } 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) {
11735
                                var triger = (rec.TriggerCombo).split('&');
11736
                                var targetField_ = triger[0];
11737
                                var fieldValue_ = triger[0];
11738
                                cols.push({
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 if (rec.SearchType == '4' && isLookup != true) {
11788
                                cols.push({
11789

    
11790
                                    text: rec.HeaderTitle,
11791
                                    hidden: Hidden_,
11792
                                    dataIndex: rec.FieldName,
11793
                                    filter: {
11794
                                        itemDefaults: {
11795
                                            emptyText: 'Search for...'
11796
                                        }
11797
                                    },
11798
                                    editor: {
11799
                                        allowBlank: null_,
11800
                                        xtype: 'lookupemployee',
11801
                                        readOnly: ReadOnly_,
11802
                                        isGrid: true,
11803
                                        fieldTarget: targetField_,
11804
                                        fieldValue: fieldValue_,
11805
                                        isGrid: true,
11806
                                        id: tableName + rec.FieldName,
11807
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
11808
                                        triggerCls: 'x-form-search-trigger',
11809
                                        vtype: 'alphanum', // disable space
11810
                                        listeners: {
11811
                                            change: function (val) {
11812
                                                var custumFunc = rec.SelectFunction;
11813
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
11814
                                                    Ext.Ajax.request({
11815
                                                        async: false,
11816
                                                        method: 'POST',
11817
                                                        url: '/UserControl/GetStore',
11818
                                                        params: {
11819
                                                            tableName: 'PCMFUNC',
11820
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
11821
                                                        },
11822
                                                        success: function (response) {
11823
                                                            var results = Ext.decode(response.responseText);
11824
                                                            data_ = results.data[0];
11825
                                                            if (data_ != undefined) {
11826
                                                                custumFunc = data_.FunctionCode;
11827
                                                            }
11828
                                                        }
11829
                                                    });
11830
                                                }
11831
                                                if (custumFunc) {
11832
                                                    eval(custumFunc)
11833
                                                }
11834
                                            }
11835
                                        }
11836
                                    }
11837
                                });
11838
                            } else {
11839
                                cols.push({
11840
                                    text: rec.HeaderTitle,
11841
                                    hidden: Hidden_,
11842
                                    dataIndex: rec.FieldName,
11843
                                    filter: {
11844
                                        itemDefaults: {
11845
                                            emptyText: 'Search for...'
11846
                                        }
11847
                                    },
11848
                                    editor: {
11849
                                        allowBlank: null_,
11850
                                        xtype: 'textfield',
11851
                                        readOnly: ReadOnly_,
11852
                                        id: tableName + rec.FieldName,
11853
                                        listeners: {
11854
                                            change: function (val) {
11855
                                                var custumFunc = null;
11856
                                                Ext.Ajax.request({
11857
                                                    async: false,
11858
                                                    method: 'POST',
11859
                                                    url: '/UserControl/GetStore',
11860
                                                    params: {
11861
                                                        tableName: 'SDATATABLEFIELD',
11862
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
11863
                                                    },
11864
                                                    success: function (response) {
11865
                                                        var results = Ext.decode(response.responseText);
11866
                                                        data_ = results.data[0];
11867
                                                        if (data_ != undefined) {
11868
                                                            custumFunc = data_.SelectFunction;
11869
                                                            //console.log(data_)
11870
                                                        }
11871
                                                    }
11872
                                                });
11873

    
11874
                                                if (custumFunc) {
11875
                                                    eval(custumFunc)
11876
                                                }
11877
                                            }
11878
                                        }
11879
                                    }
11880
                                });
11881
                            }
11882

    
11883
                            break
11884

    
11885
                    }
11886
                } else {
11887
                    cols.push({
11888
                        text: rec.HeaderTitle,
11889
                        hidden: Hidden_,
11890
                        dataIndex: rec.FieldName,
11891
                        hidden: true,
11892
                        editor: {
11893
                            allowBlank: true,
11894
                            xtype: 'textfield',
11895
                            readOnly: ReadOnly_,
11896
                            id: tableName + rec.FieldName,
11897
                        },
11898
                        filter: {
11899
                            itemDefaults: {
11900
                                emptyText: 'Search for...'
11901
                            }
11902
                        }
11903
                    });
11904
                }
11905
            });
11906
        };
11907

    
11908
        this.cellEditing = new Ext.grid.plugin.CellEditing({
11909
            clicksToEdit: 1
11910
        });
11911
        Ext.applyIf(me, {
11912
            items: [{
11913
                xtype: 'grid',
11914
                id: gridName,
11915
                name: gridName,
11916
                height: height,
11917
                //store: 'gridStore',
11918
                store: Ext.create('Ext.data.Store', {
11919
                    storeId: storeID,
11920
                    fields: fieldStore,
11921
                    proxy: {
11922
                        method: 'POST',
11923
                        type: 'ajax',
11924
                        url: '',
11925
                        reader: {
11926
                            type: 'json',
11927
                            root: 'data'
11928
                        }
11929
                    }
11930
                }),
11931
                viewConfig: {
11932
                    emptyText: 'No Data Display',
11933
                    deferEmptyText: false,
11934
                    //Add Nana For Autosize Column Mode
11935
                    listeners: {
11936
                        refresh: function (dataview) {
11937
                            Ext.each(dataview.panel.columns, function (column) {
11938
                                if (column.autoSizeColumn == false)
11939
                                    column.autoSizeColumn = true;
11940
                                column.autoSize();
11941
                                //dataview.store.reload();
11942
                            })
11943
                        }
11944
                    },
11945
                    render: function (comp) {
11946
                        comp.getStore().reload();
11947
                        console.log(comp);
11948
                    }
11949
                },
11950
                dockedItems: [{
11951
                    xtype: 'toolbar',
11952
                    items: [{
11953
                        text: 'Add',
11954
                        hidden: hide_,
11955
                        name: tableName + 'Add',
11956
                        iconCls: 'fa-plus-circle',
11957
                        style: 'font-family: FontAwesome',
11958
                        handler: function () {
11959
                            var store = Ext.StoreMgr.lookup(storeID)
11960
                            idx = store.getCount();
11961
                            var action = getParam('action');
11962
                            var data = '';
11963
                            var Sequence = 0;
11964
                            if (idx == 0) {
11965
                                Sequence = 1;
11966
                            } else {
11967
                                Sequence = 1 + idx;
11968
                            }
11969
                            data = {
11970
                                Sequence: Sequence
11971
                            };
11972

    
11973
                            store.insert(idx, data);
11974
                        }
11975

    
11976
                    }, {
11977
                        text: 'Delete',
11978
                        hidden: hide_,
11979
                        name: tableName + 'DeleteText',
11980
                        iconCls: 'fa-trash-o',
11981
                        style: 'font-family: FontAwesome',
11982
                        //disabled: true
11983
                        handler: function () {
11984
                            var me = this,
11985
                            store = Ext.StoreMgr.lookup(storeID)
11986

    
11987
                            var grid = Ext.getCmp(gridName);
11988

    
11989
                            Ext.MessageBox.show({
11990
                                title: 'Remove tab',
11991
                                msg: "This will remove. Do you want to continue?",
11992
                                buttons: Ext.MessageBox.YESNO,
11993
                                fn: function (choice) {
11994
                                    console.log(choice);
11995
                                    if (choice === 'yes') {
11996
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
11997
                                        if (selection) {
11998
                                            store.remove(selection);
11999
                                        }
12000
                                    }
12001
                                    //delete panel.pendingClose;
12002
                                }
12003
                            });
12004
                        }
12005

    
12006
                    }
12007
                    ]
12008
                }
12009
                ],
12010
                columns: cols,
12011
                selModel: {
12012
                    type: 'cellmodel'
12013
                },
12014
                plugins: [this.cellEditing],
12015
            }, ]
12016

    
12017
        });
12018

    
12019
        me.callParent(arguments);
12020
    }
12021
});
12022
//hamid200916
12023
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployeelama', {
12024
    extend: 'Ext.panel.Panel',
12025
    alias: 'widget.lookupemployeelama',
12026
	height: '35%',
12027
    requires: [
12028
		'Ext.data.*',
12029
		'Ext.grid.*',
12030
		'Ext.tree.*',
12031
		'Ext.ux.CheckColumn',
12032
		//'MinovaES.View.sample.samplepopupEMPID'
12033

    
12034
    ],
12035
    formname: undefined,
12036
    fieldname: undefined,
12037
    allowBlank: undefined,
12038
    width: undefined,
12039
    tableName: undefined,
12040
    //bodyStyle: 'padding-left: -20px; padding-bottom: -20px; padding-top: -20px; padding-right: -20px;',
12041
    //padding: '-40px',
12042
    //bodyStyle: 'margin:-20px;',
12043
    //margin: '-20 -20 -20 -20',
12044
    //fieldLabel: undefined,
12045
    //name: undefined,
12046
    //pnl: this.name,
12047
    initComponent: function () {
12048
        var me = this;
12049
        targetField_ = me.fieldname;
12050
        //var nameField_ = me.name;
12051
        //var panelform = this.pnl;
12052
        var nameField_ = me.fieldname;
12053
        var blank = me.allowBlank;
12054
        var width_ = me.width;
12055
        var tableName_ = me.tableName;
12056
        var panelform = "form" + me.name;
12057
        //var fieldLabel_ = me.fieldLabel;
12058
        Ext.applyIf(me, {
12059
            items: [{
12060
                xtype: 'form',
12061
                name: panelform,
12062
                items: [{
12063
                    xtype: 'fieldcontainer',
12064
                    layout: 'hbox',
12065
                    fieldLabel: me.fieldLabel,
12066
                    items: [{
12067
                        xtype: "triggerfield",
12068
                        name: nameField_,
12069
                        width: width_,
12070
                        //anchor: '50%',
12071
                        //editable: true,
12072
                        allowBlank: blank,
12073
                        triggerCls: 'x-form-search-trigger',
12074
                        onTriggerClick: function (e) {
12075
                            //var tableName_ = this.tableName;
12076
                            var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12077
                            var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12078
                            var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12079
                            var EmployeeID_ = EmployeeID.getValue();
12080
                            //var params = "EmployeeID[=]" + EmployeeID.getValue();
12081
                            //var Url = "sample?EmployeeID=" + EmployeeID.getValue();
12082
                            //window.open(Url, "_self");
12083
                            //var selection_ = selection.getValue();
12084
                            //var EmployeeSearch = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12085
                            //var lokup = EmployeeSearch.setValue(selection_);
12086

    
12087
                            var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12088
                            if (count_lookup == 1) {
12089
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12090
                                Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12091
                            } else {
12092
                                //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12093
                                Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12094
                                    //    tableName: tableName_,
12095

    
12096
                                    //}).show()
12097
                                    //_popUploadView.tableName = tableName_;
12098
                                    tableName: tableName_,
12099
                                    targetField: this.name,
12100
                                }).show()
12101
                            }
12102

    
12103
                            //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12104
                            //var a = _popUploadView.show();
12105
                            var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12106
                            text.setValue(EmployeeID_);
12107

    
12108
                            if (EmployeeID_ !== "") {
12109
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12110
                                var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12111
                                store.proxy.extraParams = {
12112
                                    tableName: tableName_, //'PDSEMP0002',
12113
                                    param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12114
                                };
12115
                                store.reload();
12116
                            }
12117
                        },
12118
                        listeners: {
12119
                            specialkey: function (f, e) {
12120
                                if (e.getKey() == e.ENTER) {
12121
                                    //alert("about to submit");
12122
                                    var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12123
                                    var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
12124
                                    var EmployeeID = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12125
                                    var EmployeeID_ = EmployeeID.getValue();
12126

    
12127
                                    var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
12128
                                    if (count_lookup == 1) {
12129
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
12130
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
12131
                                    } else {
12132
                                        Ext.create('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12133
                                            tableName: tableName_,
12134
                                            targetField: this.name,
12135
                                        }).show()
12136
                                        //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeQuickSearch");
12137
                                        //_popUploadView.targetField = this.name;
12138
                                        //_popUploadView.show();
12139

    
12140
                                    }
12141
                                    //var _popUploadView = Ext.create("MinovaES.view.sample.samplepopupEMPID");
12142
                                    //var a = _popUploadView.show();
12143
                                    var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12144
                                    text.setValue(EmployeeID_);
12145

    
12146
                                    if (EmployeeID_ !== "") {
12147
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12148
                                        var grid = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
12149
                                        store.proxy.extraParams = {
12150
                                            tableName: tableName_, //'PDSEMP0002',
12151
                                            param: 'EmpID_ExternalID_FullName[like]' + EmployeeID_
12152
                                        };
12153
                                        store.reload();
12154
                                    }
12155
                                    //myform.getForm().submit();
12156
                                }
12157
                            }
12158
                        }
12159

    
12160
                    }, {
12161
                        xtype: 'tbspacer',
12162
                        width: 5
12163
                    }, {
12164
                        xtype: 'button',
12165
                        name: nameField_,
12166
                        anchor: '50%',
12167
                        text: 'Advance',
12168
                        listeners: {
12169
                            click: function () {
12170
                                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEmployee]').length;
12171
                                if (count_lookup == 1) {
12172
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField = this.name;
12173
                                    Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].show();
12174
                                } else {
12175
                                    Ext.create('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12176
                                        tableName: tableName_,
12177
                                        targetField: this.name,
12178
                                    }).show()
12179
                                    //var _popUploadView = Ext.create("MinovaUtil.MinovaES.LookupEmployeeAdvance");
12180
                                    //_popUploadView.targetField = this.name;
12181
                                    //_popUploadView.show();
12182

    
12183
                                }
12184
                            }
12185
                        },
12186
                    }
12187
                    ]
12188
                }
12189
                ]
12190
            }
12191
            ]
12192
        });
12193
        me.callParent(arguments);
12194
    }
12195
});
12196

    
12197
Ext.define('MinovaUtil.MinovaES.LookupEmployeeQuickSearch', {
12198
    extend: 'Ext.window.Window',
12199
    alias: 'widget.popup_employeequicksearch',
12200
    requires: [
12201
		// 'MinovaES.controller.sample.ctrlsample',
12202
		//'MinovaES.store.data.TableType',
12203
    ],
12204
    //controller: 'ctrlsample',
12205
    height: '85%',
12206
    width: '42%',
12207
    minWidth: '50%',
12208
    maxWidth: '100%',
12209
    bodyPadding: 0,
12210
    formname: undefined,
12211
    //modal: true,
12212
    title: 'Lookup - EmployeeID',
12213
    name: 'popup_lookupEMPID',
12214
    test: undefined,
12215
    targetField: undefined,
12216
    tableName: undefined,
12217
    afterender: function () {
12218
        test = nameform;
12219
    },
12220
    initComponent: function () {
12221

    
12222
        var me = this;
12223
        var targetField_ = me.targetField;
12224
        var form = me.test;
12225
        var tableName_ = me.tableName;
12226
        Ext.applyIf(me, {
12227
            items: [{
12228
                xtype: 'form',
12229
                name: 'frmSearch',
12230
                width: '100%',
12231
                height: 'auto',
12232
                dockedItems: [{
12233
                    xtype: 'toolbar',
12234
                    dock: 'top',
12235
                    layout: 'vbox',
12236
                    bodyPadding: 10,
12237
                    border: 0,
12238
                    items: [{
12239
                        xtype: 'fieldset',
12240
                        layout: 'hbox',
12241
                        width: '100%',
12242
                        border: 0,
12243
                        padding: 0,
12244
                        items: [{
12245
                            xtype: 'textfield',
12246
                            name: 'EmployeeSearch',
12247
                            fieldLabel: 'Emp ID/ External ID/ Full Name',
12248
                            width: 475,
12249
                            labelWidth: 185,
12250
                            enableKeyEvents: true,
12251
                            listeners: {
12252
                                specialkey: function (f, e) {
12253
                                    if (e.getKey() == e.ENTER) {
12254
                                        var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12255
                                        var emp_ = emp.getValue();
12256
                                        var store = Ext.data.StoreManager.lookup('lookupEMPID');
12257
                                        var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12258
                                        store.proxy.extraParams = {
12259
                                            tableName: tableName_, //'PDSEMP0002',
12260
                                            param: 'EmpID_ExternalID_FullName[like]' + emp_
12261
                                        };
12262
                                        store.reload();
12263
                                    }
12264
                                }
12265
                            }
12266
                        }, {
12267
                            xtype: 'tbspacer',
12268
                            width: 5
12269
                        }, {
12270
                            xtype: 'button',
12271
                            name: 'Search',
12272
                            text: 'Search',
12273
                            handler: function () {
12274
                                var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
12275
                                var emp_ = emp.getValue();
12276
                                var store = Ext.data.StoreManager.lookup('lookupEMPID');
12277
                                var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
12278
                                store.proxy.extraParams = {
12279
                                    tableName: tableName_, //'PDSEMP0002',
12280
                                    param: 'EmpID_ExternalID_FullName[like]' + emp_
12281
                                };
12282
                                store.reload();
12283
                            },
12284

    
12285
                        }
12286
                        ]
12287
                    }
12288
                    ]
12289
                }
12290
                ],
12291
            }, {
12292
                items: [{
12293
                    xtype: "minovagrid1",
12294
                    name: "GridEmployeeID",
12295
                    storename: 'lookupEMPID',
12296
                    tableName: tableName_, //'PDSEMP0002',
12297
                    param: '',
12298
                    isLookup: true,
12299
                    pagesize: 25,
12300
                    height: 425,
12301
                    listeners: {
12302
                        beforeedit: function () {
12303
                            return false;
12304
                        },
12305
                        itemdblclick: function () {
12306
                            var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
12307
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12308
                            var Emp_ = selection.data.EmployeeID;
12309
                            //var formSelection = Ext.ComponentQuery.query('[name=' + form + ']')[0];
12310
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12311

    
12312
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
12313
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12314
                            //Ext.ComponentQuery.query('[name=EmployeeiD]')[0].setValue(selection.data.EmployeeID);;
12315
                            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
12316
                        }
12317
                    },
12318
                }, {
12319
                    xtype: 'pagingtoolbar',
12320
                    store: 'lookupEMPID',
12321
                    dock: 'bottom',
12322
                    displayInfo: true
12323
                }
12324
                ]
12325
            }
12326
            ]
12327
        });
12328
        me.callParent(arguments);
12329
    }
12330
});
12331
Ext.define('MinovaUtil.MinovaES.LookupEmployeeAdvance', {
12332
    extend: 'Ext.window.Window',
12333
    alias: 'widget.popup_employeeadvance',
12334
    requires: [
12335
		//'MinovaES.controller.sample.ctrlsample',
12336
		//'MinovaES.store.data.TableType',
12337
    ],
12338
    //controller: 'ctrlsample',
12339
    height: '85%',
12340
    width: '42%',
12341
    minWidth: '50%',
12342
    maxWidth: '100%',
12343
    bodyPadding: 10,
12344
    anchor: '50%',
12345
    formname: undefined,
12346
    //modal: true,
12347
    title: 'Lookup - EmployeeID',
12348
    name: 'popup_lookupEmployee',
12349
    test: undefined,
12350
    targetField: undefined,
12351
    tableName: undefined,
12352
    initComponent: function () {
12353
        var me = this;
12354
        var targetField_ = me.targetField;
12355
        var form = me.test;
12356
        var tableName_ = me.tableName;
12357
        Ext.applyIf(me, {
12358
            items: [{
12359
                xtype: 'form',
12360
                name: 'formlookup',
12361
                items: [{
12362
                    xtype: 'minovaform',
12363
                    name: 'frmlookup',
12364
                    tableName: tableName_, //'PDSEMP0001',
12365
                    param: '',
12366
                    isLookup: true,
12367
                    listeners: {
12368
                        onStockFormKeyPress: function (textfield, event, options) {
12369
                            if (event.getKey() == event.ENTER) {
12370
                                alert("test");
12371
                                //Ext.Msg.alert('Keys', 'You pressed the Enter key');
12372
                            }
12373
                        }
12374
                    },
12375
                    buttons: [{
12376
                        text: 'Search',
12377
                        //iconCls : 'fa-edit',
12378
                        //style : 'font-family: FontAwesome',
12379
                        listeners: {
12380
                            click: function () {
12381
                                var store = Ext.data.StoreManager.lookup('lookupStore');
12382
                                var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
12383
                                grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12384
                                var values_ = form.getValues();
12385
                                var fields_ = form.getFields().items;
12386
                                var param_ = '';
12387
                                for (var i = 0; i < fields_.length; i++) {
12388
                                    var val_ = form.getFields().items[i].getValue();
12389
                                    var xtype_ = form.getFields().items[i].xtype;
12390
                                    var oprator_ = '[like]';
12391
                                    if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
12392
                                        oprator_ = '[Equal]';
12393
                                    }
12394
                                    if (xtype_ == 'datefield') {
12395
                                        if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
12396
                                            oprator_ = '[LessThanEqual]';
12397
                                        } else {
12398
                                            oprator_ = '[GreaterThanEqual]';
12399
                                        }
12400
                                    }
12401
                                    if (val_ != 'undefined' && val_ != "" && val_ != null) {
12402
                                        param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
12403
                                    }
12404
                                }
12405
                                store.proxy.extraParams = {
12406
                                    tableName: grid.tableName,
12407
                                    param: param_
12408
                                };
12409
                                store.removeAll();
12410
                                store.reload();
12411
                                store.loadPage(1);
12412
                            },
12413

    
12414
                        }
12415
                    }
12416
                    ]
12417
                }, {
12418
                    xtype: 'minovagrid',
12419
                    name: 'gridlookup',
12420
                    minHeight: 320,
12421
                    height: 250,
12422
                    tableName: tableName_, //'PDSEMP0001',
12423
                    param: '',
12424
                    isLookup: true,
12425
                    storename: 'lookupStore',
12426
                    pagesize: 25,
12427
                    listeners: {
12428
                        beforeedit: function () {
12429
                            return false;
12430
                        },
12431
                        itemdblclick: function () {
12432
                            var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
12433
                            var selection = grid.getView().getSelectionModel().getSelection()[0];
12434
                            var Emp_ = selection.data.EmployeeID;
12435
                            //var formSelection = Ext.ComponentQuery.query('[name=EmployeeSelection]')[0];
12436
                            //formSelection.getForm().setValues(grid.getSelectionModel().getSelection()[0].data);
12437
                            var target = Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].targetField;
12438
                            Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
12439
                            Ext.ComponentQuery.query('[name=popup_lookupEmployee]')[0].hide();
12440

    
12441
                        }
12442
                    },
12443
                    dockedItems: [{
12444
                        xtype: 'pagingtoolbar',
12445
                        store: 'lookupStore',
12446
                        dock: 'bottom',
12447
                        displayInfo: true
12448
                    }
12449
                    ]
12450
                }
12451
                ]
12452
            }
12453
            ]
12454
        });
12455
        me.callParent(arguments);
12456
    }
12457
});
12458
//end hamid
12459

    
12460

    
12461
// lookup tree
12462
Ext.define('MinovaES.view.orm.lookup.minovalookuptreePopup', {
12463
    extend: 'Ext.window.Window',
12464
    alias: 'widget.minovalookuptreePopup',
12465
    requires: [
12466

    
12467
    ],
12468
    height: '50%',
12469
    width: '40%',
12470
    minWidth: '50%',
12471
    maxWidth: '100%',
12472
    bodyPadding: 5,
12473
    modal: true,
12474
    name: 'mainlookupTree',
12475
    objFilter: undefined,
12476
    treeSructure: undefined, // object relationship
12477
    objClassValue: undefined, // object yang akan di input ke field
12478
    formname: undefined, // nama form
12479
    targetField: undefined, // nama field yang akan diset value
12480
    //title:'judul',
12481
    bodyPadding: 0,
12482
    initComponent: function () {
12483
        var me = this;
12484
        var objFilter_ = me.objFilter;
12485
        var treeSructure_ = me.treeSructure;
12486
        var formname_ = me.formname;
12487
        var objClassValue_ = me.objClassValue;
12488
        var targetField_ = me.targetField;
12489
        var AllObjectClass = treeSructure_.split('-');
12490
        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0];
12491
        var StartDate_ = '';
12492
        if (form_) {
12493

    
12494
            if (form_.getForm().findField('StartDate')) {
12495
                StartDate_ = form_.getForm().findField('StartDate').getValue();
12496
            } else {
12497
                StartDate_ = MinovaUtil.GetNowDate();
12498
            }
12499

    
12500
        }
12501

    
12502
        Ext.applyIf(me, {
12503
            items: [{
12504
                //xtype : 'panel',
12505
                items: [{
12506
                    xtype: 'tabpanel',
12507
                    items: [{
12508

    
12509
                        xtype: 'form',
12510
                        title: 'Structured Search',
12511
                        height: '70%',
12512
                        tabConfig: {
12513
                            tooltip: 'Search by tree'
12514
                        },
12515
                        items: [{
12516
                            xtype: 'form',
12517
                            items: [{
12518

    
12519
                                xtype: 'treepanel',
12520
                                rootVisible: false,
12521
                                height: 400,
12522

    
12523
                                name: 'searchByTreePopUp',
12524
                                useArrows: true,
12525
                                animate: false,
12526
                                targetField: targetField_,
12527
                                formname: formname_,
12528
                                root: {
12529
                                    expanded: true,
12530
                                    nodeType: 'async',
12531
                                    ext: 'Favorites',
12532
                                    id: 'null'
12533
                                },
12534
                                listeners: {
12535
                                    afterrender: function (me_) {
12536
                                        me_.mask();
12537
                                        if (treeSructure_ != 'O-O-P') {
12538
                                            var countCol = me_.columns.length;
12539
                                            me_.columns[countCol - 1].setHidden(true);
12540

    
12541
                                        }
12542
                                        if (StartDate_ != '') {
12543
                                            var node = "root";
12544
                                            var ObjectClass_ = treeSructure_.split('-');
12545
                                            //Ext.Ajax.request({
12546
                                            //    method: 'POST',
12547
                                            //    async: false,
12548
                                            //    url: '/UserControl/GetStoreAuth',
12549
                                            //    params: {
12550
                                            //        tableName: "PHROM0001",
12551
                                            //        param: "ObjectClass[=]" + ObjectClass_[0],
12552
                                            //        menuId: MinovaUtil.GetMenuID()
12553
                                            //    },
12554
                                            //    success: function (response) {
12555
                                            //        var results = Ext.decode(response.responseText);
12556
                                            //        var data_ = results.data;
12557
                                            //        if (data_.length > 0 && data_.length == 1) {
12558
                                            //            node = ObjectClass_[0] + data_[0].ObjectID;
12559
                                            //        }
12560

    
12561
                                            //    }
12562
                                            //});
12563

    
12564
                                            Ext.Ajax.request({
12565
                                                async: false,
12566
                                                //url: '/ORM/GetRelObjectTreeAsync?node=' + node + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12567
                                                url: '/ORM/GetRelObjectTreeAsyncAuth?node=' + 'root' + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_ + '&ObjectClass=' + ObjectClass_[0] + '&MenuID=' + /*MinovaUtil.GetMenuID()*/'PM01',
12568
                                                success: function (response) {
12569
                                                    var results = Ext.decode(response.responseText);
12570
                                                    var data_ = results.results;
12571
                                                    //console.log(data_)
12572
                                                    var pnl = Ext.ComponentQuery.query('[name=searchByTreePopUp]')[0];
12573
                                                    pnl.store.setRootNode({
12574
                                                        expanded: true,
12575
                                                        nodetype: 'async',
12576
                                                        children: data_
12577
                                                        //[]
12578
                                                    });
12579
                                                }
12580
                                            });
12581

    
12582
                                        }
12583
                                        me_.unmask();
12584
                                    },
12585
                                    afteritemexpand: function (node, index, item, eOpts) {
12586
                                        var me = this;
12587
                                        var data_ = null;
12588
                                        var idx = 0;
12589
                                        var tree_ = Ext.ComponentQuery.query('treepanel[name=searchByTreePopUp]')[0];
12590
                                        var v = tree_.getView();
12591
                                        tree_.mask('Expanding tree...');
12592
                                        var main_ = Ext.ComponentQuery.query('[name=ORMMain]')[0];
12593
                                        Ext.Ajax.request({
12594
                                            async: false,
12595
                                            url: '/ORM/GetRelObjectTreeAsync?node=' + node.get('Id') + '&tree_struct_code=' + treeSructure_ + '&keyDate=' + StartDate_,
12596
                                            success: function (response) {
12597
                                                var results = Ext.decode(response.responseText);
12598
                                                data_ = results.results;
12599
                                                console.log(data_)
12600
												tree_.unmask(); //YN 20220418
12601
                                            }
12602
                                        });
12603

    
12604
                                        if (data_.length > 0) {
12605
                                            data_.forEach(function (rec) {
12606

    
12607
                                                //console.log(rec.Id)
12608
                                                if (v.store.data.find('Id', rec.Id) == null) {
12609
                                                    node.appendChild(data_[idx])
12610
                                                }
12611
                                                idx++;
12612
                                            })
12613
                                        }
12614

    
12615
										//YN 20220418
12616
                                        //setTimeout(function () {
12617

    
12618
                                            //tree_.unmask();
12619
                                        //}, 200);
12620

    
12621
                                    },
12622
                                    itemdblclick: function (this_, record, item, index, e, eOpts) {
12623
                                        var cek = false;
12624
                                        var class_ = objClassValue_;
12625
                                        var classDt = class_.split(']');
12626
                                        var classVal = "";
12627
                                        if (classDt.length == 1) {
12628
                                            classVal = classDt[0];
12629
                                        }
12630
                                        if (classDt.length > 1) {
12631
                                            classVal = classDt[1];
12632
                                        }
12633
                                        if (classVal == record.data.ObjectType) {
12634
                                            var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12635
                                            var type = 'rc';
12636
                                            if (form_.findField(targetField_).nameTable) {
12637
                                                type = form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase();
12638
                                            }
12639
                                            if (type != "rc") {
12640
                                                if (classVal == 'P' && (MinovaUtil.GetMenuID() == 'PA02' || MinovaUtil.GetMenuID() == 'ESS_MUTATION' || MinovaUtil.GetMenuID() == 'ESS_PROMOTION')) {
12641
                                                    // cek apakah posisis sudah di assign
12642
                                                    var hasil = null;
12643
                                                    Ext.Ajax.request({
12644
                                                        async: false,
12645
                                                        method: 'POST',
12646
                                                        url: '/UserControl/GetStore',
12647
                                                        params: {
12648
                                                            tableName: 'PHROM0002',
12649
                                                            param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[LessThanEqual]' + StartDate_ + ',EndDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectId
12650
                                                        },
12651
                                                        success: function (response) {
12652
                                                            var results = Ext.decode(response.responseText);
12653
                                                            //hasil = results.data[0].RelationshipObject;
12654
                                                            hasil = results.data.length;
12655
                                                            if (hasil == 0) {
12656
                                                                cek = true;
12657
                                                            } else {
12658
                                                                //Ext.Msg.show({
12659
                                                                //    title: 'Warning',
12660
                                                                //    message: MinovaMessageData('OM0001', ''),
12661
                                                                //    buttons: Ext.Msg.OK,
12662
                                                                //     fn: function (choice) {
12663
                                                                //        console.log(choice);
12664
                                                                //        if (choice === 'ok') {
12665
                                                                //        }
12666

    
12667
                                                                //    }
12668
                                                                //});
12669
                                                                //alert(MinovaMessageData('OM0001', ''))
12670
																MinovaMessageError("Position Occupied", "OM0001", "");
12671
                                                            }
12672
                                                            //count = hasil.length
12673
                                                        }
12674
                                                    });
12675
                                                } else {
12676
                                                    cek = true;
12677
                                                }
12678
                                            } else {
12679
                                                cek = true;
12680
                                            }
12681
                                        }
12682
                                        if (cek) {
12683
                                            // set value to form
12684
                                            var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12685
                                            form_.findField(targetField_).setValue('a');
12686
                                            form_.findField(targetField_).valData = 'a';
12687
                                            form_.findField(targetField_).setValue(record.data.Text);
12688
                                            form_.findField(targetField_).valData = record.data.ObjectId;
12689
                                            form_.findField(targetField_).focus();
12690
                                            if (form_.findField(targetField_).nextSibling()) {
12691
                                                form_.findField(targetField_).nextSibling().focus();
12692
                                            } else {
12693
                                                form_.findField(targetField_).blur();
12694
                                            }
12695
                                            Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12696
                                        }
12697

    
12698
                                    }
12699
                                },
12700

    
12701
                                columns: [{
12702
                                    xtype: 'treecolumn',
12703
                                    text: 'Organization Structure',
12704
                                    flex: 2,
12705
                                    sortable: true,
12706
                                    dataIndex: 'TextObject'
12707
                                }, {
12708
                                    text: 'Object ID',
12709
                                    flex: 1,
12710
                                    sortable: true,
12711
                                    dataIndex: 'ObjectId',
12712
                                }, {
12713
                                    text: 'Object Class',
12714
                                    flex: 1,
12715
                                    sortable: true,
12716
                                    dataIndex: 'ObjectType',
12717
                                }, {
12718
                                    text: 'Object Abbr',
12719
                                    flex: 1,
12720
                                    sortable: true,
12721
                                    dataIndex: 'TextObject',
12722
                                }, {
12723
                                    text: 'Start Date',
12724
                                    flex: 1,
12725
                                    sortable: true,
12726
                                    dataIndex: 'StartDate',
12727
                                }, {
12728
                                    text: 'End Date',
12729
                                    flex: 1,
12730
                                    sortable: true,
12731
                                    dataIndex: 'EndDate',
12732
                                }, {
12733
                                    xtype: 'actioncolumn',
12734
                                    text: 'Vacant Status',
12735
                                    flex: 1,
12736
                                    dataIndex: 'IsVacant',
12737
                                    sortable: true,
12738
                                    iconCls: 'fa-child',
12739
                                    renderer: function (value, metadata, record) {
12740
                                        if (record.data.ObjectType == "P") {
12741
                                            var Vacant = record.data.IsVacant;
12742
                                            if (!Vacant) {
12743
                                                metadata.tdStyle = 'font-family: FontAwesome';
12744
                                            }
12745

    
12746
                                        }
12747

    
12748
                                    },
12749
                                }
12750
                                ]
12751

    
12752
                            }
12753
                            ]
12754
                        }
12755
                        ]
12756
                    }, {
12757
                        title: 'Search by Object',
12758
                        height: 400,
12759
                        autoScroll: true,
12760
                        items: [{
12761
                            xtype: 'form',
12762
                            name: 'filterbyObj',
12763
                            margin: '5 5 5 5',
12764
                            buttons: [{
12765
                                text: 'Search',
12766
                                name: 'SearchAssign',
12767
                                handler: function () {
12768
                                    var storeGrid = Ext.StoreMgr.lookup("gridObj");
12769
                                    var form = Ext.ComponentQuery.query('[name=filterbyObj]')[0].getForm();
12770
                                    if (form.isValid()) {
12771
                                        var values_ = form.getValues();
12772
                                        storeGrid.proxy.url = '/ORM/SearchByObject?StartDate=' + values_.StartDate + "&EndDate=99991231" + "&ObjectID=" + values_.ObjectID + "&ObjectClass=" + values_.ObjectClass +
12773
                                            "&ObjectClassTarget=" + values_.ObjectClassTarget + "&ObjectDescription=" + values_.ObjectDescription +
12774
                                            "&Abbreviation=" + values_.Abbreviation + "&MenuID=" + MinovaUtil.GetMenuID() +
12775
                                            "&TreeStructCode=" + values_.TreeStructCode;
12776
                                        storeGrid.load({});
12777
                                        storeGrid.loadPage(1);
12778

    
12779
                                    }
12780

    
12781
                                }
12782
                            }
12783
                            ],
12784
                            items: [{
12785
                                xtype: "datefield",
12786
                                fieldLabel: "Date",
12787
                                name: 'StartDate',
12788
                                submitFormat: 'Ymd',
12789
                                format: 'd/m/Y',
12790
                                value: new Date(),
12791
                                anchor: '50%',
12792
                            }, {
12793
                                xtype: "hidden",
12794
                                fieldLabel: "Date",
12795
                                name: 'ObjectClass',
12796
                                value: AllObjectClass[0],
12797
                                anchor: '50%',
12798
                            }, {
12799
                                xtype: "hidden",
12800
                                fieldLabel: "Date",
12801
                                name: 'EndDate',
12802
                                value: '99991231',
12803
                                anchor: '50%',
12804
                            }, {
12805
                                xtype: "combobox",
12806
                                fieldLabel: "Object Class",
12807
                                name: 'ObjectClassTarget',
12808
                                allowBlank: false,
12809
                                anchor: '50%',
12810
                                displayField: 'desc',
12811
                                valueField: 'code',
12812
                                store: Ext.create('Ext.data.Store', {
12813
                                    storeId: 'storeYesNo',
12814
                                    fields: ['code', 'desc'],
12815
                                    data: [{
12816
                                        "desc": AllObjectClass[0],
12817
                                        "code": AllObjectClass[0]
12818
                                    }, {
12819
                                        "desc": AllObjectClass[2],
12820
                                        "code": AllObjectClass[2]
12821
                                    }
12822
                                    ]
12823
                                }),
12824
                                queryMode: 'local',
12825
                            }, {
12826
                                xtype: "textfield",
12827
                                fieldLabel: "Object ID",
12828
                                name: 'ObjectID',
12829
                                anchor: '50%',
12830
                            }, {
12831
                                xtype: "textfield",
12832
                                fieldLabel: "Object Description",
12833
                                name: 'ObjectDescription',
12834
                                anchor: '50%',
12835
                            }, {
12836
                                xtype: "textfield",
12837
                                fieldLabel: "Abbreviation",
12838
                                name: 'Abbreviation',
12839
                                anchor: '50%',
12840
                            }, {
12841
                                xtype: "hidden",
12842
                                fieldLabel: "MenuID",
12843
                                name: 'MenuID',
12844
                                anchor: '50%',
12845
                                value: MinovaUtil.GetMenuID()
12846
                            }, {
12847
                                xtype: "hidden",
12848
                                fieldLabel: "TreeStructCode",
12849
                                name: 'TreeStructCode',
12850
                                anchor: '50%',
12851
                                value: treeSructure_
12852
                            },
12853
                            ],
12854
                        }, {
12855
                            xtype: "minovagrid1",
12856
                            tableName: 'PDSBS0008',
12857
                            name: "gridbyObject",
12858
                            param: '',
12859
                            autoLoad: false,
12860
                            pagesize: 5,
12861
                            storename: 'gridObj',
12862
                            isLookup: true,
12863
                            height: 250,
12864
                            targetField: targetField_,
12865
                            formname: formname_,
12866
                            bodyPadding: 0,
12867
                            listeners: {
12868
                                afterrender: function (me_) {
12869
                                    if (treeSructure_ != 'O-O-P') {
12870
                                        var countCol = me_.columns.length;
12871
                                        me_.columns[countCol - 1].setHidden(true);
12872

    
12873
                                    }
12874
                                },
12875
                                itemdblclick: function (this_, record, item, index, e, eOpts) {
12876
                                    console.log(record.data);
12877
                                    var cek = false;
12878
                                    if (objClassValue_ == record.data.ObjectClass) {
12879
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12880
                                        if (form_.findField(targetField_).nameTable.substr(3, 2).toLowerCase() != "rc") {
12881
                                            if (objClassValue_ == 'P') {
12882
                                                // cek apakah posisis sudah di assign
12883
                                                var hasil = null;
12884
                                                Ext.Ajax.request({
12885
                                                    async: false,
12886
                                                    method: 'POST',
12887
                                                    url: '/UserControl/GetStore',
12888
                                                    params: {
12889
                                                        tableName: 'PHROM0002',
12890
                                                        param: 'ObjectClass[=]P,RelationshipDirectory[=]A,RelationshipClass[=]E,StartDate[GreaterThanEqual]' + StartDate_ + ',ObjectID[=]' + record.data.ObjectID
12891
                                                    },
12892
                                                    success: function (response) {
12893
                                                        var results = Ext.decode(response.responseText);
12894
                                                        //hasil = results.data[0].RelationshipObject;
12895
                                                        hasil = results.data.length;
12896
                                                        if (hasil == 0) {
12897
                                                            cek = true;
12898
                                                        }
12899
                                                        //count = hasil.length
12900
                                                    }
12901
                                                });
12902

    
12903
                                            } else {
12904
                                                cek = true;
12905
                                            }
12906
                                        } else {
12907
                                            cek = true;
12908
                                        }
12909
                                    }
12910
                                    if (cek) {
12911
                                        var form_ = Ext.ComponentQuery.query('[name=' + formname_ + ']')[0].getForm();
12912
                                        //form_.findField(targetField_).setValue(record.data.ObjectID);
12913
                                        //form_.findField(targetField_).valData = record.data.ObjectID + ' - ' + record.data.ObjectDescription;
12914
                                        form_.findField(targetField_).setValue('-');
12915
                                        form_.findField(targetField_).valData = '-';
12916
                                        form_.findField(targetField_).setValue(record.data.ObjectID);
12917
                                        form_.findField(targetField_).valData = record.data.ObjectID;
12918
                                        form_.findField(targetField_).setRawValue(record.data.ObjectID + ' - ' + record.data.ObjectDescription);
12919
                                        Ext.ComponentQuery.query('[name=' + targetField_ + 'lookUp' + ']')[0].destroy();
12920
                                    } else {
12921
                                        alert(MinovaMessageData('OM0001', ''))
12922
                                    }
12923
                                },
12924
                                beforeclick: function () {
12925
                                    return false;
12926
                                }
12927

    
12928
                            },
12929
                            dockedItems: [{
12930
                                xtype: 'pagingtoolbar',
12931
                                store: 'gridObj',
12932
                                dock: 'bottom',
12933
                                displayInfo: true
12934
                            }
12935

    
12936
                            ]
12937
                        },
12938
                        ]
12939

    
12940
                    }
12941
                    ]
12942

    
12943
                }
12944
                ]
12945
            },
12946
            ]
12947

    
12948
        });
12949
        me.callParent(arguments);
12950
    }
12951
});
12952

    
12953
Ext.define('MinovaUtil.MinovaES.MinovaLookupTree', {
12954
    extend: 'Ext.form.field.Trigger',
12955
    alias: ['widget.minovalookuptree', 'widget.MinovaLookupTree'],
12956
    treeSructure: undefined, // object relationship
12957
    objClassValue: undefined, // object yang akan di input ke field
12958
    formname: undefined, // nama form
12959
    targetField: undefined, // nama field yang akan diset value
12960
    initComponent: function () {
12961

    
12962
        this.callParent();
12963
    },
12964
    getValue: function () {
12965
        var me = this;
12966
        var hasil = '';
12967
        if (this.valData) {
12968
            hasil = this.valData.split('-')[0].replace(' ', '');
12969

    
12970
        } else {
12971
            if (me.rawValue != '' && me.rawValue != undefined) {
12972
                hasil = me.rawValue.split('-')[0].replace(' ', '');
12973
            }
12974
        }
12975

    
12976
        return hasil;
12977
    },
12978
    getSubmitValue: function () {
12979
        var me = this;
12980
        var hasil = '';
12981
        if (this.valData) {
12982
            hasil = this.valData.split('-')[0].replace(' ', '');
12983
        } else {
12984
            if (me.rawValue != '' && me.rawValue != undefined) {
12985
                hasil = me.rawValue.split('-')[0].replace(' ', '');
12986
            }
12987
        }
12988

    
12989
        return hasil;
12990
    },
12991
    onTriggerClick: function () {
12992
        var _treeSructure = this.treeSructure;
12993
        var _objClassValue = this.objClassValue;
12994
        var _formname = this.formname;
12995
        var _targetField = this.name;
12996
        var _fieldLabel = this.fieldLabel;
12997
        var _objFilter = this.objFilter;
12998
        var Mainform = Ext.ComponentQuery.query('[name=' + _formname + ']')[0];
12999
        var _StartDate = MinovaUtil.GetNowDate();
13000
        if (Mainform) {
13001
            if (Mainform.getForm().findField('StartDate')) {
13002
                _StartDate = Mainform.getForm().findField('StartDate').getValue();
13003
            }
13004
        }
13005
        //alert(treeSructure_ + ',' + objClassValue_ + ',' + formname_ + ',' + targetField_)
13006
        if (_StartDate != "") {
13007
            Ext.create('MinovaES.view.orm.lookup.minovalookuptreePopup', {
13008
                name: _targetField + 'lookUp',
13009
                treeSructure: _treeSructure, // object relationship
13010
                objClassValue: _objClassValue, // object yang akan di input ke field
13011
                formname: _formname, // nama form
13012
                targetField: _targetField,
13013
                objFilter: _objFilter,
13014
                title: 'Lookup ' + _fieldLabel
13015
            }).show()
13016
        } else {
13017
            MinovaMessage('', 'BS0001', 'Start Date', 'E')
13018
        }
13019

    
13020
    },
13021
});
13022

    
13023
Ext.define('MinovaUtil.MinovaES.LookupEmployee', {
13024
    extend: 'Ext.window.Window',
13025
    alias: 'widget.minovalookupemployee',
13026
    requires: [],
13027
    height: '35%',
13028
    width: '41%',
13029
    minWidth: '50%',
13030
    maxWidth: '100%',
13031
    bodyPadding: 0,
13032
    formname: undefined,
13033
    name: 'popup_lookupEMPID',
13034
    test: undefined,
13035
    vtype: 'validateMinovaXss',
13036
    targetField: undefined,
13037
    valueField: undefined,
13038
    tableName: undefined,
13039
    LookupFunction: undefined,
13040
    isGrid: undefined,
13041
    listeners: {
13042
        afterrender: function (f) {
13043
            f.setTitle('Lookup - ' + f.targetField);
13044
        }
13045
    },
13046
    initComponent: function () {
13047
        var me = this;
13048
        var targetField_ = me.targetField;
13049
        var valueField_ = me.valueField;
13050
        var form = me.test;
13051
        var tableName_ = me.tableName;
13052
        var isGrid = me.isGrid_;
13053
        var LookupFunction = me.LookupFunction;
13054
        param_ = null;
13055

    
13056
        var filterParam_ = me.filterParam;
13057
        if (tableName_ == "PDSRC0002") {
13058
            fieldLabel_ = 'App ID/ External ID/ Full Name';
13059
        } else {
13060
            fieldLabel_ = 'Emp ID/ External ID/ Full Name';
13061
        }
13062
        Ext.applyIf(me, {
13063
            items: [{
13064
                items: [{
13065
                    xtype: 'tabpanel',
13066
                    items: [{
13067
                        xtype: 'form',
13068
                        title: 'Quick Search',
13069
                        height: '70%',
13070
                        items: [{
13071
                            xtype: 'form',
13072
                            name: 'frmSearch',
13073
                            width: '100%',
13074
                            height: 'auto',
13075
                            dockedItems: [{
13076
                                xtype: 'toolbar',
13077
                                dock: 'top',
13078
                                layout: 'vbox',
13079
                                bodyPadding: 10,
13080
                                border: 0,
13081
                                items: [{
13082
                                    xtype: 'fieldset',
13083
                                    layout: 'hbox',
13084
                                    width: '100%',
13085
                                    border: 0,
13086
                                    padding: 0,
13087
                                    items: [{
13088
                                        xtype: 'textfield',
13089
                                        name: 'EmployeeSearch',
13090
                                        fieldLabel: fieldLabel_,
13091
                                        width: 470,
13092
                                        labelWidth: 185,
13093
                                        enableKeyEvents: true,
13094
                                        filterParam: filterParam_,
13095
                                        listeners: {
13096
                                            specialkey: function (f, e) {
13097
                                                if (e.getKey() == e.ENTER) {
13098
                                                    var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13099
                                                    var emp_ = emp.getValue();
13100
                                                    var store = Ext.data.StoreManager.lookup('storeQC');
13101
                                                    var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13102
                                                    if (tableName_ == 'PDSRC0002') {
13103
                                                        param_ = 'AppIDExternalIDFullName[like]' + emp_
13104
                                                    } else {
13105
                                                        param_ = 'EmpIDExternalIDFullName[like]' + emp_
13106
                                                    }
13107
                                                    if (this.filterParam) {
13108
                                                        param_ = param_ + ',' + this.filterParam_
13109
                                                    }
13110

    
13111
                                                    store.proxy.extraParams = {
13112
                                                        tableName: tableName_,
13113
                                                        param: param_,
13114
                                                        menuId: MinovaUtil.GetMenuID()
13115
                                                    };
13116
                                                    store.removeAll();
13117
                                                    store.reload();
13118
                                                    store.loadPage(1);
13119
                                                }
13120
                                            }
13121
                                        }
13122
                                    }, {
13123
                                        xtype: 'tbspacer',
13124
                                        width: 5
13125
                                    }, {
13126
                                        xtype: 'button',
13127
                                        name: 'Search',
13128
                                        text: 'Search',
13129
                                        filterParam: filterParam_,
13130
                                        handler: function () {
13131
                                            var emp = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13132
                                            var emp_ = emp.getValue();
13133
                                            var store = Ext.data.StoreManager.lookup('storeQC');
13134
                                            var grid = Ext.ComponentQuery.query('[name=EmployeeID]')[0];
13135

    
13136
                                            if (tableName_ == 'PDSRC0002') {
13137
                                                param_ = 'AppIDExternalIDFullName[like]' + emp_
13138
                                            } else {
13139
                                                param_ = 'EmpIDExternalIDFullName[like]' + emp_
13140
                                            }
13141
                                            if (this.filterParam) {
13142
                                                param_ = param_ + ',' + this.filterParam
13143
                                            }
13144
                                            store.proxy.extraParams = {
13145
                                                tableName: tableName_,
13146
                                                param: param_,
13147
                                                menuId: MinovaUtil.GetMenuID()
13148
                                            };
13149
                                            store.removeAll();
13150
                                            store.reload();
13151
                                            store.loadPage(1);
13152
                                        }
13153
                                    }
13154
                                    ]
13155
                                }
13156
                                ]
13157
                            }
13158
                            ]
13159
                        }, {
13160
                            items: [{
13161
                                xtype: "minovagrid1",
13162
                                name: "GridEmployeeID",
13163
                                storename: 'storeQC',
13164
                                tableName: tableName_,
13165
                                param: '',
13166
                                isLookup: true,
13167
                                pagesize: 25,
13168
                                height: 398,
13169
                                LookupFunction: LookupFunction,
13170
                                valueField: valueField_,
13171
                                targetField: targetField_,
13172
                                isGrid: true,
13173
                                listeners: {
13174
                                    beforeedit: function () {
13175
                                        return false;
13176
                                    },
13177
                                    itemdblclick: function () {
13178
                                        var grid = Ext.ComponentQuery.query('[name=GridEmployeeID]')[0];
13179
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
13180
                                        var Emp_ = selection.data.EmployeeID;
13181
                                        LookupFunction = this.LookupFunction;
13182
                                        eval(LookupFunction);
13183
                                        var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13184
                                        Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13185
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13186
                                    }
13187
                                },
13188
                            }, {
13189
                                xtype: 'pagingtoolbar',
13190
                                store: 'storeQC',
13191
                                dock: 'bottom',
13192
                                displayInfo: true
13193
                            }
13194
                            ]
13195
                        }
13196
                        ]
13197
                    }, {
13198
                        title: 'Advance Search',
13199
                        items: [{
13200
                            xtype: 'form',
13201
                            name: 'formlookup',
13202
                            items: [{
13203
                                xtype: 'minovaform',
13204
                                name: 'frmlookup',
13205
                                tableName: tableName_,
13206
                                param: filterParam_,
13207
                                isLookup: true,
13208
                                listeners: {
13209
                                    onStockFormKeyPress: function (textfield, event, options) {
13210
                                        if (event.getKey() == event.ENTER) {
13211
                                            alert("test");
13212
                                        }
13213
                                    }
13214
                                },
13215
                                buttons: [{
13216
                                    text: 'Search',
13217
                                    filterParam: filterParam_,
13218
                                    listeners: {
13219
                                        click: function () {
13220
                                            var store = Ext.data.StoreManager.lookup('storeadvance');
13221
                                            var form = Ext.ComponentQuery.query('[name=formlookup]')[0].getForm();
13222
                                            grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13223
                                            var values_ = form.getValues();
13224
                                            var fields_ = form.getFields().items;
13225
                                            var param_ = '';
13226
                                            for (var i = 0; i < fields_.length; i++) {
13227
                                                var val_ = form.getFields().items[i].getValue();
13228
                                                var xtype_ = form.getFields().items[i].xtype;
13229
                                                var oprator_ = '[like]';
13230
                                                if (xtype_ == 'combobox' || xtype_ == 'combo' || xtype_ == 'minovacombo' || xtype_ == 'minovacombobox') {
13231
                                                    oprator_ = '[Equal]';
13232
                                                }
13233
                                                if (xtype_ == 'datefield') {
13234
                                                    if (form.getFields().items[i].name == 'StartDate' || form.getFields().items[i].name == 'ValidForm') {
13235
                                                        oprator_ = '[LessThanEqual]';
13236
                                                    } else {
13237
                                                        oprator_ = '[GreaterThanEqual]';
13238
                                                    }
13239
                                                }
13240
                                                if (val_ != 'undefined' && val_ != "" && val_ != null) {
13241
                                                    param_ = param_ + ',' + form.getFields().items[i].name + oprator_ + val_;
13242
                                                }
13243
                                            }
13244
                                            if (this.filterParam_) {
13245
                                                param_ = param_ + ',' + this.filterParam_
13246
                                            }
13247
                                            store.proxy.extraParams = {
13248
                                                tableName: grid.tableName,
13249
                                                param: param_,
13250
                                                menuId: MinovaUtil.GetMenuID()
13251
                                            };
13252
                                            store.removeAll();
13253
                                            store.reload();
13254
                                            store.loadPage(1);
13255
                                        },
13256

    
13257
                                    }
13258
                                }
13259
                                ]
13260
                            }, {
13261
                                xtype: 'minovagrid1', // update by hamid 20170208
13262
                                name: 'gridlookup',
13263
                                minHeight: 312,
13264
                                height: 290,
13265
                                tableName: tableName_, //'PDSEMP0001',
13266
                                param: '',
13267
                                isLookup: true,
13268
                                storename: 'storeadvance',
13269
                                pagesize: 25,
13270
                                valueField: valueField_,
13271
                                targetField: targetField_,
13272
                                hidebutton: 0, // update by hamid 20170208
13273
                                isGrid: true,
13274
                                listeners: {
13275
                                    beforeedit: function () {
13276
                                        return false;
13277
                                    },
13278
                                    itemdblclick: function () {
13279
                                        var grid = Ext.ComponentQuery.query('[name=gridlookup]')[0];
13280
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
13281
                                        var Emp_ = selection.data.EmployeeID;
13282
                                        LookupFunction = this.LookupFunction;
13283
                                        eval(LookupFunction);
13284
                                        var target = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField;
13285
                                        Ext.ComponentQuery.query('[name=' + target + ']')[0].setValue(Emp_);
13286
                                        Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].hide();
13287
                                    }
13288
                                },
13289
                                dockedItems: [{
13290
                                    xtype: 'pagingtoolbar',
13291
                                    store: 'storeadvance',
13292
                                    dock: 'bottom',
13293
                                    displayInfo: true
13294
                                }
13295
                                ]
13296
                            }
13297
                            ]
13298

    
13299
                        }
13300
                        ]
13301

    
13302
                    }
13303
                    ]
13304

    
13305
                }
13306
                ]
13307
            }
13308
            ]
13309
        });
13310
        me.callParent(arguments);
13311
    }
13312
});
13313

    
13314
Ext.define('MinovaUtil.MinovaES.MinovaLookupEmployee', {
13315
    extend: 'Ext.form.field.Trigger',
13316
    alias: 'widget.lookupemployee',
13317
	height: '35%',
13318
    formname: undefined,
13319
    fieldname: undefined,
13320
    allowBlank: undefined,
13321
    width: undefined,
13322
    tableName: undefined,
13323
    LookupFunction: undefined,
13324
    targetField: undefined,
13325
    vtype: 'validateMinovaXss',
13326
    fieldValue: undefined,
13327
    initComponent: function () {
13328

    
13329
        this.callParent();
13330
    },
13331
    onTriggerClick: function () {
13332
        var nameField_ = this.fieldname;
13333
        var blank = this.allowBlank;
13334
        var width_ = this.width;
13335
        var tableName_ = this.tableName;
13336
        var panelform = "form" + this.name;
13337
        //add filer by atin
13338
        var filterParam_ = this.filterParam;
13339
        // and add by atin
13340
        var _targetField = this.name;
13341
        if (this.targetField) {
13342
            _targetField = targetField
13343
        }
13344
        var fieldValue_ = this.fieldValue;
13345
        var _fieldLabel = this.fieldLabel;
13346

    
13347
        //var tableName_ = this.tableName;
13348
        var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13349
        var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13350
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13351
        var EmployeeID_ = EmployeeID.getValue();
13352
        var LookupFunction = this.LookupFunction;
13353
        var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13354
        if (count_lookup == 1) {
13355
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13356
            Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13357
        } else {
13358
            Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13359
                tableName: tableName_,
13360
                targetField: this.name,
13361
                fieldValue: fieldValue_,
13362
                LookupFunction: LookupFunction,
13363
                filterParam: filterParam_,
13364
            }).show()
13365
        }
13366
        var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13367
        text.setValue(EmployeeID_);
13368
        var store = Ext.data.StoreManager.lookup('storeQC');
13369
        if (EmployeeID_ !== "") {
13370

    
13371
            var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13372
            if (tableName_ == 'PDSEMP0002') {
13373
                param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13374
            } else {
13375
                param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13376
            }
13377
            if (filterParam_) {
13378
                param_ = param_ + ',' + filterParam_;
13379
            }
13380
            store.proxy.extraParams = {
13381
                tableName: tableName_, //'PDSEMP0002',
13382
                param: param_,
13383
                menuId: MinovaUtil.GetMenuID()
13384
            };
13385
            store.reload();
13386
        } else {
13387
            store.proxy.extraParams = {
13388
                tableName: tableName_, //'PDSEMP0002',
13389
                param: filterParam_,
13390
                menuId: MinovaUtil.GetMenuID()
13391
            };
13392
            store.reload();
13393
        }
13394

    
13395
    },
13396
    listeners: {
13397
        specialkey: function (f, e) {
13398
            if (e.getKey() == e.ENTER) {
13399
                //alert("about to submit");
13400
                var nameField_ = this.fieldname;
13401
                var blank = this.allowBlank;
13402
                var width_ = this.width;
13403
                var tableName_ = this.tableName;
13404
                var panelform = "form" + this.name;
13405
                //add filer by atin
13406
                var filterParam = this.filterParam;
13407
                // and add by atin
13408
                var _targetField = this.name;
13409
                var _fieldLabel = this.fieldLabel;
13410
                var count_lookup = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13411
                var lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0];
13412
                var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13413
                var EmployeeID_ = EmployeeID.getValue();
13414

    
13415
                var popup_lookupEMPID = Ext.ComponentQuery.query('[name=popup_lookupEMPID]').length;
13416
                if (count_lookup == 1) {
13417
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].targetField = this.name;
13418
                    Ext.ComponentQuery.query('[name=popup_lookupEMPID]')[0].show();
13419
                } else {
13420
                    Ext.create('MinovaUtil.MinovaES.LookupEmployee', {
13421
                        tableName: tableName_,
13422
                        targetField: this.name,
13423
                        fieldValue: this.fieldValue,
13424
                        LookupFunction: this.LookupFunction,
13425
                        filterParam: filterParam,
13426
                    }).show()
13427
                }
13428
                var text = Ext.ComponentQuery.query('[name=EmployeeSearch]')[0];
13429
                text.setValue(EmployeeID_);
13430

    
13431
                if (EmployeeID_ !== "") {
13432
                    var store = Ext.data.StoreManager.lookup('storeQC');
13433
                    var grid = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13434
                    if (tableName_ == 'PDSEMP0002') {
13435
                        param_ = 'EmpIDExternalIDFullName[like]' + EmployeeID_
13436
                    } else {
13437
                        param_ = 'AppIDExternalIDFullName[like]' + EmployeeID_
13438
                    }
13439
                    if (filterParam_) {
13440
                        param_ = param_ + ',' + filterParam_;
13441
                    }
13442
                    store.proxy.extraParams = {
13443
                        tableName: tableName_, //'PDSEMP0002',
13444
                        param: param_,
13445
                        menuId: MinovaUtil.GetMenuID()
13446
                    };
13447
                    store.reload();
13448
                }
13449
            }
13450
        }
13451
    }
13452

    
13453
});
13454
Ext.define('MinovaUtil.MinovaES.UploadFile', {
13455
    extend: 'Ext.form.field.Trigger',
13456
    alias: 'widget.uploadfile',
13457

    
13458
    //fieldLabel: undefined,
13459
    uploadName: 'uploadName',
13460
    formname: undefined,
13461
    fieldname: undefined,
13462
    allowBlank: undefined,
13463
    width: undefined,
13464
    tableName: undefined,
13465
    initComponent: function () {
13466

    
13467
        this.callParent();
13468
    },
13469
    onTriggerClick: function () {
13470
        var nameField_ = this.fieldname;
13471
        var blank = this.allowBlank;
13472
        var width_ = this.width;
13473
        var tableName_ = this.tableName;
13474
        var panelform = "form" + this.name;
13475
        var val_ = this.value;
13476
        var _targetField = this.name;
13477
        var _fieldLabel = this.fieldLabel;
13478

    
13479
        //var tableName_ = this.tableName;
13480
        var count_lookup = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13481
        var lookupEMPID = Ext.ComponentQuery.query('[name=FormFileUpload]')[0];
13482
        var EmployeeID = Ext.ComponentQuery.query('[name=' + _targetField + ']')[0];
13483
        var EmployeeID_ = EmployeeID.getValue();
13484

    
13485
        var FormFileUpload = Ext.ComponentQuery.query('[name=FormFileUpload]').length;
13486
        Ext.create('MinovaES.view.uploadfile.fileupload', {
13487
            tableName: tableName_,
13488
            targetField: this.name,
13489
            valueFile: val_,
13490
            titleLookup: _fieldLabel,
13491
        }).show()
13492

    
13493
    }
13494

    
13495
});
13496

    
13497
//atien
13498
Ext.define('MinovaES.view.uploadfile.fileupload', {
13499
    extend: 'Ext.window.Window',
13500
    alias: 'widget.fileupload',
13501
    requires: [
13502

    
13503
    ],
13504
    //height: '67%',
13505
    width: '35%',
13506
    minWidth: '50%',
13507
    maxWidth: '100%',
13508
    bodyPadding: 0,
13509
    formname: undefined,
13510
    fieldname: undefined,
13511
    modal: true,
13512
    title: 'Upload ',
13513
    name: 'FormLookup',
13514
    test: undefined,
13515
    targetField: undefined,
13516
    tableName: undefined,
13517
    listeners: {
13518
        afterrender: function (f) {
13519
            f.setTitle('Upload ' + f.titleLookup);
13520
            var id_ = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0];
13521
            if (id_) {
13522
                var valID = id_.getValue();
13523
                Ext.ComponentQuery.query('textfield[name=FileID_]')[0].setValue(valID);
13524
            }
13525
        },
13526
    },
13527
    initComponent: function () {
13528
        var me = this;
13529
        var targetField_ = me.targetField;
13530
        var titleLookup_ = me.titleLookup;
13531
        var maxFileSize = me.maxFileSize;
13532
        var fileName = me.valueFile;
13533
        Ext.applyIf(me, {
13534
            items: [{
13535
                xtype: 'form',
13536
                name: 'FormFileUpload',
13537
                valueFile: fileName,
13538
                buttons: [{
13539
                    xtype: 'button',
13540
                    iconCls: 'fa-upload',
13541
                    style: 'font-family: FontAwesome',
13542
                    text: 'Upload',
13543
                    action: 'Upload',
13544
                    name: 'Upload',
13545
                    handler: function () {
13546
                        maxFileSize = Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].maxFileSize;
13547
                        Ext.ComponentQuery.query('[name=FileMax]')[0].setValue(maxFileSize);
13548
                        var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13549
                        pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0]; // by hamid 20170206
13550
                        if (form.isValid()) {
13551
                            form.submit({
13552
                                url: '/Devt/UploadFile',
13553
                                waitMsg: 'Uploading your file...',
13554
                                success: function (fp, o) {
13555
                                    var result = o.result;
13556
                                    Ext.ComponentQuery.query('uploadfile[name=' + targetField_ + ']')[0].setValue(result.FileName);
13557
                                    Ext.ComponentQuery.query('[name=FormFileUpload]')[0].valueFile = result.FileName;
13558
                                    Ext.ComponentQuery.query('[name=download]')[0].fileName = result.FileName;
13559
                                    var fileID = Ext.ComponentQuery.query('minovanumberfield[name=FileID]')[0]
13560
                                    if (fileID) {
13561
                                        fileID.setValue(result.ID);
13562
                                    }
13563

    
13564
                                    if (result.msg === "") {
13565
                                        if (me.onSuccess !== undefined)
13566
                                            me.onSuccess(result.FileName, result.content_type);
13567
                                        pnl.destroy(); // by hamid 20170206
13568
                                    } else
13569
                                        alert(result.msg);
13570
										
13571
									//by Agung 20200428
13572
									Ext.ComponentQuery.query('[name=FORMPHRUPLOADFILE]')[0].getForm().findField('FileID').setValue(result.ID);
13573
									Ext.ComponentQuery.query('[name=FORMPHRUPLOADFILE]')[0].getForm().findField('FileName').setValue(result.FileName);
13574
                                }
13575
                            });
13576
                        }
13577
                    }
13578
                }, {
13579
                    xtype: 'button',
13580
                    text: 'Clear',
13581
                    width: 60,
13582
                    handler: function () {
13583
                        //Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13584
                        Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(''); // by hamid 20170206
13585
                    }
13586
                }, {
13587
                    xtype: 'button',
13588
                    text: 'Download',
13589
                    name: 'download',
13590
                    width: 60,
13591
                    fileName: fileName,
13592
                    handler: function (f) {
13593
                        var url = '/Devt/GetFileData?FileName=' + f.fileName + '&download=true';
13594
                        window.open(url, '_blank');
13595
                    }
13596
                    //href: '/Devt/GetFileData?FileName=' + me.valueFile + '&download=true',
13597

    
13598
                }
13599
                ],
13600
                items: [{
13601
                    xtype: 'filefield',
13602
                    name: 'File',
13603
                    fieldLabel: 'Select File',
13604
                    //allowBlank: false,
13605
                    //width: 270,
13606
                    //labelWidth: 85,
13607
                }, {
13608
                    xtype: 'textfield',
13609
                    name: 'FileID_',
13610
                    hidden: true,
13611
                }, {
13612
                    xtype: 'textfield',
13613
                    name: 'FileMax',
13614
                    hidden: true,
13615
                }
13616
                ]
13617
            }
13618
            ]
13619
        });
13620
        me.callParent(arguments);
13621
    }
13622
});
13623
//atien
13624

    
13625

    
13626
//update by hamid 12012017
13627
Ext.define('MinovaES.view.uploadfile.fileupload1', {
13628
    extend: 'Ext.window.Window',
13629
    alias: 'widget.fileupload1',
13630
    requires: [
13631

    
13632
    ],
13633
    height: '67%',
13634
    width: '21%',
13635
    minWidth: '50%',
13636
    maxWidth: '100%',
13637
    bodyPadding: 0,
13638
    formname: undefined,
13639
    fieldname: undefined,
13640
    //modal: true,
13641
    title: 'Lookup - Photo',
13642
    name: 'FormLookup',
13643
    test: undefined,
13644
    targetField: undefined,
13645
    tableName: undefined,
13646
    initComponent: function () {
13647
        var me = this;
13648
        var targetField_ = me.targetField;
13649
        var nameField_ = this.fieldname;
13650
        var form = me.test;
13651
        var tableName_ = me.tableName;
13652
        //var img_ = Ext.ComponentQuery.query('[name=Photo]')[0].getValue()
13653
        var img_ = Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0];
13654
        Ext.applyIf(me, {
13655
            // items: [{
13656
            //xtype : 'panel',
13657
            items: [{
13658
                xtype: 'tabpanel',
13659
                //name: 'mainTab',
13660
                items: [{
13661
                    xtype: 'form',
13662
                    title: 'Upload File',
13663
                    height: '70%',
13664
                    name: 'FormFileUpload',
13665
                    buttons: [{
13666
                        xtype: 'button',
13667
                        iconCls: 'fa-upload',
13668
                        style: 'font-family: FontAwesome',
13669
                        text: 'Upload',
13670
                        action: 'Upload',
13671
                        name: 'Upload',
13672
                        handler: function () {
13673
                            //var Tab = Ext.ComponentQuery.query('[name=mainTab]')[0].getActiveTab();
13674
                            var form = Ext.ComponentQuery.query('form[name=FormFileUpload]')[0].getForm();
13675
                            pnl = Ext.ComponentQuery.query('[name=FormLookup]')[0];
13676
                            if (form.isValid()) {
13677
                                form.submit({
13678
                                    url: '/Devt/UploadFile',
13679
                                    waitMsg: 'Uploading your file...',
13680
                                    success: function (fp, o) {
13681
                                        var result = o.result;
13682
                                        Ext.ComponentQuery.query('[name=' + targetField_ + ']')[0].setValue(result.FileName)
13683
                                        //Ext.ComponentQuery.query('[name=Photo]')[0].setValue(result.FileName)
13684
                                        if (result.msg === "") {
13685
                                            //alert('success');
13686
                                            if (me.onSuccess !== undefined)
13687
                                                me.onSuccess(result.FileName, result.content_type);
13688
                                            pnl.destroy();
13689
                                        } else
13690
                                            alert(result.msg);
13691
                                    }
13692
                                });
13693
                            }
13694
                        }
13695
                    }, {
13696
                        xtype: 'button',
13697
                        text: 'Clear',
13698
                        width: 60,
13699
                        handler: function () {
13700
                            Ext.ComponentQuery.query('[name=' + nameField_ + ']')[0].setValue('');
13701
                            //Ext.ComponentQuery.query('[name=Photo]')[0].setValue('');
13702

    
13703
                        }
13704
                    }
13705
                    ],
13706
                    items: [{
13707
                        xtype: 'fieldset',
13708
                        layout: 'hbox',
13709
                        width: '100%',
13710
                        bodyPadding: 10,
13711
                        border: 0,
13712
                        padding: 0,
13713
                        items: [{
13714
                            xtype: 'filefield',
13715
                            name: 'File',
13716
                            fieldLabel: 'Select File',
13717
                            //allowBlank: false,
13718
                            width: 270,
13719
                            labelWidth: 85,
13720
                        }
13721
                        ]
13722
                    }
13723
                    ]
13724
                    //items: [{
13725
                    //    xtype: 'form',
13726
                    //    name: 'Photo',
13727
                    //    width: '100%',
13728
                    //    height: 'auto',
13729
                    //    dockedItems: [{
13730
                    //        xtype: 'toolbar',
13731
                    //        dock: 'top',
13732
                    //        layout: 'vbox',
13733
                    //        bodyPadding: 10,
13734
                    //        border: 0,
13735
                    //        items: [{
13736
                    //            xtype: 'fieldset',
13737
                    //            layout: 'hbox',
13738
                    //            width: '100%',
13739
                    //            border: 0,
13740
                    //            padding: 0,
13741
                    //            items: [{
13742
                    //                xtype: 'filefield',
13743
                    //                name: 'SelectFile',
13744
                    //                fieldLabel: 'Select File',
13745
                    //                width: 270,
13746
                    //                labelWidth: 85,
13747
                    //                enableKeyEvents: true,
13748
                    //                buttonText: 'Browse',
13749
                    //            }]
13750

    
13751
                    //        }
13752
                    //        ]
13753
                    //    }
13754
                    //    ]
13755
                    //}]
13756
                }, {
13757
                    title: 'View Image',
13758
                    //height: 400,
13759
                    //autoScroll: true,
13760
                    items: [{
13761
                        xtype: 'form',
13762
                        name: 'ViewImage',
13763
                        //margin: '5 5 5 5',
13764
                        items: [{
13765
                            xtype: 'form',
13766
                            buttons: [{
13767
                                text: 'Download',
13768
                                handler: function () {},
13769
                                href: '/Devt/GetFileData?FileName=' + img_ + '&download=true'
13770

    
13771
                            }
13772
                            ],
13773
                            items: [{
13774
                                xtype: 'image',
13775
                                //id: 'imageuser',
13776
                                src: '/Devt/GetFileData?FileName=' + img_ + '&download=false'
13777
                            },
13778
                            ]
13779
                        }
13780
                        ]
13781

    
13782
                    }
13783
                    ]
13784

    
13785
                }
13786
                ]
13787

    
13788
            }
13789
            ]
13790

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

    
13796
Ext.define('MinovaUtil.MinovaES.Column.MinovaPictureColumn', {
13797
    extend: 'Ext.grid.column.Column',
13798
    alias: ['widget.minovapicturecolumn'],
13799
    alternateClassName: 'Ext.grid.MinovaPictureColumn',
13800
    //undefinedText: '&#160;',
13801
    defaultRenderer: function (value) {
13802
        return '<img alt="" class="icon-imagecolumn" src = "/Devt/GetFileData?FileName=' + value + '&download=false"  id="">'
13803
    }
13804
});
13805

    
13806
Ext.define('MinovaUtil.MinovaES.MinovaFixValue', {
13807
    extend: 'Ext.form.field.ComboBox',
13808
    alias: ['widget.MinovaFixValue', 'widget.minovafixvalue'],
13809
    fixedValue: undefined,
13810
    anchor: '50%',
13811
    queryMode: 'local',
13812
    forceSelection: true, // cek data
13813
    getValue: function () {
13814
        var value = this.value;
13815

    
13816
        return value;
13817
    },
13818
    getSubmitValue: function () {
13819
        var value = this.value;
13820

    
13821
        return value;
13822
    },
13823
    initComponent: function () {
13824
        var me = this;
13825
        var storeData = [];
13826
        //var str= "y=yes|| n=no";
13827
        var str = me.fixedValue;
13828
        var hasil = str.split('||');
13829
        hasil.forEach(function (h) {
13830
            store_ = h.split('=')
13831
            storeData.push({
13832
                code: store_[0],
13833
                desc: store_[1],
13834

    
13835
            });
13836
        });
13837
        Ext.applyIf(me, {
13838

    
13839
            store: Ext.create('Ext.data.Store', {
13840
                storeId: 'store' + name,
13841
                autoLoad: true,
13842
                data: storeData
13843

    
13844
            }),
13845
        });
13846
        me.callParent(arguments);
13847
    }
13848
});
13849

    
13850
Ext.define('MinovaUtil.MinovaES.MinovaDecimal', {
13851
    extend: 'Ext.form.field.Text',
13852
    alias: ['widget.MinovaDecimal', 'widget.minovadecimal'],
13853
    fixedValue: undefined,
13854
    anchor: '50%',
13855
    getValue: function () {
13856
        var value = this.value;
13857

    
13858
        return value.replace(',', '.');
13859
    },
13860
    getSubmitValue: function () {
13861
        var value = this.value;
13862
        return value.replace(',', '.');
13863
    },
13864
    initComponent: function () {
13865
        var me = this;
13866
        Ext.applyIf(me, {});
13867
        me.callParent(arguments);
13868
    }
13869
});
13870

    
13871
Ext.define('MinovaUtil.com.xtype.MinovaWorflowEditor', {
13872
    extend: 'Ext.panel.Panel',
13873
    alias: ['widget.minovawfeditor', 'widget.minovafloweditor'],
13874
    title: undefined,
13875
    initComponent: function () {
13876
        // this.layout = 'fit';
13877
        this.readOnly = this.readOnly ? this.readOnly : false;
13878
        this.autoScroll = true;
13879
        this.height = 480;
13880
        this.title = this.title ? this.title : 'Workflow editor';
13881
        this.html = '<div id="minovaGraphContainer" title="' + this.title
13882
			 + '" style="background:url(\'' + mxBasePath
13883
			 + '/editors/images/grid.gif\')"></div>';
13884
        this.tbar = [{
13885
            xtype: 'button',
13886
            hidden: true,
13887
            text: 'add Task',
13888
            handler: this.addTask
13889

    
13890
        }, {
13891
            xtype: 'button',
13892
            text: 'Remove',
13893
            hidden: true,
13894
            handler: this.removeCells
13895
        },
13896
			'->', {
13897
			    xtype: 'cycle',
13898
			    text: 'layout',
13899
			    menu: {
13900
			        // id : 'view-type-menu',
13901
			        items: [{
13902
			            text: 'mxCircleLayout'
13903
			        }, {
13904
			            text: 'mxCompactTreeLayout'
13905
			        }, {
13906
			            text: 'mxCompositeLayout'
13907
			        }, {
13908
			            text: 'mxEdgeLabelLayout'
13909
			        }, {
13910
			            text: 'mxFastOrganicLayout'
13911
			        }, {
13912
			            text: 'mxGraphLayout'
13913
			        }, {
13914
			            text: 'mxHierarchicalLayout'
13915
			        }
13916
						// , {
13917
						// text : 'mxParallelEdgeLayout'
13918
						// }
13919
						// , {
13920
						// text : 'mxPartitionLayout'
13921
						// },
13922
						// {
13923
						// text : 'mxStackLayout'
13924
						// }
13925
			        ]
13926
			    },
13927
			    changeHandler: function (cycleBtn, activeItem) {
13928
			        // Ext.Msg.alert('Change View', activeItem.text);
13929
			        try {
13930
			            switch (activeItem.text) {
13931
			                case 'mxCircleLayout':
13932
			                    var layout = new mxCircleLayout(graph);
13933
			                    layout.execute(graph.getDefaultParent());
13934
			                    break;
13935
			                case 'mxCompactTreeLayout':
13936
			                    var layout = new mxCompactTreeLayout(graph,
13937
                                        false);
13938
			                    layout.execute(graph.getDefaultParent());
13939
			                    break;
13940
			                case 'mxCompositeLayout':
13941
			                    var first = new mxFastOrganicLayout(graph);
13942
			                    var second = new mxParallelEdgeLayout(graph);
13943
			                    var layout = new mxCompositeLayout(graph, [
13944
                                            first, second], first);
13945
			                    layout.execute(graph.getDefaultParent());
13946
			                    break;
13947
			                case 'mxEdgeLabelLayout':
13948
			                    var layout = new mxEdgeLabelLayout(graph);
13949
			                    layout.execute(graph.getDefaultParent());
13950
			                    break;
13951
			                case 'mxFastOrganicLayout':
13952
			                    var layout = new mxCircleLayout(graph);
13953
			                    layout.execute(graph.getDefaultParent());
13954
			                    break;
13955
			                case 'mxGraphLayout':
13956
			                    var layout = new mxFastOrganicLayout(graph);
13957
			                    layout.execute(graph.getDefaultParent());
13958
			                    break;
13959
			                case 'mxParallelEdgeLayout':
13960
			                    var layout = new mxParallelEdgeLayout(graph);
13961
			                    layout.execute(graph.getDefaultParent());
13962
			                    break;
13963
			                case 'mxPartitionLayout':
13964
			                    var layout = new mxPartitionLayout(graph,
13965
                                        true, 10, 20);
13966
			                    layout.execute(graph.getDefaultParent());
13967
			                    break;
13968
			                case 'mxStackLayout':
13969
			                    var layout = new mxStackLayout(graph, false);
13970
			                    layout.execute(graph.getDefaultParent());
13971
			                    break;
13972
			                case 'mxHierarchicalLayout':
13973
			                    var layout = new mxHierarchicalLayout(graph);
13974
			                    layout.parallelEdgeSpacing = 100;
13975
			                    layout.moveParent = true;
13976
			                    layout.parentBorder = 100;
13977
			                    layout.intraCellSpacing = 100;
13978
			                    layout.interRankCellSpacing = 100;
13979
			                    layout.interHierarchySpacing = 0;
13980
			                    layout.orientation = mxConstants.DIRECTION_NORTH;
13981
			                    //layout.traverseAncestors = false;
13982
			                    layout.execute(parent);
13983
			                    break;
13984

    
13985
			            }
13986
			        } catch (e) {}
13987
			    }
13988
			}, {
13989
			    xtype: 'tbseparator'
13990
			}, {
13991
			    text: 'In',
13992
			    name: 'zoomin',
13993
			    handler: function () {
13994
			        graph.zoomIn();
13995
			        graph.fit();
13996
			    }
13997
			}, {
13998
			    text: 'Out',
13999
			    name: 'zoomout',
14000
			    handler: function () {
14001
			        graph.zoomOut();
14002
			        graph.fit();
14003
			    }
14004
			}
14005
			// , {
14006
			// text : 'Fit',
14007
			// name : 'zoomfit',
14008
			// handler : function() {
14009
			// graph.fit();
14010
			// }
14011
			// }
14012
		, {
14013
		    xtype: 'tbseparator'
14014
		}, {
14015
		    xtype: 'button',
14016
		    text: 'print',
14017
		    name: 'print',
14018
		    handler: this.printPreview
14019
		}
14020
        ]
14021

    
14022
        this.autoScroll = true;
14023
        this.listeners = {
14024
            afterrender: this.onAfterRender,
14025
            resize: this.onResize
14026
        }
14027

    
14028
        this.callParent(arguments);
14029
    },
14030
    printPreview: function () {
14031
        var preview = new mxPrintPreview(graph);
14032
        preview.print();
14033
    },
14034
    onAfterRender: function (_this) {
14035
        this.main(document.getElementById('minovaGraphContainer'));
14036
    },
14037
    removeCells: function () {
14038
        graph.removeCells();
14039
    },
14040
    onResize: function () {
14041
        try {
14042
            graph.sizeDidChange();
14043
        } catch (e) {}
14044
    },
14045
    addTask: function () {
14046
        graph.insertVertex(graph.getDefaultParent(), null, 'Task-' + Ext.id(),
14047
			0, 0, 80, 30);
14048
    },
14049
    main: function (container) {
14050
        // Checks if the browser is supported
14051
        if (!mxClient.isBrowserSupported()) {
14052
            // Displays an error message if the browser is not supported.
14053
            // mxUtils.error('Browser is not supported!', 200, false);
14054
            alert('Browser is not supported!');
14055
        } else {
14056
            // // Creates the graph inside the given container
14057
            // graph = new mxGraph(container);
14058
            // var keyHandler = new mxKeyHandler(graph);
14059
            // // keyHandler.bindKey(46, function(evt) {
14060
            // // if (graph.isEnabled()) {
14061
            // // graph.removeCells();
14062
            // // }
14063
            // // });
14064
            // wfEditor = new mxEditor();
14065
            //
14066
            // // Enables rubberband selection
14067
            //
14068
            // new mxRubberband(graph);
14069
            // graph.setPanning(true);
14070
            // graph.setTooltips(true);
14071
            //
14072
            // // graph.setConnectable(true);
14073
            // // graph.setDropEnabled(true);
14074
            // // graph.connectionHandler.setCreateTarget(true);
14075
            //
14076
            // // Gets the default parent for inserting new cells. This
14077
            // // is normally the first child of the root (ie. layer 0).
14078
            // var parent = graph.getDefaultParent();
14079

    
14080
            // Enables crisp rendering in SVG
14081
            // mxShape.prototype.crisp = true;
14082

    
14083
            // Enables guides
14084
            // mxGraphHandler.prototype.guidesEnabled = true;
14085

    
14086
            // Alt disables guides
14087
            // mxGuide.prototype.isEnabledForEvent = function(evt) {
14088
            // return !mxEvent.isAltDown(evt);
14089
            // };
14090

    
14091
            // Enables snapping waypoints to terminals
14092
            // mxEdgeHandler.prototype.snapToTerminals = true;
14093

    
14094
            // Enables orthogonal connect preview in IE
14095
            // mxConnectionHandler.prototype.movePreviewAway = true;
14096

    
14097
            // Creates the graph inside the given container
14098
            graph = new mxGraph(container);
14099
            // graph.disconnectOnMove = false;
14100
            // graph.foldingEnabled = false;
14101
            // graph.cellsResizable = false;
14102
            // graph.extendParents = false;
14103
            // graph.setConnectable(true);
14104
            graph.setAllowDanglingEdges(false);
14105

    
14106
            // Implements perimeter-less connection points as fixed points
14107
            // (computed before the edge style).
14108
            // graph.view.updateFixedTerminalPoint = function(edge, terminal,
14109
            // source, constraint) {
14110
            // mxGraphView.prototype.updateFixedTerminalPoint.apply(this,
14111
            // arguments);
14112
            //
14113
            // var pts = edge.absolutePoints;
14114
            // var pt = pts[(source) ? 0 : pts.length - 1];
14115
            //
14116
            // if (terminal != null && pt == null
14117
            // && this.getPerimeterFunction(terminal) == null) {
14118
            // edge.setAbsoluteTerminalPoint(new mxPoint(this
14119
            // .getRoutingCenterX(terminal), this
14120
            // .getRoutingCenterY(terminal)),
14121
            // source)
14122
            // }
14123
            // };
14124

    
14125
            // Changes the default edge style
14126
            graph.getStylesheet().getDefaultEdgeStyle()['edgeStyle'] = 'orthogonalEdgeStyle';
14127
            // delete graph.getStylesheet().getDefaultEdgeStyle()['endArrow'];
14128

    
14129
            // Implements the connect preview
14130
            graph.connectionHandler.createEdgeState = function (me) {
14131
                var edge = graph.createEdge(null, null, null, null, null);
14132

    
14133
                return new mxCellState(this.graph.view, edge, this.graph
14134
					.getCellStyle(edge));
14135
            };
14136

    
14137
            // Uncomment the following if you want the container
14138
            // to fit the size of the graph
14139
            // graph.setResizeContainer(true);
14140

    
14141
            // Enables rubberband selection
14142
            new mxRubberband(graph);
14143

    
14144
            // Disables basic selection and cell handling
14145
            graph.setEnabled(false);
14146

    
14147
            // Gets the default parent for inserting new cells. This
14148
            // is normally the first child of the root (ie. layer 0).
14149
            var parent = graph.getDefaultParent();
14150

    
14151
            // Enables HTML labels as wrapping is only available for those
14152
            graph.htmlLabels = true;
14153

    
14154
            // Disables in-place editing for edges
14155
            // graph.isCellEditable = function(cell) {
14156
            // return !this.model.isEdge(cell);
14157
            // };
14158

    
14159
            // Changes the default vertex style in-place
14160
            var style = graph.getStylesheet().getDefaultVertexStyle();
14161
            style[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14162
            style[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14163
            style[mxConstants.STYLE_PERIMETER_SPACING] = 1; // 6;
14164
            style[mxConstants.STYLE_ROUNDED] = true;
14165
            style[mxConstants.STYLE_SHADOW] = true;
14166

    
14167
            style = graph.getStylesheet().getDefaultEdgeStyle();
14168
            style[mxConstants.STYLE_ROUNDED] = true;
14169
            style[mxConstants.STYLE_EDGE] = mxEdgeStyle.SegmentConnector;
14170

    
14171
            var style2 = new Object();
14172
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RHOMBUS;
14173
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RhombusPerimeter;
14174
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14175
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14176
            style2[mxConstants.STYLE_ROUNDED] = true;
14177
            style2[mxConstants.STYLE_SHADOW] = true;
14178
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14179
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14180
            style2[mxConstants.STYLE_ALIGN] = 'center';
14181
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14182
            graph.getStylesheet().putCellStyle('RHOMBUS', style2);
14183

    
14184
            style2 = new Object();
14185
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_ELLIPSE;
14186
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.EllipsePerimeter;
14187
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14188
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14189
            style2[mxConstants.STYLE_ROUNDED] = true;
14190
            style2[mxConstants.STYLE_SHADOW] = true;
14191
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14192
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14193
            style2[mxConstants.STYLE_ALIGN] = 'center';
14194
            style2[mxConstants.STYLE_VERTICALALIGN] = 'middle';
14195
            graph.getStylesheet().putCellStyle('ELLIPSE', style2);
14196

    
14197
            style2 = new Object();
14198
            style2[mxConstants.STYLE_SHAPE] = 'label';
14199
            style2[mxConstants.STYLE_VERTICAL_ALIGN] = 'bottom';
14200
            style2[mxConstants.STYLE_INDICATOR_SHAPE] = 'ellipse';
14201
            style2[mxConstants.STYLE_INDICATOR_WIDTH] = 34;
14202
            style2[mxConstants.STYLE_INDICATOR_HEIGHT] = 34;
14203
            style2[mxConstants.STYLE_IMAGE_VERTICAL_ALIGN] = 'top'; // indicator v-alignment
14204
            style2[mxConstants.STYLE_IMAGE_ALIGN] = 'center';
14205
            graph.getStylesheet().putCellStyle('LABEL', style2);
14206

    
14207
            style2 = new Object();
14208
            style2[mxConstants.STYLE_SHAPE] = mxConstants.SHAPE_RECTANGLE;
14209
            style2[mxConstants.STYLE_PERIMETER] = mxPerimeter.RectanglePerimeter;
14210
            style2[mxConstants.STYLE_GRADIENTCOLOR] = 'white';
14211
            style2[mxConstants.STYLE_PERIMETER_SPACING] = 1;
14212
            style2[mxConstants.STYLE_ROUNDED] = false;
14213
            style2[mxConstants.STYLE_SHADOW] = true;
14214
            style2[mxConstants.STYLE_STROKECOLOR] = '#B3BFD7';
14215
            style2[mxConstants.STYLE_FILLCOLOR] = '#C4DAFF';
14216
            graph.getStylesheet().putCellStyle('RECTANGLE', style2);
14217
            // Adds cells to the model in a single step
14218
            graph.getModel().beginUpdate();
14219
            try {
14220
                // var v1 = graph.insertVertex(parent, null, '1', 20, 0, 150,
14221
                // 80);
14222
                // var v2 = graph.insertVertex(parent, null, '2', 20, 50, 150,
14223
                // 80);
14224
                // var v3 = graph
14225
                // .insertVertex(parent, null, '3', 20, 100, 150, 80);
14226
                // var v4 = graph
14227
                // .insertVertex(parent, null, '4', 120, 50, 150, 80);
14228
                // var v5 = graph.insertVertex(parent, null, '5', 120, 100, 150,
14229
                // 80);
14230
                //
14231
                // var e1 = graph.insertEdge(parent, null, '', v1, v2);
14232
                // var e2 = graph.insertEdge(parent, null, '', v2, v3);
14233
                // var e3 = graph.insertEdge(parent, null, '', v2, v4);
14234
                // var e4 = graph.insertEdge(parent, null, '', v4, v5);
14235
                // var e5 = graph.insertEdge(parent, null, '', v3, v5);
14236
            }
14237
            finally {
14238
                // Updates the display
14239
                graph.getModel().endUpdate();
14240
            }
14241

    
14242
        }
14243
    }
14244
});
14245

    
14246
Ext.define('MinovaUtil.MinovaES.MinovaMonthPicker', {
14247
    extend: 'Ext.form.field.Text',
14248
    alias: ['widget.minovamonthpicker', 'widget.minovamonthpicker'],
14249
    tableName: undefined,
14250
    param: undefined,
14251
    formtarget_: this.formtarget,
14252
    Sequence: this.Sequence,
14253
    anchor: '50%',
14254
    pagesize: undefined,
14255
    triggerCls: 'x-form-date-trigger',
14256
    getValue: function () {
14257
        var Sequence = this.Sequence;
14258
        var me = this;
14259
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14260
        var hasil = "";
14261
        if (_e != undefined) {
14262
            if (_e.value[0] >= 0) {
14263
                if (_e.value[0].toString() != '') {
14264
                    var _m = (_e.value[0] + 1).toString();
14265
                    if (_m.length == 1) {
14266
                        _m = '0' + _m;
14267
                    }
14268
                    hasil = _e.value[1].toString() + _m;
14269
                }
14270
            }
14271
        }
14272
        if (hasil == "") {
14273
            me.value = null;
14274
            me.submitValue = null;
14275
        } else {
14276
            me.submitValue = hasil;
14277
        }
14278
        return hasil;
14279
    },
14280
    clearValue: function () {
14281
        var Sequence = this.Sequence;
14282
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14283
        _e.value[0] = '';
14284
        _e.value[1] = '';
14285
        return this.setValue('');
14286
    },
14287
    getRawValue: function () {
14288
        var Sequence = this.Sequence;
14289
        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14290
        var hasil = null;
14291
        if (_e != undefined) {
14292
            var _m = (_e.value[0] + 1).toString();
14293
            if (_m.length == 1) {
14294
                _m = '0' + _m;
14295
            }
14296
            hasil = _e.value[1].toString() + _m;
14297
        }
14298
        return hasil;
14299
    },
14300
    initComponent: function () {
14301
        var target = this.formtarget;
14302
        this.callParent();
14303
    },
14304
    onTriggerClick: function () {
14305
        var Sequence = this.Sequence;
14306
        var count_lookup = Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]').length;
14307
        if (count_lookup == 1) {
14308
            Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].show();
14309
        } else {
14310
            var target_ = this.formtarget;
14311
            var fieldtarget = this.name;
14312
            Ext.create('Ext.window.Window', {
14313
                title: 'Select Period',
14314
                name: Sequence + 'monthLookup',
14315
                layout: 'fit',
14316
                bodyPadding: 0,
14317
                border: false,
14318
                items: [{
14319
                    xtype: 'monthpicker',
14320
                    name: Sequence + 'monthselect',
14321
                    listeners: {
14322
                        afterrender: function () {
14323
                            var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14324

    
14325
                            _e.setValue(new Date());
14326
                        }
14327
                    },
14328
                    onOkClick: function () {
14329
                        var _e = Ext.ComponentQuery.query('[name=' + Sequence + 'monthselect]')[0];
14330
                        if (_e.value[0] == null || _e.value[1] == null) {
14331
                            alert('Pilih Tanggal!');
14332
                            return;
14333
                        }
14334

    
14335
                        var _m = (_e.value[0] + 1).toString();
14336
                        if (_m.length == 1) {
14337
                            _m = '0' + _m;
14338
                        }
14339
                        var _period = _m + ' - ' + _e.value[1].toString();
14340

    
14341
                        var _f = Ext.ComponentQuery.query('[name=' + fieldtarget + ']')[0];
14342
                        _f.setValue(_period);
14343

    
14344
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14345
                    },
14346
                    onCancelClick: function () {
14347
                        Ext.ComponentQuery.query('[name=' + Sequence + 'monthLookup]')[0].hide();
14348
                    }
14349
                }
14350
                ]
14351
            }).show();
14352
        }
14353
    }
14354
});
14355

    
14356
Ext.define('MinovaUtil.MinovaES.Column.MinovaTimeColumn', {
14357
    extend: 'Ext.grid.column.Column',
14358
    alias: ['widget.minovatimecolumn'],
14359
    alternateClassName: 'Ext.grid.MinovaTimeColumn',
14360
    undefinedText: '&#160;',
14361
    defaultRenderer: function (value) {
14362
        if (value === "") {
14363
            return "";
14364
        }
14365
        return hasil;
14366
    }
14367
});
14368

    
14369
Ext.define('MinovaUtil.MinovaES.Column.MinovaCurrencyColumn', {
14370
    extend: 'Ext.grid.column.Column',
14371
    alias: ['widget.minovacurrancycolumn'],
14372
    undefinedText: '&#160;',
14373
    defaultRenderer: function (value) {
14374
        if (value === "" || value === undefined || value === null) {
14375
            return this.undefinedText;
14376
        }
14377

    
14378
        Ext.util.Format.thousandSeparator = ",";
14379
        Ext.util.Format.decimalSeparator = ".";
14380
        value = value.toString().replace(',', '.');
14381
        return Ext.util.Format.number(value, '0,000.00');
14382
    }
14383
});
14384

    
14385
Ext.define('MinovaUtil.MinovaES.Field.MinovaCurrencyField', {
14386
    extend: 'Ext.form.field.Text',
14387
    alias: ['widget.MinovaCurrencyField', 'widget.minovacurrencyfield'],
14388
    undefinedText: '&#160;',
14389
    defaultRenderer: function (value) {
14390
        if (value === "" || value === undefined || value === null) {
14391
            return this.undefinedText;
14392
        }
14393

    
14394
        Ext.util.Format.thousandSeparator = ",";
14395
        Ext.util.Format.decimalSeparator = ".";
14396
        value = value.toString().replace(',', '.');
14397
        return Ext.util.Format.number(value, '0000.00');
14398
    }
14399
});
14400

    
14401
Ext.define('MinovaUtil.MinovaES.MinovaGridMD', {
14402
    extend: 'Ext.grid.Panel',
14403
    requires: ['Ext.grid.RowNumberer'],
14404
    alias: 'widget.minovagridmd',
14405
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14406
    //alias: ['widget.minovagrid1', 'widget.minovagrid'],
14407
    alternateClassName: 'Ext.grid.MinovaGrid',
14408
    //controller:'orm-manage2-controller',
14409
    tableName: undefined,
14410
    isLookup: undefined,
14411
    param: undefined,
14412
    pagesize: undefined,
14413
    storename: undefined,
14414
    layoutType: undefined,
14415
    enableLocking: true,
14416
    autoLoad: undefined,
14417
    multiSelect: undefined,
14418
    getTableName: function () {
14419
        return this.tableName;
14420
    },
14421

    
14422
    initComponent: function () {
14423
        var me = this;
14424
        var cols_ = [];
14425
        var fieldeditor = {};
14426
        var hasil = null;
14427
        var autoLoad = true;
14428
        var LangID = localStorage.LangId;
14429
        var fielGrid = 'rec.GridView == 1';
14430
        var locking = true;
14431
        var checkSelection = '';
14432
        var widthLock = 250;
14433
        if (me.multiSelect) {
14434
            locking = false;
14435
            checkSelection = 'checkboxmodel';
14436
            widthLock = 40;
14437
        }
14438
        //var _url = 'GetAllField';
14439
        if (me.autoLoad == false) {
14440
            autoLoad = false;
14441
        }
14442
        parameter = null;
14443
        if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14444
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'";
14445
            fielGrid = 'rec.LookupGrid == 1';
14446
            locking = false;
14447

    
14448
        } else {
14449
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
14450
            //autoLoad = false;
14451
            //_url = 'GetAllFieldGridLookUp';
14452
        };
14453

    
14454
        //Ext.Ajax.request({
14455
        //	async : false,
14456
        //	method : 'POST',
14457
        //	url : '/Devt/' + _url + '?tableName=' + me.tableName,
14458
        //	success : function (response) {
14459
        //		var results = Ext.decode(response.responseText);
14460
        //		hasil = results.data;
14461
        //	}
14462
        //});
14463
        //hamid03102016
14464

    
14465
        Ext.Ajax.request({
14466
            async: false,
14467
            method: 'POST',
14468
            url: '/UserControl/GetStore',
14469
            params: {
14470
                tableName: 'PDSBS0007',
14471
                param: parameter
14472
            },
14473
            success: function (response) {
14474
                var results = Ext.decode(response.responseText);
14475
                hasil = results.data;
14476
            }
14477
        });
14478
        //end
14479

    
14480
        if (hasil.length > 0) {
14481

    
14482
            Ext.each(hasil, function (rec) {
14483
                var null_ = null;
14484
                if (rec.IsPrimaryKey == true) {
14485
                    null_ = false;
14486
                }
14487
                if (rec.IsRequired == true) {
14488
                    null_ = false;
14489
                } else {
14490
                    null_ = true;
14491
                }
14492

    
14493
                if (me.isLookup == 1 || me.isLookup == 'Y' || me.isLookup == true) {
14494
                    if (rec.LookupGrid == 1) {
14495
                        switch (rec.FormatRef) {
14496
                            case "file":
14497
                                cols_.push({
14498
                                    xtype: 'minovapicturecolumn',
14499
                                    text: rec.HeaderTitle,
14500
                                    dataIndex: rec.FieldName,
14501
                                    width: 100,
14502
                                    //filter: {
14503
                                    //    type: 'image',
14504
                                    //    itemDefaults: {
14505
                                    //        emptyText: 'Search for...'
14506
                                    //    }
14507
                                    //}
14508
                                });
14509
                                break
14510
                            case "date":
14511
                                cols_.push({
14512
                                    xtype: 'minovadatecolumn',
14513
                                    text: rec.HeaderTitle,
14514
                                    dataIndex: rec.FieldName,
14515
                                    width: 100,
14516
                                    filter: {
14517
                                        type: 'date',
14518
                                        itemDefaults: {
14519
                                            emptyText: 'Search for...'
14520
                                        }
14521
                                    }
14522
                                });
14523
                                break
14524
                            case "amount":
14525
                                cols_.push({
14526
                                    xtype: 'minovacurrancycolumn',
14527
                                    text: rec.HeaderTitle,
14528
                                    align: 'right',
14529
                                    dataIndex: rec.FieldName,
14530
                                    width: 100,
14531
                                    filter: {
14532
                                        type: 'number',
14533
                                        itemDefaults: {
14534
                                            emptyText: 'Search for...'
14535
                                        }
14536
                                    }
14537
                                });
14538
                                break
14539
                            case "amountencrypt":
14540
                                cols_.push({
14541
                                    xtype: 'minovaamountcolumn',
14542
                                    align: 'right',
14543
                                    text: rec.HeaderTitle,
14544
                                    dataIndex: rec.FieldName,
14545
                                    width: 100,
14546
                                    filter: {
14547
                                        type: 'string',
14548
                                        itemDefaults: {
14549
                                            emptyText: 'Search for...'
14550
                                        }
14551
                                    }
14552
                                });
14553
                                break
14554
                            case "datetime":
14555
                                cols_.push({
14556
                                    xtype: 'minovadatetimecolumn',
14557
                                    text: rec.HeaderTitle,
14558
                                    dataIndex: rec.FieldName,
14559
                                    width: 140,
14560
                                    filter: {
14561
                                        type: 'string',
14562
                                        itemDefaults: {
14563
                                            emptyText: 'Search for...'
14564
                                        }
14565
                                    }
14566
                                });
14567
                                break
14568
                            default:
14569
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14570
                                    cols_.push({
14571
                                        text: rec.HeaderTitle,
14572
                                        dataIndex: rec.FieldName,
14573
                                        width: 100,
14574
                                        filter: {
14575
                                            type: 'string',
14576
                                            itemDefaults: {
14577
                                                emptyText: 'Search for...'
14578
                                            }
14579
                                        }
14580
                                    });
14581
                                } else if (rec.SearchType == '2') {
14582
                                    cols_.push({
14583
                                        xtype: 'minovalookupcolumn',
14584
                                        text: rec.HeaderTitle,
14585
                                        tableName: rec.TableRef,
14586
                                        dataIndex: rec.FieldName,
14587
                                        filter: {
14588
                                            itemDefaults: {
14589
                                                emptyText: 'Search for...'
14590
                                            }
14591
                                        }
14592
                                    });
14593
                                } else if (rec.TableRef != "") {
14594
                                    if (rec.TableRef != null) {
14595
                                        var valueField = null;
14596
                                        var displayValue = null;
14597
                                        Ext.Ajax.request({
14598
                                            async: false,
14599
                                            method: 'POST',
14600
                                            url: '/UserControl/GetStore',
14601
                                            params: {
14602
                                                tableName: 'SDATATABLEFIELD',
14603
                                                param: 'TableName[equal]' + rec.TableRef
14604
                                            },
14605
                                            success: function (response) {
14606
                                                var results = Ext.decode(response.responseText);
14607
                                                data_ = results.data;
14608
                                                if (data_ != undefined) {
14609
                                                    valueField_ = $.grep(data_, function (r) {
14610
                                                        return r.ValueField == '1'
14611
                                                    });
14612
                                                    valueField = valueField_[0].FieldName
14613
                                                    displayValue_ = $.grep(data_, function (r) {
14614
                                                        return r.DisplayValue == '1'
14615
                                                    });
14616
                                                    displayValue = displayValue_[0].FieldName
14617
                                                }
14618
                                            }
14619
                                        });
14620
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14621
                                        var count_ = 0;
14622
                                        if (store_) {
14623
                                            count_ = store_.count();
14624
                                        }
14625
                                        if (count_ == 0) {
14626
                                            Ext.create('Ext.data.Store', {
14627
                                                storeId: 'store_' + rec.FieldName,
14628
                                                //autoLoad: true,
14629
                                                proxy: {
14630
                                                    method: 'POST',
14631
                                                    type: 'ajax',
14632
                                                    url: '/UserControl/GetStore',
14633
                                                    extraParams: {
14634
                                                        tableName: rec.TableRef,
14635
                                                        param: rec.ParamCombo
14636
                                                    },
14637
                                                    reader: {
14638
                                                        type: 'json',
14639
                                                        root: 'data',
14640
                                                        totalProperty: 'data[0].TotalCount'
14641
                                                    }
14642
                                                }
14643
                                            })
14644
                                        }
14645
                                        cols_.push({
14646
                                            xtype: 'minovacombocolumn',
14647
                                            text: rec.HeaderTitle,
14648
                                            dataIndex: rec.FieldName,
14649
                                            valueField: valueField,
14650
                                            displayField: displayValue,
14651
                                            store: 'store_' + rec.FieldName,
14652
                                            filter: {
14653
                                                type: 'list',
14654
                                                itemDefaults: {
14655
                                                    emptyText: 'Search for...'
14656
                                                }
14657
                                            }
14658
                                        });
14659
                                    }
14660

    
14661
                                } else {
14662
                                    cols_.push({
14663
                                        text: rec.HeaderTitle,
14664
                                        dataIndex: rec.FieldName,
14665
                                        filter: {
14666
                                            itemDefaults: {
14667
                                                emptyText: 'Search for...'
14668
                                            }
14669
                                        }
14670
                                    });
14671
                                }
14672
                                break
14673
                        }
14674
                    } else {
14675
                        cols_.push({
14676
                            text: rec.HeaderTitle,
14677
                            dataIndex: rec.FieldName,
14678
                            hidden: true,
14679
                            filter: {
14680
                                itemDefaults: {
14681
                                    emptyText: 'Search for...'
14682
                                }
14683
                            }
14684
                        });
14685
                    }
14686

    
14687
                } else {
14688
                    if (rec.GridView == 1) {
14689
                        switch (rec.FormatRef) {
14690
                            case "file":
14691
                                cols_.push({
14692
                                    xtype: 'minovapicturecolumn',
14693
                                    text: rec.HeaderTitle,
14694
                                    dataIndex: rec.FieldName,
14695
                                    width: 100,
14696
                                    //filter: {
14697
                                    //    type: '',
14698
                                    //    itemDefaults: {
14699
                                    //        emptyText: 'Search for...'
14700
                                    //    }
14701
                                    //}
14702
                                });
14703
                                break
14704
                            case "date":
14705
                                cols_.push({
14706
                                    xtype: 'minovadatecolumn',
14707
                                    text: rec.HeaderTitle,
14708
                                    dataIndex: rec.FieldName,
14709
                                    width: 100,
14710
                                    filter: {
14711
                                        type: 'date',
14712
                                        itemDefaults: {
14713
                                            emptyText: 'Search for...'
14714
                                        }
14715
                                    }
14716
                                });
14717
                                break
14718
                            case "amountencrypt":
14719
                                cols_.push({
14720
                                    xtype: 'minovaamountcolumn',
14721
                                    align: 'right',
14722
                                    text: rec.HeaderTitle,
14723
                                    dataIndex: rec.FieldName,
14724
                                    width: 100,
14725
                                    filter: {
14726
                                        type: 'string',
14727
                                        itemDefaults: {
14728
                                            emptyText: 'Search for...'
14729
                                        }
14730
                                    }
14731
                                });
14732
                                break
14733
                            case "amount":
14734
                                cols_.push({
14735
                                    text: rec.HeaderTitle,
14736
                                    dataIndex: rec.FieldName,
14737
                                    width: 100,
14738
                                    filter: {
14739
                                        type: 'number',
14740
                                        itemDefaults: {
14741
                                            emptyText: 'Search for...'
14742
                                        }
14743
                                    }
14744
                                });
14745
                                break
14746
                            case "datetime":
14747
                                cols_.push({
14748
                                    xtype: 'minovadatetimecolumn',
14749
                                    text: rec.HeaderTitle,
14750
                                    dataIndex: rec.FieldName,
14751
                                    width: 140,
14752
                                    filter: {
14753
                                        type: 'string',
14754
                                        itemDefaults: {
14755
                                            emptyText: 'Search for...'
14756
                                        }
14757
                                    }
14758
                                });
14759
                                break
14760
                            default:
14761
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
14762
                                    cols_.push({
14763
                                        text: rec.HeaderTitle,
14764
                                        dataIndex: rec.FieldName,
14765
                                        width: 100,
14766
                                        filter: {
14767
                                            type: 'string',
14768
                                            itemDefaults: {
14769
                                                emptyText: 'Search for...'
14770
                                            }
14771
                                        }
14772
                                    });
14773
                                } else if (rec.SearchType == '2') {
14774
                                    cols_.push({
14775
                                        xtype: 'minovalookupcolumn',
14776
                                        text: rec.HeaderTitle,
14777
                                        tableName: rec.TableRef,
14778
                                        dataIndex: rec.FieldName,
14779
                                        filter: {
14780
                                            itemDefaults: {
14781
                                                emptyText: 'Search for...'
14782
                                            }
14783
                                        }
14784
                                    });
14785
                                } else if (rec.TableRef != "" && rec.SearchType != '2') {
14786
                                    if (rec.TableRef != null) {
14787
                                        var valueField = null;
14788
                                        var displayValue = null;
14789
                                        Ext.Ajax.request({
14790
                                            async: false,
14791
                                            method: 'POST',
14792
                                            url: '/UserControl/GetStore',
14793
                                            params: {
14794
                                                tableName: 'SDATATABLEFIELD',
14795
                                                param: 'TableName[equal]' + rec.TableRef
14796
                                            },
14797
                                            success: function (response) {
14798
                                                var results = Ext.decode(response.responseText);
14799
                                                data_ = results.data;
14800
                                                //if (data_ != undefined) {
14801
                                                if (data_.length > 0) {
14802
                                                    valueField_ = $.grep(data_, function (r) {
14803
                                                        return r.ValueField == '1'
14804
                                                    });
14805
                                                    valueField = valueField_[0].FieldName
14806
                                                    displayValue_ = $.grep(data_, function (r) {
14807
                                                        return r.DisplayValue == '1'
14808
                                                    });
14809
                                                    displayValue = displayValue_[0].FieldName
14810
                                                } else {
14811
                                                    MinovaMessage('Not Null', 'BSNULLCOMBO', rec.TableRef, 'E');
14812
                                                }
14813
                                            }
14814
                                        });
14815
                                        var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
14816
                                        var count_ = 0;
14817
                                        if (store_) {
14818
                                            count_ = store_.count();
14819
                                        }
14820
                                        if (count_ == 0) {
14821
                                            var paramFilter = rec.ParamCombo;
14822
                                            if (rec.TableRef.toLowerCase() == 'phrom0001' && rec.ParamCombo.length == 1) {
14823
                                                paramFilter = 'ObjectClass[=]' + paramFilter;
14824
                                            }
14825
                                            Ext.create('Ext.data.Store', {
14826
                                                storeId: 'store_' + rec.FieldName,
14827
                                                autoLoad: false,
14828
                                                proxy: {
14829
                                                    method: 'POST',
14830
                                                    type: 'ajax',
14831
                                                    url: '/UserControl/GetStore',
14832
                                                    extraParams: {
14833
                                                        tableName: rec.TableRef,
14834
                                                        param: paramFilter
14835
                                                    },
14836
                                                    reader: {
14837
                                                        type: 'json',
14838
                                                        root: 'data',
14839
                                                        totalProperty: 'data[0].TotalCount'
14840
                                                    }
14841
                                                }
14842
                                            })
14843
                                        }
14844
                                        cols_.push({
14845
                                            xtype: 'minovacombocolumn',
14846
                                            text: rec.HeaderTitle,
14847
                                            dataIndex: rec.FieldName,
14848
                                            valueField: valueField,
14849
                                            displayField: displayValue,
14850
                                            store: 'store_' + rec.FieldName,
14851
                                            filter: {
14852
                                                type: 'list',
14853
                                                itemDefaults: {
14854
                                                    emptyText: 'Search for...'
14855
                                                }
14856
                                            }
14857
                                        });
14858
                                    }
14859

    
14860
                                } else if (rec.FixedValue != "") {
14861
                                    cols_.push({
14862
                                        xtype: 'minovacombocolumnfixvalue',
14863
                                        text: rec.HeaderTitle,
14864
                                        dataIndex: rec.FieldName,
14865
                                        fixedValue: rec.FixedValue,
14866
                                        filter: {
14867
                                            type: 'list',
14868
                                            itemDefaults: {
14869
                                                emptyText: 'Search for...'
14870
                                            }
14871
                                        }
14872
                                    });
14873
                                } else {
14874
                                    cols_.push({
14875
                                        text: rec.HeaderTitle,
14876
                                        dataIndex: rec.FieldName,
14877
                                        filter: {
14878
                                            itemDefaults: {
14879
                                                emptyText: 'Search for...'
14880
                                            }
14881
                                        }
14882
                                    });
14883
                                }
14884
                                break
14885
                        }
14886
                    } else {
14887
                        cols_.push({
14888
                            text: rec.HeaderTitle,
14889
                            dataIndex: rec.FieldName,
14890
                            hidden: true,
14891
                            filter: {
14892
                                itemDefaults: {
14893
                                    emptyText: 'Search for...'
14894
                                }
14895
                            }
14896
                        });
14897
                    }
14898

    
14899
                }
14900
            });
14901
        };
14902
        var param_ = me.param;
14903
        if (param_ == undefined) {
14904
            param_ = ''
14905
        }
14906
        var jsStoreGrid = new Ext.data.Store({
14907
            storeId: me.storename,
14908
            autoLoad: autoLoad,
14909
            pageSize: me.pagesize,
14910
            proxy: {
14911
                method: 'POST',
14912
                type: 'ajax',
14913
                url: '/UserControl/GetStorePaging',
14914
                extraParams: {
14915
                    tableName: me.tableName,
14916
                    param: param_,
14917
                    //menuId: MinovaUtil.GetMenuID()
14918
                },
14919
                reader: {
14920
                    type: 'json',
14921
                    root: 'data',
14922
                    totalProperty: 'totalRecords'
14923
                }
14924
            },
14925
        });
14926
        Ext.applyIf(me, {
14927
            autoScroll: true,
14928
            enableLocking: locking,
14929
            lockedGridConfig: {
14930
                header: false,
14931
                collapsible: true,
14932
                width: widthLock,
14933
                forceFit: locking,
14934
                listeners: {
14935
                    render: function (grid) {
14936
                        var pagingToolbar = grid.child('pagingtoolbar');
14937
                        if (pagingToolbar) {
14938
                            grid.remove(pagingToolbar, true);
14939
                        }
14940
                    }
14941
                }
14942
            },
14943
            listeners: {
14944
                viewready: function () {
14945
                    if (autoLoad == true) {
14946
                        this.getStore().loadPage(1);
14947
                    }
14948

    
14949
                },
14950
                beforeedit: function () {
14951
                    return false;
14952
                }
14953
            },
14954
            lockedViewConfig: {
14955
                scroll: 'horizontal'
14956
            },
14957
            viewConfig: {
14958
                emptyText: 'No Data Display',
14959
                deferEmptyText: false,
14960
                //Add Nana For Autosize Column Mode Grid MD
14961
                listeners: {
14962
                    refresh: function (dataview) {
14963
                        Ext.each(dataview.panel.columns, function (column) {
14964
                            if (column.autoSizeColumn == false)
14965
                                column.autoSizeColumn = true;
14966
                            column.autoSize();
14967
                            console.log('GridMD');
14968
                        })
14969
                    },
14970
                    //afterrender: function (dataview) {
14971
                    //	console.log(dataview);
14972
                    //	dataview.getStore().reload();
14973
                    //}
14974
                    afterrender: function (dataview) {
14975
                        Ext.defer(function () {
14976
                            dataview.store.reload();
14977
                        }, 2500, this);
14978
                    }
14979
                }
14980
            },
14981
            //for chekbox
14982
            selModel: {
14983
                //type: 'cellmodel'
14984
            },
14985
            selType: checkSelection,
14986
            columns: cols_,
14987
            store: jsStoreGrid,
14988
            plugins: [{
14989
                ptype: 'gridfilters'
14990
            }
14991
            ],
14992

    
14993
        });
14994
        me.callParent(arguments);
14995
    }
14996

    
14997
});
14998

    
14999
Ext.define('MinovaUtil.MinovaES.MinovaPMSEditAbleGrid', {
15000
    extend: 'Ext.form.Panel',
15001
    alias: ['widget.MinovaPMSEditAbleGrid', 'widget.Minovapmseditablegrid', 'widget.minovapmseditablegrid'],
15002
    requires: [
15003
		'Ext.grid.plugin.CellEditing',
15004
		'Ext.grid.Panel',
15005
    ],
15006
    anchor: '100%',
15007
    tableName: undefined,
15008
    apprasalType: undefined,
15009
    empID: undefined,
15010
    hideButton: undefined,
15011
    multiSelect: undefined,
15012
    initComponent: function () {
15013
        var me = this;
15014
        var isLookup = me.isLookup;
15015
        var hide_ = false;
15016
        var widthLock = 250;
15017
        var checkSelection = '';
15018
        if (me.hideButton == true) {
15019
            hide_ = true;
15020
        }
15021
        if (me.multiSelect) {
15022
            locking = false;
15023
            checkSelection = 'checkboxmodel';
15024
            widthLock = 40;
15025
        }
15026
        var tableName = me.tableName;
15027
        var cols = [];
15028
        var fieldStore = [];
15029
        var _url = 'GetAllField';
15030
        var hasil = null;
15031
        var height = me.height;
15032
        var storeID = 'store' + me.tableName;
15033
        var gridName = 'grid' + me.name;
15034
        if (me.storeName) {
15035
            storeID = me.storeName;
15036
        }
15037
        var empID = me.empID;
15038
        var apprasalType = me.apprasalType;
15039
        var LangID = MinovaUtil.GetLangID();
15040
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'" + "," + empID + "," + apprasalType
15041
        Ext.Ajax.request({
15042
            async: false,
15043
            method: 'POST',
15044
            url: '/Performance/getFieldPMS',
15045
            params: {
15046
                tableName: 'PDSPMS001',
15047
                _param: parameter
15048
            },
15049
            success: function (response) {
15050
                var results = Ext.decode(response.responseText);
15051
                hasil = Ext.decode(results.data);
15052
            }
15053
        });
15054
        var addData = 'var data={';
15055
        if (hasil.length > 0) {
15056
            Ext.each(hasil, function (rec) {
15057
                fieldStore.push(rec.FieldName)
15058
                if (rec.FieldName != 'Sequence') {
15059
                    addData = addData + rec.FieldName + ":" + "'',";
15060
                }
15061
                var null_ = null;
15062
                var ReadOnly_ = false;
15063
                if (rec.IsPrimaryKey == true) {
15064
                    null_ = false;
15065
                }
15066
                if (rec.IsRequired == true) {
15067
                    null_ = false;
15068
                } else {
15069
                    null_ = true;
15070
                }
15071
                if (rec.ReadOnly == '1') {
15072
                    ReadOnly_ = true;
15073
                }
15074
                var Hidden_ = false;
15075
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
15076
                    Hidden_ = true;
15077
                    null_ = true;
15078
                }
15079
                if (rec.GridView == 1) {
15080
                    switch (rec.FormatRef) {
15081
                        case "date":
15082
                            cols.push({
15083
                                xtype: 'minovadatecolumn',
15084
                                hidden: Hidden_,
15085
                                text: rec.HeaderTitle,
15086
                                dataIndex: rec.FieldName,
15087
                                filter: {
15088
                                    itemDefaults: {
15089
                                        emptyText: 'Search for...',
15090
                                    }
15091
                                },
15092
                                editor: {
15093
                                    allowBlank: null_,
15094
                                    xtype: 'datefield',
15095
                                    hideMode: 'visibility',
15096
                                    readOnly: ReadOnly_,
15097
                                    id: tableName + rec.FieldName,
15098
                                    fieldGrid: rec.FieldName,
15099
                                    nameTable: rec.TableName,
15100
                                }
15101
                            });
15102
                            break
15103
                        case "amount":
15104
                            cols.push({
15105
                                xtype: 'minovacurrancycolumn',
15106
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
15107
                                text: rec.HeaderTitle,
15108
                                align: 'right',
15109
                                dataIndex: rec.FieldName,
15110
                                hidden: Hidden_,
15111
                                filter: {
15112
                                    itemDefaults: {
15113
                                        emptyText: 'Search for...'
15114
                                    }
15115
                                },
15116
                                editor: {
15117
                                    allowBlank: null_,
15118
                                    xtype: 'minovacurrencyfield',
15119
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
15120
                                    //vtype: 'validateDecimal',
15121
                                    readOnly: ReadOnly_,
15122
                                    id: tableName + rec.FieldName,
15123
                                    nameTable: rec.TableName,
15124
                                    fieldGrid: rec.FieldName,
15125
                                    fieldStyle: 'text-align:right;',
15126
                                    value: '0',
15127

    
15128
                                }
15129
                            });
15130
                            break
15131
                        case "time":
15132
                            var DefaultValue = rec.DefaultValue;
15133
                            if (DefaultValue == '') {
15134
                                defaultValue = '00:00';
15135
                            }
15136
                            cols.push({
15137
                                //xtype: 'minovatimecolumn',
15138
                                xtype: 'timefield',
15139
                                format: 'H:i',
15140
                                submitFormat: 'Hi',
15141
                                text: rec.HeaderTitle,
15142
                                dataIndex: rec.FieldName,
15143
                                hidden: Hidden_,
15144
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
15145
                                filter: {
15146
                                    itemDefaults: {
15147
                                        emptyText: 'Search for...'
15148
                                    }
15149
                                },
15150
                                editor: {
15151
                                    allowBlank: null_,
15152
                                    xtype: 'timefield',
15153
                                    readOnly: ReadOnly_,
15154
                                    id: tableName + rec.FieldName,
15155
                                    format: 'H:i',
15156
                                    submitFormat: 'Hi',
15157
                                    increment: 5,
15158
                                    value: DefaultValue,
15159
                                    anchor: '100%',
15160
                                    listeners: {}
15161
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
15162
                                }
15163
                            });
15164
                            break
15165
                        default:
15166
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
15167
                                cols.push({
15168
                                    text: rec.HeaderTitle,
15169
                                    dataIndex: rec.FieldName,
15170
                                    width: 100,
15171
                                    filter: {
15172
                                        type: 'string',
15173
                                        itemDefaults: {
15174
                                            emptyText: 'Search for...'
15175
                                        }
15176
                                    }
15177
                                });
15178
                            } else if (rec.SearchType == '0') {
15179
                                var valueField = null;
15180
                                var displayValue = null;
15181
                                var TableRef = undefined;
15182
                                if (rec.TableRef != '') {
15183
                                    TableRef = rec.TableRef;
15184

    
15185
                                    Ext.Ajax.request({
15186
                                        async: false,
15187
                                        method: 'POST',
15188
                                        url: '/UserControl/GetStore',
15189
                                        params: {
15190
                                            tableName: 'SDATATABLEFIELD',
15191
                                            param: 'TableName[equal]' + rec.TableRef
15192
                                        },
15193
                                        success: function (response) {
15194
                                            var results = Ext.decode(response.responseText);
15195
                                            data_ = results.data;
15196
                                            if (data_ != undefined) {
15197
                                                valueField_ = $.grep(data_, function (r) {
15198
                                                    return r.ValueField == '1'
15199
                                                });
15200
                                                valueField = valueField_[0].FieldName
15201
                                                displayValue_ = $.grep(data_, function (r) {
15202
                                                    return r.DisplayValue == '1'
15203
                                                });
15204
                                                displayValue = displayValue_[0].FieldName
15205
                                            }
15206
                                        }
15207
                                    });
15208

    
15209
                                    //create Store
15210
                                    Ext.create('Ext.data.Store', {
15211
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15212
                                        autoLoad: true,
15213
                                        proxy: {
15214
                                            method: 'POST',
15215
                                            type: 'ajax',
15216
                                            url: '/UserControl/GetStore',
15217
                                            extraParams: {
15218
                                                tableName: TableRef,
15219
                                                param: rec.ParamCombo
15220
                                            },
15221
                                            reader: {
15222
                                                type: 'json',
15223
                                                root: 'data',
15224
                                                totalProperty: 'data[0].TotalCount'
15225
                                            }
15226
                                        }
15227
                                    });
15228
                                } else if (rec.FixedValue != '') {
15229
                                    var storeData = [];
15230
                                    var str = rec.FixedValue;
15231
                                    var hasil = str.split('||');
15232
                                    hasil.forEach(function (h) {
15233
                                        store_ = h.split('=')
15234
                                        storeData.push({
15235
                                            code: store_[0],
15236
                                            desc: store_[1],
15237

    
15238
                                        });
15239
                                    });
15240

    
15241
                                    valueField = 'code';
15242
                                    displayValue = 'desc';
15243

    
15244
                                    Ext.create('Ext.data.Store', {
15245
                                        storeId: 'store_' + me.tableName + rec.FieldName,
15246
                                        autoLoad: true,
15247
                                        data: storeData
15248
                                    })
15249
                                }
15250

    
15251
                                cols.push({
15252
                                    xtype: 'minovacombocolumn',
15253
                                    hidden: Hidden_,
15254
                                    text: rec.HeaderTitle,
15255
                                    dataIndex: rec.FieldName,
15256
                                    valueField: valueField,
15257
                                    displayField: displayValue,
15258
                                    store: 'store_' + me.tableName + rec.FieldName,
15259
                                    editor: {
15260
                                        allowBlank: null_,
15261
                                        xtype: 'combobox',
15262
                                        readOnly: ReadOnly_,
15263
                                        id: tableName + rec.FieldName,
15264
                                        nameTable: rec.TableName,
15265
                                        fieldGrid: rec.FieldName,
15266
                                        valueField: valueField,
15267
                                        displayField: displayValue,
15268

    
15269
                                        store: 'store_' + me.tableName + rec.FieldName,
15270
                                    },
15271
                                    filter: {
15272
                                        type: 'list',
15273
                                        itemDefaults: {
15274
                                            emptyText: 'Search for...'
15275
                                        }
15276
                                    }
15277
                                });
15278
                            } else if (rec.SearchType == '5') {							
15279
                                var valueField = null;
15280
                                var displayValue = null;
15281
                                var AdditionaldisplayValue = null;
15282
                                var TableRef = undefined;
15283
                                if (rec.TableRef != '') {
15284
                                    TableRef = rec.TableRef;
15285
                                    Ext.Ajax.request({
15286
                                        async: false,
15287
                                        method: 'POST',
15288
                                        url: '/UserControl/GetStore',
15289
                                        params: {
15290
                                            tableName: 'SDATATABLEFIELD',
15291
                                            param: 'TableName[equal]' + rec.TableRef
15292
                                        },
15293
                                        success: function (response) {
15294
                                            var results = Ext.decode(response.responseText);
15295
                                            data_ = results.data;
15296
                                            if (data_ != undefined) {
15297
                                                valueField_ = $.grep(data_, function (r) {
15298
                                                    return r.ValueField == '1'
15299
                                                });
15300
                                                if (valueField_.length > 0) {
15301
                                                    valueField = valueField_[0].FieldName
15302
                                                }
15303

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

    
15557
                                    text: rec.HeaderTitle,
15558
                                    hidden: Hidden_,
15559
                                    dataIndex: rec.FieldName,
15560
                                    filter: {
15561
                                        itemDefaults: {
15562
                                            emptyText: 'Search for...'
15563
                                        }
15564
                                    },
15565
                                    editor: {
15566
                                        allowBlank: null_,
15567
                                        xtype: 'lookupemployee',
15568
                                        readOnly: ReadOnly_,
15569
                                        isGrid: true,
15570
                                        fieldTarget: targetField_,
15571
                                        fieldValue: fieldValue_,
15572
                                        isGrid: true,
15573
                                        id: tableName + rec.FieldName,
15574
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
15575
                                        triggerCls: 'x-form-search-trigger',
15576
                                        vtype: 'alphanum', // disable space
15577
                                        nameTable: rec.TableName,
15578
                                        fieldGrid: rec.FieldName,
15579
                                        listeners: {
15580
                                            change: function (val) {
15581
                                                var custumFunc = rec.SelectFunction;
15582
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
15583
                                                    Ext.Ajax.request({
15584
                                                        async: false,
15585
                                                        method: 'POST',
15586
                                                        url: '/UserControl/GetStore',
15587
                                                        params: {
15588
                                                            tableName: 'PCMFUNC',
15589
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
15590
                                                        },
15591
                                                        success: function (response) {
15592
                                                            var results = Ext.decode(response.responseText);
15593
                                                            data_ = results.data[0];
15594
                                                            if (data_ != undefined) {
15595
                                                                custumFunc = data_.FunctionCode;
15596
                                                            }
15597
                                                        }
15598
                                                    });
15599
                                                }
15600
                                                if (custumFunc) {
15601
                                                    eval(custumFunc)
15602
                                                }
15603
                                            }
15604
                                        }
15605
                                    }
15606
                                });
15607
                            } else {
15608
                                cols.push({
15609
                                    text: rec.HeaderTitle,
15610
                                    hidden: Hidden_,
15611
                                    dataIndex: rec.FieldName,
15612
                                    filter: {
15613
                                        itemDefaults: {
15614
                                            emptyText: 'Search for...'
15615
                                        }
15616
                                    },
15617
                                    editor: {
15618
                                        allowBlank: null_,
15619
                                        xtype: 'textfield',
15620
                                        readOnly: ReadOnly_,
15621
                                        id: tableName + rec.FieldName,
15622
                                        nameTable: rec.TableName,
15623
                                        fieldGrid: rec.FieldName,
15624
                                        listeners: {
15625
                                            change: function (val) {
15626
                                                var custumFunc = null;
15627
                                                Ext.Ajax.request({
15628
                                                    async: false,
15629
                                                    method: 'POST',
15630
                                                    url: '/UserControl/GetStore',
15631
                                                    params: {
15632
                                                        tableName: 'SDATATABLEFIELD',
15633
                                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
15634
                                                    },
15635
                                                    success: function (response) {
15636
                                                        var results = Ext.decode(response.responseText);
15637
                                                        data_ = results.data[0];
15638
                                                        if (data_ != undefined) {
15639
                                                            custumFunc = data_.SelectFunction;
15640
                                                            //console.log(data_)
15641
                                                        }
15642
                                                    }
15643
                                                });
15644
                                                if (custumFunc) {
15645
                                                    eval(custumFunc)
15646
                                                }
15647
                                            }
15648
                                        }
15649
                                    }
15650
                                });
15651
                            }
15652
                            break
15653
                    }
15654
                } else {
15655
                    cols.push({
15656
                        text: rec.HeaderTitle,
15657
                        hidden: Hidden_,
15658
                        dataIndex: rec.FieldName,
15659
                        hidden: true,
15660
                        editor: {
15661
                            allowBlank: true,
15662
                            xtype: 'textfield',
15663
                            readOnly: ReadOnly_,
15664
                            id: tableName + rec.FieldName,
15665
                            nameTable: rec.TableName,
15666
                            fieldGrid: rec.FieldName,
15667
                        },
15668
                        filter: {
15669
                            itemDefaults: {
15670
                                emptyText: 'Search for...'
15671
                            }
15672
                        }
15673
                    });
15674
                }
15675
            });
15676
        };
15677
        addData = addData + "}";
15678
        Ext.applyIf(me, {
15679

    
15680
            items: [{
15681
                xtype: 'grid',
15682
                id: gridName,
15683
                name: gridName,
15684
                height: height,
15685
                autoHeight: true,
15686
                //store: 'gridStore',
15687
                autoScroll: true,
15688
                store: Ext.create('Ext.data.Store', {
15689
                    storeId: storeID,
15690
                    fields: fieldStore,
15691
                    proxy: {
15692
                        method: 'POST',
15693
                        type: 'ajax',
15694
                        url: '',
15695
                        reader: {
15696
                            type: 'json',
15697
                            root: 'data'
15698
                        }
15699
                    }
15700
                }),
15701
                dockedItems: [{
15702
                    xtype: 'toolbar',
15703
                    items: [{
15704
                        text: 'Add',
15705
                        hidden: hide_,
15706
                        name: tableName + 'Add',
15707
                        iconCls: 'fa-plus-circle',
15708
                        style: 'font-family: FontAwesome',
15709
                        handler: function () {
15710
                            var store = Ext.StoreMgr.lookup(storeID)
15711
                            idx = store.getCount();
15712
                            var action = getParam('action');
15713
                            var data = '';
15714
                            var Sequence = 0;
15715
                            if (idx == 0) {
15716
                                Sequence = 1;
15717
                            } else {
15718
                                Sequence = 1 + idx;
15719
                            }
15720
                            //data = {
15721
                            //    Sequence: Sequence
15722
                            //};
15723

    
15724
                            var seq = 'Sequence';
15725
                            var SequenceValue = Sequence;
15726
                            eval(addData);
15727
                            data[seq] = SequenceValue;
15728

    
15729
                            store.insert(idx, data);
15730
                        }
15731

    
15732
                    }, {
15733
                        text: 'Delete',
15734
                        hidden: hide_,
15735
                        name: tableName + 'DeleteText',
15736
                        iconCls: 'fa-trash-o',
15737
                        style: 'font-family: FontAwesome',
15738
                        //disabled: true
15739
                        handler: function () {
15740
                            var me = this,
15741
                            store = Ext.StoreMgr.lookup(storeID)
15742

    
15743
                            var grid = Ext.getCmp(gridName);
15744

    
15745
                            Ext.MessageBox.show({
15746
                                title: 'Remove tab',
15747
                                msg: "This will remove. Do you want to continue?",
15748
                                buttons: Ext.MessageBox.YESNO,
15749
                                fn: function (choice) {
15750
                                    console.log(choice);
15751
                                    if (choice === 'yes') {
15752
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
15753
                                        if (selection) {
15754
                                            store.remove(selection);
15755
                                        }
15756
                                    }
15757
                                    //delete panel.pendingClose;
15758
                                }
15759
                            });
15760
                        }
15761

    
15762
                    }
15763
                    ]
15764
                }
15765
                ],
15766
                columns: cols,
15767
                selType: checkSelection,
15768
                //selType: 'rowmodel',
15769
                plugins: {
15770
                    ptype: 'rowediting',
15771
                    pluginId: 'rowEditing',
15772
                    clicksToEdit: 0,
15773
                    listeners: {
15774
                        //edit: 'onGridEditorEdit'
15775
                    }
15776
                }
15777
            }, ]
15778

    
15779
        });
15780

    
15781
        me.callParent(arguments);
15782
    }
15783
});
15784

    
15785
Ext.define('MinovaUtil.MinovaES.Minovatimefield', {
15786
    extend: 'Ext.form.field.Time',
15787
    alias: ['widget.minovatimefield'],
15788
    undefinedText: '&#160;',
15789
    setValue: function (v) {
15790
        hasil = '';
15791
        if (v != this.getValue()) {
15792
            if (v) {
15793
                if (v.length == 4) {
15794

    
15795
                    var h = v.substring(0, 2);
15796
                    var m = v.substring(2, 4)
15797
                    //this.setValue(h +':'+m);
15798
                    hasil = h + ':' + m;
15799
                }
15800
                if (v.length == 5) {
15801
                    this.setValue(v);
15802
                    hasil = v;
15803
                }
15804
            }
15805
            this.setValue(hasil);
15806
        }
15807

    
15808
    },
15809
});
15810

    
15811
Ext.define('MinovaUtil.MinovaES.MinovaFixValueLabel', {
15812
    extend: 'Ext.form.Label',
15813
    alias: ['widget.MinovaFixValueLabel', 'widget.minovafixvaluelabel'],
15814
    anchor: '50%',
15815
    defaultRenderer: function (value) {
15816
        if (typeof(this.store) !== 'object') {
15817
            this.store = Ext.data.StoreManager.lookup(this.store);
15818
        }
15819
        var idx = this.store.findExact('code', value);
15820
        if (this.store.getAt(idx)) {
15821
            var result = this.store.getAt(idx).get('desc');
15822
            value = result ? result : value;
15823
        }
15824
        this.setRawValue(value);
15825

    
15826
    },
15827
    initComponent: function () {
15828
        var me = this;
15829
        var storeData = [];
15830
        var str = me.fixedValue;
15831
        var hasil = str.split('||');
15832
        hasil.forEach(function (h) {
15833
            store_ = h.split('=')
15834
            storeData.push({
15835
                code: store_[0],
15836
                desc: store_[1],
15837

    
15838
            });
15839
        });
15840
        Ext.applyIf(me, {
15841

    
15842
            store: Ext.create('Ext.data.Store', {
15843
                storeId: 'store' + name,
15844
                autoLoad: true,
15845
                data: storeData
15846

    
15847
            }),
15848

    
15849
        });
15850
        me.callParent(arguments);
15851
    }
15852
});
15853

    
15854
Ext.define('MinovaUtil.MinovaES.MinovaComboColumnFixValueLabel', {
15855
    extend: 'Ext.grid.column.Column',
15856
    alias: ['widget.minovacombocolumnfixvalue'],
15857
    initComponent: function () {
15858
        var me = this;
15859
        var storeData = [];
15860
        var str = me.fixedValue;
15861
        var hasil = str.split('||');
15862
        hasil.forEach(function (h) {
15863
            store_ = h.split('=')
15864
            storeData.push({
15865
                code: store_[0],
15866
                desc: store_[1],
15867

    
15868
            });
15869
        });
15870
        Ext.applyIf(me, {
15871

    
15872
            store: Ext.create('Ext.data.Store', {
15873
                storeId: 'store' + name,
15874
                autoLoad: true,
15875
                data: storeData
15876

    
15877
            }),
15878

    
15879
        });
15880
        this.callParent(arguments);
15881
    },
15882
    defaultRenderer: function (value) {
15883
        if (typeof(this.store) !== 'object') {
15884
            Ext.data.StoreManager.lookup(this.store).load();
15885
            this.store = Ext.data.StoreManager.lookup(this.store);
15886
        }
15887
        var idx = this.store.findExact('code', value);
15888
        if (this.store.getAt(idx)) {
15889
            var result = this.store.getAt(idx).get('desc');
15890
            value = result ? result : value;
15891
        }
15892
        return value;
15893
    }
15894
});
15895

    
15896
Ext.define('MinovaUtil.MinovaES.MinovaLookupColumn', {
15897
    extend: 'Ext.grid.column.Column',
15898
    alias: ['widget.minovalookupcolumn'],
15899
    initComponent: function () {
15900
        this.callParent(arguments);
15901
    },
15902
    defaultRenderer: function (value) {
15903
        data_ = undefined;
15904
        Ext.Ajax.request({
15905
            async: false,
15906
            method: 'POST',
15907
            url: '/UserControl/GetStore',
15908
            params: {
15909
                tableName: 'PDSCMTABLE',
15910
                param: this.tableName + ',' + value + ',hasil'
15911
            },
15912
            success: function (response) {
15913
                var results = Ext.decode(response.responseText);
15914
                data_ = results.data;
15915
                if (data_ != null) {
15916
                    if (data_.length > 0) {
15917
                        value = value + '-' + data_[0].hasil;
15918
                    }
15919
                }
15920
            }
15921
        });
15922
        return value;
15923
    }
15924
});
15925

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

    
16071
                                    }
16072
                                });
16073
                                break
16074
                            case "time":
16075
                                var DefaultValue = rec.DefaultValue;
16076
                                if (DefaultValue == '') {
16077
                                    defaultValue = '00:00';
16078
                                }
16079
                                cols.push({
16080
                                    //xtype: 'minovatimecolumn',
16081
                                    xtype: 'timefield',
16082
                                    format: 'H:i',
16083
                                    submitFormat: 'Hi',
16084
                                    text: rec.HeaderTitle,
16085
                                    dataIndex: rec.FieldName,
16086
                                    hidden: Hidden_,
16087
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
16088
                                    filter: {
16089
                                        itemDefaults: {
16090
                                            emptyText: 'Search for...'
16091
                                        }
16092
                                    },
16093
                                    editor: {
16094
                                        allowBlank: null_,
16095
                                        xtype: 'timefield',
16096
                                        readOnly: ReadOnly_,
16097
                                        id: tableName + rec.FieldName,
16098
                                        format: 'H:i',
16099
                                        submitFormat: 'Hi',
16100
                                        increment: 5,
16101
                                        value: DefaultValue,
16102
                                        anchor: '100%',
16103
                                        listeners: {}
16104
                                        //renderer: Ext.util.Format.dateRenderer('G:i'),
16105
                                    }
16106
                                });
16107
                                break
16108
                            default:
16109
                                if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
16110
                                    cols.push({
16111
                                        text: rec.HeaderTitle,
16112
                                        dataIndex: rec.FieldName,
16113
                                        width: 100,
16114
                                        filter: {
16115
                                            type: 'string',
16116
                                            itemDefaults: {
16117
                                                emptyText: 'Search for...'
16118
                                            }
16119
                                        }
16120
                                    });
16121
                                } else if (rec.SearchType == '0') {
16122
                                    var valueField = null;
16123
                                    var displayValue = null;
16124
                                    var TableRef = undefined;
16125
                                    if (rec.TableRef != '') {
16126
                                        TableRef = rec.TableRef;
16127

    
16128
                                        Ext.Ajax.request({
16129
                                            async: false,
16130
                                            method: 'POST',
16131
                                            url: '/UserControl/GetStore',
16132
                                            params: {
16133
                                                tableName: 'SDATATABLEFIELD',
16134
                                                param: 'TableName[equal]' + rec.TableRef
16135
                                            },
16136
                                            success: function (response) {
16137
                                                var results = Ext.decode(response.responseText);
16138
                                                data_ = results.data;
16139
                                                if (data_ != undefined) {
16140
                                                    valueField_ = $.grep(data_, function (r) {
16141
                                                        return r.ValueField == '1'
16142
                                                    });
16143
                                                    valueField = valueField_[0].FieldName
16144
                                                    displayValue_ = $.grep(data_, function (r) {
16145
                                                        return r.DisplayValue == '1'
16146
                                                    });
16147
                                                    displayValue = displayValue_[0].FieldName
16148
                                                }
16149
                                            }
16150
                                        });
16151

    
16152
                                        //create Store
16153
                                        Ext.create('Ext.data.Store', {
16154
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16155
                                            autoLoad: true,
16156
                                            proxy: {
16157
                                                method: 'POST',
16158
                                                type: 'ajax',
16159
                                                url: '/UserControl/GetStore',
16160
                                                extraParams: {
16161
                                                    tableName: TableRef,
16162
                                                    param: rec.ParamCombo
16163
                                                },
16164
                                                reader: {
16165
                                                    type: 'json',
16166
                                                    root: 'data',
16167
                                                    totalProperty: 'data[0].TotalCount'
16168
                                                }
16169
                                            }
16170
                                        });
16171
                                    } else if (rec.FixedValue != '') {
16172
                                        var storeData = [];
16173
                                        var str = rec.FixedValue;
16174
                                        var hasil = str.split('||');
16175
                                        hasil.forEach(function (h) {
16176
                                            store_ = h.split('=')
16177
                                            storeData.push({
16178
                                                code: store_[0],
16179
                                                desc: store_[1],
16180

    
16181
                                            });
16182
                                        });
16183

    
16184
                                        valueField = 'code';
16185
                                        displayValue = 'desc';
16186

    
16187
                                        Ext.create('Ext.data.Store', {
16188
                                            storeId: 'store_' + me.tableName + rec.FieldName,
16189
                                            autoLoad: true,
16190
                                            data: storeData
16191
                                        })
16192
                                    }
16193

    
16194
                                    cols.push({
16195
                                        xtype: 'minovacombocolumn',
16196
                                        hidden: Hidden_,
16197
                                        text: rec.HeaderTitle,
16198
                                        dataIndex: rec.FieldName,
16199
                                        valueField: valueField,
16200
                                        displayField: displayValue,
16201
                                        store: 'store_' + me.tableName + rec.FieldName,
16202
                                        editor: {
16203
                                            allowBlank: null_,
16204
                                            xtype: 'combobox',
16205
                                            readOnly: ReadOnly_,
16206
                                            id: tableName + rec.FieldName,
16207
                                            nameTable: rec.TableName,
16208
                                            fieldGrid: rec.FieldName,
16209
                                            valueField: valueField,
16210
                                            displayField: displayValue,
16211

    
16212
                                            store: 'store_' + me.tableName + rec.FieldName,
16213
                                        },
16214
                                        filter: {
16215
                                            type: 'list',
16216
                                            itemDefaults: {
16217
                                                emptyText: 'Search for...'
16218
                                            }
16219
                                        }
16220
                                    });
16221

    
16222
                                } else if (rec.SearchType == '5') {								
16223
                                    var valueField = null;
16224
                                    var displayValue = null;
16225
                                    var AdditionaldisplayValue = null;
16226
                                    var TableRef = undefined;
16227
                                    if (rec.TableRef != '') {
16228
                                        TableRef = rec.TableRef;
16229
                                        Ext.Ajax.request({
16230
                                            async: false,
16231
                                            method: 'POST',
16232
                                            url: '/UserControl/GetStore',
16233
                                            params: {
16234
                                                tableName: 'SDATATABLEFIELD',
16235
                                                param: 'TableName[equal]' + rec.TableRef
16236
                                            },
16237
                                            success: function (response) {
16238
                                                var results = Ext.decode(response.responseText);
16239
                                                data_ = results.data;
16240
                                                if (data_ != undefined) {
16241
                                                    valueField_ = $.grep(data_, function (r) {
16242
                                                        return r.ValueField == '1'
16243
                                                    });
16244
                                                    if (valueField_.length > 0) {
16245
                                                        valueField = valueField_[0].FieldName
16246
                                                    }
16247

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

    
16500
                                        text: rec.HeaderTitle,
16501
                                        hidden: Hidden_,
16502
                                        dataIndex: rec.FieldName,
16503
                                        filter: {
16504
                                            itemDefaults: {
16505
                                                emptyText: 'Search for...'
16506
                                            }
16507
                                        },
16508
                                        editor: {
16509
                                            allowBlank: null_,
16510
                                            xtype: 'lookupemployee',
16511
                                            readOnly: ReadOnly_,
16512
                                            isGrid: true,
16513
                                            fieldTarget: targetField_,
16514
                                            fieldValue: fieldValue_,
16515
                                            isGrid: true,
16516
                                            id: tableName + rec.FieldName,
16517
                                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
16518
                                            triggerCls: 'x-form-search-trigger',
16519
                                            vtype: 'alphanum', // disable space
16520
                                            nameTable: rec.TableName,
16521
                                            fieldGrid: rec.FieldName,
16522
                                            listeners: {
16523
                                                change: function (val) {
16524
                                                    var custumFunc = rec.SelectFunction;
16525
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
16526
                                                        Ext.Ajax.request({
16527
                                                            async: false,
16528
                                                            method: 'POST',
16529
                                                            url: '/UserControl/GetStore',
16530
                                                            params: {
16531
                                                                tableName: 'PCMFUNC',
16532
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
16533
                                                            },
16534
                                                            success: function (response) {
16535
                                                                var results = Ext.decode(response.responseText);
16536
                                                                data_ = results.data[0];
16537
                                                                if (data_ != undefined) {
16538
                                                                    custumFunc = data_.FunctionCode;
16539
                                                                }
16540
                                                            }
16541
                                                        });
16542
                                                    }
16543
                                                    if (custumFunc) {
16544
                                                        eval(custumFunc)
16545
                                                    }
16546
                                                }
16547
                                            }
16548
                                        }
16549
                                    });
16550
                                } else {
16551
                                    cols.push({
16552
                                        text: rec.HeaderTitle,
16553
                                        hidden: Hidden_,
16554
                                        dataIndex: rec.FieldName,
16555
                                        filter: {
16556
                                            itemDefaults: {
16557
                                                emptyText: 'Search for...'
16558
                                            }
16559
                                        },
16560
                                        editor: {
16561
                                            allowBlank: null_,
16562
                                            xtype: 'textfield',
16563
                                            readOnly: ReadOnly_,
16564
                                            id: tableName + rec.FieldName,
16565
                                            nameTable: rec.TableName,
16566
                                            fieldGrid: rec.FieldName,
16567
                                            listeners: {
16568
                                                change: function (val) {
16569
                                                    var custumFunc = null;
16570
                                                    Ext.Ajax.request({
16571
                                                        async: false,
16572
                                                        method: 'POST',
16573
                                                        url: '/UserControl/GetStore',
16574
                                                        params: {
16575
                                                            tableName: 'SDATATABLEFIELD',
16576
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
16577
                                                        },
16578
                                                        success: function (response) {
16579
                                                            var results = Ext.decode(response.responseText);
16580
                                                            data_ = results.data[0];
16581
                                                            if (data_ != undefined) {
16582
                                                                custumFunc = data_.SelectFunction;
16583
                                                                //console.log(data_)
16584
                                                            }
16585
                                                        }
16586
                                                    });
16587
                                                    if (custumFunc) {
16588
                                                        eval(custumFunc)
16589
                                                    }
16590
                                                }
16591
                                            }
16592
                                        }
16593
                                    });
16594
                                }
16595
                                break
16596
                        }
16597
                    }
16598
                } else {
16599
                    cols.push({
16600
                        text: rec.HeaderTitle,
16601
                        hidden: Hidden_,
16602
                        dataIndex: rec.FieldName,
16603
                        hidden: true,
16604
                        editor: {
16605
                            allowBlank: true,
16606
                            xtype: 'textfield',
16607
                            readOnly: ReadOnly_,
16608
                            id: tableName + rec.FieldName,
16609
                            nameTable: rec.TableName,
16610
                            fieldGrid: rec.FieldName,
16611
                        },
16612
                        filter: {
16613
                            itemDefaults: {
16614
                                emptyText: 'Search for...'
16615
                            }
16616
                        }
16617
                    });
16618
                }
16619
            })
16620
        }
16621
        addData = addData + "}";
16622

    
16623
        cols.push({
16624
            text: 'Action',
16625
            width: 100,
16626
            xtype: 'actioncolumn',
16627
            tooltip: 'View Data',
16628
            name: 'Action',
16629
            itemId: 'Action',
16630
            align: 'center',
16631
            iconCls: 'fa-edit',
16632
            renderer: function (value, metadata, record) {
16633
                metadata.tdStyle = 'font-family: FontAwesome'
16634
            },
16635
            handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
16636
                var main_ = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
16637
                this.fireEvent("onEditClick");
16638
            }
16639
        });
16640

    
16641
        Ext.applyIf(me, {
16642

    
16643
            items: [{
16644
                xtype: 'treepanel',
16645
                id: gridName,
16646
                name: gridName,
16647
                height: height,
16648
                width: 'fit',
16649
                autoHeight: true,
16650
                //store: 'gridStore',
16651
                autoLoad: false,
16652
                autoScroll: true,
16653
                useArrows: true,
16654
                animate: false,
16655
                rootVisible: false,
16656
                plugins: [
16657
                    Ext.create('Ext.grid.plugin.CellEditing', {
16658
                        clicksToEdit: 2
16659
                    })
16660
                ],
16661
                root: {
16662
                    expanded: true,
16663
                    nodeType: 'async',
16664
                    ext: 'Favorites',
16665
                    id: 'null'
16666
                },
16667
                columns: cols,
16668
                //selType: 'rowmodel',
16669
            }
16670
            ]
16671

    
16672
        });
16673

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

    
17697
                if (rec.IsPrimaryKey == 1 && me.isLookup == undefined) {
17698
                    formfieldKey = new Ext.form.TextField({
17699
                        hidden: true,
17700
                        name: "Key_" + rec.FieldName,
17701
                    });
17702
                    col2.push(formfieldKey);
17703
                }
17704
            });
17705
        }
17706
        Ext.applyIf(me, {
17707
            items: [{
17708
                style: 'width: 50%',
17709
                items: col1
17710
            }, {
17711
                style: 'width: 50%',
17712
                items: col2
17713
            }
17714
            ]
17715
        });
17716
        this.callParent();
17717
    }
17718
});
17719
/*Add by Taufan ( Generate Doc Transaction Grid For ERP )*/
17720
Ext.define('MinovaUtil.MinovaES.MinovaDocGrid', {
17721
    extend: 'Ext.grid.Panel',
17722
    requires: ['Ext.grid.RowNumberer'],
17723
    alias: 'widget.docgrid',
17724
    alternateClassName: 'Ext.grid.MinovaGrid',
17725
    tableName: undefined,
17726
    docType: undefined,
17727
    transType: undefined,
17728
    isLookup: undefined,
17729
    param: undefined,
17730
    pagesize: undefined,
17731
    storename: undefined,
17732
    layoutType: undefined,
17733
    enableLocking: true,
17734
    autoLoad: undefined,
17735
    multiSelect: undefined,
17736
    getTableName: function () {
17737
        return this.tableName;
17738
    },
17739
    initComponent: function () {
17740
        var me = this;
17741
        var cols_ = [];
17742
        var fieldeditor = {};
17743
        var hasil = null;
17744
        var autoLoad = true;
17745
        var LangID = localStorage.LangId;
17746
        var fielGrid = 'rec.GridView == 1';
17747
        var locking = true;
17748
        var checkSelection = '';
17749
        var widthLock = 250;
17750
        if (me.multiSelect) {
17751
            locking = false;
17752
            checkSelection = 'checkboxmodel';
17753
            widthLock = 40;
17754
        }
17755
        if (me.autoLoad == false) {
17756
            autoLoad = false;
17757
        }
17758
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',DocType='" + me.docType + "'";
17759
        Ext.Ajax.request({
17760
            async: false,
17761
            method: 'POST',
17762
            url: '/UserControl/GetStore',
17763
            params: {
17764
                tableName: 'PDSDOCFIELD',
17765
                param: parameter
17766
            },
17767
            success: function (response) {
17768
                var results = Ext.decode(response.responseText);
17769
                hasil = results.data;
17770
            }
17771
        });
17772
        if (hasil.length > 0) {
17773
            Ext.each(hasil, function (rec) {
17774
                var null_ = null;
17775
                if (rec.IsPrimaryKey == true) {
17776
                    null_ = false;
17777
                }
17778
                if (rec.IsRequired == true) {
17779
                    null_ = false;
17780
                } else {
17781
                    null_ = true;
17782
                }
17783
                if (rec.GridView == 1) {
17784
                    switch (rec.FormatRef) {
17785
                        case "action":
17786
                            cols_.push({
17787
                                text: rec.HeaderTitle,
17788
                                width: 100,
17789
                                xtype: 'actioncolumn',
17790
                                tooltip: 'View Data',
17791
                                name: rec.FieldName,
17792
                                itemId: me.tableName + rec.FieldName,
17793
                                align: 'center',
17794
                                iconCls: 'fa-edit',
17795
                                renderer: function (value, metadata, record) {
17796
                                    metadata.tdStyle = 'font-family: FontAwesome'
17797
                                },
17798
                                handler: function (grid, rowIndex, colIndex, actionItem, event, record, row) {
17799

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

    
17991
            });
17992
        };
17993
        var param_ = me.param;
17994
        if (param_ == undefined) {
17995
            param_ = ''
17996
        }
17997
        var jsStoreGrid = new Ext.data.Store({
17998
            storeId: me.storename,
17999
            autoLoad: autoLoad,
18000
            pageSize: me.pagesize,
18001
            proxy: {
18002
                method: 'POST',
18003
                type: 'ajax',
18004
                url: '/UserControl/GetStorePagingAuth',
18005
                extraParams: {
18006
                    tableName: me.tableName,
18007
                    param: param_,
18008
                    menuId: MinovaUtil.GetMenuID()
18009
                },
18010
                reader: {
18011
                    type: 'json',
18012
                    root: 'data',
18013
                    totalProperty: 'totalRecords'
18014
                }
18015
            },
18016
        });
18017
        Ext.applyIf(me, {
18018
            autoScroll: true,
18019
            enableLocking: locking,
18020
            lockedGridConfig: {
18021
                header: false,
18022
                collapsible: true,
18023
                width: widthLock,
18024
                forceFit: locking,
18025
                listeners: {
18026
                    render: function (grid) {
18027
                        var pagingToolbar = grid.child('pagingtoolbar');
18028
                        if (pagingToolbar) {
18029
                            grid.remove(pagingToolbar, true);
18030
                        }
18031
                    }
18032
                }
18033
            },
18034
            listeners: {
18035
                viewready: function () {
18036
                    if (autoLoad == true) {
18037
                        this.getStore().loadPage(1);
18038
                    }
18039
                },
18040
                beforeedit: function () {
18041
                    return false;
18042
                }
18043
            },
18044
            lockedViewConfig: {
18045
                scroll: 'horizontal'
18046
            },
18047

    
18048
            //Add For Auto Size Coloum Mode
18049
            viewConfig: {
18050
                emptyText: 'No Data Display',
18051
                deferEmptyText: false,
18052
                listeners: {
18053
                    refresh: function (dataview) {
18054
                        Ext.each(dataview.panel.columns, function (column) {
18055
                            if (column.autoSizeColumn == false)
18056
                                column.autoSizeColumn = true;
18057
                                column.autoSize();
18058
                        })
18059
                    }
18060
                }
18061
            },
18062
            selModel: {},
18063
            selType: checkSelection,
18064
            columns: cols_,
18065
            store: jsStoreGrid,
18066
            plugins: [{
18067
                ptype: 'gridfilters'
18068
            }
18069
            ]
18070
        });
18071
        me.callParent(arguments);
18072
    }
18073
});
18074
/*Add by Taufan ( Generate Doc Transaction Cell Edit Grid  For ERP )*/
18075
Ext.define('MinovaUtil.MinovaES.MinovaDocGridCellEdit', {
18076
    extend: 'Ext.form.Panel',
18077
    alias: 'widget.docgridcelledit',
18078
    requires: [
18079
		'Ext.grid.plugin.CellEditing',
18080
		'Ext.grid.Panel'
18081
    ],
18082
    autoScroll: true,
18083
    anchor: '100%',
18084
    tableName: undefined,
18085
    docType: undefined,
18086
    transType: undefined,
18087
    docNo: undefined,
18088
    hideButton: undefined,
18089
    multiSelect: undefined,
18090
    initComponent: function () {
18091
        var me = this;
18092
        var isLookup = me.isLookup;
18093
        var hide_ = false;
18094
        var widthLock = 250;
18095
        var checkSelection = '';
18096

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

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

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

    
19397
											displayValue_ = $.grep(data_, function (r) {
19398
													return r.DisplayValue == '1' || r.DisplayValue == '2'
19399
												});
19400
											if (displayValue_.length > 0) {
19401
												displayValue = displayValue_[0].FieldName;
19402
											}
19403
											if (displayValue_.length >= 2) {
19404
												AdditionaldisplayValue = displayValue_[1].FieldName
19405
											}
19406
										}
19407
									}
19408
								});
19409
							}
19410
							Ext.create('Ext.data.Store', {
19411
								storeId: 'store_' + me.tableName + rec.FieldName,
19412
								autoLoad: true,
19413
								proxy: {
19414
									method: 'POST',
19415
									type: 'ajax',
19416
									url: '/UserControl/GetStoreAuth',
19417
									extraParams: {
19418
										tableName: TableRef,
19419
										param: rec.ParamCombo,
19420
										menuId: MinovaUtil.GetMenuID()
19421
									},
19422
									reader: {
19423
										type: 'json',
19424
										root: 'data',
19425
										totalProperty: 'data[0].TotalCount'
19426
									}
19427
								}
19428
							});
19429
							cols.push({
19430
								xtype: 'minovacombocolumn',
19431
								hidden: Hidden_,
19432
								text: rec.HeaderTitle,
19433
								dataIndex: rec.FieldName,
19434
								valueField: valueField,
19435
								displayField: displayValue,
19436
								store: 'store_' + me.tableName + rec.FieldName,
19437
								tpl: Ext.create('Ext.XTemplate',
19438
									'<ul class="x-list-plain"><tpl for=".">',
19439
									'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19440
									'</tpl></ul>'),
19441
								displayTpl: Ext.create('Ext.XTemplate',
19442
									'<tpl for=".">',
19443
									'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19444
									'</tpl>'),
19445
								editor: {
19446
									allowBlank: null_,
19447
									xtype: 'combobox',
19448
									readOnly: ReadOnly_,
19449
									id: rec.TableName + rec.FieldName,
19450
									nameTable: rec.TableName,
19451
									fieldGrid: rec.FieldName,
19452
									valueField: valueField,
19453
									displayField: displayValue,
19454
									store: 'store_' + me.tableName + rec.FieldName,
19455
									value: rec.DefaultValue,
19456
									tpl: Ext.create('Ext.XTemplate',
19457
										'<ul class="x-list-plain"><tpl for=".">',
19458
										'<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
19459
										'</tpl></ul>'),
19460
									displayTpl: Ext.create('Ext.XTemplate',
19461
										'<tpl for=".">',
19462
										'{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
19463
										'</tpl>'),
19464
										listeners: {
19465
										change: function (val) {
19466
											var fvalue = val.getValue();
19467
											var custumFunc = rec.SelectFunction;
19468
											if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
19469
												Ext.Ajax.request({
19470
													async: false,
19471
													method: 'POST',
19472
													url: '/UserControl/GetStore',
19473
													params: {
19474
														tableName: 'PCMFUNC',
19475
														param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
19476
													},
19477
													success: function (response) {
19478
														var results = Ext.decode(response.responseText);
19479
														var dt = results.data[0];
19480
														if (dt != undefined) {
19481
															custumFunc = dt.FunctionCode;
19482
														}
19483
													}
19484
												});
19485
											}
19486
											if (custumFunc) {
19487
												eval(custumFunc)
19488
											}
19489
										}
19490
									}
19491

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

    
20114
													//For Browsers other than IE.
20115
													if (reader.readAsBinaryString) {
20116
														reader.onload = function (e) {
20117
															var data = e.target.result;
20118
															//Read the Excel File data.
20119
															var workbook = XLSX.read(data, {
20120
																	type: 'binary'
20121
																});
20122
															//Fetch the name of First Sheet.
20123
															var firstSheet = workbook.SheetNames[0];
20124

    
20125
															//Read all rows from First Sheet into an JSON array.
20126
															var excelRows = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[firstSheet]);
20127
															var data = eval(excelRows);
20128
															var dataLength = data.length;
20129
															idx = store.getCount();
20130
															var seq = idx + 1;
20131
															var dn = Ext.ComponentQuery.query("[name=DocNo]")[0].getValue();
20132
															for (var i = 0; i < dataLength; i++) {
20133
																data[i]["DocNo"] = dn;
20134
																data[i]["DocItemID"] = seq;
20135
																if (me.transType == "MTR" || me.transType == "PUR") {
20136
																	data[i].ARAPID = "";
20137
																	data[i].DocItemRef = "";
20138
																}
20139
																if (me.transType == "MTR") {
20140
																	data[i].Storage = "";
20141
																}
20142
																seq = seq + 1;
20143
															}
20144

    
20145
															var fields = store.model.getFields();
20146
															var gridFields = []
20147
															for (var i = 0; i < fields.length; i++) {
20148
																gridFields.push(fields[i].name);
20149
															}
20150

    
20151
															var index = [];
20152
															// build the index
20153
															for (var x in excelRows[0]) {
20154
																index.push(x);
20155
															}
20156
															var excelFields = []
20157
															for (var i = 0; i < index.length; i++) {
20158
																excelFields.push(index[i]);
20159
															}
20160

    
20161
															var template = [];
20162
															for (var i = 0; i < excelFields.length; i++) {
20163
																for (var j = 0; j < gridFields.length; j++) {
20164
																	if (excelFields[i] === gridFields[j]) {
20165
																		template.push(excelFields[i]);
20166
																	}
20167
																}
20168
															}
20169
															if (excelFields.length === template.length) {
20170
																store.insert(idx, data);
20171
															} else {
20172
																MinovaMessageError("Template Error", "FILOFILETEMPLATE", "");
20173
															}
20174
														};
20175
														reader.readAsBinaryString(files[0]);
20176

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

    
20768
	// Private method for UTF-8 encoding
20769

    
20770
	function utf8Encode(string) {
20771
		string = string.replace(/\r\n/g, "\n");
20772
		var utftext = "";
20773
		for (var n = 0; n < string.length; n++) {
20774
			var c = string.charCodeAt(n);
20775
			if (c < 128) {
20776
				utftext += String.fromCharCode(c);
20777
			} else if ((c > 127) && (c < 2048)) {
20778
				utftext += String.fromCharCode((c >> 6) | 192);
20779
				utftext += String.fromCharCode((c & 63) | 128);
20780
			} else {
20781
				utftext += String.fromCharCode((c >> 12) | 224);
20782
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
20783
				utftext += String.fromCharCode((c & 63) | 128);
20784
			}
20785
		}
20786
		return utftext;
20787
	}
20788

    
20789
	// Public method for encoding
20790
	return {
20791
		encode: (typeof btoa == 'function') ? function (input) {
20792
			return btoa(utf8Encode(input));
20793
		}
20794
		 : function (input) {
20795
			var output = "";
20796
			var chr1,
20797
			chr2,
20798
			chr3,
20799
			enc1,
20800
			enc2,
20801
			enc3,
20802
			enc4;
20803
			var i = 0;
20804
			input = utf8Encode(input);
20805
			while (i < input.length) {
20806
				chr1 = input.charCodeAt(i++);
20807
				chr2 = input.charCodeAt(i++);
20808
				chr3 = input.charCodeAt(i++);
20809
				enc1 = chr1 >> 2;
20810
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
20811
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
20812
				enc4 = chr3 & 63;
20813
				if (isNaN(chr2)) {
20814
					enc3 = enc4 = 64;
20815
				} else if (isNaN(chr3)) {
20816
					enc4 = 64;
20817
				}
20818
				output = output +
20819
					keyStr.charAt(enc1) + keyStr.charAt(enc2) +
20820
					keyStr.charAt(enc3) + keyStr.charAt(enc4);
20821
			}
20822
			return output;
20823
		}
20824
	};
20825
})();
20826
Ext.define('MyApp.view.override.Grid', {
20827
	override: 'Ext.grid.GridPanel',
20828
	requires: 'Ext.form.action.StandardSubmit',
20829

    
20830
	/*
20831
	Kick off process
20832
	 */
20833

    
20834
	downloadExcelXml: function (includeHidden, name) {
20835

    
20836
		if (!name)
20837
			title = this.name;
20838

    
20839
		var vExportContent = this.getExcelXml(includeHidden, title);
20840

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

    
20843
		/*
20844
		dynamically create and anchor tag to force download with suggested filename
20845
		note: download attribute is Google Chrome specific
20846
		 */
20847

    
20848
		if (Ext.isChrome) {
20849
			var gridEl = this.getEl();
20850

    
20851
			var el = Ext.DomHelper.append(gridEl, {
20852
					tag: "a",
20853
					download: title + "-" + Ext.Date.format(new Date(), 'Y-m-d Hi') + '.xls',
20854
					href: location
20855
				});
20856

    
20857
			el.click();
20858

    
20859
			Ext.fly(el).destroy();
20860

    
20861
		} else {
20862

    
20863
			var form = this.down('form#uploadForm');
20864
			if (form) {
20865
				form.destroy();
20866
			}
20867
			form = this.add({
20868
					xtype: 'form',
20869
					itemId: 'uploadForm',
20870
					hidden: true,
20871
					standardSubmit: true,
20872
					url: 'http://webapps.figleaf.com/dataservices/Excel.cfc?method=echo&mimetype=application/vnd.ms-excel&filename=' + escape(title + ".xls"),
20873
					items: [{
20874
							xtype: 'hiddenfield',
20875
							name: 'data',
20876
							value: vExportContent
20877
						}
20878
					]
20879
				});
20880

    
20881
			form.getForm().submit();
20882

    
20883
		}
20884
	},
20885

    
20886
	/*
20887

    
20888
	Welcome to XML Hell
20889
	See: http://msdn.microsoft.com/en-us/library/office/aa140066(v=office.10).aspx
20890
	for more details
20891

    
20892
	 */
20893
	getExcelXml: function (includeHidden, title) {
20894

    
20895
		var theTitle = title || this.title;
20896

    
20897
		var worksheet = this.createWorksheet(includeHidden, theTitle);
20898
		var totalWidth = this.columnManager.columns.length;
20899

    
20900
		return ''.concat(
20901
			'<?xml version="1.0"?>',
20902
			'<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">',
20903
			'<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Title>' + theTitle + '</Title></DocumentProperties>',
20904
			'<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"><AllowPNG/></OfficeDocumentSettings>',
20905
			'<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">',
20906
			'<WindowHeight>' + worksheet.height + '</WindowHeight>',
20907
			'<WindowWidth>' + worksheet.width + '</WindowWidth>',
20908
			'<ProtectStructure>False</ProtectStructure>',
20909
			'<ProtectWindows>False</ProtectWindows>',
20910
			'</ExcelWorkbook>',
20911

    
20912
			'<Styles>',
20913

    
20914
			'<Style ss:ID="Default" ss:Name="Normal">',
20915
			'<Alignment ss:Vertical="Bottom"/>',
20916
			'<Borders/>',
20917
			'<Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"/>',
20918
			'<Interior/>',
20919
			'<NumberFormat/>',
20920
			'<Protection/>',
20921
			'</Style>',
20922

    
20923
			'<Style ss:ID="title">',
20924
			'<Borders />',
20925
			'<Font ss:Bold="1" ss:Size="18" />',
20926
			'<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1" />',
20927
			'<NumberFormat ss:Format="@" />',
20928
			'</Style>',
20929

    
20930
			'<Style ss:ID="headercell">',
20931
			'<Font ss:Bold="1" ss:Size="10" />',
20932
			'<Alignment ss:Horizontal="Center" ss:WrapText="1" />',
20933
			'<Interior ss:Color="#A3C9F1" ss:Pattern="Solid" />',
20934
			'</Style>',
20935

    
20936
			'<Style ss:ID="even">',
20937
			'<Interior ss:Color="#CCFFFF" ss:Pattern="Solid" />',
20938
			'</Style>',
20939

    
20940
			'<Style ss:ID="evendate" ss:Parent="even">',
20941
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
20942
			'</Style>',
20943

    
20944
			'<Style ss:ID="evenint" ss:Parent="even">',
20945
			'<Numberformat ss:Format="0" />',
20946
			'</Style>',
20947

    
20948
			'<Style ss:ID="evenfloat" ss:Parent="even">',
20949
			'<Numberformat ss:Format="0.00" />',
20950
			'</Style>',
20951

    
20952
			'<Style ss:ID="odd">',
20953
			'<Interior ss:Color="#CCCCFF" ss:Pattern="Solid" />',
20954
			'</Style>',
20955

    
20956
			'<Style ss:ID="groupSeparator">',
20957
			'<Interior ss:Color="#D3D3D3" ss:Pattern="Solid" />',
20958
			'</Style>',
20959

    
20960
			'<Style ss:ID="odddate" ss:Parent="odd">',
20961
			'<NumberFormat ss:Format="yyyy-mm-dd" />',
20962
			'</Style>',
20963

    
20964
			'<Style ss:ID="oddint" ss:Parent="odd">',
20965
			'<NumberFormat Format="0" />',
20966
			'</Style>',
20967

    
20968
			'<Style ss:ID="oddfloat" ss:Parent="odd">',
20969
			'<NumberFormat Format="0.00" />',
20970
			'</Style>',
20971

    
20972
			'</Styles>',
20973
			worksheet.xml,
20974
			'</Workbook>');
20975
	},
20976

    
20977
	/*
20978

    
20979
	Support function to return field info from store based on fieldname
20980

    
20981
	 */
20982

    
20983
	getModelField: function (fieldName) {
20984

    
20985
		var fields = this.store.model.getFields();
20986
		for (var i = 0; i < fields.length; i++) {
20987
			if (fields[i].name === fieldName) {
20988
				return fields[i];
20989
			}
20990
		}
20991
	},
20992

    
20993
	/*
20994

    
20995
	Convert store into Excel Worksheet
20996

    
20997
	 */
20998
	generateEmptyGroupRow: function (dataIndex, value, cellTypes, includeHidden) {
20999

    
21000
		var cm = this.columnManager.columns;
21001
		var colCount = cm.length;
21002
		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>';
21003
		var visibleCols = 0;
21004

    
21005
		// rowXml += '<Cell ss:StyleID="groupSeparator">'
21006

    
21007
		for (var j = 0; j < colCount; j++) {
21008
			if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21009
				// rowXml += '<Cell ss:StyleID="groupSeparator"/>';
21010
				visibleCols++;
21011
			}
21012
		}
21013

    
21014
		// rowXml += "</Row>";
21015

    
21016
		return Ext.String.format(rowTpl, visibleCols - 1, value);
21017
	},
21018

    
21019
	createWorksheet: function (includeHidden, theTitle) {
21020
		// Calculate cell data types and extra class names which affect formatting
21021
		var cellType = [];
21022
		var cellTypeClass = [];
21023
		var cm = this.columnManager.columns;
21024

    
21025
		var totalWidthInPixels = 0;
21026
		var colXml = '';
21027
		var headerXml = '';
21028
		var visibleColumnCountReduction = 0;
21029
		var colCount = cm.length;
21030
		for (var i = 0; i < colCount; i++) {
21031
			if (cm[i].xtype != 'actioncolumn' && (cm[i].dataIndex != '') && (includeHidden || !cm[i].hidden)) {
21032
				var w = cm[i].getEl().getWidth();
21033
				totalWidthInPixels += w;
21034

    
21035
				if (cm[i].text === "") {
21036
					cellType.push("None");
21037
					cellTypeClass.push("");
21038
					++visibleColumnCountReduction;
21039
				} else {
21040
					colXml += '<Column ss:AutoFitWidth="1" ss:Width="' + w + '" />';
21041
					headerXml += '<Cell ss:StyleID="headercell">' +
21042
					'<Data ss:Type="String">' + cm[i].dataIndex + '</Data>' +
21043
					'<NamedCell ss:Name="Print_Titles"></NamedCell></Cell>';
21044

    
21045
					var fld = this.getModelField(cm[i].dataIndex);
21046
					switch (fld.type.type) {
21047
					case "int":
21048
						cellType.push("Number");
21049
						cellTypeClass.push("int");
21050
						break;
21051
					case "float":
21052
						cellType.push("Number");
21053
						cellTypeClass.push("float");
21054
						break;
21055

    
21056
					case "bool":
21057

    
21058
					case "boolean":
21059
						cellType.push("String");
21060
						cellTypeClass.push("");
21061
						break;
21062
					case "date":
21063
						cellType.push("DateTime");
21064
						cellTypeClass.push("date");
21065
						break;
21066
					default:
21067
						cellType.push("String");
21068
						cellTypeClass.push("");
21069
						break;
21070
					}
21071
				}
21072
			}
21073
		}
21074
		var visibleColumnCount = cellType.length - visibleColumnCountReduction;
21075

    
21076
		var result = {
21077
			height: 9000,
21078
			width: Math.floor(totalWidthInPixels * 30) + 50
21079
		};
21080

    
21081
		// Generate worksheet header details.
21082

    
21083
		// determine number of rows
21084
		var numGridRows = this.store.getCount() + 2;
21085
		if (!Ext.isEmpty(this.store.groupField)) {
21086
			numGridRows = numGridRows + this.store.getGroups().length;
21087
		}
21088

    
21089
		// create header for worksheet
21090
		var t = ''.concat(
21091
				'<Worksheet ss:Name="' + theTitle + '">',
21092

    
21093
				'<Names>',
21094
				'<NamedRange ss:Name="Print_Titles" ss:RefersTo="=\'' + theTitle + '\'!R1:R2">',
21095
				'</NamedRange></Names>',
21096

    
21097
				'<Table ss:ExpandedColumnCount="' + (visibleColumnCount + 2),
21098
				'" ss:ExpandedRowCount="' + numGridRows + '" x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15">',
21099
				colXml,
21100
				'<Row ss:AutoFitHeight="1">',
21101
				headerXml +
21102
				'</Row>');
21103

    
21104
		// Generate the data rows from the data in the Store
21105
		var groupVal = "";
21106
		var groupField = "";
21107

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

    
21110
			if (!Ext.isEmpty(groupField)) {
21111
				if (groupVal != this.store.getAt(i).get(groupField)) {
21112
					groupVal = this.store.getAt(i).get(groupField);
21113
					t += this.generateEmptyGroupRow(groupField, groupVal, cellType, includeHidden);
21114
				}
21115
			}
21116
			t += '<Row>';
21117
			var cellClass = (i & 1) ? 'odd' : 'even';
21118
			r = it[i].data;
21119
			var k = 0;
21120
			for (var j = 0; j < colCount; j++) {
21121
				if (cm[j].xtype != 'actioncolumn' && (cm[j].dataIndex != '') && (includeHidden || !cm[j].hidden)) {
21122
					var v = r[cm[j].dataIndex];
21123
					if (cellType[k] !== "None") {
21124
						t += '<Cell ss:StyleID="' + cellClass + cellTypeClass[k] + '"><Data ss:Type="' + cellType[k] + '">';
21125
						if (cellType[k] == 'DateTime') {
21126
							t += Ext.Date.format(v, 'Y-m-d');
21127
						} else {
21128
							t += v;
21129
						}
21130
						t += '</Data></Cell>';
21131
					}
21132
					k++;
21133
				}
21134
			}
21135
			t += '</Row>';
21136
		}
21137

    
21138
		result.xml = t.concat(
21139
				'</Table>',
21140
				'<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">',
21141
				'<PageLayoutZoom>0</PageLayoutZoom>',
21142
				'<Selected/>',
21143
				'<Panes>',
21144
				'<Pane>',
21145
				'<Number>3</Number>',
21146
				'<ActiveRow>2</ActiveRow>',
21147
				'</Pane>',
21148
				'</Panes>',
21149
				'<ProtectObjects>False</ProtectObjects>',
21150
				'<ProtectScenarios>False</ProtectScenarios>',
21151
				'</WorksheetOptions>',
21152
				'</Worksheet>');
21153
		return result;
21154
	}
21155
});
21156

    
21157
/*Add Midi For Grid Mass Posting Filo*/
21158
Ext.define('MinovaUtil.MinovaES.MinovaEditAbleGridList', {
21159
    extend: 'Ext.form.Panel',
21160
    alias: ['widget.MinovaEditAbleGridList', 'widget.Minovaeditablegridlist', 'widget.minovaeditablegridlist'],
21161
    requires: [
21162
		'Ext.grid.plugin.CellEditing',
21163
		'Ext.grid.RowNumberer',
21164
		'Ext.grid.Panel',
21165
    ],
21166

    
21167
    //renderTo: 'panel-extjs',
21168
    anchor: '100%',
21169
    tableName: undefined,
21170
    hideButton: undefined,
21171
    multiSelect: undefined,
21172
    initComponent: function () {
21173
        var me = this;
21174
        var isLookup = me.isLookup;
21175
        var hide_ = false;
21176
        var widthLock = 250;
21177
        var checkSelection = '';
21178

    
21179
        if (me.hideButton == true) {
21180
            hide_ = true;
21181
        }
21182
        if (me.multiSelect) {
21183
            locking = false;
21184
            checkSelection = 'checkboxmodel';
21185
            widthLock = 40;
21186
        }
21187
        var tableName = me.tableName;
21188
        var cols = [];
21189
        var fieldStore = [];
21190
        var _url = 'GetAllField';
21191
        var hasil = null;
21192
        var height = me.height;
21193
        var storeID = 'store' + me.tableName;
21194
        var gridName = 'grid' + me.name;
21195
        if (me.storeName) {
21196
            storeID = me.storeName;
21197
        }
21198
        var LangID = MinovaUtil.GetLangID();
21199
        var parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
21200
        Ext.Ajax.request({
21201
            async: false,
21202
            method: 'POST',
21203
            url: '/UserControl/GetStore',
21204
            params: {
21205
                tableName: 'PDSBS0007',
21206
                param: parameter
21207
            },
21208
            success: function (response) {
21209
                var results = Ext.decode(response.responseText);
21210
                hasil = results.data;
21211
            }
21212
        });
21213
        cols.push({
21214
            xtype: 'rownumberer'
21215
        });
21216
        var addData = 'var data={';
21217
        if (hasil.length > 0) {
21218
            Ext.each(hasil, function (rec) {
21219
                fieldStore.push(rec.FieldName);
21220
                if (rec.FieldName != 'Sequence') {
21221
                    addData = addData + rec.FieldName + ":" + "'',";
21222
                }
21223

    
21224
                var null_ = null;
21225
                var ReadOnly_ = false;
21226
                if (rec.IsPrimaryKey == true) {
21227
                    null_ = false;
21228
                }
21229
                if (rec.IsRequired == true) {
21230
                    null_ = false;
21231
                } else {
21232
                    null_ = true;
21233
                }
21234
                if (rec.ReadOnly == '1') {
21235
                    ReadOnly_ = true;
21236
                }
21237
                var Hidden_ = false;
21238
                if (rec.ReadOnly == '1') {
21239
                    ReadOnly_ = true;
21240
                }
21241

    
21242
                if (rec.IsHidden == '1' || rec.Sequence == '' || rec.Sequence == '0' || rec.ColumnNo == '' || rec.GridView == '') {
21243
                    Hidden_ = true;
21244
                    null_ = true;
21245
                }
21246

    
21247
                if (rec.GridView == 1) {
21248
                    switch (rec.FormatRef) {
21249
                        case "date":
21250
                            cols.push({
21251
                                xtype: 'minovadatecolumn',
21252
                                hidden: Hidden_,
21253
                                text: rec.HeaderTitle,
21254
                                dataIndex: rec.FieldName,
21255
                                filter: {
21256
                                    itemDefaults: {
21257
                                        emptyText: 'Search for...',
21258

    
21259
                                    }
21260
                                },
21261
                                editor: {
21262
                                    allowBlank: null_,
21263
                                    xtype: 'datefield',
21264
                                    hideMode: 'visibility',
21265
                                    readOnly: ReadOnly_,
21266
                                    id: tableName + rec.FieldName,
21267
                                    fieldGrid: rec.FieldName,
21268
                                    nameTable: rec.TableName,
21269
                                }
21270
                            });
21271
                            break
21272
                        case "amount":
21273
                            cols.push({
21274
                                xtype: 'minovacurrancycolumn',
21275
                                //renderer: Ext.util.Format.numberRenderer("0,0"),
21276
                                text: rec.HeaderTitle,
21277
                                align: 'right',
21278
                                dataIndex: rec.FieldName,
21279
                                hidden: Hidden_,
21280
                                filter: {
21281
                                    itemDefaults: {
21282
                                        emptyText: 'Search for...'
21283
                                    }
21284
                                },
21285
                                editor: {
21286
                                    allowBlank: null_,
21287
                                    xtype: 'minovacurrencyfield',
21288
                                    //renderer: Ext.util.Format.numberRenderer("0,0"),
21289
                                    //vtype: 'validateDecimal',
21290
                                    readOnly: ReadOnly_,
21291
                                    id: tableName + rec.FieldName,
21292
                                    nameTable: rec.TableName,
21293
                                    fieldGrid: rec.FieldName,
21294
                                    fieldStyle: 'text-align:right;',
21295
                                    value: '0',
21296

    
21297
                                }
21298
                            });
21299
                            break
21300
                        case "time":
21301
                            var DefaultValue = rec.DefaultValue;
21302
                            if (DefaultValue == '') {
21303
                                defaultValue = '00:00';
21304
                            }
21305
                            cols.push({
21306
                                //xtype: 'minovatimecolumn',
21307
                                xtype: 'timefield',
21308
                                format: 'H:i',
21309
                                submitFormat: 'Hi',
21310
                                text: rec.HeaderTitle,
21311
                                dataIndex: rec.FieldName,
21312
                                hidden: Hidden_,
21313
                                //renderer: Ext.util.Format.dateRenderer('G:i'),
21314
                                filter: {
21315
                                    itemDefaults: {
21316
                                        emptyText: 'Search for...'
21317
                                    }
21318
                                },
21319
                                editor: {
21320
                                    allowBlank: null_,
21321
                                    xtype: 'timefield',
21322
                                    readOnly: ReadOnly_,
21323
                                    id: tableName + rec.FieldName,
21324
                                    format: 'H:i',
21325
                                    submitFormat: 'Hi',
21326
                                    increment: 5,
21327
                                    value: DefaultValue,
21328
                                    anchor: '100%',
21329
                                    listeners: {}
21330
                                    //renderer: Ext.util.Format.dateRenderer('G:i'),
21331
                                }
21332
                            });
21333
                            break
21334
                            //case "datetime":
21335
                            //    if (rec.DataRef != 'CREATEDT' && rec.DataRef != 'CHANGEDT') {
21336
                            //        cols.push({
21337
                            //            xtype: 'minovadatetimecolumn',
21338
                            //            text: rec.HeaderTitle,
21339
                            //            dataIndex: rec.FieldName,
21340
                            //            filter: {
21341
                            //                itemDefaults: {
21342
                            //                    emptyText: 'Search for...'
21343
                            //                }
21344
                            //            },
21345
                            //            editor: {
21346
                            //                allowBlank: null_,
21347
                            //                xtype: 'textfield',
21348
                            //            }
21349
                            //        });
21350
                            //    }
21351
                            //    break
21352
                        default:
21353
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
21354
                                cols.push({
21355
                                    text: rec.HeaderTitle,
21356
                                    dataIndex: rec.FieldName,
21357
                                    width: 100,
21358
                                    filter: {
21359
                                        type: 'string',
21360
                                        itemDefaults: {
21361
                                            emptyText: 'Search for...'
21362
                                        }
21363
                                    }
21364
                                });
21365
                            } else if (rec.SearchType == '0') {
21366
                                var valueField = null;
21367
                                var displayValue = null;
21368
                                var TableRef = undefined;
21369
                                if (rec.TableRef != '') {
21370
                                    TableRef = rec.TableRef;
21371

    
21372
                                    Ext.Ajax.request({
21373
                                        async: false,
21374
                                        method: 'POST',
21375
                                        url: '/UserControl/GetStore',
21376
                                        params: {
21377
                                            tableName: 'SDATATABLEFIELD',
21378
                                            param: 'TableName[equal]' + rec.TableRef
21379
                                        },
21380
                                        success: function (response) {
21381
                                            var results = Ext.decode(response.responseText);
21382
                                            data_ = results.data;
21383
                                            if (data_ != undefined) {
21384
                                                valueField_ = $.grep(data_, function (r) {
21385
                                                    return r.ValueField == '1'
21386
                                                });
21387
                                                valueField = valueField_[0].FieldName
21388
                                                displayValue_ = $.grep(data_, function (r) {
21389
                                                    return r.DisplayValue == '1'
21390
                                                });
21391
                                                displayValue = displayValue_[0].FieldName
21392
                                            }
21393
                                        }
21394
                                    });
21395

    
21396
                                    //create Store
21397
                                    Ext.create('Ext.data.Store', {
21398
                                        storeId: 'store_' + me.tableName + rec.FieldName,
21399
                                        autoLoad: true,
21400
                                        proxy: {
21401
                                            method: 'POST',
21402
                                            type: 'ajax',
21403
                                            url: '/UserControl/GetStoreAuth',
21404
                                            extraParams: {
21405
                                                tableName: TableRef,
21406
                                                param: rec.ParamCombo,
21407
                                                menuId: MinovaUtil.GetMenuID()
21408
                                            },
21409
                                            reader: {
21410
                                                type: 'json',
21411
                                                root: 'data',
21412
                                                totalProperty: 'data[0].TotalCount'
21413
                                            }
21414
                                        }
21415
                                    });
21416
                                } else if (rec.FixedValue != '') {
21417
                                    var storeData = [];
21418
                                    var str = rec.FixedValue;
21419
                                    var hasil = str.split('||');
21420
                                    hasil.forEach(function (h) {
21421
                                        store_ = h.split('=')
21422
                                        storeData.push({
21423
                                            code: store_[0],
21424
                                            desc: store_[1],
21425

    
21426
                                        });
21427
                                    });
21428

    
21429
                                    valueField = 'code';
21430
                                    displayValue = 'desc';
21431

    
21432
                                    Ext.create('Ext.data.Store', {
21433
                                        storeId: 'store_' + me.tableName + rec.FieldName,
21434
                                        autoLoad: true,
21435
                                        data: storeData
21436
                                    })
21437
                                }
21438

    
21439
                                cols.push({
21440
                                    xtype: 'minovacombocolumn',
21441
                                    hidden: Hidden_,
21442
                                    text: rec.HeaderTitle,
21443
                                    dataIndex: rec.FieldName,
21444
                                    valueField: valueField,
21445
                                    displayField: displayValue,
21446
                                    store: 'store_' + me.tableName + rec.FieldName,
21447
                                    editor: {
21448
                                        allowBlank: null_,
21449
                                        xtype: 'combobox',
21450
                                        readOnly: ReadOnly_,
21451
                                        id: tableName + rec.FieldName,
21452
                                        nameTable: rec.TableName,
21453
                                        fieldGrid: rec.FieldName,
21454
                                        valueField: valueField,
21455
                                        displayField: displayValue,
21456
                                        vtype: 'validateCombobox',
21457
                                        store: 'store_' + me.tableName + rec.FieldName,
21458
                                    },
21459
                                    filter: {
21460
                                        type: 'list',
21461
                                        itemDefaults: {
21462
                                            emptyText: 'Search for...'
21463
                                        }
21464
                                    }
21465
                                });
21466

    
21467
                            } else if (rec.SearchType == '5') {							
21468
                                var valueField = null;
21469
                                var displayValue = null;
21470
                                var AdditionaldisplayValue = null;
21471
                                var TableRef = undefined;
21472
                                if (rec.TableRef != '') {
21473
                                    TableRef = rec.TableRef;
21474
                                    Ext.Ajax.request({
21475
                                        async: false,
21476
                                        method: 'POST',
21477
                                        url: '/UserControl/GetStore',
21478
                                        params: {
21479
                                            tableName: 'SDATATABLEFIELD',
21480
                                            param: 'TableName[equal]' + rec.TableRef
21481
                                        },
21482
                                        success: function (response) {
21483
                                            var results = Ext.decode(response.responseText);
21484
                                            data_ = results.data;
21485
                                            if (data_ != undefined) {
21486
                                                valueField_ = $.grep(data_, function (r) {
21487
                                                    return r.ValueField == '1'
21488
                                                });
21489
                                                if (valueField_.length > 0) {
21490
                                                    valueField = valueField_[0].FieldName
21491
                                                }
21492

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

    
21746
                                    text: rec.HeaderTitle,
21747
                                    hidden: Hidden_,
21748
                                    dataIndex: rec.FieldName,
21749
                                    filter: {
21750
                                        itemDefaults: {
21751
                                            emptyText: 'Search for...'
21752
                                        }
21753
                                    },
21754
                                    editor: {
21755
                                        allowBlank: null_,
21756
                                        xtype: 'lookupemployee',
21757
                                        readOnly: ReadOnly_,
21758
                                        isGrid: true,
21759
                                        fieldTarget: targetField_,
21760
                                        fieldValue: fieldValue_,
21761
                                        isGrid: true,
21762
                                        id: tableName + rec.FieldName,
21763
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
21764
                                        triggerCls: 'x-form-search-trigger',
21765
                                        vtype: 'alphanum', // disable space
21766
                                        nameTable: rec.TableName,
21767
                                        fieldGrid: rec.FieldName,
21768
                                        listeners: {
21769
                                            change: function (val) {
21770
                                                var custumFunc = rec.SelectFunction;
21771
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
21772
                                                    Ext.Ajax.request({
21773
                                                        async: false,
21774
                                                        method: 'POST',
21775
                                                        url: '/UserControl/GetStore',
21776
                                                        params: {
21777
                                                            tableName: 'PCMFUNC',
21778
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
21779
                                                        },
21780
                                                        success: function (response) {
21781
                                                            var results = Ext.decode(response.responseText);
21782
                                                            data_ = results.data[0];
21783
                                                            if (data_ != undefined) {
21784
                                                                custumFunc = data_.FunctionCode;
21785
                                                            }
21786
                                                        }
21787
                                                    });
21788
                                                }
21789
                                                if (custumFunc) {
21790
                                                    eval(custumFunc)
21791
                                                }
21792
                                            }
21793
                                        }
21794
                                    }
21795
                                });
21796
                            } else {
21797
                                if (rec.FieldDataType == 3) { //add by taufan
21798
                                    cols.push({
21799
                                        text: rec.HeaderTitle,
21800
                                        hidden: Hidden_,
21801
                                        dataIndex: rec.FieldName,
21802
                                        filter: {
21803
                                            itemDefaults: {
21804
                                                emptyText: 'Search for...'
21805
                                            }
21806
                                        },
21807
                                        editor: {
21808
                                            allowBlank: null_,
21809
                                            xtype: 'textfield',
21810
                                            readOnly: ReadOnly_,
21811
                                            id: tableName + rec.FieldName,
21812
                                            nameTable: rec.TableName,
21813
                                            fieldGrid: rec.FieldName,
21814
                                            vtype: 'validateDecimal',
21815
                                            maxLength: rec.Length,
21816
                                            precision: rec.Prec,
21817
                                            fieldStyle: 'text-align:right;',
21818
                                            listeners: {
21819
                                                change: function (val) {
21820
                                                    var custumFunc = null;
21821
                                                    Ext.Ajax.request({
21822
                                                        async: false,
21823
                                                        method: 'POST',
21824
                                                        url: '/UserControl/GetStore',
21825
                                                        params: {
21826
                                                            tableName: 'SDATATABLEFIELD',
21827
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
21828
                                                        },
21829
                                                        success: function (response) {
21830
                                                            var results = Ext.decode(response.responseText);
21831
                                                            data_ = results.data[0];
21832
                                                            if (data_ != undefined) {
21833
                                                                custumFunc = data_.SelectFunction;
21834
                                                                //console.log(data_)
21835
                                                            }
21836
                                                        }
21837
                                                    });
21838

    
21839
                                                    if (custumFunc) {
21840
                                                        eval(custumFunc)
21841
                                                    }
21842
                                                }
21843
                                            }
21844
                                        }
21845
                                    });
21846
                                } else {
21847
                                    cols.push({
21848
                                        text: rec.HeaderTitle,
21849
                                        hidden: Hidden_,
21850
                                        dataIndex: rec.FieldName,
21851
                                        filter: {
21852
                                            itemDefaults: {
21853
                                                emptyText: 'Search for...'
21854
                                            }
21855
                                        },
21856
                                        editor: {
21857
                                            allowBlank: null_,
21858
                                            xtype: 'textfield',
21859
                                            readOnly: ReadOnly_,
21860
                                            id: tableName + rec.FieldName,
21861
                                            nameTable: rec.TableName,
21862
                                            fieldGrid: rec.FieldName,
21863
                                            listeners: {
21864
                                                change: function (val) {
21865
                                                    var custumFunc = null;
21866
                                                    Ext.Ajax.request({
21867
                                                        async: false,
21868
                                                        method: 'POST',
21869
                                                        url: '/UserControl/GetStore',
21870
                                                        params: {
21871
                                                            tableName: 'SDATATABLEFIELD',
21872
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
21873
                                                        },
21874
                                                        success: function (response) {
21875
                                                            var results = Ext.decode(response.responseText);
21876
                                                            data_ = results.data[0];
21877
                                                            if (data_ != undefined) {
21878
                                                                custumFunc = data_.SelectFunction;
21879
                                                                //console.log(data_)
21880
                                                            }
21881
                                                        }
21882
                                                    });
21883

    
21884
                                                    if (custumFunc) {
21885
                                                        eval(custumFunc)
21886
                                                    }
21887
                                                }
21888
                                            }
21889
                                        }
21890
                                    });
21891
                                }
21892
                            }
21893

    
21894
                            break
21895

    
21896
                    }
21897
                } else {
21898
                    cols.push({
21899
                        text: rec.HeaderTitle,
21900
                        hidden: Hidden_,
21901
                        dataIndex: rec.FieldName,
21902
                        hidden: true,
21903
                        editor: {
21904
                            allowBlank: true,
21905
                            xtype: 'textfield',
21906
                            readOnly: ReadOnly_,
21907
                            id: tableName + rec.FieldName,
21908
                            nameTable: rec.TableName,
21909
                            fieldGrid: rec.FieldName,
21910
                        },
21911
                        filter: {
21912
                            itemDefaults: {
21913
                                emptyText: 'Search for...'
21914
                            }
21915
                        }
21916
                    });
21917
                }
21918
            });
21919

    
21920
        };
21921
        addData = addData + "}";
21922
        Ext.applyIf(me, {
21923
            items: [{
21924
                xtype: 'grid',
21925
                id: gridName,
21926
                name: gridName,
21927
                height: height,
21928
                viewConfig: {
21929
                    emptyText: 'No Data Display',
21930
                    deferEmptyText: false,
21931
                    //Add Nana For Autosize Column Mode
21932
                    listeners: {
21933
                        refresh: function (dataview) {
21934
                            Ext.each(dataview.panel.columns, function (column) {
21935
                                //if (column.autoSizeColumn == false)
21936
                                //	column.autoSizeColumn = true;
21937
                                column.autoSize();
21938
                                //dataview.store.reload();
21939
                            })
21940
                        }
21941
                    },
21942
                    render: function (comp) {
21943
                        comp.getStore().reload();
21944
                        console.log(comp);
21945
                    }
21946
                },
21947
                //store: 'gridStore',
21948
                store: Ext.create('Ext.data.Store', {
21949
                    storeId: storeID,
21950
                    fields: fieldStore,
21951
                    proxy: {
21952
                        method: 'POST',
21953
                        type: 'ajax',
21954
                        url: '',
21955
                        reader: {
21956
                            type: 'json',
21957
                            root: 'data'
21958
                        }
21959
                    }
21960
                }),
21961
                dockedItems: [{
21962
                    xtype: 'toolbar',
21963
                    items: [{
21964
                        text: 'Add',
21965
                        hidden: hide_,
21966
                        name: tableName + 'Add',
21967
                        iconCls: 'fa-plus-circle',
21968
                        style: 'font-family: FontAwesome',
21969
                        handler: function () {
21970
                            var store = Ext.StoreMgr.lookup(storeID)
21971
                            idx = store.getCount();
21972
                            var action = getParam('action');
21973
                            var data = '';
21974
                            var Sequence = 0;
21975
                            if (idx == 0) {
21976
                                Sequence = 1;
21977
                            } else {
21978
                                Sequence = 1 + idx;
21979
                            }
21980
                            //data = {
21981
                            //    Sequence: Sequence
21982
                            //};
21983

    
21984
                            var seq = 'Sequence';
21985
                            var SequenceValue = Sequence;
21986
                            eval(addData);
21987
                            data[seq] = SequenceValue;
21988

    
21989
                            store.insert(idx, data);
21990
                        }
21991

    
21992
                    }, {
21993
                        text: 'Delete',
21994
                        hidden: hide_,
21995
                        name: tableName + 'DeleteText',
21996
                        iconCls: 'fa-trash-o',
21997
                        style: 'font-family: FontAwesome',
21998
                        //disabled: true
21999
                        handler: function () {
22000
                            var me = this,
22001
                            store = Ext.StoreMgr.lookup(storeID)
22002

    
22003
                            var grid = Ext.getCmp(gridName);
22004

    
22005
                            Ext.MessageBox.show({
22006
                                title: 'Remove tab',
22007
                                msg: "This will remove. Do you want to continue?",
22008
                                buttons: Ext.MessageBox.YESNO,
22009
                                fn: function (choice) {
22010
                                    console.log(choice);
22011
                                    if (choice === 'yes') {
22012
                                        var selection = grid.getView().getSelectionModel().getSelection()[0];
22013
                                        if (selection) {
22014
                                            store.remove(selection);
22015
                                        }
22016
                                    }
22017
                                    //delete panel.pendingClose;
22018
                                }
22019
                            });
22020
                        }
22021

    
22022
                    }
22023
                    ]
22024
                }
22025
                ],
22026
                columns: cols,
22027
                selType: checkSelection,
22028
                //selType: 'rowmodel',
22029
                plugins: {
22030
                    ptype: 'rowediting',
22031
                    pluginId: 'rowEditing',
22032
                    clicksToEdit: 1,
22033
                    listeners: {
22034
                        //edit: 'onGridEditorEdit'
22035
                    }
22036
                }
22037
            }, ]
22038

    
22039
        });
22040

    
22041
        me.callParent(arguments);
22042
    }
22043
});
22044

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

    
22480
/*Add by YN ( Tab List for PA on Top)*/
22481
Ext.define('MinovaUtil.MinovaES.MinovaHeaderMDNew', {
22482
    extend: 'Ext.form.Panel',
22483
    alias: ['widget.MinovaHeadermdNew', 'widget.MinovaHeaderMDNew'],
22484
    allTableName: undefined,
22485
    param: undefined,
22486
    //frame: true,
22487
    resizable: true,
22488
    autoScroll: true,
22489
    minHeight: 20,
22490
    layout: 'column',
22491
    name: 'HeaderMD',
22492
    getAllTableName: function () {
22493
        return this.allTableName;
22494
    },
22495
    setAllTableName: function (value) {
22496
        var me = this;
22497
        me.allTableName = value;
22498
        return me;
22499
    },
22500
    listeners: {
22501
        afterrender: function (me) {
22502
            var nowDate = MinovaUtil.GetNowDate()
22503
            var allTbl = me.getAllTableName();
22504
            //alert(allTbl);
22505
            var splitTable = allTbl.split(',')
22506
            splitTable.forEach(function (tbl) {
22507
                // console.log(tbl);
22508
                //set values form
22509
                var nowDate = MinovaUtil.GetNowDate();
22510
                parameter = null;
22511
                if (me.isEmployee == true) {
22512
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID")
22513
                } else {
22514
                    parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
22515
                }
22516
                Ext.Ajax.request({
22517
                    method: 'POST',
22518
                    //async: false,
22519
                    url: '/UserControl/GetStore',
22520
                    params: {
22521
                        tableName: tbl,
22522
                        param: parameter
22523
                    },
22524
                    success: function (response) {
22525
                        var results = Ext.decode(response.responseText);
22526
                        hasil = results.data;
22527
                        if (hasil.length > 0) {
22528
                            me.getForm().setValues(hasil[0]);
22529

    
22530
                            //console.log(me)
22531
                        }
22532

    
22533
                    }
22534
                });
22535
            });
22536

    
22537
            //setTimeout(function () {
22538
            //    // var me_ = Ext.ComponentQuery.query('[name=Header]')[0];
22539
            //    // me_.setTitle(me_.getTitle() + ' - ' + Ext.ComponentQuery.query('[name=FullName]')[0].getValue());
22540
            //}, 100);
22541

    
22542
        },
22543

    
22544
    },
22545

    
22546
    initComponent: function () {
22547
        var me = this;
22548
        var col1 = [];
22549
        var col2 = [];
22550
        var hasil = null;
22551
        //get moduletype
22552
        //var ModuleType = 'PA';
22553
        //var ModuleType = MinovaUtil.GetModuleType()
22554
        //get Lang
22555
        var LangId = localStorage.LangId;
22556
        var allTable = null;
22557
        var tbl = null;
22558
        var tblTemp = null;
22559
        var nowDate = MinovaUtil.GetNowDate();
22560
        //var Photo_ = 'nophoto.gif';
22561
        var Photo = 'nophoto.gif';
22562
        tableName = null;
22563
        parameter = null;
22564
        // get Photo
22565
        //hamid200916
22566
        if (me.isEmployee == true) {
22567
            tableName = 'PHRPA0001';
22568
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("EmployeeID");
22569
        } else {
22570
            tableName = 'PHRRC0001';
22571
            parameter = 'StartDate[<=]' + nowDate + ',EndDate[>=]' + nowDate + ',EmployeeID[=]' + getParam("ApplicantID")
22572
        }
22573
        Ext.Ajax.request({
22574
            method: 'POST',
22575
            async: false,
22576
            url: '/UserControl/GetStore',
22577
            params: {
22578
                tableName: tableName,
22579
                param: parameter
22580
            },
22581
            success: function (response) {
22582
                var results = Ext.decode(response.responseText);
22583
                hasil = results.data;
22584
                if (hasil.length > 0) {
22585
                    dataPhoto = hasil[0].Picture
22586
                    if (dataPhoto != "") {
22587
                        Photo = dataPhoto;
22588
                    }
22589
                }
22590

    
22591
            }
22592
        });
22593

    
22594
        var hasil = undefined;
22595
        Ext.Ajax.request({
22596
            async: false,
22597
            method: 'POST',
22598
            url: '/UserControl/GetStore',
22599
            params: {
22600
                tableName: 'PDSBS0009',
22601
                param: 'MenuID[=]' + MinovaUtil.GetMenuID() + ',LangId[=]' + LangId
22602
            },
22603
            success: function (response) {
22604
                hasil = Ext.decode(response.responseText).data;
22605

    
22606
            }
22607
        });
22608

    
22609
        //sorting results
22610
        hasil = hasil.sort(MinovaUtil.SortBy("Sequence"));
22611
        if (hasil.length > 0) {
22612
            Ext.each(hasil, function (rec) {
22613
                tblTemp = rec.TableName;
22614
                if (tbl != tblTemp) {
22615
                    tbl = tblTemp;
22616
                    if (allTable == null) {
22617
                        allTable = tbl
22618
                    } else {
22619
                        allTable = allTable + ',' + tbl
22620
                    }
22621

    
22622
                }
22623
                // build form
22624
                if (rec.TableRef != '') {
22625
                    valueField = null;
22626
                    displayValue = null;
22627
                    Ext.Ajax.request({
22628
                        async: false,
22629
                        method: 'POST',
22630
                        url: '/UserControl/GetStore',
22631
                        params: {
22632
                            tableName: 'SDATATABLEFIELD',
22633
                            param: 'TableName[equal]' + rec.TableRef
22634
                        },
22635
                        success: function (response) {
22636
                            var results = Ext.decode(response.responseText);
22637
                            data_ = results.data;
22638
                            if (data_ != undefined) {
22639
                                valueField_ = $.grep(data_, function (r) {
22640
                                    return r.ValueField == '1'
22641
                                });
22642
                                if (valueField_.length > 0) {
22643
                                    valueField = valueField_[0].FieldName
22644
                                }
22645

    
22646
                                displayValue_ = $.grep(data_, function (r) {
22647
                                    return r.DisplayValue == '1'
22648
                                });
22649
                                if (displayValue_.length > 0) {
22650
                                    displayValue = displayValue_[0].FieldName
22651
                                }
22652
                            }
22653
                        }
22654
                    });
22655

    
22656
                    formfield = new Ext.form.Display({
22657
                        fieldLabel: rec.ScreenCaption,
22658
                        name: rec.FieldName,
22659
                        //value: rec.DefaultValue,
22660
                        padding: 0,
22661
                        labelCls: 'label-minova',
22662
                        labelWidth: 150,
22663
                        anchor: '80%',
22664
                        store: Ext.create('Ext.data.Store', {
22665
                            storeId: 'storeDisplay' + rec.FieldName,
22666
                            //autoLoad: true,
22667
                            proxy: {
22668
                                method: 'POST',
22669
                                type: 'ajax',
22670
                                extraParams: {
22671
                                    tableName: rec.TableRef,
22672
                                    param: ''
22673
                                },
22674
                                reader: {
22675
                                    type: 'json',
22676
                                    root: 'data',
22677
                                    totalProperty: 'data[0].TotalCount'
22678
                                }
22679
                            }
22680
                        }),
22681
                        listeners: {
22682
                            afterrender: function (f) {
22683
                                var store = Ext.StoreMgr.lookup('storeDisplay' + rec.FieldName);
22684
                                var ParamCombo = rec.ParamCombo;
22685
                                var param = '';
22686
                                //if (ParamCombo != '') {
22687
                                if ((rec.TableRef).toLowerCase() == 'phrom0001') {
22688
                                    var splitParam = ParamCombo.split(']');
22689
                                    switch (rec.FieldName) {
22690
                                        case 'Position':
22691
                                            ParamCombo = 'P'
22692
                                            break;
22693
                                        case 'CostCenter':
22694
                                            ParamCombo = 'CC'
22695
                                            break;
22696
                                        case 'Organization':
22697
                                            ParamCombo = 'O'
22698
                                            break;
22699
                                        case 'Job':
22700
                                            ParamCombo = 'J'
22701
                                            break;
22702
                                    }
22703
                                    //if (splitParam.length == 1) {
22704
                                    param = 'StartDate[<=]' + MinovaUtil.GetNowDate() + 'EndDate[>=]' + MinovaUtil.GetNowDate() + ',ObjectClass[=]' + ParamCombo
22705
                                    //} else {
22706
                                    //    param = ParamCombo;
22707
                                    //}
22708
                                }
22709
                                //}
22710
                                Ext.Ajax.request({
22711
                                    method: 'POST',
22712
                                    async: false,
22713
                                    url: '/UserControl/GetStore',
22714
                                    params: {
22715
                                        tableName: rec.TableRef,
22716
                                        param: param
22717
                                    },
22718
                                    success: function (response) {
22719
                                        var results = Ext.decode(response.responseText);
22720

    
22721
                                        //dt = results.data;
22722
                                        store.loadData(results.data);
22723

    
22724
                                    }
22725
                                });
22726
                            },
22727
                            change: function (f) {
22728
                                //alert(this.valueField, value);
22729
                                var display = this.displayField;
22730
                                var value = this.getValue();
22731
                                var st = f.store
22732
                                var r = st.findRecord(f.valueField, f.value)
22733
                                if (r != null) {
22734
                                    f.setRawValue(r.get(f.displayField))
22735
                                } else {
22736
                                    f.setRawValue(f.value);
22737

    
22738
                                }
22739
                            }
22740
                        },
22741
                        queryMode: 'local',
22742
                        displayField: displayValue,
22743
                        valueField: valueField,
22744
                    });
22745
                }
22746
                else {
22747
                    formfield = new Ext.form.Display({
22748
                        fieldLabel: rec.ScreenCaption,
22749
                        name: rec.FieldName,
22750
                        labelCls: 'label-minova',
22751
                        labelWidth: 150,
22752
                        //value: rec.DefaultValue,
22753
                        padding: 0,
22754
                        anchor: '80%'
22755
                    });
22756
                }
22757
                if (isDesk) {
22758
                    if (rec.Column == 1) {
22759
                        col1.push(formfield);
22760
                    } else {
22761
                        col2.push(formfield);
22762
                    }
22763
                } else {
22764
                    col1.push(formfield);
22765
                }
22766

    
22767
            });
22768
            //set allTable
22769
            this.setAllTableName(allTable);
22770
        }
22771

    
22772
        Ext.applyIf(me, {
22773
            items: [
22774
                {
22775
                    width: 150,
22776
                    //margin: '10 5 3 30',
22777
                    margin: '5 0 0 30',
22778
                    height: 130,
22779
                    items: [
22780
                        {
22781
                            xtype: 'image',
22782
                            id: 'imageusermd',
22783
                            name: 'imageusermd',
22784
                            width: 120,
22785
                            height: 120,
22786
                            padding: 5,
22787
                            border: true,
22788
                            src: '/Devt/GetFileData?FileName=' + Photo + '&download=false',
22789
                        }
22790
                    ]
22791
                },
22792
                {
22793
                    bodyPadding: 0,
22794
                    width: 350,
22795
                    margin: '15 0 0 30', //margin: '10 5 3 30',
22796
                    items: col1
22797
                },
22798
                {
22799
                    bodyPadding: 0,
22800
                    //width: 350,
22801
                    margin: '15 0 0 30', //margin: '10 5 3 30',
22802
                    items: col2
22803
                }
22804
            ],
22805
        });
22806

    
22807
        me.callParent(arguments);
22808

    
22809
    }
22810
});
22811

    
22812
//panelTab->panelTab+TableName->GRID+TableName | DISPLAY+TableName | FORM+TableName 
22813
Ext.define('MinovaUtil.MinovaES.MinovaTabListMDNew', {
22814
    extend: 'Ext.tab.Panel',
22815
    alias: ['widget.MinovaTabListMDNew'],
22816
    mixins: [
22817
        'Ext.util.StoreHolder'
22818
    ],
22819
    config: {
22820
        titleField: 'title'
22821
    },
22822
    name: 'gridMenuMD',
22823
    id: 'mainTab',
22824
    moduleType: undefined,
22825
    tablenameheader: undefined,
22826
    langId: undefined,
22827
    param: undefined,
22828
    frame: true,
22829
    //style: {
22830
    //    background: '#ffc'
22831
    //},
22832
    //cls: 'modern-tabpanel',
22833
    //bodyStyle: {
22834
    //    background: '#ffc',
22835
    //    padding: '10px'
22836
    //},
22837
    defaults: {
22838
        scrollable: true,
22839
        iconAlign: 'top',
22840
        userSelectable: {
22841
            bodyElement: true
22842
        }
22843
    },
22844
    tabBar: {
22845
        layout: { pack: 'center' }
22846
    },
22847
    initComponent: function () {
22848
        var me = this;
22849
        var hasil = null;
22850
        var _items = [];
22851

    
22852
        // Ambil Daftar Master Data dari PCMEPMDLIST untuk ditampilkan di Tab
22853
        Ext.Ajax.request({
22854
            async: false,
22855
            method: 'POST',
22856
            url: '/UserControl/GetStore',
22857
            params: {
22858
                tableName: 'PCMEPMDLIST',
22859
                param: 'ModuleType[=]' + me.moduleType + ',Language[=]' + me.langId
22860
            },
22861
            success: function (response) {
22862
                var results = Ext.decode(response.responseText);
22863
                hasil = results.data;
22864
            }
22865
        });
22866
        hasil = hasil.sort(MinovaUtil.SortBySeq("Sequence"));
22867

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

    
23187
    getStoreListeners: function () {
23188
        var me = this;
23189

    
23190
        return {
23191
            refresh: me.onDataRefresh,
23192
            /*replace: me.onReplace,
23193
            add: me.onAdd,
23194
            remove: me.onRemove,
23195
            update: me.onUpdate,
23196
            clear: me.onDataRefresh,
23197
            beginupdate: me.onBeginUpdate,
23198
            endupdate: me.onEndUpdate*/
23199
        };
23200
    },
23201

    
23202
    onBindStore: function (store) {
23203
        //this.onDataRefresh(store);
23204
    },
23205

    
23206
    onDataRefresh: function (store) {
23207
        var me = this,
23208
            titleField = me.getTitleField();
23209

    
23210
        store.each(function (record) {
23211
            var tab = me.getTabByRecord(record);
23212

    
23213
            if (!tab) {
23214
                me.add({
23215
                    title: record.get(titleField)
23216
                });
23217
            }
23218
        });
23219

    
23220
        if (!me.getActiveTab()) {
23221
            me.setActiveTab(0);
23222
        }
23223
    },
23224

    
23225
    getTabByRecord: function (record) {
23226
        var items = this.items,
23227
            tab;
23228

    
23229
        items.each(function (item) {
23230
            if (item.$record === record) {
23231
                tab = item;
23232

    
23233
                return false;
23234
            }
23235
        });
23236

    
23237
        return tab;
23238
    }
23239
});
23240

    
23241
Ext.define('MinovaUtil.MinovaES.MinovaTabListORMNew', {
23242
    extend: 'Ext.tab.Panel',
23243
    alias: ['widget.MinovaTabListORMNew'],
23244
    mixins: [
23245
        'Ext.util.StoreHolder'
23246
    ],
23247
    config: {
23248
        titleField: 'title'
23249
    },
23250
    id: 'mainTab',
23251
    //moduleType: undefined,
23252
    //tablenameheader: undefined,
23253
    //langId: undefined,
23254
    //param: undefined,
23255
    //frame: true,
23256
    //style: {
23257
    //    background: '#ffc'
23258
    //},
23259
    //cls: 'modern-tabpanel',
23260
    //bodyStyle: {
23261
    //    background: '#ffc',
23262
    //    padding: '10px'
23263
    //},
23264
    defaults: {
23265
        scrollable: true,
23266
        iconAlign: 'top',
23267
        userSelectable: {
23268
            bodyElement: true
23269
        }
23270
    },
23271
    tabBar: {
23272
        layout: { pack: 'center' }
23273
    },
23274
    initComponent: function () {
23275
        var me = this;
23276
        var hasil = null;
23277
        var _items = [];
23278
        Ext.applyIf(me, {
23279
            items: _items,
23280
            //store: hasil
23281
            store: Ext.create('Ext.data.Store', {
23282
                storeId: 'gridMenuMDOrm',
23283
                autoLoad: false,
23284
                proxy: {
23285
                    method: 'POST',
23286
                    type: 'ajax',
23287
                    //url: '../../extended/data/menu_md_orm.js',
23288
                    reader: {
23289
                        type: 'json',
23290
                        root: 'data'
23291
                    }
23292
                }
23293
            }),
23294
        });
23295
        me.callParent(arguments);
23296
        this.bindStore(this.store, true);
23297
    },
23298

    
23299
    //listeners: {
23300
    //    'viewready': function (grid) {
23301
    //        grid.getSelectionModel().select(0);
23302
    //        grid.fireEvent('rowClick', grid, 0);
23303
    //    }
23304
    //},
23305
    getStoreListeners: function () {
23306
        var me = this;
23307

    
23308
        return {
23309
            refresh: me.onDataRefresh,
23310
            /*replace: me.onReplace,
23311
            add: me.onAdd,
23312
            remove: me.onRemove,
23313
            update: me.onUpdate,
23314
            clear: me.onDataRefresh,
23315
            beginupdate: me.onBeginUpdate,
23316
            endupdate: me.onEndUpdate*/
23317
        };
23318
    },
23319

    
23320
    onBindStore: function (store) {
23321
        this.onDataRefresh(store);
23322
    },
23323

    
23324
    onDataRefresh: function (store) {
23325
        var me = this,
23326
            titleField = me.getTitleField();
23327
        me.removeAll();
23328
        store.each(function (record) {
23329
            var tab = me.getTabByRecord(record);
23330

    
23331
            if (!tab) {
23332
                me.add({
23333
                    iconCls: 'fa fa-address-book-o', //record.get('IconCls')
23334
                    title: record.get('LabelName'),
23335
                    name: 'panelTab' + record.get('TableName'),
23336
                    record: record, //dipanggil di mainNew1Controller.js
23337
                    tbl: record.get('TableName'),
23338
                    layoutType: record.get('LayoutType')
23339
                });
23340
            }
23341
        });
23342

    
23343
        if (!me.getActiveTab()) {
23344
            me.setActiveTab(0);
23345
        }
23346
    },
23347

    
23348
    getTabByRecord: function (record) {
23349
        var items = this.items,
23350
            tab;
23351

    
23352
        items.each(function (item) {
23353
            //if (item.$record === record) {
23354
            if (item.record === record) {
23355
                tab = item;
23356

    
23357
                return false;
23358
            }
23359
        });
23360

    
23361
        return tab;
23362
    }
23363
});
23364
/* BEGIN YN 20211216 */
23365
//panelTab->panelTab+TableName->GRID+TableName | DISPLAY+TableName | FORM+TableName 
23366
Ext.define('MinovaUtil.MinovaES.MinovaFlowArrow', {
23367
    extend: 'Ext.panel.Panel',
23368
    alias: ['widget.MinovaFlowArrow'],
23369
    config: {
23370
        titleField: 'title'
23371
    },
23372
    name: 'flowArrow',
23373
    id: 'flowArrow',
23374
    empId: undefined,
23375
    now: undefined,
23376
    regId: undefined,
23377
    bizId: undefined,
23378
    param: undefined,
23379
    //frame: true,
23380
    //style: {
23381
    //    background: '#ffc'
23382
    //},
23383
    //cls: 'modern-tabpanel',
23384
    //bodyStyle: {
23385
    //    background: '#ffc',
23386
    //    padding: '10px'
23387
    //},
23388
    defaults: {
23389
        scrollable: true,
23390
        iconAlign: 'top',
23391
        userSelectable: {
23392
            bodyElement: true
23393
        }
23394
    },
23395
    initComponent: function () {
23396
        var me = this;
23397
        var hasil = null;
23398
        var _items = [];
23399
        // Ambil Flow Task untuk ditampilkan di Tab
23400
        //Ext.Ajax.request({
23401
        //    async: false,
23402
        //    method: 'POST',
23403
        //    url: '/UserControl/GetStore',
23404
        //    params: {
23405
        //        empId: me.empId,
23406
        //        regId: me.regId,
23407
        //        bizId: me.bizId,
23408
        //        param: me.param
23409
        //    },
23410
        //    success: function (response) {
23411
        //        var results = Ext.decode(response.responseText);
23412
        //        hasil = results.data;
23413
        //    }
23414
        //});
23415
        //if (hasil == null) {
23416
        //    htmltxt = '<div class="arrow-steps clearfix"></div>';
23417
        //}
23418
        //else {
23419
        //    if (hasil.length > 0) {
23420
        //        htmltxt = '<div class="arrow-steps clearfix">';
23421
        //        Ext.each(hasil, function (rec) {
23422
        //            if (rec.isnow == '1') {
23423
        //                htmltxt += '<div class="step current"><span>' + rec.taskname + '</span><br>';
23424
        //                htmltxt += '<span>' + rec.userid + '</span><br>';
23425
        //                htmltxt += '<span>' + rec.wfstatus + '</span></div>';
23426
        //            }
23427
        //            else {
23428
        //                htmltxt += '<div class="step"><span>' + rec.taskname + '</span><br>';
23429
        //                htmltxt += '<span>' + rec.userid + '</span><br>';
23430
        //                htmltxt += '<span>' + rec.wfstatus + '</span></div>';
23431
        //            }
23432
        //        })
23433
        //        htmltxt += '</div>';
23434
        //    }
23435
        //}
23436
        //_items.push({
23437
        //    xtype: 'panel',
23438
        //    html: htmltxt,
23439
        //    name: 'flowList',
23440
        //})
23441

    
23442
        //    html: '<div class="arrow-steps clearfix"><div class="step current"><span>Step 1</span></div><div class="step"><span>Step 2</span></div><div class="step"><span>Step 3</span></div><div class="step"><span>Step 4</span></div></div></div>',
23443

    
23444
        Ext.applyIf(me, {
23445
            items: _items
23446
        });
23447
        me.callParent(arguments);
23448
    }
23449
});
23450

    
23451
/*NonEditableGrid ESS Generator YN 20211216 */
23452
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGrid', {
23453
    extend: 'Ext.form.Panel',
23454
    alias: ['widget.minovaworkflownoneditablegrid'],
23455
    requires: [
23456
        'Ext.grid.plugin.CellEditing',
23457
        'Ext.grid.RowNumberer',
23458
        'Ext.grid.Panel',
23459
    ],
23460
    cls: 'grid-ess',
23461
    anchor: '100%',
23462
    tableName: undefined,
23463
    tableNameT: undefined,
23464
    tableNameKey: undefined,
23465
    tableNameTKey: undefined,
23466
    hideButton: undefined,
23467
    multiSelect: undefined,
23468
    formname: this.name,
23469
    bizprocid: undefined,
23470
    bizflowid: undefined,
23471
    taskid: undefined,
23472
    features: undefined,
23473
    //height: 400,
23474
    minHeight: 20,
23475
    maxHeight: 500,
23476
    headerLayout: undefined,
23477
    summaryType: undefined,
23478
    labelText: undefined,
23479
    find: function (searchData, target, accum = []) {
23480
        target.forEach((f) => {
23481
            if (f.columns) {
23482
                //find(searchData, f.columns, accum)
23483
                //console.log(f.columns);
23484
                const newf = f.columns.map(o => {
23485
                    if (o.dataIndex == searchData.dataIndex) {
23486
                        searchData.menuDisabled = true;
23487
                        return searchData;
23488
                    } else {
23489
                        o.menuDisabled = true;
23490
                        return o
23491
                    }
23492
                });                
23493
                accum.push({
23494
                    header: f.header,
23495
                    //columns: {
23496
                    //    defaults: {
23497
                    //        menuDisabled: true
23498
                    //    },
23499
                    //    items: newf
23500
                    //}
23501
                    columns: newf
23502
                });
23503
            } else {
23504
                if (f.dataIndex.includes(searchData.dataIndex)) {
23505
                    accum.push(searchData);
23506
                }
23507
                else {
23508
                    accum.push(f);
23509
                }
23510
            }
23511
        })
23512
        return accum;
23513

    
23514
    },
23515
    initComponent: function () {
23516
        var me = this;
23517
        var isLookup = me.isLookup;
23518
        var hide_ = false;
23519
        var widthLock = 250;
23520
        var checkSelection = '';
23521
        if (me.hideButton == true) {
23522
            hide_ = true;
23523
        }
23524
        if (me.multiSelect) {
23525
            locking = false;
23526
            checkSelection = 'checkboxmodel';
23527
            widthLock = 40;
23528
        }
23529
        var tableName = me.tableName;
23530
        var features = me.features;
23531
        var cols = [];
23532
        var fieldStore = [];
23533
        var _url = 'GetAllField';
23534
        var hasil = null;
23535
        var height = me.height;
23536
        var storeID = 'store' + me.tableName;
23537
        var gridName = 'grid' + me.name;
23538
        if (me.storeName) {
23539
            storeID = me.storeName;
23540
        }
23541
        var LangID = MinovaUtil.GetLangID();
23542
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
23543
        Ext.Ajax.request({
23544
            async: false,
23545
            method: 'POST',
23546
            url: '/UserControl/GetStore',
23547
            params: {
23548
                tableName: 'PDSWFSTRUCTUREFIELD',
23549
                param: parameter
23550
            },
23551
            success: function (response) {
23552
                var results = Ext.decode(response.responseText);
23553
                hasil = results.data;
23554
            }
23555
        });
23556
        //cols.push({
23557
        //    xtype: 'rownumberer'
23558
        //});
23559
        var addData = 'var data={';
23560
        if (hasil.length > 0) {
23561
            Ext.each(hasil, function (rec) {
23562
                fieldStore.push(rec.FieldName);
23563
                if (rec.FieldName != 'Sequence') {
23564
                    addData = addData + rec.FieldName + ":" + "'',";
23565
                }
23566
                var null_ = null;
23567
                var ReadOnly_ = false;
23568
                if (rec.IsRequired == '1') {
23569
                    null_ = false;
23570
                } else {
23571
                    null_ = true;
23572
                }
23573
                var Hidden_ = false;
23574
                if (rec.IsReadOnly == '1') {
23575
                    ReadOnly_ = true;
23576
                }
23577
                if (rec.IsVisible == '1') {
23578
                    switch (rec.FormatRef) {
23579
                        case "date":
23580
                            cols.push({
23581
                                xtype: 'minovadatecolumn',
23582
                                hidden: Hidden_,
23583
                                text: rec.HeaderTitle,
23584
                                dataIndex: rec.FieldName,
23585
                                filter: {
23586
                                    itemDefaults: {
23587
                                        emptyText: 'Search for...',
23588
                                    }
23589
                                }
23590
                            });
23591
                            break
23592
                        case "amount":
23593
                            cols.push({
23594
                                xtype: 'minovacurrancycolumn',
23595
                                align: 'right',
23596
                                text: rec.HeaderTitle,
23597
                                dataIndex: rec.FieldName,
23598
                                hidden: Hidden_,
23599
                                filter: {
23600
                                    itemDefaults: {
23601
                                        emptyText: 'Search for...'
23602
                                    }
23603
                                }
23604
                            });
23605
                            break
23606
                        default:
23607
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
23608
                                cols.push({
23609
                                    text: rec.HeaderTitle,
23610
                                    dataIndex: rec.FieldName,
23611
                                    width: 100,
23612
                                    filter: {
23613
                                        type: 'string',
23614
                                        itemDefaults: {
23615
                                            emptyText: 'Search for...'
23616
                                        }
23617
                                    }
23618
                                });
23619
                            } else if (rec.SearchType == '0') {
23620
                                var valueField = null;
23621
                                var displayValue = null;
23622
                                var TableRef = undefined;
23623
                                if (rec.TableRef != '') {
23624
                                    TableRef = rec.TableRef;
23625
                                    Ext.Ajax.request({
23626
                                        async: false,
23627
                                        method: 'POST',
23628
                                        url: '/UserControl/GetStore',
23629
                                        params: {
23630
                                            tableName: 'SDATATABLEFIELD',
23631
                                            param: 'TableName[equal]' + rec.TableRef
23632
                                        },
23633
                                        success: function (response) {
23634
                                            var results = Ext.decode(response.responseText);
23635
                                            data_ = results.data;
23636
                                            if (data_ != undefined) {
23637
                                                valueField_ = $.grep(data_, function (r) {
23638
                                                    return r.ValueField == '1'
23639
                                                });
23640
                                                valueField = valueField_[0].FieldName
23641
                                                displayValue_ = $.grep(data_, function (r) {
23642
                                                    return r.DisplayValue == '1'
23643
                                                });
23644
                                                displayValue = displayValue_[0].FieldName
23645
                                            }
23646
                                        }
23647
                                    });
23648
                                }
23649
                                Ext.create('Ext.data.Store', {
23650
                                    storeId: 'store_' + me.tableName + rec.FieldName,
23651
                                    autoLoad: true,
23652
                                    gridRefresh: 'grid' + me.tableName,
23653
                                    proxy: {
23654
                                        method: 'POST',
23655
                                        type: 'ajax',
23656
                                        url: '/UserControl/GetStoreAuth',
23657
                                        extraParams: {
23658
                                            tableName: TableRef,
23659
                                            param: rec.ParamCombo,
23660
                                            menuId: MinovaUtil.GetMenuID()
23661
                                        },
23662
                                        reader: {
23663
                                            type: 'json',
23664
                                            root: 'data',
23665
                                            totalProperty: 'data[0].TotalCount',
23666
                                            grid: "grid" + me.tableName,
23667
											//grid: me,
23668
                                            // THIS IS THE FUNCTION YOU NEED TO MANIPULATE THE DATA
23669
                                            // getData: function (data) {
23670
												// Ext.ComponentQuery.query("[name=" + this.grid + "]")[0].view.refresh();												
23671
                                                // return data;
23672
                                            // }
23673
                                        }
23674
                                    }
23675
                                });
23676
                                cols.push({
23677
                                    //xtype : 'minovacombocolumn',
23678
                                    hidden: Hidden_,
23679
                                    text: rec.HeaderTitle,
23680
                                    dataIndex: rec.FieldName,
23681
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
23682
                                    summaryType: function (records) {
23683
                                        var suma = 0;
23684
                                        if (me.summaryType == 'average') {
23685
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
23686
                                            Ext.each(records, function (record, index) {
23687
                                                if (record.get(rec.FieldName)) {
23688
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
23689
                                                }
23690
                                            });
23691
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
23692
                                        }
23693
                                        else if (me.summaryType == 'sum') {
23694
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
23695
                                            Ext.each(records, function (record, index) {
23696
                                                if (record.get(rec.FieldName)) {
23697
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
23698
                                                }
23699
                                            });
23700
                                        }
23701
                                        
23702
                                        return suma;
23703
                                    },
23704
                                    //valueField : valueField,
23705
                                    //displayField : displayValue,
23706
                                    //store : 'store_' + me.tableName + rec.FieldName,
23707
                                    //renderer: function (value) {
23708
                                    //    var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
23709
                                    //    var index = store.find(valueField, value);
23710
                                    //    var val = "";
23711
                                    //    if (index != -1) {
23712
                                    //        var rc = store.getAt(index);
23713
                                    //        val = rc.get(displayValue);
23714
                                    //    } else {
23715
                                    //        val = value;
23716
                                    //    }
23717
                                    //    return val;
23718
                                    //},
23719
                                    //filter: {
23720
                                    //    type: 'list',
23721
                                    //    itemDefaults: {
23722
                                    //        emptyText: 'Search for...'
23723
                                    //    }
23724
                                    //}
23725
                                });
23726
                            } else if (rec.SearchType == '5') {
23727
                                var valueField = null;
23728
                                var displayValue = null;
23729
                                var AdditionaldisplayValue = null;
23730
                                var TableRef = undefined;
23731
                                if (rec.TableRef != '') {
23732
                                    TableRef = rec.TableRef;
23733
                                    Ext.Ajax.request({
23734
                                        async: false,
23735
                                        method: 'POST',
23736
                                        url: '/UserControl/GetStore',
23737
                                        params: {
23738
                                            tableName: 'SDATATABLEFIELD',
23739
                                            param: 'TableName[equal]' + rec.TableRef
23740
                                        },
23741
                                        success: function (response) {
23742
                                            var results = Ext.decode(response.responseText);
23743
                                            data_ = results.data;
23744
                                            if (data_ != undefined) {
23745
                                                valueField_ = $.grep(data_, function (r) {
23746
                                                    return r.ValueField == '1'
23747
                                                });
23748
                                                if (valueField_.length > 0) {
23749
                                                    valueField = valueField_[0].FieldName
23750
                                                }
23751

    
23752
                                                displayValue_ = $.grep(data_, function (r) {
23753
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
23754
                                                });
23755
                                                if (displayValue_.length > 0) {
23756
                                                    displayValue = displayValue_[0].FieldName;
23757
                                                }
23758
                                                if (displayValue_.length >= 2) {
23759
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
23760
                                                }
23761
                                            }
23762
                                        }
23763
                                    });
23764
                                }
23765
                                Ext.create('Ext.data.Store', {
23766
                                    storeId: 'store_' + me.tableName + rec.FieldName,
23767
                                    autoLoad: true,
23768
                                    proxy: {
23769
                                        method: 'POST',
23770
                                        type: 'ajax',
23771
                                        url: '/UserControl/GetStoreAuth',
23772
                                        extraParams: {
23773
                                            tableName: TableRef,
23774
                                            param: rec.ParamCombo,
23775
                                            menuId: MinovaUtil.GetMenuID()
23776
                                        },
23777
                                        reader: {
23778
                                            type: 'json',
23779
                                            root: 'data',
23780
                                            totalProperty: 'data[0].TotalCount'
23781
                                        }
23782
                                    }
23783
                                });
23784
                                cols.push({
23785
                                    //xtype : 'minovacombocolumn',
23786
                                    hidden: Hidden_,
23787
                                    text: rec.HeaderTitle,
23788
                                    dataIndex: rec.FieldName,
23789
                                    //valueField : valueField,
23790
                                    //displayField : displayValue,
23791
                                    //store : 'store_' + me.tableName + rec.FieldName,
23792
                                    tpl: Ext.create('Ext.XTemplate',
23793
                                        '<ul class="x-list-plain"><tpl for=".">',
23794
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
23795
                                        '</tpl></ul>'),
23796
                                    displayTpl: Ext.create('Ext.XTemplate',
23797
                                        '<tpl for=".">',
23798
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
23799
                                        '</tpl>'),
23800
                                    renderer: function (value) {
23801
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
23802
                                        var index = store.find(valueField, value);
23803
                                        var val = "";
23804
                                        if (index != -1) {
23805
                                            var rc = store.getAt(index);
23806
                                            //val = rc.get(displayValue);
23807
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
23808
                                        } else {
23809
                                            val = value;
23810
                                        }
23811
                                        return val;
23812
                                    },
23813
                                    filter: {
23814
                                        type: 'list',
23815
                                        itemDefaults: {
23816
                                            emptyText: 'Search for...'
23817
                                        }
23818
                                    }
23819
                                });
23820
                            } else if (rec.SearchType == '2') {
23821
                                var triger = (rec.TriggerCombo).split('$');
23822
                                var targetField_ = triger[0];
23823
                                var fieldValue_ = triger[1];
23824
                                cols.push({
23825
                                    text: rec.HeaderTitle,
23826
                                    hidden: Hidden_,
23827
                                    dataIndex: rec.FieldName,
23828
                                    filter: {
23829
                                        itemDefaults: {
23830
                                            emptyText: 'Search for...'
23831
                                        }
23832
                                    }
23833
                                });
23834
                            } else if (rec.SearchType == '3') {
23835
                                cols.push({
23836
                                    text: rec.HeaderTitle,
23837
                                    hidden: Hidden_,
23838
                                    dataIndex: rec.FieldName,
23839
                                    filter: {
23840
                                        itemDefaults: {
23841
                                            emptyText: 'Search for...'
23842
                                        }
23843
                                    }
23844
                                });
23845
                            } 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) {
23846
                                var triger = (rec.TriggerCombo).split('&');
23847
                                var targetField_ = triger[0];
23848
                                var fieldValue_ = triger[0];
23849
                                cols.push({
23850
                                    text: rec.HeaderTitle,
23851
                                    hidden: Hidden_,
23852
                                    dataIndex: rec.FieldName,
23853
                                    filter: {
23854
                                        itemDefaults: {
23855
                                            emptyText: 'Search for...'
23856
                                        }
23857
                                    }
23858
                                });
23859
                            } else if (rec.SearchType == '4' && isLookup != true) {
23860
                                cols.push({
23861
                                    text: rec.HeaderTitle,
23862
                                    hidden: Hidden_,
23863
                                    dataIndex: rec.FieldName,
23864
                                    filter: {
23865
                                        itemDefaults: {
23866
                                            emptyText: 'Search for...'
23867
                                        }
23868
                                    }
23869
                                });
23870
                            } else if (rec.FixedValue != '') { // add by taufan
23871
                                cols.push({
23872
                                    text: rec.HeaderTitle,
23873
                                    hidden: Hidden_,
23874
                                    dataIndex: rec.FieldName,
23875
                                    filter: {
23876
                                        itemDefaults: {
23877
                                            emptyText: 'Search for...'
23878
                                        }
23879
                                    },
23880
                                    renderer: function (value) {
23881
                                        var val = "";
23882
                                        var storeData = [];
23883
                                        var str = rec.FixedValue;
23884
                                        var hasil = str.split('||');
23885
                                        hasil.forEach(function (h) {
23886
                                            store_ = h.split('=')
23887
                                            storeData.push({
23888
                                                code: store_[0],
23889
                                                desc: store_[1]
23890
                                            });
23891
                                        });
23892
                                        var item = storeData.find(x => x.code == value);
23893
                                        if (item != undefined) {
23894
                                            val = item.desc;
23895
                                        }
23896
                                        return val;
23897
                                    }
23898
                                });
23899
                            } else {
23900
                                _xtype = 'textfield';
23901
                                if (rec.Length > 250) {
23902
                                    _xtype = 'textareafield';
23903
                                }
23904
                                var _custumFunc = null;
23905
                                Ext.Ajax.request({
23906
                                    async: false,
23907
                                    method: 'POST',
23908
                                    url: '/UserControl/GetStore',
23909
                                    params: {
23910
                                        tableName: 'SDATATABLEFIELD',
23911
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
23912
                                    },
23913
                                    success: function (response) {
23914
                                        var results = Ext.decode(response.responseText);
23915
                                        data_ = results.data[0];
23916
                                        if (data_ != undefined) {
23917
                                            _custumFunc = data_.SelectFunction;
23918
                                        }
23919
                                    }
23920
                                });
23921
                                cols.push({
23922
                                    text: rec.HeaderTitle,
23923
                                    xtype: 'gridcolumn',
23924
                                    hidden: Hidden_,
23925
                                    dataIndex: rec.FieldName,
23926
                                    filter: {
23927
                                        itemDefaults: {
23928
                                            emptyText: 'Search for...'
23929
                                        }
23930
                                    },
23931
                                    cellWrap: true,
23932
                                    //autoSizeColumn: true,
23933
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
23934
                                    flex: (rec.Length == 'EISelfComent') ? 1 : 0,
23935
                                    renderer: function (v) {
23936
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
23937
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
23938
                                        return result
23939
                                    }
23940
                                });
23941
                            }
23942
                            break
23943
                    }
23944
                } else {
23945
                    cols.push({
23946
                        text: rec.HeaderTitle,
23947
                        hidden: Hidden_,
23948
                        dataIndex: rec.FieldName,
23949
                        hidden: true,
23950
                        filter: {
23951
                            itemDefaults: {
23952
                                emptyText: 'Search for...'
23953
                            }
23954
                        }
23955
                    });
23956
                }
23957
            });
23958

    
23959
        };
23960
        //Sesuaikan Header Layout
23961
        var col = me.headerLayout;
23962
        if (me.headerLayout != undefined) {
23963
            cols.forEach((f) => {
23964
                col = me.find(f, col);
23965
            })
23966
            cols = col;
23967
        }
23968
        addData = addData + "}";
23969
        Ext.applyIf(me, {            
23970
            items: [{
23971
                xtype: 'grid',
23972
                id: gridName,
23973
                name: gridName,
23974
                tableName: me.tableName,
23975
                tableNameT: me.tableNameT,
23976
                tableNameKey: me.tableNameKey,
23977
                tableNameTKey: me.tableNameTKey,
23978
                minHeight: me.minHeight,
23979
                maxHeight: me.maxHeight,
23980
                //height: me.height,                
23981
                //scrollable: true,
23982
                //flex: 1,
23983
                addFlag: true,
23984
                deleteFlag: true,
23985
                store: Ext.create('Ext.data.Store', {
23986
                    storeId: storeID,
23987
                    fields: fieldStore,
23988
                    //groupField: 'QuestionGroup',
23989
                    grouper: {
23990
                        sortProperty: 'SeqQuest',
23991
                        groupFn: function (record) {
23992
                            return record.get('QuestionGroup');
23993
                        }
23994
                    },
23995
                    proxy: {
23996
                        method: 'POST',
23997
                        type: 'ajax',
23998
                        url: '',
23999
                        reader: {
24000
                            type: 'json',
24001
                            root: 'data'
24002
                        }
24003
                    }
24004
                }),
24005
                dockedItems: [{
24006
                    xtype: 'toolbar',
24007
                    dock: 'bottom',
24008
                    items: [
24009
                        {
24010
                            xtype: 'label',
24011
                            html: me.labelText,
24012
                            margin: '0 0 10 0'
24013
                        },
24014
                        {
24015
                            text: 'Add',
24016
                            hidden: hide_,
24017
                            name: tableName + 'Add',
24018
                            iconCls: 'fa-plus-circle',
24019
                            style: 'font-family: FontAwesome',
24020
                            handler: function (btn, e, eOpts) {
24021
                                var grid = Ext.getCmp(gridName);
24022
                                if (grid.addFlag === true) {
24023
                                    var store = Ext.StoreMgr.lookup(storeID)
24024
                                    idx = store.getCount();
24025
                                    var action = getParam('action');
24026
                                    var data = '';
24027
                                    var Sequence = 0;
24028
                                    if (idx == 0) {
24029
                                        Sequence = 1;
24030
                                    } else {
24031
                                        Sequence = 1 + idx;
24032
                                    }
24033
                                    var seq = 'Sequence';
24034
                                    var SequenceValue = Sequence;
24035
                                    eval(addData);
24036
                                    data[seq] = SequenceValue;
24037
                                    store.insert(idx, data);
24038
                                    var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24039
                                    //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24040
                                    grdPanel.getView().getSelectionModel().select(idx);
24041
                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24042
                                    //frmDisplay.reset();
24043
                                    frmForm.reset();
24044
                                    frmForm.getForm().setValues(data);
24045
                                    //frmDisplay.setHidden(true);
24046
                                    frmForm.setHidden(false);
24047
                                    btn.fireEvent("click2"); //YN 20220315
24048
                                    //grdPanel.setHidden(true);
24049
                                    //action = "1";                                    
24050
                                }
24051
                            }
24052
                        },
24053
                        {
24054
                            text: 'Delete',
24055
                            hidden: hide_,
24056
                            name: tableName + 'DeleteText',
24057
                            iconCls: 'fa-trash-o',
24058
                            style: 'font-family: FontAwesome',
24059
                            handler: function (btn, e, eOpts) {
24060
                                var grid = Ext.getCmp(gridName);
24061
                                if (grid.deleteFlag === true) {
24062
                                    var me = this,
24063
                                        store = Ext.StoreMgr.lookup(storeID)
24064
                                    var grid = Ext.getCmp(gridName);
24065
                                    Ext.MessageBox.show({
24066
                                        title: 'Remove tab',
24067
                                        msg: "This will remove. Do you want to continue?",
24068
                                        buttons: Ext.MessageBox.YESNO,
24069
                                        fn: function (choice) {
24070
                                            console.log(choice);
24071
                                            if (choice === 'yes') {
24072
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
24073
                                                if (selection) {
24074
                                                    store.remove(selection);
24075
                                                    btn.fireEvent("click2"); //YN 20220315
24076
                                                }
24077
                                            }
24078
                                        }
24079
                                    });
24080
                                }
24081
                            }
24082
                        },
24083
                        {
24084
                            text: 'Edit',
24085
                            hidden: hide_,
24086
                            name: tableName + 'EditText',
24087
                            bizprocid: me.bizprocid,
24088
                            taskid: me.taskid,
24089
                            TableName: tableName,
24090
                            iconCls: 'fa-edit',
24091
                            style: 'font-family: FontAwesome',
24092
                            handler: function () {
24093
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
24094
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24095
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24096
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24097
                                //if (frmForm == undefined) {
24098
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24099
                                //        bizprocid: this.bizprocid,
24100
                                //        taskid: this.taskid,
24101
                                //        name: 'form' + this.TableName,
24102
                                //        tableName: this.TableName,
24103
                                //    });
24104
                                //}
24105
                                ////frmForm.reset();
24106
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
24107
                                //frmForm.show();
24108

    
24109
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24110
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24111
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24112
                                if (dtrec) {
24113
                                    //frmDisplay.reset();
24114
                                    frmForm.reset();
24115
                                    frmForm.getForm().setValues(dtrec.data);
24116
                                    //frmDisplay.setHidden(true);
24117
                                    frmForm.setHidden(false);
24118
                                    //grdPanel.setHidden(true);
24119
                                    action = "1";
24120
                                }
24121

    
24122
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24123
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24124
                                //if (dtrec) {
24125
                                //    var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24126
                                //    var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24127
                                //    var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24128
                                //    pnlT.setHidden(false);                                   
24129
                                //}
24130
                            }
24131
                        }
24132
                    ]
24133
                }
24134
                ],
24135
                columns: {
24136
                    defaults: {
24137
                        menuDisabled: true
24138
                    },
24139
                    items: cols
24140
                },
24141
                //selType: checkSelection,
24142
                //plugins: {
24143
                //    ptype: 'actionColumnRowEditing', //rowediting
24144
                //    pluginId: 'rowEditing',
24145
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
24146
                //    clicksToEdit: 2,
24147
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
24148
                //    listeners: {}
24149
                //},
24150
                listeners: {
24151
                    //'beforeedit': function (editor) {
24152
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
24153
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
24154
                    //}
24155
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
24156
                        var me = this;
24157
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24158
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24159
                        var dtrec = record;
24160
                        if (dtrec) {
24161
                            //frmDisplay.reset();
24162
                            //frmForm.reset();
24163
                            frmForm.getForm().setValues(dtrec.data);
24164
                            //grdPanel.setHeight(0);
24165
                            //frmDisplay.setHidden(true);
24166
                            frmForm.setHidden(false);
24167
                            //grdPanel.setHidden(true);
24168

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

    
24175
                            action = "1";
24176
                        }
24177
                    },
24178
                    'itemclickx': function (this_, record, item, index, e, eOpts) {
24179
                        var me = this;
24180
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.tableName + ']')[0];
24181
                        frmForm.setHidden(true);
24182
                        ////var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
24183
                        //var dtrec = record;
24184
                        //if (dtrec) {
24185
                        //    //frmDisplay.reset();
24186
                        //    //frmForm.reset();
24187
                        //    frmForm.getForm().setValues(dtrec.data);
24188
                        //    //grdPanel.setHeight(0);
24189
                        //    //frmDisplay.setHidden(true);
24190
                        //    frmForm.setHidden(false);
24191
                        //    //grdPanel.setHidden(true);
24192
                        //    action = "1";
24193
                        //}
24194
                        var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tableName + ']')[0];
24195
                        var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24196
                        if (dtrec) {
24197
                            var pnlT = Ext.ComponentQuery.query('[name=panel' + me.tableNameT + ']')[0];
24198
                            var grdPanelT = Ext.ComponentQuery.query('[name=grid' + me.tableNameT + ']')[0];
24199
                            var dtrecT = grdPanelT.getStore().filter(me.tableNameTKey, dtrec.data[me.tableNameKey]);
24200
                            pnlT.setTitle('<div style=\"font-size:14px; font-weight: bold;\">Goal ' + dtrec.data[me.tableNameKey] + '-Tasks</div>');
24201
                            pnlT.setHidden(false);
24202
                        }
24203
                    }
24204
                },
24205
                features: features,
24206
                viewConfig: {
24207
                    listeners: {
24208
                        refresh: function (dataview) {
24209
                            Ext.each(dataview.panel.columns, function (column) {
24210
                                column.autoSize();
24211
                                column.setWidth(column.width + 10); //YN 220312
24212
                            })
24213
                        }
24214
                    }
24215
                }
24216
            }
24217
            ]
24218
        });
24219
        me.callParent(arguments);  
24220
    },
24221
    listeners: {
24222
        boxready: function (dataview) {
24223
            var grd = Ext.ComponentQuery.query('[name=grid' + this.tableName + ']')[0];
24224
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
24225
        }
24226
    }
24227
});
24228

    
24229
/*NonEditableGridT ESS Generator YN 20211216 */
24230
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowNonEditableGridT', {
24231
    extend: 'Ext.form.Panel',
24232
    alias: ['widget.minovaworkflownoneditablegridT'],
24233
    requires: [
24234
        'Ext.grid.plugin.CellEditing',
24235
        'Ext.grid.RowNumberer',
24236
        'Ext.grid.Panel',
24237
    ],
24238
    anchor: '100%',
24239
    tableName: undefined,
24240
    tableNameP: undefined,
24241
    tableNameKey: undefined,
24242
    tableNameFKey: undefined,
24243
    tableNamePKey: undefined,
24244
    parentKey: undefined,
24245
    hideButton: undefined,
24246
    multiSelect: undefined,
24247
    formname: this.name,
24248
    bizprocid: undefined,
24249
    bizflowid: undefined,
24250
    taskid: undefined,
24251
    features: undefined,
24252
    height: 400,
24253
    minHeight: 20,
24254
    maxHeight: 400,
24255
    initComponent: function () {
24256
        var me = this;
24257
        var isLookup = me.isLookup;
24258
        var hide_ = false;
24259
        var widthLock = 250;
24260
        var checkSelection = '';
24261
        if (me.hideButton == true) {
24262
            hide_ = true;
24263
        }
24264
        if (me.multiSelect) {
24265
            locking = false;
24266
            checkSelection = 'checkboxmodel';
24267
            widthLock = 40;
24268
        }
24269
        var tableName = me.tableName;
24270
        var features = me.features;
24271
        var cols = [];
24272
        var fieldStore = [];
24273
        var _url = 'GetAllField';
24274
        var hasil = null;
24275
        var height = me.height;
24276
        var storeID = 'store' + me.tableName + '_' + me.parentKey;
24277
        var gridName = 'grid' + me.name;
24278
        if (me.storeName) {
24279
            storeID = me.storeName;
24280
        }
24281
        var LangID = MinovaUtil.GetLangID();
24282
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24283
        Ext.Ajax.request({
24284
            async: false,
24285
            method: 'POST',
24286
            url: '/UserControl/GetStore',
24287
            params: {
24288
                tableName: 'PDSWFSTRUCTUREFIELD',
24289
                param: parameter
24290
            },
24291
            success: function (response) {
24292
                var results = Ext.decode(response.responseText);
24293
                hasil = results.data;
24294
            }
24295
        });
24296
        //cols.push({
24297
        //    xtype: 'rownumberer'
24298
        //});
24299
        var addData = 'var data={';
24300
        if (hasil.length > 0) {
24301
            Ext.each(hasil, function (rec) {
24302
                fieldStore.push(rec.FieldName);
24303
                if (rec.FieldName != 'Sequence') {
24304
                    addData = addData + rec.FieldName + ":" + "'',";
24305
                }
24306
                var null_ = null;
24307
                var ReadOnly_ = false;
24308
                if (rec.IsRequired == '1') {
24309
                    null_ = false;
24310
                } else {
24311
                    null_ = true;
24312
                }
24313
                var Hidden_ = false;
24314
                if (rec.IsReadOnly == '1') {
24315
                    ReadOnly_ = true;
24316
                }
24317
                if (rec.IsVisible == '1') {
24318
                    switch (rec.FormatRef) {
24319
                        case "date":
24320
                            cols.push({
24321
                                xtype: 'minovadatecolumn',
24322
                                hidden: Hidden_,
24323
                                text: rec.HeaderTitle,
24324
                                dataIndex: rec.FieldName,
24325
                                filter: {
24326
                                    itemDefaults: {
24327
                                        emptyText: 'Search for...',
24328
                                    }
24329
                                }
24330
                            });
24331
                            break
24332
                        case "amount":
24333
                            cols.push({
24334
                                xtype: 'minovacurrancycolumn',
24335
                                align: 'right',
24336
                                text: rec.HeaderTitle,
24337
                                dataIndex: rec.FieldName,
24338
                                hidden: Hidden_,
24339
                                filter: {
24340
                                    itemDefaults: {
24341
                                        emptyText: 'Search for...'
24342
                                    }
24343
                                }
24344
                            });
24345
                            break
24346
                        default:
24347
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
24348
                                cols.push({
24349
                                    text: rec.HeaderTitle,
24350
                                    dataIndex: rec.FieldName,
24351
                                    width: 100,
24352
                                    filter: {
24353
                                        type: 'string',
24354
                                        itemDefaults: {
24355
                                            emptyText: 'Search for...'
24356
                                        }
24357
                                    }
24358
                                });
24359
                            } else if (rec.SearchType == '0') {
24360
                                var valueField = null;
24361
                                var displayValue = null;
24362
                                var TableRef = undefined;
24363
                                if (rec.TableRef != '') {
24364
                                    TableRef = rec.TableRef;
24365
                                    Ext.Ajax.request({
24366
                                        async: false,
24367
                                        method: 'POST',
24368
                                        url: '/UserControl/GetStore',
24369
                                        params: {
24370
                                            tableName: 'SDATATABLEFIELD',
24371
                                            param: 'TableName[equal]' + rec.TableRef
24372
                                        },
24373
                                        success: function (response) {
24374
                                            var results = Ext.decode(response.responseText);
24375
                                            data_ = results.data;
24376
                                            if (data_ != undefined) {
24377
                                                valueField_ = $.grep(data_, function (r) {
24378
                                                    return r.ValueField == '1'
24379
                                                });
24380
                                                valueField = valueField_[0].FieldName
24381
                                                displayValue_ = $.grep(data_, function (r) {
24382
                                                    return r.DisplayValue == '1'
24383
                                                });
24384
                                                displayValue = displayValue_[0].FieldName
24385
                                            }
24386
                                        }
24387
                                    });
24388
                                }
24389
                                Ext.create('Ext.data.Store', {
24390
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24391
                                    autoLoad: true,
24392
                                    proxy: {
24393
                                        method: 'POST',
24394
                                        type: 'ajax',
24395
                                        url: '/UserControl/GetStoreAuth',
24396
                                        extraParams: {
24397
                                            tableName: TableRef,
24398
                                            param: rec.ParamCombo,
24399
                                            menuId: MinovaUtil.GetMenuID()
24400
                                        },
24401
                                        reader: {
24402
                                            type: 'json',
24403
                                            root: 'data',
24404
                                            totalProperty: 'data[0].TotalCount'
24405
                                        }
24406
                                    }
24407
                                });
24408
                                cols.push({
24409
                                    //xtype : 'minovacombocolumn',
24410
                                    hidden: Hidden_,
24411
                                    text: rec.HeaderTitle,
24412
                                    dataIndex: rec.FieldName,
24413
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
24414
                                    //valueField : valueField,
24415
                                    //displayField : displayValue,
24416
                                    //store : 'store_' + me.tableName + rec.FieldName,
24417
                                    renderer: function (value) {
24418
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24419
                                        var index = store.find(valueField, value);
24420
                                        var val = "";
24421
                                        if (index != -1) {
24422
                                            var rc = store.getAt(index);
24423
                                            val = rc.get(displayValue);
24424
                                        } else {
24425
                                            val = value;
24426
                                        }
24427
                                        return val;
24428
                                    },
24429
                                    filter: {
24430
                                        type: 'list',
24431
                                        itemDefaults: {
24432
                                            emptyText: 'Search for...'
24433
                                        }
24434
                                    }
24435
                                });
24436
                            } else if (rec.SearchType == '5') {
24437
                                var valueField = null;
24438
                                var displayValue = null;
24439
                                var AdditionaldisplayValue = null;
24440
                                var TableRef = undefined;
24441
                                if (rec.TableRef != '') {
24442
                                    TableRef = rec.TableRef;
24443
                                    Ext.Ajax.request({
24444
                                        async: false,
24445
                                        method: 'POST',
24446
                                        url: '/UserControl/GetStore',
24447
                                        params: {
24448
                                            tableName: 'SDATATABLEFIELD',
24449
                                            param: 'TableName[equal]' + rec.TableRef
24450
                                        },
24451
                                        success: function (response) {
24452
                                            var results = Ext.decode(response.responseText);
24453
                                            data_ = results.data;
24454
                                            if (data_ != undefined) {
24455
                                                valueField_ = $.grep(data_, function (r) {
24456
                                                    return r.ValueField == '1'
24457
                                                });
24458
                                                if (valueField_.length > 0) {
24459
                                                    valueField = valueField_[0].FieldName
24460
                                                }
24461

    
24462
                                                displayValue_ = $.grep(data_, function (r) {
24463
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
24464
                                                });
24465
                                                if (displayValue_.length > 0) {
24466
                                                    displayValue = displayValue_[0].FieldName;
24467
                                                }
24468
                                                if (displayValue_.length >= 2) {
24469
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
24470
                                                }
24471
                                            }
24472
                                        }
24473
                                    });
24474
                                }
24475
                                Ext.create('Ext.data.Store', {
24476
                                    storeId: 'store_' + me.tableName + rec.FieldName,
24477
                                    autoLoad: true,
24478
                                    proxy: {
24479
                                        method: 'POST',
24480
                                        type: 'ajax',
24481
                                        url: '/UserControl/GetStoreAuth',
24482
                                        extraParams: {
24483
                                            tableName: TableRef,
24484
                                            param: rec.ParamCombo,
24485
                                            menuId: MinovaUtil.GetMenuID()
24486
                                        },
24487
                                        reader: {
24488
                                            type: 'json',
24489
                                            root: 'data',
24490
                                            totalProperty: 'data[0].TotalCount'
24491
                                        }
24492
                                    }
24493
                                });
24494
                                cols.push({
24495
                                    //xtype : 'minovacombocolumn',
24496
                                    hidden: Hidden_,
24497
                                    text: rec.HeaderTitle,
24498
                                    dataIndex: rec.FieldName,
24499
                                    //valueField : valueField,
24500
                                    //displayField : displayValue,
24501
                                    //store : 'store_' + me.tableName + rec.FieldName,
24502
                                    tpl: Ext.create('Ext.XTemplate',
24503
                                        '<ul class="x-list-plain"><tpl for=".">',
24504
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
24505
                                        '</tpl></ul>'),
24506
                                    displayTpl: Ext.create('Ext.XTemplate',
24507
                                        '<tpl for=".">',
24508
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
24509
                                        '</tpl>'),
24510
                                    renderer: function (value) {
24511
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
24512
                                        var index = store.find(valueField, value);
24513
                                        var val = "";
24514
                                        if (index != -1) {
24515
                                            var rc = store.getAt(index);
24516
                                            //val = rc.get(displayValue);
24517
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
24518
                                        } else {
24519
                                            val = value;
24520
                                        }
24521
                                        return val;
24522
                                    },
24523
                                    filter: {
24524
                                        type: 'list',
24525
                                        itemDefaults: {
24526
                                            emptyText: 'Search for...'
24527
                                        }
24528
                                    }
24529
                                });
24530
                            } else if (rec.SearchType == '2') {
24531
                                var triger = (rec.TriggerCombo).split('$');
24532
                                var targetField_ = triger[0];
24533
                                var fieldValue_ = triger[1];
24534
                                cols.push({
24535
                                    text: rec.HeaderTitle,
24536
                                    hidden: Hidden_,
24537
                                    dataIndex: rec.FieldName,
24538
                                    filter: {
24539
                                        itemDefaults: {
24540
                                            emptyText: 'Search for...'
24541
                                        }
24542
                                    }
24543
                                });
24544
                            } else if (rec.SearchType == '3') {
24545
                                cols.push({
24546
                                    text: rec.HeaderTitle,
24547
                                    hidden: Hidden_,
24548
                                    dataIndex: rec.FieldName,
24549
                                    filter: {
24550
                                        itemDefaults: {
24551
                                            emptyText: 'Search for...'
24552
                                        }
24553
                                    }
24554
                                });
24555
                            } 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) {
24556
                                var triger = (rec.TriggerCombo).split('&');
24557
                                var targetField_ = triger[0];
24558
                                var fieldValue_ = triger[0];
24559
                                cols.push({
24560
                                    text: rec.HeaderTitle,
24561
                                    hidden: Hidden_,
24562
                                    dataIndex: rec.FieldName,
24563
                                    filter: {
24564
                                        itemDefaults: {
24565
                                            emptyText: 'Search for...'
24566
                                        }
24567
                                    }
24568
                                });
24569
                            } else if (rec.SearchType == '4' && isLookup != true) {
24570
                                cols.push({
24571
                                    text: rec.HeaderTitle,
24572
                                    hidden: Hidden_,
24573
                                    dataIndex: rec.FieldName,
24574
                                    filter: {
24575
                                        itemDefaults: {
24576
                                            emptyText: 'Search for...'
24577
                                        }
24578
                                    }
24579
                                });
24580
                            } else if (rec.FixedValue != '') { // add by taufan
24581
                                cols.push({
24582
                                    text: rec.HeaderTitle,
24583
                                    hidden: Hidden_,
24584
                                    dataIndex: rec.FieldName,
24585
                                    filter: {
24586
                                        itemDefaults: {
24587
                                            emptyText: 'Search for...'
24588
                                        }
24589
                                    },
24590
                                    renderer: function (value) {
24591
                                        var val = "";
24592
                                        var storeData = [];
24593
                                        var str = rec.FixedValue;
24594
                                        var hasil = str.split('||');
24595
                                        hasil.forEach(function (h) {
24596
                                            store_ = h.split('=')
24597
                                            storeData.push({
24598
                                                code: store_[0],
24599
                                                desc: store_[1]
24600
                                            });
24601
                                        });
24602
                                        var item = storeData.find(x => x.code == value);
24603
                                        if (item != undefined) {
24604
                                            val = item.desc;
24605
                                        }
24606
                                        return val;
24607
                                    }
24608
                                });
24609
                            } else {
24610
                                _xtype = 'textfield';
24611
                                if (rec.Length > 250) {
24612
                                    _xtype = 'textareafield';
24613
                                }
24614
                                var _custumFunc = null;
24615
                                Ext.Ajax.request({
24616
                                    async: false,
24617
                                    method: 'POST',
24618
                                    url: '/UserControl/GetStore',
24619
                                    params: {
24620
                                        tableName: 'SDATATABLEFIELD',
24621
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
24622
                                    },
24623
                                    success: function (response) {
24624
                                        var results = Ext.decode(response.responseText);
24625
                                        data_ = results.data[0];
24626
                                        if (data_ != undefined) {
24627
                                            _custumFunc = data_.SelectFunction;
24628
                                        }
24629
                                    }
24630
                                });
24631
                                cols.push({
24632
                                    text: rec.HeaderTitle,
24633
                                    xtype: 'gridcolumn',
24634
                                    hidden: Hidden_,
24635
                                    dataIndex: rec.FieldName,
24636
                                    filter: {
24637
                                        itemDefaults: {
24638
                                            emptyText: 'Search for...'
24639
                                        }
24640
                                    },
24641
                                    cellWrap: true,
24642
                                    width: (rec.Length * 8) > 400 ? 400 : rec.Length * 8,
24643
                                    renderer: function (v) {
24644
                                        result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
24645
                                        result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
24646
                                        return result
24647
                                    }
24648
                                });
24649
                            }
24650
                            break
24651
                    }
24652
                } else {
24653
                    cols.push({
24654
                        text: rec.HeaderTitle,
24655
                        hidden: Hidden_,
24656
                        dataIndex: rec.FieldName,
24657
                        hidden: true,
24658
                        filter: {
24659
                            itemDefaults: {
24660
                                emptyText: 'Search for...'
24661
                            }
24662
                        }
24663
                    });
24664
                }
24665
            });
24666

    
24667
        };
24668

    
24669
        addData = addData + "}";
24670
        Ext.applyIf(me, {
24671
            items: [{
24672
                xtype: 'grid',
24673
                id: gridName,
24674
                name: gridName,
24675
                tablename: me.tableName,
24676
                minHeight: me.minHeight,
24677
                maxHeight: me.maxHeight,
24678
                addFlag: true,
24679
                deleteFlag: true,
24680
                store: Ext.create('Ext.data.Store', {
24681
                    storeId: storeID,
24682
                    fields: fieldStore,
24683
                    //groupField: 'QuestionGroup',
24684
                    grouper: {
24685
                        sortProperty: 'SeqQuest',
24686
                        groupFn: function (record) {
24687
                            return record.get('QuestionGroup');
24688
                        }
24689
                    },
24690
                    proxy: {
24691
                        method: 'POST',
24692
                        type: 'ajax',
24693
                        url: '',
24694
                        reader: {
24695
                            type: 'json',
24696
                            root: 'data'
24697
                        }
24698
                    }
24699
                }),
24700
                dockedItems: [{
24701
                    xtype: 'toolbar',
24702
                    items: [
24703
                        {
24704
                            text: 'Add',
24705
                            hidden: hide_,
24706
                            name: tableName + 'Add',
24707
                            iconCls: 'fa-plus-circle',
24708
                            style: 'font-family: FontAwesome',
24709
                            handler: function () {
24710
                                var grid = Ext.getCmp(gridName);
24711
                                if (grid.addFlag === true) {
24712
                                    var store = Ext.StoreMgr.lookup(storeID)
24713
                                    idx = store.getCount();
24714
                                    var action = getParam('action');
24715
                                    var data = '';
24716
                                    var Sequence = 0;
24717
                                    if (idx == 0) {
24718
                                        Sequence = 1;
24719
                                    } else {
24720
                                        Sequence = 1 + idx;
24721
                                    }
24722
                                    var seq = 'Sequence';
24723
                                    var SequenceValue = Sequence;
24724
                                    eval(addData);
24725
                                    var grdParent = Ext.ComponentQuery.query('[name=grid' + me.tableNameP + ']')[0];
24726
                                    var dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
24727
                                    if (dtParent == undefined) {
24728
                                        grdParent.getView().getSelectionModel().select(0);
24729
                                        dtParent = grdParent.getView().getSelectionModel().getSelection()[0];
24730
                                    }
24731
                                    data[seq] = SequenceValue;
24732
                                    data[me.tableNameFKey] = dtParent.data[me.tableNamePKey];
24733
                                    data[me.tableNameKey] = SequenceValue.toString();
24734
                                    store.insert(idx, data);
24735
                                    grid.getView().getSelectionModel().select(idx);
24736
                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24737
                                    frmForm.reset();
24738
                                    frmForm.getForm().setValues(data);
24739
                                    //frmDisplay.setHidden(true);
24740
                                    frmForm.setHidden(false);
24741
                                }
24742
                            }
24743
                        },
24744
                        {
24745
                            text: 'Delete',
24746
                            hidden: hide_,
24747
                            name: tableName + 'DeleteText',
24748
                            iconCls: 'fa-trash-o',
24749
                            style: 'font-family: FontAwesome',
24750
                            handler: function () {
24751
                                var grid = Ext.getCmp(gridName);
24752
                                if (grid.deleteFlag === true) {
24753
                                    //var me = this,
24754
                                    store = Ext.StoreMgr.lookup(storeID)
24755
                                    var grid = Ext.getCmp(gridName);
24756
                                    Ext.MessageBox.show({
24757
                                        title: 'Remove tab',
24758
                                        msg: "This will remove. Do you want to continue?",
24759
                                        buttons: Ext.MessageBox.YESNO,
24760
                                        fn: function (choice) {
24761
                                            console.log(choice);
24762
                                            if (choice === 'yes') {
24763
                                                var selection = grid.getView().getSelectionModel().getSelection()[0];
24764
                                                if (selection) {
24765
                                                    store.remove(selection);
24766
                                                    var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24767
                                                    frmForm.reset();
24768
                                                    //frmDisplay.setHidden(true);
24769
                                                    frmForm.setHidden(true);
24770
                                                }
24771
                                            }
24772
                                        }
24773
                                    });
24774
                                }
24775
                            }
24776
                        },
24777
                        {
24778
                            text: 'Edit',
24779
                            hidden: hide_,
24780
                            name: tableName + 'EditText',
24781
                            bizprocid: me.bizprocid,
24782
                            taskid: me.taskid,
24783
                            TableName: tableName,
24784
                            iconCls: 'fa-edit',
24785
                            style: 'font-family: FontAwesome',
24786
                            handler: function () {
24787
                                ////var frmDisplay = Ext.ComponentQuery.query('[name=display' + me.name + ']')[0];
24788
                                //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24789
                                //var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24790
                                //var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24791
                                //if (frmForm == undefined) {
24792
                                //    frmForm = Ext.create('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24793
                                //        bizprocid: this.bizprocid,
24794
                                //        taskid: this.taskid,
24795
                                //        name: 'form' + this.TableName,
24796
                                //        tableName: this.TableName,
24797
                                //    });
24798
                                //}
24799
                                ////frmForm.reset();
24800
                                ////frmForm.down('form').getForm().loadRecord(dtrec.data);
24801
                                //frmForm.show();
24802

    
24803
                                var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.name + ']')[0];
24804
                                var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
24805
                                var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24806
                                if (dtrec) {
24807
                                    //frmDisplay.reset();
24808
                                    frmForm.reset();
24809
                                    frmForm.getForm().setValues(dtrec.data);
24810
                                    //frmDisplay.setHidden(true);
24811
                                    frmForm.setHidden(false);
24812
                                    //grdPanel.setHidden(true);
24813
                                    action = "1";
24814
                                }
24815
                            }
24816
                        }
24817
                    ]
24818
                }
24819
                ],
24820
                columns: cols,
24821
                //selType: checkSelection,
24822
                //plugins: {
24823
                //    ptype: 'actionColumnRowEditing', //rowediting
24824
                //    pluginId: 'rowEditing',
24825
                //    hiddenColumnsOnEdit: ['startEditActionColumn'],
24826
                //    clicksToEdit: 2,
24827
                //    saveButtonIconCls: 'x-fa fa-floppy-o',
24828
                //    listeners: {}
24829
                //},
24830
                listeners: {
24831
                    //'beforeedit': function (editor) {
24832
                    //    editor.getEditor().floatingButtons.items.items[0].hide();
24833
                    //    editor.getEditor().floatingButtons.items.items[1].hide();
24834
                    //}
24835
                    'itemdblclick': function (this_, record, item, index, e, eOpts) {
24836
                        //var me = this;
24837
                        var frmForm = Ext.ComponentQuery.query('[name=form' + me.name + ']')[0];
24838
                        //var grdPanel = Ext.ComponentQuery.query('[name=grid' + me.tablename + ']')[0];
24839
                        var dtrec = record;
24840
                        if (dtrec) {
24841
                            //frmDisplay.reset();
24842
                            //frmForm.reset();
24843
                            frmForm.getForm().setValues(dtrec.data);
24844
                            //grdPanel.setHeight(0);
24845
                            //frmDisplay.setHidden(true);
24846
                            frmForm.setHidden(false);
24847
                            //grdPanel.setHidden(true);
24848
                            action = "1";
24849
                        }
24850
                    }
24851
                },
24852
                features: features,
24853
                viewConfig: {
24854
                    listeners: {
24855
                        refresh: function (dataview) {
24856
                            Ext.each(dataview.panel.columns, function (column) {
24857
                                //column.autoSize();
24858
                            })
24859
                        }
24860
                    }
24861
                }
24862
            }
24863
            ]
24864
        });
24865
        me.callParent(arguments);
24866
    },
24867
    listeners: {
24868
        boxready: function (dataview) {
24869
            var grd = Ext.ComponentQuery.query('[name=grid' + this.name + ']')[0];
24870
            grd.reconfigure(); //YN 20211217 - Solusi Layout rapih
24871
        }
24872
    }
24873
});
24874

    
24875
/*Form ESS Generator YN 20211216*/
24876
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGrid', {
24877
    extend: 'Ext.form.Panel',
24878
    alias: ['widget.MinovaWorkflowFormGrid', 'widget.minovaworkflowformgrid', 'widget.workflowformgrid'],
24879
    controller: 'workflowformgrid',
24880
    formname: this.name,
24881
    bizprocid: undefined,
24882
    bizflowid: undefined,
24883
    taskid: undefined,
24884
    tableName: undefined,
24885
    tableNameT: undefined,
24886
    titleform: undefined,
24887
    labelWidth: 150,
24888
    //resizable: true,
24889
    border: true,
24890
    autoScroll: true,
24891
    minHeight: 20,
24892
    layout: {
24893
        type: 'hbox'
24894
    },
24895
    listeners: {
24896
        render: function () {
24897
            if (this.titleform != undefined) {
24898
                this.setTitle(this.titleform);
24899
            }
24900
        },
24901
    },
24902
    buttonAlign: 'left',
24903
    defaults: {
24904
        layout: 'anchor',
24905
        xtype: 'container',
24906
        flex: 1,
24907
        margin: '10px',
24908
        //defaultType: 'textfield',
24909
        //anchor: '100%',
24910
        ////style: 'width: 50%',
24911
    },
24912
    initComponent: function () {
24913
        var col1 = [];
24914
        var col2 = [];
24915
        var me = this;
24916
        var LangID = localStorage.LangId;
24917
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
24918
        var formname_ = me.name;
24919
        var nameTable_ = me.tableName;
24920
        //var labelWidth = 150;
24921
        Ext.Ajax.request({
24922
            async: false,
24923
            method: 'POST',
24924
            url: '/UserControl/GetStore',
24925
            params: {
24926
                tableName: 'PDSWFSTRUCTUREFIELD',
24927
                param: parameter
24928
            },
24929
            success: function (response) {
24930
                var results = Ext.decode(response.responseText);
24931
                hasil = results.data;
24932
            }
24933
        });
24934
        if (hasil.length > 0) {
24935
            Ext.each(hasil, function (rec) {
24936
                var formfield = undefined;
24937
                var readonly = false;
24938
                var ishidden = false;
24939
                var allowblank = true;
24940
                var startDt = null;
24941
                var endDt = null;
24942
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
24943
                    startDt = 'StartDate';
24944
                    endDt = 'EndDate';
24945
                }
24946
                if (rec.IsReadOnly == '1') {
24947
                    readonly = true;
24948
                }
24949
                if (rec.IsRequired == '1') {
24950
                    allowblank = false;
24951
                }
24952
                if (rec.IsVisible == '0') {
24953
                    ishidden = true;
24954
                }
24955
                if (rec.SearchType == "") //textfield
24956
                {
24957
                    switch (rec.FormatRef) {
24958
                        case "date":
24959
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
24960
                                formfield = new Ext.form.DateField({
24961
                                    allowBlank: allowblank,
24962
                                    fieldLabel: rec.ScreenCaption,
24963
                                    readOnly: readonly,
24964
                                    msgTarget: 'side',
24965
                                    //labelCls: 'label-minova',
24966
                                    labelWidth: me.labelWidth,
24967
                                    hidden: ishidden,
24968
                                    name: rec.FieldName,
24969
                                    submitFormat: 'Ymd',
24970
                                    value: rec.DefaultValue,
24971
                                    anchor: '100%',
24972
                                    vtype: 'daterange',
24973
                                    start: startDt,
24974
                                    end: endDt,
24975
                                    formname: formname_,
24976
                                    nameTable: nameTable_,
24977
                                    hideMode: 'visibility',
24978
                                    listeners: {
24979
                                        change: function (val) {
24980
                                            var _label = val.name;
24981
                                            var _form = val.formname;
24982
                                            var _Value = val.getValue();
24983
                                            var target = rec.TriggerCombo;
24984
                                            var custumFunc = rec.SelectFunction;
24985
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
24986
                                                Ext.Ajax.request({
24987
                                                    async: false,
24988
                                                    method: 'POST',
24989
                                                    url: '/UserControl/GetStore',
24990
                                                    params: {
24991
                                                        tableName: 'PCMFUNC',
24992
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
24993
                                                    },
24994
                                                    success: function (response) {
24995
                                                        var results = Ext.decode(response.responseText);
24996
                                                        data_ = results.data[0];
24997
                                                        if (data_ != undefined) {
24998
                                                            custumFunc = data_.FunctionCode;
24999
                                                        }
25000
                                                    }
25001
                                                });
25002
                                            }
25003
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25004
                                            if (frm) {
25005
                                                if (custumFunc) {
25006
                                                    eval(custumFunc)
25007
                                                }
25008
                                            }
25009
                                        }
25010
                                    }
25011
                                });
25012
                            } else {
25013
                                formfield = new Ext.form.DateField({
25014
                                    allowBlank: allowblank,
25015
                                    fieldLabel: rec.ScreenCaption,
25016
                                    readOnly: readonly,
25017
                                    msgTarget: 'side',
25018
                                    //labelCls: 'label-minova',
25019
                                    labelWidth: me.labelWidth,
25020
                                    hidden: ishidden,
25021
                                    name: rec.FieldName,
25022
                                    submitFormat: 'Ymd',
25023
                                    value: rec.DefaultValue,
25024
                                    anchor: '100%',
25025
                                    formname: formname_,
25026
                                    nameTable: nameTable_,
25027
                                    hideMode: 'visibility',
25028
                                    listeners: {
25029
                                        change: function (val) {
25030
                                            var _label = val.name;
25031
                                            var _form = val.formname;
25032
                                            var _Value = val.getValue();
25033
                                            var target = rec.TriggerCombo;
25034
                                            var custumFunc = rec.SelectFunction;
25035
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25036
                                                Ext.Ajax.request({
25037
                                                    async: false,
25038
                                                    method: 'POST',
25039
                                                    url: '/UserControl/GetStore',
25040
                                                    params: {
25041
                                                        tableName: 'PCMFUNC',
25042
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25043
                                                    },
25044
                                                    success: function (response) {
25045
                                                        var results = Ext.decode(response.responseText);
25046
                                                        data_ = results.data[0];
25047
                                                        if (data_ != undefined) {
25048
                                                            custumFunc = data_.FunctionCode;
25049
                                                        }
25050
                                                    }
25051
                                                });
25052
                                            }
25053
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25054
                                            if (frm) {
25055
                                                if (custumFunc) {
25056
                                                    eval(custumFunc)
25057
                                                }
25058
                                            }
25059
                                        }
25060
                                    }
25061
                                });
25062
                            }
25063
                            break;
25064
                        case "time":
25065
                            formfield = new Ext.form.TimeField({
25066
                                allowBlank: allowblank,
25067
                                fieldLabel: rec.ScreenCaption,
25068
                                readOnly: readonly,
25069
                                //labelCls: 'label-minova',
25070
                                labelWidth: me.labelWidth,
25071
                                hidden: ishidden,
25072
                                name: rec.FieldName,
25073
                                msgTarget: 'side',
25074
                                format: 'Hi',
25075
                                submitFormat: 'Hi',
25076
                                increment: 5,
25077
                                value: rec.DefaultValue,
25078
                                anchor: '100%',
25079
                                formname: formname_,
25080
                                nameTable: nameTable_,
25081
                                listeners: {
25082
                                    change: function (val) {
25083
                                        var _label = val.name;
25084
                                        var _form = val.formname;
25085
                                        var _Value = val.getValue();
25086
                                        var target = rec.TriggerCombo;
25087
                                        var custumFunc = rec.SelectFunction;
25088
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25089
                                            Ext.Ajax.request({
25090
                                                async: false,
25091
                                                method: 'POST',
25092
                                                url: '/UserControl/GetStore',
25093
                                                params: {
25094
                                                    tableName: 'PCMFUNC',
25095
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
25096
                                                },
25097
                                                success: function (response) {
25098
                                                    var results = Ext.decode(response.responseText);
25099
                                                    data_ = results.data[0];
25100
                                                    if (data_ != undefined) {
25101
                                                        custumFunc = data_.FunctionCode;
25102
                                                    }
25103
                                                }
25104
                                            });
25105
                                        }
25106
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25107
                                        if (frm) {
25108
                                            if (custumFunc) {
25109
                                                eval(custumFunc)
25110
                                            }
25111
                                        }
25112
                                    }
25113
                                }
25114
                            });
25115
                            break;
25116
                        case "amount":
25117
                            formfield = new Ext.form.TextField({
25118
                                allowBlank: allowblank,
25119
                                fieldLabel: rec.ScreenCaption,
25120
                                readOnly: readonly,
25121
                                //labelCls: 'label-minova',
25122
                                labelWidth: me.labelWidth,
25123
                                hidden: ishidden,
25124
                                name: rec.FieldName,
25125
                                msgTarget: 'side',
25126
                                value: rec.DefaultValue,
25127
                                maxLength: rec.Length,
25128
                                anchor: '100%',
25129
                                formname: formname_,
25130
                                nameTable: nameTable_,
25131
                                fieldStyle: 'text-align:right;',
25132
                                listeners: {
25133
                                    change: function (val) {
25134
                                        var _label = val.name;
25135
                                        var _form = val.formname;
25136
                                        var _Value = val.getValue();
25137
                                        var target = rec.TriggerCombo;
25138
                                        var custumFunc = rec.SelectFunction;
25139
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25140
                                            Ext.Ajax.request({
25141
                                                async: false,
25142
                                                method: 'POST',
25143
                                                url: '/UserControl/GetStore',
25144
                                                params: {
25145
                                                    tableName: 'PCMFUNC',
25146
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25147
                                                },
25148
                                                success: function (response) {
25149
                                                    var results = Ext.decode(response.responseText);
25150
                                                    data_ = results.data[0];
25151
                                                    if (data_ != undefined) {
25152
                                                        custumFunc = data_.FunctionCode;
25153
                                                    }
25154
                                                }
25155
                                            });
25156
                                        }
25157
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25158
                                        if (frm) {
25159
                                            if (custumFunc) {
25160
                                                eval(custumFunc)
25161
                                            }
25162
                                        }
25163
                                    }
25164
                                }
25165
                            });
25166
                            break;
25167
                        case "file":
25168
                            formfield = new MinovaUtil.MinovaES.UploadFile({
25169
                                allowBlank: allowblank,
25170
                                fieldLabel: rec.ScreenCaption,
25171
                                readOnly: readonly,
25172
                                readOnlyCls: 'minova-readonly',
25173
                                hidden: ishidden,
25174
                                //labelCls: 'label-minova',
25175
                                name: rec.FieldName,
25176
                                msgTarget: 'side',
25177
                                fieldname: rec.FieldName,
25178
                                IsPrimaryKey: rec.IsPrimaryKey,
25179
                                tableName: rec.TableRef,
25180
                                triggerCls: 'x-form-search-trigger',
25181
                                formtarget: me.formname,
25182
                                anchor: '100%',
25183
                                formname: formname_,
25184
                                nameTable: nameTable_,
25185
                                listeners: {
25186
                                    change: function (val) {
25187
                                        var _label = val.name;
25188
                                        var _form = val.formname;
25189
                                        var _Value = val.getValue();
25190
                                        var target = rec.TriggerCombo;
25191
                                        var custumFunc = rec.SelectFunction;
25192
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25193
                                            Ext.Ajax.request({
25194
                                                async: false,
25195
                                                method: 'POST',
25196
                                                url: '/UserControl/GetStore',
25197
                                                params: {
25198
                                                    tableName: 'PCMFUNC',
25199
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25200
                                                },
25201
                                                success: function (response) {
25202
                                                    var results = Ext.decode(response.responseText);
25203
                                                    data_ = results.data[0];
25204
                                                    if (data_ != undefined) {
25205
                                                        custumFunc = data_.FunctionCode;
25206
                                                    }
25207
                                                }
25208
                                            });
25209
                                        }
25210
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25211
                                        if (frm) {
25212
                                            if (target) {
25213
                                                var f = frm.getForm().findField(target)
25214
                                                _store = f.getStore();
25215
                                                var _tbl = _store.proxy.extraParams.tableName;
25216
                                                var oldParam = _store.proxy.extraParams.param;
25217
                                                _store.proxy.extraParams = {
25218
                                                    tableName: _tbl,
25219
                                                    param: _label + '[=]' + _Value
25220
                                                };
25221
                                                _store.load();
25222
                                            }
25223
                                            if (custumFunc) {
25224
                                                eval(custumFunc)
25225
                                            }
25226
                                        }
25227
                                    }
25228
                                }
25229
                            });
25230
                            break;
25231
                        default:
25232
                            if (rec.DataType == 0) {
25233
                                if (rec.Length > 250) {
25234
                                    formfield = new Ext.form.TextArea({
25235
                                        allowBlank: allowblank,
25236
                                        fieldLabel: rec.ScreenCaption,
25237
                                        readOnly: readonly,
25238
                                        ////labelCls: 'label-minova',
25239
                                        labelWidth: me.labelWidth,
25240
                                        hidden: ishidden,
25241
                                        name: rec.FieldName,
25242
                                        msgTarget: 'side',
25243
                                        value: rec.DefaultValue,
25244
                                        maxLength: rec.Length,
25245
                                        anchor: '100%',
25246
                                        grow: true,
25247
                                        formname: formname_,
25248
                                        nameTable: nameTable_,
25249
                                        listeners: {
25250
                                            change: function (val) {
25251
                                                var _label = val.name;
25252
                                                var _form = val.formname;
25253
                                                var _Value = val.getValue();
25254
                                                var target = rec.TriggerCombo;
25255
                                                var custumFunc = rec.SelectFunction;
25256
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25257
                                                    Ext.Ajax.request({
25258
                                                        async: false,
25259
                                                        method: 'POST',
25260
                                                        url: '/UserControl/GetStore',
25261
                                                        params: {
25262
                                                            tableName: 'PCMFUNC',
25263
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25264
                                                        },
25265
                                                        success: function (response) {
25266
                                                            var results = Ext.decode(response.responseText);
25267
                                                            data_ = results.data[0];
25268
                                                            if (data_ != undefined) {
25269
                                                                custumFunc = data_.FunctionCode;
25270
                                                            }
25271
                                                        }
25272
                                                    });
25273
                                                }
25274
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25275
                                                if (frm) {
25276
                                                    if (custumFunc) {
25277
                                                        eval(custumFunc)
25278
                                                    }
25279
                                                }
25280
                                            }
25281
                                        }
25282
                                    });
25283
                                } else {
25284
                                    if (rec.FixedValue != '') {
25285
                                        var storeData = [];
25286
                                        var str = rec.FixedValue;
25287
                                        var hasil = str.split('||');
25288
                                        hasil.forEach(function (h) {
25289
                                            store_ = h.split('=')
25290
                                            storeData.push({
25291
                                                code: store_[0],
25292
                                                desc: store_[1],
25293
                                            });
25294
                                        });
25295
                                        formfield = new Ext.form.ComboBox({
25296
                                            allowBlank: allowblank,
25297
                                            fieldLabel: rec.ScreenCaption,
25298
                                            forceSelection: true,
25299
                                            readOnly: readonly,
25300
                                            //labelCls: 'label-minova',
25301
                                            labelWidth: me.labelWidth,
25302
                                            hidden: ishidden,
25303
                                            name: rec.FieldName,
25304
                                            msgTarget: 'side',
25305
                                            value: rec.DefaultValue,
25306
                                            anchor: '100%',
25307
                                            formname: formname_,
25308
                                            nameTable: nameTable_,
25309
                                            formtarget: me.formname,
25310
                                            store: Ext.create('Ext.data.Store', {
25311
                                                storeId: 'store' + rec.FieldName,
25312
                                                autoLoad: true,
25313
                                                data: storeData
25314

    
25315
                                            }),
25316
                                            listeners: {
25317
                                                change: function (val) {
25318
                                                    var _label = val.name;
25319
                                                    var _form = val.formtarget;
25320
                                                    var _Value = val.getValue();
25321
                                                    var target = rec.TriggerCombo;
25322
                                                    var custumFunc = rec.SelectFunction;
25323
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25324
                                                    if (frm) {
25325
                                                        if (target) {
25326
                                                            var f = frm.getForm().findField(target)
25327
                                                            _store = f.getStore();
25328
                                                            var _tbl = _store.proxy.extraParams.tableName;
25329
                                                            var oldParam = _store.proxy.extraParams.param;
25330
                                                            _store.proxy.extraParams = {
25331
                                                                tableName: _tbl,
25332
                                                                param: _label + '[=]' + _Value
25333
                                                            };
25334
                                                            _store.load();
25335
                                                        }
25336
                                                        if (custumFunc) {
25337
                                                            eval(custumFunc)
25338
                                                        }
25339
                                                    }
25340
                                                }
25341
                                            },
25342
                                            queryMode: 'local',
25343
                                            valueField: 'code',
25344
                                            displayField: 'desc',
25345
                                        });
25346
                                    } else {
25347
                                        formfield = new Ext.form.TextField({
25348
                                            allowBlank: allowblank,
25349
                                            fieldLabel: rec.ScreenCaption,
25350
                                            readOnly: readonly,
25351
                                            //labelCls: 'label-minova',
25352
                                            labelWidth: me.labelWidth,
25353
                                            hidden: ishidden,
25354
                                            name: rec.FieldName,
25355
                                            msgTarget: 'side',
25356
                                            value: rec.DefaultValue,
25357
                                            maxLength: rec.Length,
25358
                                            anchor: '100%',
25359
                                            formname: formname_,
25360
                                            nameTable: nameTable_,
25361
                                            listeners: {
25362
                                                change: function (val) {
25363
                                                    var _label = val.name;
25364
                                                    var _form = val.formname;
25365
                                                    var _Value = val.getValue();
25366
                                                    var target = rec.TriggerCombo;
25367
                                                    var custumFunc = rec.SelectFunction;
25368
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25369
                                                        Ext.Ajax.request({
25370
                                                            async: false,
25371
                                                            method: 'POST',
25372
                                                            url: '/UserControl/GetStore',
25373
                                                            params: {
25374
                                                                tableName: 'PCMFUNC',
25375
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25376
                                                            },
25377
                                                            success: function (response) {
25378
                                                                var results = Ext.decode(response.responseText);
25379
                                                                data_ = results.data[0];
25380
                                                                if (data_ != undefined) {
25381
                                                                    custumFunc = data_.FunctionCode;
25382
                                                                }
25383
                                                            }
25384
                                                        });
25385
                                                    }
25386
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25387
                                                    if (frm) {
25388
                                                        if (custumFunc) {
25389
                                                            eval(custumFunc)
25390
                                                        }
25391
                                                    }
25392
                                                }
25393
                                            }
25394
                                        });
25395
                                    }
25396
                                }
25397
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
25398
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
25399
                                    allowBlank: allowblank,
25400
                                    fieldLabel: rec.ScreenCaption,
25401
                                    readOnly: readonly,
25402
                                    //labelCls: 'label-minova',
25403
                                    labelWidth: me.labelWidth,
25404
                                    msgTarget: 'side',
25405
                                    hidden: ishidden,
25406
                                    name: rec.FieldName,
25407
                                    value: rec.DefaultValue,
25408
                                    maxLength: rec.Length,
25409
                                    anchor: '100%',
25410
                                    formname: formname_,
25411
                                    nameTable: nameTable_,
25412
                                    fieldStyle: 'text-align:right;',
25413
                                    listeners: {
25414
                                        change: function (val) {
25415
                                            var _label = val.name;
25416
                                            var _form = val.formname;
25417
                                            var _Value = val.getValue();
25418
                                            var target = rec.TriggerCombo;
25419
                                            var custumFunc = rec.SelectFunction;
25420
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25421
                                                Ext.Ajax.request({
25422
                                                    async: false,
25423
                                                    method: 'POST',
25424
                                                    url: '/UserControl/GetStore',
25425
                                                    params: {
25426
                                                        tableName: 'PCMFUNC',
25427
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25428
                                                    },
25429
                                                    success: function (response) {
25430
                                                        var results = Ext.decode(response.responseText);
25431
                                                        data_ = results.data[0];
25432
                                                        if (data_ != undefined) {
25433
                                                            custumFunc = data_.FunctionCode;
25434
                                                        }
25435
                                                    }
25436
                                                });
25437
                                            }
25438
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25439
                                            if (frm) {
25440
                                                if (target) {
25441
                                                    var f = frm.getForm().findField(target)
25442
                                                    _store = f.getStore();
25443
                                                    var _tbl = _store.proxy.extraParams.tableName;
25444
                                                    var oldParam = _store.proxy.extraParams.param;
25445
                                                    _store.proxy.extraParams = {
25446
                                                        tableName: _tbl,
25447
                                                        param: _label + '[=]' + _Value
25448
                                                    };
25449
                                                    _store.load();
25450
                                                }
25451
                                                if (custumFunc) {
25452
                                                    eval(custumFunc)
25453
                                                }
25454
                                            }
25455
                                        }
25456
                                    }
25457
                                });
25458
                            } else if (rec.DataType == 3) {
25459
                                formfield = new Ext.form.TextField({
25460
                                    allowBlank: allowblank,
25461
                                    fieldLabel: rec.ScreenCaption,
25462
                                    readOnly: readonly,
25463
                                    //labelCls: 'label-minova',
25464
                                    labelWidth: me.labelWidth,
25465
                                    msgTarget: 'side',
25466
                                    hidden: ishidden,
25467
                                    name: rec.FieldName,
25468
                                    value: rec.DefaultValue,
25469
                                    maxLength: rec.Length,
25470
                                    precision: rec.Prec,
25471
                                    anchor: '100%',
25472
                                    formname: formname_,
25473
                                    nameTable: nameTable_,
25474
                                    fieldStyle: 'text-align:right;',
25475
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
25476
                                    listeners: {
25477
                                        change: function (val) {
25478
                                            var _label = val.name;
25479
                                            var _form = val.formname;
25480
                                            var _Value = val.getValue();
25481
                                            var target = rec.TriggerCombo;
25482
                                            var custumFunc = rec.SelectFunction;
25483
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25484
                                                Ext.Ajax.request({
25485
                                                    async: false,
25486
                                                    method: 'POST',
25487
                                                    url: '/UserControl/GetStore',
25488
                                                    params: {
25489
                                                        tableName: 'PCMFUNC',
25490
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25491
                                                    },
25492
                                                    success: function (response) {
25493
                                                        var results = Ext.decode(response.responseText);
25494
                                                        data_ = results.data[0];
25495
                                                        if (data_ != undefined) {
25496
                                                            custumFunc = data_.FunctionCode;
25497
                                                        }
25498
                                                    }
25499
                                                });
25500
                                            }
25501
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25502
                                            if (frm) {
25503
                                                if (target) {
25504
                                                    var f = frm.getForm().findField(target)
25505
                                                    _store = f.getStore();
25506
                                                    var _tbl = _store.proxy.extraParams.tableName;
25507
                                                    var oldParam = _store.proxy.extraParams.param;
25508
                                                    _store.proxy.extraParams = {
25509
                                                        tableName: _tbl,
25510
                                                        param: _label + '[=]' + _Value
25511
                                                    };
25512
                                                    _store.load();
25513
                                                }
25514
                                                if (custumFunc) {
25515
                                                    eval(custumFunc)
25516
                                                }
25517
                                            }
25518
                                        }
25519
                                    }
25520
                                });
25521
                            }
25522
                    }
25523
                } else if (rec.SearchType != "") {
25524
                    if (rec.SearchType == "0") //combobox
25525
                    {
25526
                        valueField = null;
25527
                        displayValue = null;
25528
                        if (rec.TableRef != "") {
25529
                            Ext.Ajax.request({
25530
                                async: false,
25531
                                method: 'POST',
25532
                                url: '/UserControl/GetStore',
25533
                                params: {
25534
                                    tableName: 'SDATATABLEFIELD',
25535
                                    param: 'TableName[equal]' + rec.TableRef
25536
                                },
25537
                                success: function (response) {
25538
                                    var results = Ext.decode(response.responseText);
25539
                                    data_ = results.data;
25540
                                    if (data_ != undefined) {
25541
                                        valueField_ = $.grep(data_, function (r) {
25542
                                            return r.ValueField == '1'
25543
                                        });
25544
                                        if (valueField_.length > 0) {
25545
                                            valueField = valueField_[0].FieldName
25546
                                        }
25547
                                        displayValue_ = $.grep(data_, function (r) {
25548
                                            return r.DisplayValue == '1'
25549
                                        });
25550
                                        if (displayValue_.length > 0) {
25551
                                            displayValue = displayValue_[0].FieldName
25552
                                        }
25553
                                    }
25554
                                }
25555
                            });
25556
                        }
25557
                        formfield = new Ext.form.ComboBox({
25558
                            allowBlank: allowblank,
25559
                            fieldLabel: rec.ScreenCaption,
25560
                            forceSelection: true,
25561
                            anyMatch: true,
25562
                            readOnly: readonly,
25563
                            //labelCls: 'label-minova',
25564
                            labelWidth: me.labelWidth,
25565
                            hidden: ishidden,
25566
                            msgTarget: 'side',
25567
                            name: rec.FieldName,
25568
                            formname: formname_,
25569
                            nameTable: nameTable_,
25570
                            value: rec.DefaultValue,
25571
                            anchor: '100%', //width: '95%',
25572
                            //store: Ext.StoreMgr.lookup('store' + rec.FieldName) ? Ext.StoreMgr.lookup('store' + rec.FieldName):
25573
                            store: Ext.create('Ext.data.Store', {
25574
                                storeId: 'store' + rec.FieldName,
25575
                                autoLoad: false,
25576
                                proxy: {
25577
                                    method: 'POST',
25578
                                    type: 'ajax',
25579
                                    url: '/UserControl/GetStore',
25580
                                    extraParams: {
25581
                                        tableName: rec.TableRef,
25582
                                        param: rec.ParamCombo
25583
                                    },
25584
                                    reader: {
25585
                                        type: 'json',
25586
                                        root: 'data',
25587
                                        totalProperty: 'data[0].TotalCount'
25588
                                    }
25589
                                }
25590
                            }),
25591
                            formtarget: formname_,
25592
                            listeners: {
25593
                                afterrender: function (f) {
25594
                                    var store_ = f.getStore();
25595
                                    store_.load();
25596
                                },
25597
                                change: function (val) {
25598
                                    var _label = val.name;
25599
                                    var _form = val.formtarget;
25600
                                    var _Value = val.getValue();
25601
                                    var target = rec.TriggerCombo;
25602
                                    var custumFunc = rec.SelectFunction;
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
                            },
25623
                            queryMode: 'local',
25624
                            displayField: displayValue,
25625
                            valueField: valueField,
25626
                        });
25627
                    } else if (rec.SearchType == '2') //Lookup
25628
                    {
25629
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
25630
                            allowBlank: allowblank,
25631
                            fieldLabel: rec.ScreenCaption,
25632
                            readOnly: readonly,
25633
                            IsPrimaryKey: rec.IsPrimaryKey,
25634
                            msgTarget: 'side',
25635
                            //labelCls: 'label-minova',
25636
                            labelWidth: me.labelWidth,
25637
                            hidden: ishidden,
25638
                            name: rec.FieldName,
25639
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
25640
                            triggerCls: 'x-form-search-trigger',
25641
                            vtype: 'alphanum', // disable space
25642
                            formtarget: me.formname, // nama form  yang akan di set value-nya
25643
                            anchor: '100%',
25644
                            formname: formname_,
25645
                            nameTable: nameTable_,
25646
                            LookupFunction: rec.LookupFunction,
25647
                            SearchFunction: rec.SearchFunction,
25648
                            listeners: {
25649
                                change: function (val) {
25650
                                    var _label = val.name;
25651
                                    var _form = val.formname;
25652
                                    var _Value = val.getValue();
25653
                                    var target = rec.TriggerCombo;
25654
                                    var custumFunc = rec.SelectFunction;
25655
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25656
                                        Ext.Ajax.request({
25657
                                            async: false,
25658
                                            method: 'POST',
25659
                                            url: '/UserControl/GetStore',
25660
                                            params: {
25661
                                                tableName: 'PCMFUNC',
25662
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25663
                                            },
25664
                                            success: function (response) {
25665
                                                var results = Ext.decode(response.responseText);
25666
                                                data_ = results.data[0];
25667
                                                if (data_ != undefined) {
25668
                                                    custumFunc = data_.FunctionCode;
25669
                                                }
25670
                                            }
25671
                                        });
25672
                                    }
25673
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25674
                                    if (frm) {
25675

    
25676
                                        if (target) {
25677
                                            var f = frm.getForm().findField(target)
25678
                                            _store = f.getStore();
25679
                                            var _tbl = _store.proxy.extraParams.tableName;
25680
                                            var oldParam = _store.proxy.extraParams.param;
25681
                                            _store.proxy.extraParams = {
25682
                                                tableName: _tbl,
25683
                                                param: _label + '[=]' + _Value
25684
                                            };
25685
                                            _store.load();
25686
                                        }
25687

    
25688
                                        if (custumFunc) {
25689
                                            eval(custumFunc)
25690
                                        }
25691

    
25692
                                    }
25693

    
25694
                                },
25695

    
25696
                            },
25697
                        });
25698
                    } else if (rec.SearchType == '3') //lookup tree
25699
                    {
25700
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
25701
                            allowBlank: allowblank,
25702
                            fieldLabel: rec.ScreenCaption,
25703
                            readOnly: readonly,
25704
                            IsPrimaryKey: rec.IsPrimaryKey,
25705
                            //labelCls: 'label-minova',
25706
                            labelWidth: me.labelWidth,
25707
                            hidden: ishidden,
25708
                            name: rec.FieldName,
25709
                            msgTarget: 'side',
25710
                            triggerCls: 'x-form-search-trigger',
25711
                            treeSructure: rec.SearchFunction, //'O-O-P',
25712
                            objClassValue: rec.ParamCombo, //'O',
25713
                            formname: formname_,
25714
                            targetField: rec.FieldName,
25715
                            nameTable: nameTable_,
25716
                            editable: false,
25717
                            anchor: '100%',
25718
                            listeners: {
25719
                                change3: function (val) {
25720
                                    var _label = val.name;
25721
                                    var _form = val.formname;
25722
                                    var _Value = val.getValue();
25723
                                    var target = rec.TriggerCombo;
25724
                                    var custumFunc = rec.SelectFunction;
25725
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25726
                                        Ext.Ajax.request({
25727
                                            async: false,
25728
                                            method: 'POST',
25729
                                            url: '/UserControl/GetStore',
25730
                                            params: {
25731
                                                tableName: 'PCMFUNC',
25732
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25733
                                            },
25734
                                            success: function (response) {
25735
                                                var results = Ext.decode(response.responseText);
25736
                                                data_ = results.data[0];
25737
                                                if (data_ != undefined) {
25738
                                                    custumFunc = data_.FunctionCode;
25739
                                                }
25740
                                            }
25741
                                        });
25742
                                    }
25743
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25744
                                    if (frm) {
25745

    
25746
                                        if (target) {
25747
                                            var f = frm.getForm().findField(target)
25748
                                            _store = f.getStore();
25749
                                            var _tbl = _store.proxy.extraParams.tableName;
25750
                                            var oldParam = _store.proxy.extraParams.param;
25751
                                            _store.proxy.extraParams = {
25752
                                                tableName: _tbl,
25753
                                                param: _label + '[=]' + _Value
25754
                                            };
25755
                                            _store.load();
25756
                                        }
25757
                                        if (custumFunc) {
25758
                                            eval(custumFunc)
25759
                                        }
25760
                                    }
25761
                                },
25762
                                blur: function (val) {
25763
                                    //if(val.value.split('-').length != 2){
25764
                                    var _label = val.name;
25765
                                    var _form = val.formname;
25766
                                    var _Value = val.getValue();
25767
                                    var target = rec.TriggerCombo;
25768
                                    var custumFunc = rec.SelectFunction;
25769
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25770
                                        Ext.Ajax.request({
25771
                                            async: false,
25772
                                            method: 'POST',
25773
                                            url: '/UserControl/GetStore',
25774
                                            params: {
25775
                                                tableName: 'PCMFUNC',
25776
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25777
                                            },
25778
                                            success: function (response) {
25779
                                                var results = Ext.decode(response.responseText);
25780
                                                data_ = results.data[0];
25781
                                                if (data_ != undefined) {
25782
                                                    custumFunc = data_.FunctionCode;
25783
                                                }
25784
                                            }
25785
                                        });
25786
                                    }
25787
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
25788
                                    if (frm) {
25789

    
25790
                                        if (target) {
25791
                                            var f = frm.getForm().findField(target)
25792
                                            _store = f.getStore();
25793
                                            var _tbl = _store.proxy.extraParams.tableName;
25794
                                            var oldParam = _store.proxy.extraParams.param;
25795
                                            _store.proxy.extraParams = {
25796
                                                tableName: _tbl,
25797
                                                param: _label + '[=]' + _Value
25798
                                            };
25799
                                            _store.load();
25800
                                        }
25801
                                        if (custumFunc) {
25802
                                            eval(custumFunc)
25803
                                        }
25804
                                    }
25805
                                    //}
25806
                                }
25807

    
25808
                            }
25809
                        });
25810
                    }
25811
                }
25812
                if (isDesk) {
25813
                    if (rec.ColumnNo == 1) {
25814
                        col1.push(formfield);
25815
                    } else {
25816
                        col2.push(formfield);
25817
                    }
25818
                } else {
25819
                    col1.push(formfield);
25820
                }
25821

    
25822
            });
25823
        }
25824
        Ext.applyIf(me, {
25825
            items:
25826
                [
25827
                    {
25828
                        //width: 450,
25829
                        //style: 'width: 50%',
25830
                        defaults: {
25831
                            layout: 'anchor',
25832
                            xtype: 'container',
25833
                            flex: 1,
25834
                            margin: '10px',
25835
                            //defaultType: 'textfield',
25836
                            //anchor: '100%',
25837
                            ////style: 'width: 50%',
25838
                        },
25839
                        items: col1,
25840
                        flex: 1,
25841
                    },
25842
                    {
25843
                        //width: 450,
25844
                        //style: 'width: 50%',
25845
                        defaults: {
25846
                            layout: 'anchor',
25847
                            xtype: 'container',
25848
                            flex: 1,
25849
                            margin: '10px',
25850
                            //defaultType: 'textfield',
25851
                            //anchor: '100%',
25852
                            ////style: 'width: 50%',
25853
                        },
25854
                        items: col2,
25855
                        flex: 1,
25856
                    }
25857
                ]
25858
        });
25859
        this.callParent();
25860
    },
25861
    listeners: {
25862
        boxready: function (dataview) {
25863
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
25864
        }
25865
    },
25866
    buttons: [{
25867
        text: 'Update',
25868
        handler: 'onSaveClick'
25869
    }, {
25870
        text: 'Cancel',
25871
        handler: 'onCancelClick'
25872
    }]
25873
});
25874

    
25875
/*Form ESS GeneratorT YN 20211216*/
25876
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridT', {
25877
    extend: 'Ext.form.Panel',
25878
    alias: ['widget.MinovaWorkflowFormGridT', 'widget.minovaworkflowformgridT', 'widget.workflowformgridT'],
25879
    controller: 'workflowformgrid',
25880
    formname: this.name,
25881
    bizprocid: undefined,
25882
    bizflowid: undefined,
25883
    taskid: undefined,
25884
    tableName: undefined,
25885
    tableNameT: undefined,
25886
    parentKey: undefined,
25887
    titleform: undefined,
25888
    //resizable: true,
25889
    border: true,
25890
    autoScroll: true,
25891
    minHeight: 20,
25892
    layout: {
25893
        type: 'hbox'
25894
    },
25895
    listeners: {
25896
        render: function () {
25897
            if (this.titleform != undefined) {
25898
                this.setTitle(this.titleform);
25899
            }
25900
        },
25901
    },
25902
    buttonAlign: 'left',
25903
    defaults: {
25904
        layout: 'anchor',
25905
        xtype: 'container',
25906
        flex: 1,
25907
        margin: '10px',
25908
        //defaultType: 'textfield',
25909
        //anchor: '100%',
25910
        ////style: 'width: 50%',
25911
    },
25912
    initComponent: function () {
25913
        var col1 = [];
25914
        var col2 = [];
25915
        var me = this;
25916
        var LangID = localStorage.LangId;
25917
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
25918
        var formname_ = me.name;
25919
        var nameTable_ = me.tableName;
25920
        var labelWidth = 150;
25921
        Ext.Ajax.request({
25922
            async: false,
25923
            method: 'POST',
25924
            url: '/UserControl/GetStore',
25925
            params: {
25926
                tableName: 'PDSWFSTRUCTUREFIELD',
25927
                param: parameter
25928
            },
25929
            success: function (response) {
25930
                var results = Ext.decode(response.responseText);
25931
                hasil = results.data;
25932
            }
25933
        });
25934
        if (hasil.length > 0) {
25935
            Ext.each(hasil, function (rec) {
25936
                var formfield = undefined;
25937
                var readonly = false;
25938
                var ishidden = false;
25939
                var allowblank = true;
25940
                var startDt = null;
25941
                var endDt = null;
25942
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25943
                    startDt = 'StartDate';
25944
                    endDt = 'EndDate';
25945
                }
25946
                if (rec.IsReadOnly == '1') {
25947
                    readonly = true;
25948
                }
25949
                if (rec.IsRequired == '1') {
25950
                    allowblank = false;
25951
                }
25952
                if (rec.IsVisible == '0') {
25953
                    ishidden = true;
25954
                }
25955
                if (rec.SearchType == "") //textfield
25956
                {
25957
                    switch (rec.FormatRef) {
25958
                        case "date":
25959
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
25960
                                formfield = new Ext.form.DateField({
25961
                                    allowBlank: allowblank,
25962
                                    fieldLabel: rec.ScreenCaption,
25963
                                    readOnly: readonly,
25964
                                    msgTarget: 'side',
25965
                                    //labelCls: 'label-minova',
25966
                                    labelWidth: labelWidth,
25967
                                    hidden: ishidden,
25968
                                    name: rec.FieldName,
25969
                                    submitFormat: 'Ymd',
25970
                                    value: rec.DefaultValue,
25971
                                    anchor: '100%',
25972
                                    vtype: 'daterange',
25973
                                    start: startDt,
25974
                                    end: endDt,
25975
                                    formname: formname_,
25976
                                    nameTable: nameTable_,
25977
                                    hideMode: 'visibility',
25978
                                    listeners: {
25979
                                        change: function (val) {
25980
                                            var _label = val.name;
25981
                                            var _form = val.formname;
25982
                                            var _Value = val.getValue();
25983
                                            var target = rec.TriggerCombo;
25984
                                            var custumFunc = rec.SelectFunction;
25985
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
25986
                                                Ext.Ajax.request({
25987
                                                    async: false,
25988
                                                    method: 'POST',
25989
                                                    url: '/UserControl/GetStore',
25990
                                                    params: {
25991
                                                        tableName: 'PCMFUNC',
25992
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
25993
                                                    },
25994
                                                    success: function (response) {
25995
                                                        var results = Ext.decode(response.responseText);
25996
                                                        data_ = results.data[0];
25997
                                                        if (data_ != undefined) {
25998
                                                            custumFunc = data_.FunctionCode;
25999
                                                        }
26000
                                                    }
26001
                                                });
26002
                                            }
26003
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26004
                                            if (frm) {
26005
                                                if (custumFunc) {
26006
                                                    eval(custumFunc)
26007
                                                }
26008
                                            }
26009
                                        }
26010
                                    }
26011
                                });
26012
                            } else {
26013
                                formfield = new Ext.form.DateField({
26014
                                    allowBlank: allowblank,
26015
                                    fieldLabel: rec.ScreenCaption,
26016
                                    readOnly: readonly,
26017
                                    msgTarget: 'side',
26018
                                    //labelCls: 'label-minova',
26019
                                    labelWidth: labelWidth,
26020
                                    hidden: ishidden,
26021
                                    name: rec.FieldName,
26022
                                    submitFormat: 'Ymd',
26023
                                    value: rec.DefaultValue,
26024
                                    anchor: '100%',
26025
                                    formname: formname_,
26026
                                    nameTable: nameTable_,
26027
                                    hideMode: 'visibility',
26028
                                    listeners: {
26029
                                        change: function (val) {
26030
                                            var _label = val.name;
26031
                                            var _form = val.formname;
26032
                                            var _Value = val.getValue();
26033
                                            var target = rec.TriggerCombo;
26034
                                            var custumFunc = rec.SelectFunction;
26035
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26036
                                                Ext.Ajax.request({
26037
                                                    async: false,
26038
                                                    method: 'POST',
26039
                                                    url: '/UserControl/GetStore',
26040
                                                    params: {
26041
                                                        tableName: 'PCMFUNC',
26042
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26043
                                                    },
26044
                                                    success: function (response) {
26045
                                                        var results = Ext.decode(response.responseText);
26046
                                                        data_ = results.data[0];
26047
                                                        if (data_ != undefined) {
26048
                                                            custumFunc = data_.FunctionCode;
26049
                                                        }
26050
                                                    }
26051
                                                });
26052
                                            }
26053
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26054
                                            if (frm) {
26055
                                                if (custumFunc) {
26056
                                                    eval(custumFunc)
26057
                                                }
26058
                                            }
26059
                                        }
26060
                                    }
26061
                                });
26062
                            }
26063
                            break;
26064
                        case "time":
26065
                            formfield = new Ext.form.TimeField({
26066
                                allowBlank: allowblank,
26067
                                fieldLabel: rec.ScreenCaption,
26068
                                readOnly: readonly,
26069
                                //labelCls: 'label-minova',
26070
                                labelWidth: labelWidth,
26071
                                hidden: ishidden,
26072
                                name: rec.FieldName,
26073
                                msgTarget: 'side',
26074
                                format: 'Hi',
26075
                                submitFormat: 'Hi',
26076
                                increment: 5,
26077
                                value: rec.DefaultValue,
26078
                                anchor: '100%',
26079
                                formname: formname_,
26080
                                nameTable: nameTable_,
26081
                                listeners: {
26082
                                    change: function (val) {
26083
                                        var _label = val.name;
26084
                                        var _form = val.formname;
26085
                                        var _Value = val.getValue();
26086
                                        var target = rec.TriggerCombo;
26087
                                        var custumFunc = rec.SelectFunction;
26088
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26089
                                            Ext.Ajax.request({
26090
                                                async: false,
26091
                                                method: 'POST',
26092
                                                url: '/UserControl/GetStore',
26093
                                                params: {
26094
                                                    tableName: 'PCMFUNC',
26095
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
26096
                                                },
26097
                                                success: function (response) {
26098
                                                    var results = Ext.decode(response.responseText);
26099
                                                    data_ = results.data[0];
26100
                                                    if (data_ != undefined) {
26101
                                                        custumFunc = data_.FunctionCode;
26102
                                                    }
26103
                                                }
26104
                                            });
26105
                                        }
26106
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26107
                                        if (frm) {
26108
                                            if (custumFunc) {
26109
                                                eval(custumFunc)
26110
                                            }
26111
                                        }
26112
                                    }
26113
                                }
26114
                            });
26115
                            break;
26116
                        case "amount":
26117
                            formfield = new Ext.form.TextField({
26118
                                allowBlank: allowblank,
26119
                                fieldLabel: rec.ScreenCaption,
26120
                                readOnly: readonly,
26121
                                //labelCls: 'label-minova',
26122
                                labelWidth: labelWidth,
26123
                                hidden: ishidden,
26124
                                name: rec.FieldName,
26125
                                msgTarget: 'side',
26126
                                value: rec.DefaultValue,
26127
                                maxLength: rec.Length,
26128
                                anchor: '100%',
26129
                                formname: formname_,
26130
                                nameTable: nameTable_,
26131
                                fieldStyle: 'text-align:right;',
26132
                                listeners: {
26133
                                    change: function (val) {
26134
                                        var _label = val.name;
26135
                                        var _form = val.formname;
26136
                                        var _Value = val.getValue();
26137
                                        var target = rec.TriggerCombo;
26138
                                        var custumFunc = rec.SelectFunction;
26139
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26140
                                            Ext.Ajax.request({
26141
                                                async: false,
26142
                                                method: 'POST',
26143
                                                url: '/UserControl/GetStore',
26144
                                                params: {
26145
                                                    tableName: 'PCMFUNC',
26146
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26147
                                                },
26148
                                                success: function (response) {
26149
                                                    var results = Ext.decode(response.responseText);
26150
                                                    data_ = results.data[0];
26151
                                                    if (data_ != undefined) {
26152
                                                        custumFunc = data_.FunctionCode;
26153
                                                    }
26154
                                                }
26155
                                            });
26156
                                        }
26157
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26158
                                        if (frm) {
26159
                                            if (custumFunc) {
26160
                                                eval(custumFunc)
26161
                                            }
26162
                                        }
26163
                                    }
26164
                                }
26165
                            });
26166
                            break;
26167
                        case "file":
26168
                            formfield = new MinovaUtil.MinovaES.UploadFile({
26169
                                allowBlank: allowblank,
26170
                                fieldLabel: rec.ScreenCaption,
26171
                                readOnly: readonly,
26172
                                readOnlyCls: 'minova-readonly',
26173
                                hidden: ishidden,
26174
                                //labelCls: 'label-minova',
26175
                                name: rec.FieldName,
26176
                                msgTarget: 'side',
26177
                                fieldname: rec.FieldName,
26178
                                IsPrimaryKey: rec.IsPrimaryKey,
26179
                                tableName: rec.TableRef,
26180
                                triggerCls: 'x-form-search-trigger',
26181
                                formtarget: me.formname,
26182
                                anchor: '100%',
26183
                                formname: formname_,
26184
                                nameTable: nameTable_,
26185
                                listeners: {
26186
                                    change: function (val) {
26187
                                        var _label = val.name;
26188
                                        var _form = val.formname;
26189
                                        var _Value = val.getValue();
26190
                                        var target = rec.TriggerCombo;
26191
                                        var custumFunc = rec.SelectFunction;
26192
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26193
                                            Ext.Ajax.request({
26194
                                                async: false,
26195
                                                method: 'POST',
26196
                                                url: '/UserControl/GetStore',
26197
                                                params: {
26198
                                                    tableName: 'PCMFUNC',
26199
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26200
                                                },
26201
                                                success: function (response) {
26202
                                                    var results = Ext.decode(response.responseText);
26203
                                                    data_ = results.data[0];
26204
                                                    if (data_ != undefined) {
26205
                                                        custumFunc = data_.FunctionCode;
26206
                                                    }
26207
                                                }
26208
                                            });
26209
                                        }
26210
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26211
                                        if (frm) {
26212
                                            if (target) {
26213
                                                var f = frm.getForm().findField(target)
26214
                                                _store = f.getStore();
26215
                                                var _tbl = _store.proxy.extraParams.tableName;
26216
                                                var oldParam = _store.proxy.extraParams.param;
26217
                                                _store.proxy.extraParams = {
26218
                                                    tableName: _tbl,
26219
                                                    param: _label + '[=]' + _Value
26220
                                                };
26221
                                                _store.load();
26222
                                            }
26223
                                            if (custumFunc) {
26224
                                                eval(custumFunc)
26225
                                            }
26226
                                        }
26227
                                    }
26228
                                }
26229
                            });
26230
                            break;
26231
                        default:
26232
                            if (rec.DataType == 0) {
26233
                                if (rec.Length > 250) {
26234
                                    formfield = new Ext.form.TextArea({
26235
                                        allowBlank: allowblank,
26236
                                        fieldLabel: rec.ScreenCaption,
26237
                                        readOnly: readonly,
26238
                                        ////labelCls: 'label-minova',
26239
                                        labelWidth: labelWidth,
26240
                                        hidden: ishidden,
26241
                                        name: rec.FieldName,
26242
                                        msgTarget: 'side',
26243
                                        value: rec.DefaultValue,
26244
                                        maxLength: rec.Length,
26245
                                        anchor: '100%',
26246
                                        grow: true,
26247
                                        formname: formname_,
26248
                                        nameTable: nameTable_,
26249
                                        listeners: {
26250
                                            change: function (val) {
26251
                                                var _label = val.name;
26252
                                                var _form = val.formname;
26253
                                                var _Value = val.getValue();
26254
                                                var target = rec.TriggerCombo;
26255
                                                var custumFunc = rec.SelectFunction;
26256
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26257
                                                    Ext.Ajax.request({
26258
                                                        async: false,
26259
                                                        method: 'POST',
26260
                                                        url: '/UserControl/GetStore',
26261
                                                        params: {
26262
                                                            tableName: 'PCMFUNC',
26263
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26264
                                                        },
26265
                                                        success: function (response) {
26266
                                                            var results = Ext.decode(response.responseText);
26267
                                                            data_ = results.data[0];
26268
                                                            if (data_ != undefined) {
26269
                                                                custumFunc = data_.FunctionCode;
26270
                                                            }
26271
                                                        }
26272
                                                    });
26273
                                                }
26274
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26275
                                                if (frm) {
26276
                                                    if (custumFunc) {
26277
                                                        eval(custumFunc)
26278
                                                    }
26279
                                                }
26280
                                            }
26281
                                        }
26282
                                    });
26283
                                } else {
26284
                                    if (rec.FixedValue != '') {
26285
                                        var storeData = [];
26286
                                        var str = rec.FixedValue;
26287
                                        var hasil = str.split('||');
26288
                                        hasil.forEach(function (h) {
26289
                                            store_ = h.split('=')
26290
                                            storeData.push({
26291
                                                code: store_[0],
26292
                                                desc: store_[1],
26293
                                            });
26294
                                        });
26295
                                        formfield = new Ext.form.ComboBox({
26296
                                            allowBlank: allowblank,
26297
                                            fieldLabel: rec.ScreenCaption,
26298
                                            forceSelection: true,
26299
                                            readOnly: readonly,
26300
                                            //labelCls: 'label-minova',
26301
                                            labelWidth: labelWidth,
26302
                                            hidden: ishidden,
26303
                                            name: rec.FieldName,
26304
                                            msgTarget: 'side',
26305
                                            value: rec.DefaultValue,
26306
                                            anchor: '100%',
26307
                                            formname: formname_,
26308
                                            nameTable: nameTable_,
26309
                                            formtarget: me.formname,
26310
                                            store: Ext.create('Ext.data.Store', {
26311
                                                storeId: 'store' + rec.FieldName,
26312
                                                autoLoad: true,
26313
                                                data: storeData
26314

    
26315
                                            }),
26316
                                            listeners: {
26317
                                                change: function (val) {
26318
                                                    var _label = val.name;
26319
                                                    var _form = val.formtarget;
26320
                                                    var _Value = val.getValue();
26321
                                                    var target = rec.TriggerCombo;
26322
                                                    var custumFunc = rec.SelectFunction;
26323
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26324
                                                    if (frm) {
26325
                                                        if (target) {
26326
                                                            var f = frm.getForm().findField(target)
26327
                                                            _store = f.getStore();
26328
                                                            var _tbl = _store.proxy.extraParams.tableName;
26329
                                                            var oldParam = _store.proxy.extraParams.param;
26330
                                                            _store.proxy.extraParams = {
26331
                                                                tableName: _tbl,
26332
                                                                param: _label + '[=]' + _Value
26333
                                                            };
26334
                                                            _store.load();
26335
                                                        }
26336
                                                        if (custumFunc) {
26337
                                                            eval(custumFunc)
26338
                                                        }
26339
                                                    }
26340
                                                }
26341
                                            },
26342
                                            queryMode: 'local',
26343
                                            valueField: 'code',
26344
                                            displayField: 'desc',
26345
                                        });
26346
                                    } else {
26347
                                        formfield = new Ext.form.TextField({
26348
                                            allowBlank: allowblank,
26349
                                            fieldLabel: rec.ScreenCaption,
26350
                                            readOnly: readonly,
26351
                                            //labelCls: 'label-minova',
26352
                                            labelWidth: labelWidth,
26353
                                            hidden: ishidden,
26354
                                            name: rec.FieldName,
26355
                                            msgTarget: 'side',
26356
                                            value: rec.DefaultValue,
26357
                                            maxLength: rec.Length,
26358
                                            anchor: '100%',
26359
                                            formname: formname_,
26360
                                            nameTable: nameTable_,
26361
                                            listeners: {
26362
                                                change: function (val) {
26363
                                                    var _label = val.name;
26364
                                                    var _form = val.formname;
26365
                                                    var _Value = val.getValue();
26366
                                                    var target = rec.TriggerCombo;
26367
                                                    var custumFunc = rec.SelectFunction;
26368
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26369
                                                        Ext.Ajax.request({
26370
                                                            async: false,
26371
                                                            method: 'POST',
26372
                                                            url: '/UserControl/GetStore',
26373
                                                            params: {
26374
                                                                tableName: 'PCMFUNC',
26375
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26376
                                                            },
26377
                                                            success: function (response) {
26378
                                                                var results = Ext.decode(response.responseText);
26379
                                                                data_ = results.data[0];
26380
                                                                if (data_ != undefined) {
26381
                                                                    custumFunc = data_.FunctionCode;
26382
                                                                }
26383
                                                            }
26384
                                                        });
26385
                                                    }
26386
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26387
                                                    if (frm) {
26388
                                                        if (custumFunc) {
26389
                                                            eval(custumFunc)
26390
                                                        }
26391
                                                    }
26392
                                                }
26393
                                            }
26394
                                        });
26395
                                    }
26396
                                }
26397
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
26398
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
26399
                                    allowBlank: allowblank,
26400
                                    fieldLabel: rec.ScreenCaption,
26401
                                    readOnly: readonly,
26402
                                    //labelCls: 'label-minova',
26403
                                    labelWidth: labelWidth,
26404
                                    msgTarget: 'side',
26405
                                    hidden: ishidden,
26406
                                    name: rec.FieldName,
26407
                                    value: rec.DefaultValue,
26408
                                    maxLength: rec.Length,
26409
                                    anchor: '100%',
26410
                                    formname: formname_,
26411
                                    nameTable: nameTable_,
26412
                                    fieldStyle: 'text-align:right;',
26413
                                    listeners: {
26414
                                        change: function (val) {
26415
                                            var _label = val.name;
26416
                                            var _form = val.formname;
26417
                                            var _Value = val.getValue();
26418
                                            var target = rec.TriggerCombo;
26419
                                            var custumFunc = rec.SelectFunction;
26420
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26421
                                                Ext.Ajax.request({
26422
                                                    async: false,
26423
                                                    method: 'POST',
26424
                                                    url: '/UserControl/GetStore',
26425
                                                    params: {
26426
                                                        tableName: 'PCMFUNC',
26427
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26428
                                                    },
26429
                                                    success: function (response) {
26430
                                                        var results = Ext.decode(response.responseText);
26431
                                                        data_ = results.data[0];
26432
                                                        if (data_ != undefined) {
26433
                                                            custumFunc = data_.FunctionCode;
26434
                                                        }
26435
                                                    }
26436
                                                });
26437
                                            }
26438
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26439
                                            if (frm) {
26440
                                                if (target) {
26441
                                                    var f = frm.getForm().findField(target)
26442
                                                    _store = f.getStore();
26443
                                                    var _tbl = _store.proxy.extraParams.tableName;
26444
                                                    var oldParam = _store.proxy.extraParams.param;
26445
                                                    _store.proxy.extraParams = {
26446
                                                        tableName: _tbl,
26447
                                                        param: _label + '[=]' + _Value
26448
                                                    };
26449
                                                    _store.load();
26450
                                                }
26451
                                                if (custumFunc) {
26452
                                                    eval(custumFunc)
26453
                                                }
26454
                                            }
26455
                                        }
26456
                                    }
26457
                                });
26458
                            } else if (rec.DataType == 3) {
26459
                                formfield = new Ext.form.TextField({
26460
                                    allowBlank: allowblank,
26461
                                    fieldLabel: rec.ScreenCaption,
26462
                                    readOnly: readonly,
26463
                                    //labelCls: 'label-minova',
26464
                                    labelWidth: labelWidth,
26465
                                    msgTarget: 'side',
26466
                                    hidden: ishidden,
26467
                                    name: rec.FieldName,
26468
                                    value: rec.DefaultValue,
26469
                                    maxLength: rec.Length,
26470
                                    precision: rec.Prec,
26471
                                    anchor: '100%',
26472
                                    formname: formname_,
26473
                                    nameTable: nameTable_,
26474
                                    fieldStyle: 'text-align:right;',
26475
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
26476
                                    listeners: {
26477
                                        change: function (val) {
26478
                                            var _label = val.name;
26479
                                            var _form = val.formname;
26480
                                            var _Value = val.getValue();
26481
                                            var target = rec.TriggerCombo;
26482
                                            var custumFunc = rec.SelectFunction;
26483
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26484
                                                Ext.Ajax.request({
26485
                                                    async: false,
26486
                                                    method: 'POST',
26487
                                                    url: '/UserControl/GetStore',
26488
                                                    params: {
26489
                                                        tableName: 'PCMFUNC',
26490
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26491
                                                    },
26492
                                                    success: function (response) {
26493
                                                        var results = Ext.decode(response.responseText);
26494
                                                        data_ = results.data[0];
26495
                                                        if (data_ != undefined) {
26496
                                                            custumFunc = data_.FunctionCode;
26497
                                                        }
26498
                                                    }
26499
                                                });
26500
                                            }
26501
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26502
                                            if (frm) {
26503
                                                if (target) {
26504
                                                    var f = frm.getForm().findField(target)
26505
                                                    _store = f.getStore();
26506
                                                    var _tbl = _store.proxy.extraParams.tableName;
26507
                                                    var oldParam = _store.proxy.extraParams.param;
26508
                                                    _store.proxy.extraParams = {
26509
                                                        tableName: _tbl,
26510
                                                        param: _label + '[=]' + _Value
26511
                                                    };
26512
                                                    _store.load();
26513
                                                }
26514
                                                if (custumFunc) {
26515
                                                    eval(custumFunc)
26516
                                                }
26517
                                            }
26518
                                        }
26519
                                    }
26520
                                });
26521
                            }
26522
                    }
26523
                } else if (rec.SearchType != "") {
26524
                    if (rec.SearchType == "0") //combobox
26525
                    {
26526
                        valueField = null;
26527
                        displayValue = null;
26528
                        if (rec.TableRef != "") {
26529
                            Ext.Ajax.request({
26530
                                async: false,
26531
                                method: 'POST',
26532
                                url: '/UserControl/GetStore',
26533
                                params: {
26534
                                    tableName: 'SDATATABLEFIELD',
26535
                                    param: 'TableName[equal]' + rec.TableRef
26536
                                },
26537
                                success: function (response) {
26538
                                    var results = Ext.decode(response.responseText);
26539
                                    data_ = results.data;
26540
                                    if (data_ != undefined) {
26541
                                        valueField_ = $.grep(data_, function (r) {
26542
                                            return r.ValueField == '1'
26543
                                        });
26544
                                        if (valueField_.length > 0) {
26545
                                            valueField = valueField_[0].FieldName
26546
                                        }
26547
                                        displayValue_ = $.grep(data_, function (r) {
26548
                                            return r.DisplayValue == '1'
26549
                                        });
26550
                                        if (displayValue_.length > 0) {
26551
                                            displayValue = displayValue_[0].FieldName
26552
                                        }
26553
                                    }
26554
                                }
26555
                            });
26556
                        }
26557
                        formfield = new Ext.form.ComboBox({
26558
                            allowBlank: allowblank,
26559
                            fieldLabel: rec.ScreenCaption,
26560
                            forceSelection: true,
26561
                            anyMatch: true,
26562
                            readOnly: readonly,
26563
                            //labelCls: 'label-minova',
26564
                            labelWidth: labelWidth,
26565
                            hidden: ishidden,
26566
                            msgTarget: 'side',
26567
                            name: rec.FieldName,
26568
                            formname: formname_,
26569
                            nameTable: nameTable_,
26570
                            value: rec.DefaultValue,
26571
                            anchor: '100%', //width: '95%',
26572
                            store: Ext.create('Ext.data.Store', {
26573
                                storeId: 'store' + rec.FieldName,
26574
                                autoLoad: false,
26575
                                proxy: {
26576
                                    method: 'POST',
26577
                                    type: 'ajax',
26578
                                    url: '/UserControl/GetStore',
26579
                                    extraParams: {
26580
                                        tableName: rec.TableRef,
26581
                                        param: rec.ParamCombo
26582
                                    },
26583
                                    reader: {
26584
                                        type: 'json',
26585
                                        root: 'data',
26586
                                        totalProperty: 'data[0].TotalCount'
26587
                                    }
26588
                                }
26589
                            }),
26590
                            formtarget: formname_,
26591
                            listeners: {
26592
                                afterrender: function (f) {
26593
                                    var store_ = f.getStore();
26594
                                    store_.load();
26595
                                },
26596
                                change: function (val) {
26597
                                    var _label = val.name;
26598
                                    var _form = val.formtarget;
26599
                                    var _Value = val.getValue();
26600
                                    var target = rec.TriggerCombo;
26601
                                    var custumFunc = rec.SelectFunction;
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
                            },
26622
                            queryMode: 'local',
26623
                            displayField: displayValue,
26624
                            valueField: valueField,
26625
                        });
26626
                    } else if (rec.SearchType == '2') //Lookup
26627
                    {
26628
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
26629
                            allowBlank: allowblank,
26630
                            fieldLabel: rec.ScreenCaption,
26631
                            readOnly: readonly,
26632
                            IsPrimaryKey: rec.IsPrimaryKey,
26633
                            msgTarget: 'side',
26634
                            //labelCls: 'label-minova',
26635
                            labelWidth: labelWidth,
26636
                            hidden: ishidden,
26637
                            name: rec.FieldName,
26638
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
26639
                            triggerCls: 'x-form-search-trigger',
26640
                            vtype: 'alphanum', // disable space
26641
                            formtarget: me.formname, // nama form  yang akan di set value-nya
26642
                            anchor: '100%',
26643
                            formname: formname_,
26644
                            nameTable: nameTable_,
26645
                            LookupFunction: rec.LookupFunction,
26646
                            SearchFunction: rec.SearchFunction,
26647
                            listeners: {
26648
                                change: function (val) {
26649
                                    var _label = val.name;
26650
                                    var _form = val.formname;
26651
                                    var _Value = val.getValue();
26652
                                    var target = rec.TriggerCombo;
26653
                                    var custumFunc = rec.SelectFunction;
26654
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26655
                                        Ext.Ajax.request({
26656
                                            async: false,
26657
                                            method: 'POST',
26658
                                            url: '/UserControl/GetStore',
26659
                                            params: {
26660
                                                tableName: 'PCMFUNC',
26661
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26662
                                            },
26663
                                            success: function (response) {
26664
                                                var results = Ext.decode(response.responseText);
26665
                                                data_ = results.data[0];
26666
                                                if (data_ != undefined) {
26667
                                                    custumFunc = data_.FunctionCode;
26668
                                                }
26669
                                            }
26670
                                        });
26671
                                    }
26672
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26673
                                    if (frm) {
26674

    
26675
                                        if (target) {
26676
                                            var f = frm.getForm().findField(target)
26677
                                            _store = f.getStore();
26678
                                            var _tbl = _store.proxy.extraParams.tableName;
26679
                                            var oldParam = _store.proxy.extraParams.param;
26680
                                            _store.proxy.extraParams = {
26681
                                                tableName: _tbl,
26682
                                                param: _label + '[=]' + _Value
26683
                                            };
26684
                                            _store.load();
26685
                                        }
26686

    
26687
                                        if (custumFunc) {
26688
                                            eval(custumFunc)
26689
                                        }
26690

    
26691
                                    }
26692

    
26693
                                },
26694

    
26695
                            },
26696
                        });
26697
                    } else if (rec.SearchType == '3') //lookup tree
26698
                    {
26699
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
26700
                            allowBlank: allowblank,
26701
                            fieldLabel: rec.ScreenCaption,
26702
                            readOnly: readonly,
26703
                            IsPrimaryKey: rec.IsPrimaryKey,
26704
                            //labelCls: 'label-minova',
26705
                            labelWidth: labelWidth,
26706
                            hidden: ishidden,
26707
                            name: rec.FieldName,
26708
                            msgTarget: 'side',
26709
                            triggerCls: 'x-form-search-trigger',
26710
                            treeSructure: rec.SearchFunction, //'O-O-P',
26711
                            objClassValue: rec.ParamCombo, //'O',
26712
                            formname: formname_,
26713
                            targetField: rec.FieldName,
26714
                            nameTable: nameTable_,
26715
                            editable: false,
26716
                            anchor: '100%',
26717
                            listeners: {
26718
                                change3: function (val) {
26719
                                    var _label = val.name;
26720
                                    var _form = val.formname;
26721
                                    var _Value = val.getValue();
26722
                                    var target = rec.TriggerCombo;
26723
                                    var custumFunc = rec.SelectFunction;
26724
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26725
                                        Ext.Ajax.request({
26726
                                            async: false,
26727
                                            method: 'POST',
26728
                                            url: '/UserControl/GetStore',
26729
                                            params: {
26730
                                                tableName: 'PCMFUNC',
26731
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26732
                                            },
26733
                                            success: function (response) {
26734
                                                var results = Ext.decode(response.responseText);
26735
                                                data_ = results.data[0];
26736
                                                if (data_ != undefined) {
26737
                                                    custumFunc = data_.FunctionCode;
26738
                                                }
26739
                                            }
26740
                                        });
26741
                                    }
26742
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26743
                                    if (frm) {
26744

    
26745
                                        if (target) {
26746
                                            var f = frm.getForm().findField(target)
26747
                                            _store = f.getStore();
26748
                                            var _tbl = _store.proxy.extraParams.tableName;
26749
                                            var oldParam = _store.proxy.extraParams.param;
26750
                                            _store.proxy.extraParams = {
26751
                                                tableName: _tbl,
26752
                                                param: _label + '[=]' + _Value
26753
                                            };
26754
                                            _store.load();
26755
                                        }
26756
                                        if (custumFunc) {
26757
                                            eval(custumFunc)
26758
                                        }
26759
                                    }
26760
                                },
26761
                                blur: function (val) {
26762
                                    //if(val.value.split('-').length != 2){
26763
                                    var _label = val.name;
26764
                                    var _form = val.formname;
26765
                                    var _Value = val.getValue();
26766
                                    var target = rec.TriggerCombo;
26767
                                    var custumFunc = rec.SelectFunction;
26768
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
26769
                                        Ext.Ajax.request({
26770
                                            async: false,
26771
                                            method: 'POST',
26772
                                            url: '/UserControl/GetStore',
26773
                                            params: {
26774
                                                tableName: 'PCMFUNC',
26775
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
26776
                                            },
26777
                                            success: function (response) {
26778
                                                var results = Ext.decode(response.responseText);
26779
                                                data_ = results.data[0];
26780
                                                if (data_ != undefined) {
26781
                                                    custumFunc = data_.FunctionCode;
26782
                                                }
26783
                                            }
26784
                                        });
26785
                                    }
26786
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
26787
                                    if (frm) {
26788

    
26789
                                        if (target) {
26790
                                            var f = frm.getForm().findField(target)
26791
                                            _store = f.getStore();
26792
                                            var _tbl = _store.proxy.extraParams.tableName;
26793
                                            var oldParam = _store.proxy.extraParams.param;
26794
                                            _store.proxy.extraParams = {
26795
                                                tableName: _tbl,
26796
                                                param: _label + '[=]' + _Value
26797
                                            };
26798
                                            _store.load();
26799
                                        }
26800
                                        if (custumFunc) {
26801
                                            eval(custumFunc)
26802
                                        }
26803
                                    }
26804
                                    //}
26805
                                }
26806

    
26807
                            }
26808
                        });
26809
                    }
26810
                }
26811
                if (isDesk) {
26812
                    if (rec.ColumnNo == 1) {
26813
                        col1.push(formfield);
26814
                    } else {
26815
                        col2.push(formfield);
26816
                    }
26817
                } else {
26818
                    col1.push(formfield);
26819
                }
26820

    
26821
            });
26822
        }
26823
        Ext.applyIf(me, {
26824
            items:
26825
                [
26826
                    {
26827
                        //width: 450,
26828
                        //style: 'width: 50%',
26829
                        defaults: {
26830
                            layout: 'anchor',
26831
                            xtype: 'container',
26832
                            flex: 1,
26833
                            margin: '10px',
26834
                            //defaultType: 'textfield',
26835
                            //anchor: '100%',
26836
                            ////style: 'width: 50%',
26837
                        },
26838
                        items: col1,
26839
                        flex: 1,
26840
                    },
26841
                    {
26842
                        //width: 450,
26843
                        //style: 'width: 50%',
26844
                        defaults: {
26845
                            layout: 'anchor',
26846
                            xtype: 'container',
26847
                            flex: 1,
26848
                            margin: '10px',
26849
                            //defaultType: 'textfield',
26850
                            //anchor: '100%',
26851
                            ////style: 'width: 50%',
26852
                        },
26853
                        items: col2,
26854
                        flex: 1,
26855
                    }
26856
                ]
26857
        });
26858
        this.callParent();
26859
    },
26860
    listeners: {
26861
        boxready: function (dataview) {
26862
            //this.reset(); //YN 20211217 - Solusi Layout sebelah kanan terlalu geser
26863
        }
26864
    },
26865
    buttons: [{
26866
        text: 'Update',
26867
        handler: 'onSaveClick'
26868
    }, {
26869
        text: 'Cancel',
26870
        handler: 'onCancelClick'
26871
    }]
26872
});
26873

    
26874
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowFormGridController', {
26875
    extend: 'Ext.app.ViewController',
26876
    alias: 'controller.workflowformgrid',
26877
    //afterrender: function () {
26878
    //    this.reset();
26879
    //},
26880

    
26881
    onSaveClick: function (btn, e, eOpts) {
26882
        // Save the changes pending in the dialog's child session back to the
26883
        // parent session.
26884
        //this.dialog.getSession().save();
26885
        var frmPanel = this.getView();
26886
        //var panel = this.up('form');
26887
        //var form = panel.getForm();
26888
        if (frmPanel.isValid()) {
26889
            //Ext.Msg.alert('Success');
26890
            var grdPanel = Ext.ComponentQuery.query('[name=grid' + frmPanel.tableName + ']')[0];
26891
            var dtrec = grdPanel.getView().getSelectionModel().getSelection()[0];
26892
            values = frmPanel.getValues();
26893
            try {               
26894
                dtrec.set(values);
26895
				btn.fireEvent("click2"); //YN 20220315
26896
                }
26897
            catch (er) {
26898
                //grdPanel.reconfigure();
26899
				//e.cancelBubble = true;
26900
                console.log(er);
26901
            }
26902
            frmPanel.hide();
26903
            //this.onCancelClick();
26904
        } else {
26905
            fieldNames = [];
26906
            fields = this.getInvalidFields(frmPanel);
26907
            for (var i = 0; i < fields.length; i++) {
26908
                field = fields[i];
26909
                fieldNames.push(i + 1 + '. ' + field.fieldLabel + ' (' + field.activeErrors[0] + ')');
26910
            }
26911
            //console.debug(fieldNames);
26912
            Ext.MessageBox.alert('Invalid Fields', 'The following fields are invalid: </br> ' + fieldNames.join(' </br>'));
26913
			//e.cancelBubble = true;
26914
        }
26915
    },
26916

    
26917
    onCancelClick: function () {
26918
        //this.getView().remove(this.dialog);
26919
        //this.dialog = null;
26920
        var frmPanel = this.getView();
26921
        frmPanel.reset();
26922
        frmPanel.hide();
26923
    },
26924

    
26925
    getInvalidFields: function (frmPanel) {
26926
        var invalidFields = [];
26927
        Ext.suspendLayouts();
26928
        frmPanel.getForm().getFields().filterBy(function (field) {
26929
            if (field.validate()) return;
26930
            invalidFields.push(field);
26931
        });
26932
        Ext.resumeLayouts(true);
26933
        return invalidFields;
26934
    },
26935
});
26936

    
26937
/*Form ESS Generator Layout: Auto if just 1 column YN 20211216*/
26938
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowForm1', {
26939
    extend: 'Ext.form.Panel',
26940
    alias: ['widget.MinovaWorkflowForm1', 'widget.minovaworkflowform1', 'widget.workflowform1'],
26941
    formname: this.name,
26942
    bizprocid: undefined,
26943
    bizflowid: undefined,
26944
    taskid: undefined,
26945
    tableName: undefined,
26946
    tableNameT: undefined,
26947
    parentKey: undefined,
26948
    titleform: undefined,
26949
    name: undefined,
26950
    labelAlign: 'left',
26951
    labelWidth: 150,
26952
    labelSeparator: undefined,
26953
    //resizable: true,
26954
    border: true,
26955
    autoScroll: true,
26956
    minHeight: 20,
26957
    marginDefault: 10,
26958
    layout: {
26959
        type: (isDesk == true) ? 'hbox': 'auto'
26960
    },
26961
    listeners: {
26962
        render: function () {
26963
            if (this.titleform != undefined) {
26964
                this.setTitle(this.titleform);
26965
            }
26966
        },
26967
    },
26968
    defaults: {
26969
        layout: 'anchor',
26970
        xtype: 'container',
26971
        flex: 1,
26972
        margin: this.marginDefault,
26973
        //defaultType: 'textfield',
26974
        //anchor: '100%',
26975
        ////style: 'width: 50%',
26976
    },
26977
    initComponent: function () {
26978
        var col1 = [];
26979
        var col2 = [];
26980
        var col0 = [];
26981
        var me = this;
26982
        var LangID = localStorage.LangId;
26983
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
26984
        var formname_ = me.name;
26985
        var nameTable_ = me.tableName;
26986
        var labelWidth = me.labelWidth;
26987
        Ext.Ajax.request({
26988
            async: false,
26989
            method: 'POST',
26990
            url: '/UserControl/GetStore',
26991
            params: {
26992
                tableName: 'PDSWFSTRUCTUREFIELD',
26993
                param: parameter
26994
            },
26995
            success: function (response) {
26996
                var results = Ext.decode(response.responseText);
26997
                hasil = results.data;
26998
            }
26999
        });
27000
        if (hasil.length > 0) {
27001
            Ext.each(hasil, function (rec) {
27002
                var formfield = undefined;
27003
                var readonly = false;
27004
                var ishidden = false;
27005
                var allowblank = true;
27006
                var startDt = null;
27007
                var endDt = null;
27008
                if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
27009
                    startDt = 'StartDate';
27010
                    endDt = 'EndDate';
27011
                }
27012
                if (rec.IsReadOnly == '1') {
27013
                    readonly = true;
27014
                }
27015
                if (rec.IsRequired == '1') {
27016
                    allowblank = false;
27017
                }
27018
                if (rec.IsVisible == '0') {
27019
                    ishidden = true;
27020
                }
27021
                if (rec.SearchType == "") //textfield
27022
                {
27023
                    switch (rec.FormatRef) {
27024
                        case "date":
27025
                            if (rec.FieldName == 'StartDate' || rec.FieldName == 'EndDate') {
27026
                                formfield = new Ext.form.DateField({
27027
                                    allowBlank: allowblank,
27028
                                    fieldLabel: rec.ScreenCaption,
27029
                                    readOnly: readonly,
27030
                                    msgTarget: 'side',
27031
                                    //labelCls: 'label-minova',
27032
                                    labelWidth: labelWidth,
27033
                                    hidden: ishidden,
27034
                                    name: rec.FieldName,
27035
                                    submitFormat: 'Ymd',
27036
                                    value: rec.DefaultValue,
27037
                                    anchor: '100%',
27038
                                    vtype: 'daterange',
27039
                                    start: startDt,
27040
                                    end: endDt,
27041
                                    formname: formname_,
27042
                                    nameTable: nameTable_,
27043
                                    hideMode: 'visibility',
27044
                                    listeners: {
27045
                                        change: function (val) {
27046
                                            var _label = val.name;
27047
                                            var _form = val.formname;
27048
                                            var _Value = val.getValue();
27049
                                            var target = rec.TriggerCombo;
27050
                                            var custumFunc = rec.SelectFunction;
27051
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27052
                                                Ext.Ajax.request({
27053
                                                    async: false,
27054
                                                    method: 'POST',
27055
                                                    url: '/UserControl/GetStore',
27056
                                                    params: {
27057
                                                        tableName: 'PCMFUNC',
27058
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27059
                                                    },
27060
                                                    success: function (response) {
27061
                                                        var results = Ext.decode(response.responseText);
27062
                                                        data_ = results.data[0];
27063
                                                        if (data_ != undefined) {
27064
                                                            custumFunc = data_.FunctionCode;
27065
                                                        }
27066
                                                    }
27067
                                                });
27068
                                            }
27069
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27070
                                            if (frm) {
27071
                                                if (custumFunc) {
27072
                                                    eval(custumFunc)
27073
                                                }
27074
                                            }
27075
                                        }
27076
                                    }
27077
                                });
27078
                            } else {
27079
                                formfield = new Ext.form.DateField({
27080
                                    allowBlank: allowblank,
27081
                                    fieldLabel: rec.ScreenCaption,
27082
                                    readOnly: readonly,
27083
                                    msgTarget: 'side',
27084
                                    //labelCls: 'label-minova',
27085
                                    labelWidth: labelWidth,
27086
                                    hidden: ishidden,
27087
                                    name: rec.FieldName,
27088
                                    submitFormat: 'Ymd',
27089
                                    value: rec.DefaultValue,
27090
                                    anchor: '100%',
27091
                                    formname: formname_,
27092
                                    nameTable: nameTable_,
27093
                                    hideMode: 'visibility',
27094
                                    listeners: {
27095
                                        change: function (val) {
27096
                                            var _label = val.name;
27097
                                            var _form = val.formname;
27098
                                            var _Value = val.getValue();
27099
                                            var target = rec.TriggerCombo;
27100
                                            var custumFunc = rec.SelectFunction;
27101
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27102
                                                Ext.Ajax.request({
27103
                                                    async: false,
27104
                                                    method: 'POST',
27105
                                                    url: '/UserControl/GetStore',
27106
                                                    params: {
27107
                                                        tableName: 'PCMFUNC',
27108
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27109
                                                    },
27110
                                                    success: function (response) {
27111
                                                        var results = Ext.decode(response.responseText);
27112
                                                        data_ = results.data[0];
27113
                                                        if (data_ != undefined) {
27114
                                                            custumFunc = data_.FunctionCode;
27115
                                                        }
27116
                                                    }
27117
                                                });
27118
                                            }
27119
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27120
                                            if (frm) {
27121
                                                if (custumFunc) {
27122
                                                    eval(custumFunc)
27123
                                                }
27124
                                            }
27125
                                        }
27126
                                    }
27127
                                });
27128
                            }
27129
                            break;
27130
                        case "time":
27131
                            formfield = new Ext.form.TimeField({
27132
                                allowBlank: allowblank,
27133
                                fieldLabel: rec.ScreenCaption,
27134
                                readOnly: readonly,
27135
                                //labelCls: 'label-minova',
27136
                                labelWidth: labelWidth,
27137
                                hidden: ishidden,
27138
                                name: rec.FieldName,
27139
                                msgTarget: 'side',
27140
                                format: 'Hi',
27141
                                submitFormat: 'Hi',
27142
                                increment: 5,
27143
                                value: rec.DefaultValue,
27144
                                anchor: '100%',
27145
                                formname: formname_,
27146
                                nameTable: nameTable_,
27147
                                listeners: {
27148
                                    change: function (val) {
27149
                                        var _label = val.name;
27150
                                        var _form = val.formname;
27151
                                        var _Value = val.getValue();
27152
                                        var target = rec.TriggerCombo;
27153
                                        var custumFunc = rec.SelectFunction;
27154
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27155
                                            Ext.Ajax.request({
27156
                                                async: false,
27157
                                                method: 'POST',
27158
                                                url: '/UserControl/GetStore',
27159
                                                params: {
27160
                                                    tableName: 'PCMFUNC',
27161
                                                    param: 'FuncName[equal]' + custumFunc + ',Active[=]1'
27162
                                                },
27163
                                                success: function (response) {
27164
                                                    var results = Ext.decode(response.responseText);
27165
                                                    data_ = results.data[0];
27166
                                                    if (data_ != undefined) {
27167
                                                        custumFunc = data_.FunctionCode;
27168
                                                    }
27169
                                                }
27170
                                            });
27171
                                        }
27172
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27173
                                        if (frm) {
27174
                                            if (custumFunc) {
27175
                                                eval(custumFunc)
27176
                                            }
27177
                                        }
27178
                                    }
27179
                                }
27180
                            });
27181
                            break;
27182
                        case "amount":
27183
                            formfield = new Ext.form.TextField({
27184
                                allowBlank: allowblank,
27185
                                fieldLabel: rec.ScreenCaption,
27186
                                readOnly: readonly,
27187
                                //labelCls: 'label-minova',
27188
                                labelWidth: labelWidth,
27189
                                hidden: ishidden,
27190
                                name: rec.FieldName,
27191
                                msgTarget: 'side',
27192
                                value: rec.DefaultValue,
27193
                                maxLength: rec.Length,
27194
                                anchor: '100%',
27195
                                formname: formname_,
27196
                                nameTable: nameTable_,
27197
                                fieldStyle: 'text-align:right;',
27198
                                listeners: {
27199
                                    change: function (val) {
27200
                                        var _label = val.name;
27201
                                        var _form = val.formname;
27202
                                        var _Value = val.getValue();
27203
                                        var target = rec.TriggerCombo;
27204
                                        var custumFunc = rec.SelectFunction;
27205
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27206
                                            Ext.Ajax.request({
27207
                                                async: false,
27208
                                                method: 'POST',
27209
                                                url: '/UserControl/GetStore',
27210
                                                params: {
27211
                                                    tableName: 'PCMFUNC',
27212
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27213
                                                },
27214
                                                success: function (response) {
27215
                                                    var results = Ext.decode(response.responseText);
27216
                                                    data_ = results.data[0];
27217
                                                    if (data_ != undefined) {
27218
                                                        custumFunc = data_.FunctionCode;
27219
                                                    }
27220
                                                }
27221
                                            });
27222
                                        }
27223
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27224
                                        if (frm) {
27225
                                            if (custumFunc) {
27226
                                                eval(custumFunc)
27227
                                            }
27228
                                        }
27229
                                    }
27230
                                }
27231
                            });
27232
                            break;
27233
                        case "file":
27234
                            formfield = new MinovaUtil.MinovaES.UploadFile({
27235
                                allowBlank: allowblank,
27236
                                fieldLabel: rec.ScreenCaption,
27237
                                readOnly: readonly,
27238
                                readOnlyCls: 'minova-readonly',
27239
                                hidden: ishidden,
27240
                                //labelCls: 'label-minova',
27241
                                name: rec.FieldName,
27242
                                msgTarget: 'side',
27243
                                fieldname: rec.FieldName,
27244
                                IsPrimaryKey: rec.IsPrimaryKey,
27245
                                tableName: rec.TableRef,
27246
                                triggerCls: 'x-form-search-trigger',
27247
                                formtarget: me.formname,
27248
                                anchor: '100%',
27249
                                formname: formname_,
27250
                                nameTable: nameTable_,
27251
                                listeners: {
27252
                                    change: function (val) {
27253
                                        var _label = val.name;
27254
                                        var _form = val.formname;
27255
                                        var _Value = val.getValue();
27256
                                        var target = rec.TriggerCombo;
27257
                                        var custumFunc = rec.SelectFunction;
27258
                                        if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27259
                                            Ext.Ajax.request({
27260
                                                async: false,
27261
                                                method: 'POST',
27262
                                                url: '/UserControl/GetStore',
27263
                                                params: {
27264
                                                    tableName: 'PCMFUNC',
27265
                                                    param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27266
                                                },
27267
                                                success: function (response) {
27268
                                                    var results = Ext.decode(response.responseText);
27269
                                                    data_ = results.data[0];
27270
                                                    if (data_ != undefined) {
27271
                                                        custumFunc = data_.FunctionCode;
27272
                                                    }
27273
                                                }
27274
                                            });
27275
                                        }
27276
                                        var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27277
                                        if (frm) {
27278
                                            if (target) {
27279
                                                var f = frm.getForm().findField(target)
27280
                                                _store = f.getStore();
27281
                                                var _tbl = _store.proxy.extraParams.tableName;
27282
                                                var oldParam = _store.proxy.extraParams.param;
27283
                                                _store.proxy.extraParams = {
27284
                                                    tableName: _tbl,
27285
                                                    param: _label + '[=]' + _Value
27286
                                                };
27287
                                                _store.load();
27288
                                            }
27289
                                            if (custumFunc) {
27290
                                                eval(custumFunc)
27291
                                            }
27292
                                        }
27293
                                    }
27294
                                }
27295
                            });
27296
                            break;
27297
                        default:
27298
                            if (rec.DataType == 0) {
27299
                                if (rec.Length > 250) {
27300
                                    formfield = new Ext.form.TextArea({
27301
                                        allowBlank: allowblank,
27302
                                        fieldLabel: rec.ScreenCaption,
27303
                                        readOnly: readonly,
27304
                                        labelAlign: me.labelAlign,
27305
                                        labelSeparator: me.labelSeparator,
27306
                                        //labelCls: 'label-minova',
27307
                                        labelWidth: labelWidth,
27308
                                        hidden: ishidden,
27309
                                        name: rec.FieldName,
27310
                                        msgTarget: 'side',
27311
                                        value: rec.DefaultValue,
27312
                                        maxLength: rec.Length,
27313
                                        anchor: '100%',
27314
                                        grow: true,
27315
                                        formname: formname_,
27316
                                        nameTable: nameTable_,
27317
                                        listeners: {
27318
                                            change: function (val) {
27319
                                                var _label = val.name;
27320
                                                var _form = val.formname;
27321
                                                var _Value = val.getValue();
27322
                                                var target = rec.TriggerCombo;
27323
                                                var custumFunc = rec.SelectFunction;
27324
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27325
                                                    Ext.Ajax.request({
27326
                                                        async: false,
27327
                                                        method: 'POST',
27328
                                                        url: '/UserControl/GetStore',
27329
                                                        params: {
27330
                                                            tableName: 'PCMFUNC',
27331
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27332
                                                        },
27333
                                                        success: function (response) {
27334
                                                            var results = Ext.decode(response.responseText);
27335
                                                            data_ = results.data[0];
27336
                                                            if (data_ != undefined) {
27337
                                                                custumFunc = data_.FunctionCode;
27338
                                                            }
27339
                                                        }
27340
                                                    });
27341
                                                }
27342
                                                var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27343
                                                if (frm) {
27344
                                                    if (custumFunc) {
27345
                                                        eval(custumFunc)
27346
                                                    }
27347
                                                }
27348
                                            }
27349
                                        }
27350
                                    });
27351
                                } else {
27352
                                    if (rec.FixedValue != '') {
27353
                                        var storeData = [];
27354
                                        var str = rec.FixedValue;
27355
                                        var hasil = str.split('||');
27356
                                        hasil.forEach(function (h) {
27357
                                            store_ = h.split('=')
27358
                                            storeData.push({
27359
                                                code: store_[0],
27360
                                                desc: store_[1],
27361
                                            });
27362
                                        });
27363
                                        formfield = new Ext.form.ComboBox({
27364
                                            allowBlank: allowblank,
27365
                                            fieldLabel: rec.ScreenCaption,
27366
                                            forceSelection: true,
27367
                                            readOnly: readonly,
27368
                                            //labelCls: 'label-minova',
27369
                                            labelWidth: labelWidth,
27370
                                            hidden: ishidden,
27371
                                            name: rec.FieldName,
27372
                                            msgTarget: 'side',
27373
                                            value: rec.DefaultValue,
27374
                                            anchor: '100%',
27375
                                            formname: formname_,
27376
                                            nameTable: nameTable_,
27377
                                            formtarget: me.formname,
27378
                                            store: Ext.create('Ext.data.Store', {
27379
                                                storeId: 'store' + rec.FieldName,
27380
                                                autoLoad: true,
27381
                                                data: storeData
27382

    
27383
                                            }),
27384
                                            listeners: {
27385
                                                change: function (val) {
27386
                                                    var _label = val.name;
27387
                                                    var _form = val.formtarget;
27388
                                                    var _Value = val.getValue();
27389
                                                    var target = rec.TriggerCombo;
27390
                                                    var custumFunc = rec.SelectFunction;
27391
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27392
                                                    if (frm) {
27393
                                                        if (target) {
27394
                                                            var f = frm.getForm().findField(target)
27395
                                                            _store = f.getStore();
27396
                                                            var _tbl = _store.proxy.extraParams.tableName;
27397
                                                            var oldParam = _store.proxy.extraParams.param;
27398
                                                            _store.proxy.extraParams = {
27399
                                                                tableName: _tbl,
27400
                                                                param: _label + '[=]' + _Value
27401
                                                            };
27402
                                                            _store.load();
27403
                                                        }
27404
                                                        if (custumFunc) {
27405
                                                            eval(custumFunc)
27406
                                                        }
27407
                                                    }
27408
                                                }
27409
                                            },
27410
                                            queryMode: 'local',
27411
                                            valueField: 'code',
27412
                                            displayField: 'desc',
27413
                                        });
27414
                                    } else {
27415
                                        formfield = new Ext.form.TextField({
27416
                                            allowBlank: allowblank,
27417
                                            fieldLabel: rec.ScreenCaption,
27418
                                            readOnly: readonly,
27419
                                            //labelCls: 'label-minova',
27420
                                            labelWidth: labelWidth,
27421
                                            hidden: ishidden,
27422
                                            name: rec.FieldName,
27423
                                            msgTarget: 'side',
27424
                                            value: rec.DefaultValue,
27425
                                            maxLength: rec.Length,
27426
                                            anchor: '100%',
27427
                                            formname: formname_,
27428
                                            nameTable: nameTable_,
27429
                                            listeners: {
27430
                                                change: function (val) {
27431
                                                    var _label = val.name;
27432
                                                    var _form = val.formname;
27433
                                                    var _Value = val.getValue();
27434
                                                    var target = rec.TriggerCombo;
27435
                                                    var custumFunc = rec.SelectFunction;
27436
                                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27437
                                                        Ext.Ajax.request({
27438
                                                            async: false,
27439
                                                            method: 'POST',
27440
                                                            url: '/UserControl/GetStore',
27441
                                                            params: {
27442
                                                                tableName: 'PCMFUNC',
27443
                                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27444
                                                            },
27445
                                                            success: function (response) {
27446
                                                                var results = Ext.decode(response.responseText);
27447
                                                                data_ = results.data[0];
27448
                                                                if (data_ != undefined) {
27449
                                                                    custumFunc = data_.FunctionCode;
27450
                                                                }
27451
                                                            }
27452
                                                        });
27453
                                                    }
27454
                                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27455
                                                    if (frm) {
27456
                                                        if (custumFunc) {
27457
                                                            eval(custumFunc)
27458
                                                        }
27459
                                                    }
27460
                                                }
27461
                                            }
27462
                                        });
27463
                                    }
27464
                                }
27465
                            } else if (rec.DataType == 1 || rec.DataType == 2) {
27466
                                formfield = new MinovaUtil.MinovaES.MinovaNumberField({
27467
                                    allowBlank: allowblank,
27468
                                    fieldLabel: rec.ScreenCaption,
27469
                                    readOnly: readonly,
27470
                                    //labelCls: 'label-minova',
27471
                                    labelWidth: labelWidth,
27472
                                    msgTarget: 'side',
27473
                                    hidden: ishidden,
27474
                                    name: rec.FieldName,
27475
                                    value: rec.DefaultValue,
27476
                                    maxLength: rec.Length,
27477
                                    anchor: '100%',
27478
                                    formname: formname_,
27479
                                    nameTable: nameTable_,
27480
                                    fieldStyle: 'text-align:right;',
27481
                                    listeners: {
27482
                                        change: function (val) {
27483
                                            var _label = val.name;
27484
                                            var _form = val.formname;
27485
                                            var _Value = val.getValue();
27486
                                            var target = rec.TriggerCombo;
27487
                                            var custumFunc = rec.SelectFunction;
27488
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27489
                                                Ext.Ajax.request({
27490
                                                    async: false,
27491
                                                    method: 'POST',
27492
                                                    url: '/UserControl/GetStore',
27493
                                                    params: {
27494
                                                        tableName: 'PCMFUNC',
27495
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27496
                                                    },
27497
                                                    success: function (response) {
27498
                                                        var results = Ext.decode(response.responseText);
27499
                                                        data_ = results.data[0];
27500
                                                        if (data_ != undefined) {
27501
                                                            custumFunc = data_.FunctionCode;
27502
                                                        }
27503
                                                    }
27504
                                                });
27505
                                            }
27506
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27507
                                            if (frm) {
27508
                                                if (target) {
27509
                                                    var f = frm.getForm().findField(target)
27510
                                                    _store = f.getStore();
27511
                                                    var _tbl = _store.proxy.extraParams.tableName;
27512
                                                    var oldParam = _store.proxy.extraParams.param;
27513
                                                    _store.proxy.extraParams = {
27514
                                                        tableName: _tbl,
27515
                                                        param: _label + '[=]' + _Value
27516
                                                    };
27517
                                                    _store.load();
27518
                                                }
27519
                                                if (custumFunc) {
27520
                                                    eval(custumFunc)
27521
                                                }
27522
                                            }
27523
                                        }
27524
                                    }
27525
                                });
27526
                            } else if (rec.DataType == 3) {
27527
                                formfield = new Ext.form.TextField({
27528
                                    allowBlank: allowblank,
27529
                                    fieldLabel: rec.ScreenCaption,
27530
                                    readOnly: readonly,
27531
                                    //labelCls: 'label-minova',
27532
                                    labelWidth: labelWidth,
27533
                                    msgTarget: 'side',
27534
                                    hidden: ishidden,
27535
                                    name: rec.FieldName,
27536
                                    value: rec.DefaultValue,
27537
                                    maxLength: rec.Length,
27538
                                    precision: rec.Prec,
27539
                                    anchor: '100%',
27540
                                    formname: formname_,
27541
                                    nameTable: nameTable_,
27542
                                    fieldStyle: 'text-align:right;',
27543
                                    maskRe: '^[0-9]+(\.[0-9]{1,2})?$',
27544
                                    listeners: {
27545
                                        change: function (val) {
27546
                                            var _label = val.name;
27547
                                            var _form = val.formname;
27548
                                            var _Value = val.getValue();
27549
                                            var target = rec.TriggerCombo;
27550
                                            var custumFunc = rec.SelectFunction;
27551
                                            if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27552
                                                Ext.Ajax.request({
27553
                                                    async: false,
27554
                                                    method: 'POST',
27555
                                                    url: '/UserControl/GetStore',
27556
                                                    params: {
27557
                                                        tableName: 'PCMFUNC',
27558
                                                        param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27559
                                                    },
27560
                                                    success: function (response) {
27561
                                                        var results = Ext.decode(response.responseText);
27562
                                                        data_ = results.data[0];
27563
                                                        if (data_ != undefined) {
27564
                                                            custumFunc = data_.FunctionCode;
27565
                                                        }
27566
                                                    }
27567
                                                });
27568
                                            }
27569
                                            var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27570
                                            if (frm) {
27571
                                                if (target) {
27572
                                                    var f = frm.getForm().findField(target)
27573
                                                    _store = f.getStore();
27574
                                                    var _tbl = _store.proxy.extraParams.tableName;
27575
                                                    var oldParam = _store.proxy.extraParams.param;
27576
                                                    _store.proxy.extraParams = {
27577
                                                        tableName: _tbl,
27578
                                                        param: _label + '[=]' + _Value
27579
                                                    };
27580
                                                    _store.load();
27581
                                                }
27582
                                                if (custumFunc) {
27583
                                                    eval(custumFunc)
27584
                                                }
27585
                                            }
27586
                                        }
27587
                                    }
27588
                                });
27589
                            }
27590
                    }
27591
                } else if (rec.SearchType != "") {
27592
                    if (rec.SearchType == "0") //combobox
27593
                    {
27594
                        valueField = null;
27595
                        displayValue = null;
27596
                        if (rec.TableRef != "") {
27597
                            Ext.Ajax.request({
27598
                                async: false,
27599
                                method: 'POST',
27600
                                url: '/UserControl/GetStore',
27601
                                params: {
27602
                                    tableName: 'SDATATABLEFIELD',
27603
                                    param: 'TableName[equal]' + rec.TableRef
27604
                                },
27605
                                success: function (response) {
27606
                                    var results = Ext.decode(response.responseText);
27607
                                    data_ = results.data;
27608
                                    if (data_ != undefined) {
27609
                                        valueField_ = $.grep(data_, function (r) {
27610
                                            return r.ValueField == '1'
27611
                                        });
27612
                                        if (valueField_.length > 0) {
27613
                                            valueField = valueField_[0].FieldName
27614
                                        }
27615
                                        displayValue_ = $.grep(data_, function (r) {
27616
                                            return r.DisplayValue == '1'
27617
                                        });
27618
                                        if (displayValue_.length > 0) {
27619
                                            displayValue = displayValue_[0].FieldName
27620
                                        }
27621
                                    }
27622
                                }
27623
                            });
27624
                        }
27625
                        formfield = new Ext.form.ComboBox({
27626
                            allowBlank: allowblank,
27627
                            fieldLabel: rec.ScreenCaption,
27628
                            forceSelection: true,
27629
                            anyMatch: true,
27630
                            readOnly: readonly,
27631
                            //labelCls: 'label-minova',
27632
                            labelWidth: labelWidth,
27633
                            hidden: ishidden,
27634
                            msgTarget: 'side',
27635
                            name: rec.FieldName,
27636
                            formname: formname_,
27637
                            nameTable: nameTable_,
27638
                            value: rec.DefaultValue,
27639
                            anchor: '100%',
27640
                            store: Ext.create('Ext.data.Store', {
27641
                                storeId: 'store' + rec.FieldName,
27642
                                autoLoad: false,
27643
                                proxy: {
27644
                                    method: 'POST',
27645
                                    type: 'ajax',
27646
                                    url: '/UserControl/GetStore',
27647
                                    extraParams: {
27648
                                        tableName: rec.TableRef,
27649
                                        param: rec.ParamCombo
27650
                                    },
27651
                                    reader: {
27652
                                        type: 'json',
27653
                                        root: 'data',
27654
                                        totalProperty: 'data[0].TotalCount'
27655
                                    }
27656
                                }
27657
                            }),                            
27658
                            formtarget: formname_,
27659
                            listeners: {
27660
                                afterrender: function (f) {
27661
                                    var store_ = f.getStore();
27662
                                    store_.load();
27663
                                },
27664
                                change: function (val) {
27665
                                    var _label = val.name;
27666
                                    var _form = val.formtarget;
27667
                                    var _Value = val.getValue();
27668
                                    var target = rec.TriggerCombo;
27669
                                    var custumFunc = rec.SelectFunction;
27670
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27671
                                    if (frm) {
27672

    
27673
                                        if (target) {
27674
                                            var f = frm.getForm().findField(target)
27675
                                            _store = f.getStore();
27676
                                            var _tbl = _store.proxy.extraParams.tableName;
27677
                                            var oldParam = _store.proxy.extraParams.param;
27678
                                            _store.proxy.extraParams = {
27679
                                                tableName: _tbl,
27680
                                                param: _label + '[=]' + _Value
27681
                                            };
27682
                                            _store.load();
27683
                                        }
27684
                                        if (custumFunc) {
27685
                                            eval(custumFunc)
27686
                                        }
27687
                                    }
27688
                                }
27689
                            },
27690
                            queryMode: 'local',
27691
                            displayField: displayValue,
27692
                            valueField: valueField,
27693
                        });
27694
                    } else if (rec.SearchType == '2') //Lookup
27695
                    {
27696
                        formfield = new MinovaUtil.MinovaES.MinovaLookupGrid({
27697
                            allowBlank: allowblank,
27698
                            fieldLabel: rec.ScreenCaption,
27699
                            readOnly: readonly,
27700
                            IsPrimaryKey: rec.IsPrimaryKey,
27701
                            msgTarget: 'side',
27702
                            //labelCls: 'label-minova',
27703
                            labelWidth: labelWidth,
27704
                            hidden: ishidden,
27705
                            name: rec.FieldName,
27706
                            tableName: rec.TableRef, //name tabel yang jadi ref-nya
27707
                            triggerCls: 'x-form-search-trigger',
27708
                            vtype: 'alphanum', // disable space
27709
                            formtarget: me.formname, // nama form  yang akan di set value-nya
27710
                            anchor: '100%',
27711
                            formname: formname_,
27712
                            nameTable: nameTable_,
27713
                            LookupFunction: rec.LookupFunction,
27714
                            SearchFunction: rec.SearchFunction,
27715
                            listeners: {
27716
                                change: function (val) {
27717
                                    var _label = val.name;
27718
                                    var _form = val.formname;
27719
                                    var _Value = val.getValue();
27720
                                    var target = rec.TriggerCombo;
27721
                                    var custumFunc = rec.SelectFunction;
27722
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27723
                                        Ext.Ajax.request({
27724
                                            async: false,
27725
                                            method: 'POST',
27726
                                            url: '/UserControl/GetStore',
27727
                                            params: {
27728
                                                tableName: 'PCMFUNC',
27729
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27730
                                            },
27731
                                            success: function (response) {
27732
                                                var results = Ext.decode(response.responseText);
27733
                                                data_ = results.data[0];
27734
                                                if (data_ != undefined) {
27735
                                                    custumFunc = data_.FunctionCode;
27736
                                                }
27737
                                            }
27738
                                        });
27739
                                    }
27740
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27741
                                    if (frm) {
27742

    
27743
                                        if (target) {
27744
                                            var f = frm.getForm().findField(target)
27745
                                            _store = f.getStore();
27746
                                            var _tbl = _store.proxy.extraParams.tableName;
27747
                                            var oldParam = _store.proxy.extraParams.param;
27748
                                            _store.proxy.extraParams = {
27749
                                                tableName: _tbl,
27750
                                                param: _label + '[=]' + _Value
27751
                                            };
27752
                                            _store.load();
27753
                                        }
27754

    
27755
                                        if (custumFunc) {
27756
                                            eval(custumFunc)
27757
                                        }
27758

    
27759
                                    }
27760

    
27761
                                },
27762

    
27763
                            },
27764
                        });
27765
                    } else if (rec.SearchType == '3') //lookup tree
27766
                    {
27767
                        formfield = new MinovaUtil.MinovaES.MinovaLookupTree({
27768
                            allowBlank: allowblank,
27769
                            fieldLabel: rec.ScreenCaption,
27770
                            readOnly: readonly,
27771
                            IsPrimaryKey: rec.IsPrimaryKey,
27772
                            //labelCls: 'label-minova',
27773
                            labelWidth: labelWidth,
27774
                            hidden: ishidden,
27775
                            name: rec.FieldName,
27776
                            msgTarget: 'side',
27777
                            triggerCls: 'x-form-search-trigger',
27778
                            treeSructure: rec.SearchFunction, //'O-O-P',
27779
                            objClassValue: rec.ParamCombo, //'O',
27780
                            formname: formname_,
27781
                            targetField: rec.FieldName,
27782
                            nameTable: nameTable_,
27783
                            editable: false,
27784
                            anchor: '100%',
27785
                            listeners: {
27786
                                change3: function (val) {
27787
                                    var _label = val.name;
27788
                                    var _form = val.formname;
27789
                                    var _Value = val.getValue();
27790
                                    var target = rec.TriggerCombo;
27791
                                    var custumFunc = rec.SelectFunction;
27792
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27793
                                        Ext.Ajax.request({
27794
                                            async: false,
27795
                                            method: 'POST',
27796
                                            url: '/UserControl/GetStore',
27797
                                            params: {
27798
                                                tableName: 'PCMFUNC',
27799
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27800
                                            },
27801
                                            success: function (response) {
27802
                                                var results = Ext.decode(response.responseText);
27803
                                                data_ = results.data[0];
27804
                                                if (data_ != undefined) {
27805
                                                    custumFunc = data_.FunctionCode;
27806
                                                }
27807
                                            }
27808
                                        });
27809
                                    }
27810
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27811
                                    if (frm) {
27812

    
27813
                                        if (target) {
27814
                                            var f = frm.getForm().findField(target)
27815
                                            _store = f.getStore();
27816
                                            var _tbl = _store.proxy.extraParams.tableName;
27817
                                            var oldParam = _store.proxy.extraParams.param;
27818
                                            _store.proxy.extraParams = {
27819
                                                tableName: _tbl,
27820
                                                param: _label + '[=]' + _Value
27821
                                            };
27822
                                            _store.load();
27823
                                        }
27824
                                        if (custumFunc) {
27825
                                            eval(custumFunc)
27826
                                        }
27827
                                    }
27828
                                },
27829
                                blur: function (val) {
27830
                                    //if(val.value.split('-').length != 2){
27831
                                    var _label = val.name;
27832
                                    var _form = val.formname;
27833
                                    var _Value = val.getValue();
27834
                                    var target = rec.TriggerCombo;
27835
                                    var custumFunc = rec.SelectFunction;
27836
                                    if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
27837
                                        Ext.Ajax.request({
27838
                                            async: false,
27839
                                            method: 'POST',
27840
                                            url: '/UserControl/GetStore',
27841
                                            params: {
27842
                                                tableName: 'PCMFUNC',
27843
                                                param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
27844
                                            },
27845
                                            success: function (response) {
27846
                                                var results = Ext.decode(response.responseText);
27847
                                                data_ = results.data[0];
27848
                                                if (data_ != undefined) {
27849
                                                    custumFunc = data_.FunctionCode;
27850
                                                }
27851
                                            }
27852
                                        });
27853
                                    }
27854
                                    var frm = Ext.ComponentQuery.query('form[name=' + _form + ']')[0];
27855
                                    if (frm) {
27856

    
27857
                                        if (target) {
27858
                                            var f = frm.getForm().findField(target)
27859
                                            _store = f.getStore();
27860
                                            var _tbl = _store.proxy.extraParams.tableName;
27861
                                            var oldParam = _store.proxy.extraParams.param;
27862
                                            _store.proxy.extraParams = {
27863
                                                tableName: _tbl,
27864
                                                param: _label + '[=]' + _Value
27865
                                            };
27866
                                            _store.load();
27867
                                        }
27868
                                        if (custumFunc) {
27869
                                            eval(custumFunc)
27870
                                        }
27871
                                    }
27872
                                    //}
27873
                                }
27874

    
27875
                            }
27876
                        });
27877
                    } else if (rec.SearchType == '10') //Checkboxgroup
27878
                    {
27879
                        if (rec.TableRef != "") {
27880
                            Ext.Ajax.request({
27881
                                async: false,
27882
                                method: 'POST',
27883
                                url: '/UserControl/GetStore',
27884
                                params: {
27885
                                    tableName: 'SDATATABLEFIELD',
27886
                                    param: 'TableName[equal]' + rec.TableRef
27887
                                },
27888
                                success: function (response) {
27889
                                    var results = Ext.decode(response.responseText);
27890
                                    data_ = results.data;
27891
                                    if (data_ != undefined) {
27892
                                        valueField_ = $.grep(data_, function (r) {
27893
                                            return r.ValueField == '1'
27894
                                        });
27895
                                        if (valueField_.length > 0) {
27896
                                            valueField = valueField_[0].FieldName
27897
                                        }
27898
                                        displayValue_ = $.grep(data_, function (r) {
27899
                                            return r.DisplayValue == '1'
27900
                                        });
27901
                                        if (displayValue_.length > 0) {
27902
                                            displayValue = displayValue_[0].FieldName
27903
                                        }
27904
                                    }
27905
                                }
27906
                            });
27907
                        }
27908
                        formfield = new MinovaUtil.MinovaES.StoreCheckboxGroup({
27909
                            //xtype: 'storecheckboxgroup',
27910
                            //allowBlank: allowblank,
27911
                            name: 'cbg' + rec.FieldName,
27912
                            nametxt: rec.FieldName,
27913
                            formname: formname_,
27914
                            nameTable: nameTable_,
27915
                            value: rec.DefaultValue,
27916
                            fieldLabel: rec.ScreenCaption,
27917
                            labelAlign: me.labelAlign,
27918
                            labelSeparator: me.labelSeparator,
27919
                            readOnly: readonly,
27920
                            //forceSelection: true,
27921
                            //anyMatch: true,
27922
                            //readOnly: readonly,
27923
                            ////labelCls: 'label-minova',
27924
                            labelWidth: labelWidth,
27925
                            //hidden: ishidden,
27926
                            //msgTarget: 'side',
27927
                            //name: rec.FieldName,
27928
                            //formname: formname_,
27929
                            //nameTable: nameTable_,
27930
                            //value: rec.DefaultValue,
27931
                            //width: '95%',
27932
                            store: Ext.create('Ext.data.Store', {
27933
                                storeId: 'store' + rec.FieldName,
27934
                                autoLoad: true,
27935
                                proxy: {
27936
                                    method: 'POST',
27937
                                    type: 'ajax',
27938
                                    url: '/UserControl/GetStore',
27939
                                    extraParams: {
27940
                                        tableName: rec.TableRef,
27941
                                        param: rec.ParamCombo
27942
                                    },
27943
                                    reader: {
27944
                                        type: 'json',
27945
                                        root: 'data',
27946
                                        totalProperty: 'data[0].TotalCount'
27947
                                    }
27948
                                }
27949
                            }),
27950
                            //formtarget: formname_,
27951
                            columns: 2,
27952
                            vertical: true,
27953
                            mapFn: function (storeItem) {
27954
                                var txfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode + ']')[0];
27955
                                var txvalue = '';
27956
                                if (txfield) txvalue = txfield.value;
27957
                                var cbfield = Ext.ComponentQuery.query('[name=' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode + ']')[0];
27958
                                var cbchecked = false;
27959
                                if (cbfield) cbchecked = (cbfield.value === 'true');
27960
                                return {
27961
                                    // Here, we define which store fields map 
27962
                                    // to which checkbox configuration property.
27963
                                    // The field "label" should map to boxLabel
27964
                                    // The field "value" should map to inputValue
27965
                                    // xtype and name are hardcoded for all checkboxes in this group.
27966
                                    xtype: 'container',
27967
                                    items: [
27968
                                        {
27969
                                            xtype: 'checkbox',
27970
                                            boxLabel: storeItem.data.ProblemDesc,
27971
                                            name: 'cb_' + rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
27972
                                            nametxt: rec.FieldName + '_CB_' + storeItem.data.ProblemCode,
27973
                                            formname: formname_,
27974
                                            nameTable: nameTable_,
27975
                                            readOnly: readonly,
27976
                                            isshowtext: storeItem.data.IsShowText,
27977
                                            inputValue: storeItem.data.ProblemCode,
27978
                                            checked: cbchecked,
27979
                                            listeners: {
27980
                                                click: {
27981
                                                    element: 'el', //bind to the underlying el property on the panel
27982
                                                    fn: function (id) {
27983
                                                        var MyComp = Ext.getCmp(this.id);
27984
                                                        var frmForm = Ext.ComponentQuery.query('[name=tx_' + this.el.component.nametxt.replace("_CB_", "_TX_") + ']')[0];
27985
                                                        if (this.el.component.isshowtext == '1') {
27986
                                                            frmForm.setHidden(!MyComp.checked);
27987
                                                            frmForm.setValue('');
27988
                                                        }
27989
                                                        var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
27990
                                                        cb_.setValue(MyComp.checked);
27991
                                                    }
27992
                                                },
27993
                                                //change: function (val) {
27994
                                                //    alert('ok');
27995
                                                //},
27996
                                            }
27997
                                        }, {
27998
                                            xtype: 'textareafield',
27999
                                            name: 'tx_' + rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
28000
                                            nametxt: rec.FieldName + '_TX_' + storeItem.data.ProblemCode,
28001
                                            formname: formname_,
28002
                                            nameTable: nameTable_,
28003
                                            readOnly: readonly,
28004
                                            width: '100%',
28005
                                            value: txvalue,
28006
                                            hidden: !((storeItem.data.IsShowText === '1') && (cbchecked)),
28007
                                            listeners: {
28008
                                                change: function (id, newValue, oldValue, eOpts) {
28009
                                                    var frmForm = Ext.ComponentQuery.query('[name=' + id.nametxt + ']')[0];
28010
                                                    frmForm.setValue(newValue);
28011
                                                },
28012
                                            }
28013
                                        }]
28014
                                };
28015
                            }
28016
                        });
28017
                    } else if (rec.SearchType == '11') //Checkbox
28018
                    {
28019
                        formfield = new Ext.Container({
28020
                            items: [
28021
                                {
28022
                                    xtype: 'checkbox',
28023
                                    boxLabel: rec.ScreenCaption,
28024
                                    name: 'cb_' + rec.FieldName,
28025
                                    nametxt: rec.FieldName,
28026
                                    hidden: ishidden,
28027
                                    readOnly: readonly,
28028
                                    tableName: rec.TableRef, //name tabel yang jadi ref-nya
28029
                                    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
28030
                                    listeners: {
28031
                                        click: {
28032
                                            element: 'el', //bind to the underlying el property on the panel
28033
                                            fn: function (id) {
28034
                                                var MyComp = Ext.getCmp(this.id);
28035
                                                var frmForm = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28036
                                                frmForm.setValue(MyComp.checked);
28037
                                            }
28038
                                        }
28039
                                    }
28040
                                },
28041
                                {
28042
                                    xtype: 'textfield',
28043
                                    name: rec.FieldName,
28044
                                    namecb: 'cb_' + rec.FieldName,
28045
                                    formname: formname_,
28046
                                    nameTable: nameTable_,
28047
                                    readOnly: readonly,
28048
                                    value: rec.DefaultValue,
28049
                                    hidden: true,
28050
                                    listeners: {
28051
                                        change: function (id, newValue, oldValue, eOpts) {
28052
                                            var cbfield = Ext.ComponentQuery.query('[name=' + id.namecb + ']')[0];
28053
                                            var cbchecked = false;
28054
                                            if (cbfield) cbchecked = (newValue === 'true');
28055
                                            cbfield.setValue(cbchecked);
28056
                                        },
28057
                                    }
28058
                                }]
28059
                            
28060
                        })
28061
                        //formfield = new Ext.form.field.Checkbox({
28062
                        //    boxLabel: rec.ScreenCaption,
28063
                        //    name: rec.FieldName,
28064
                        //    name: 'cb_' + rec.FieldName,
28065
                        //    nametxt: rec.FieldName,
28066
                        //    hidden: ishidden,
28067
                        //    readOnly: readonly,
28068
                        //    name: rec.FieldName,
28069
                        //    tableName: rec.TableRef, //name tabel yang jadi ref-nya
28070
                        //    checked: (rec.DefaultValue.toUpperCase() === 'TRUE'),
28071
                        //    listeners: {
28072
                        //        click: {
28073
                        //            element: 'el', //bind to the underlying el property on the panel
28074
                        //            fn: function (id) {
28075
                        //                var MyComp = Ext.getCmp(this.id);
28076
                        //                var cb_ = Ext.ComponentQuery.query('[name=' + this.el.component.nametxt + ']')[0];
28077
                        //                cb_.setValue(MyComp.checked);
28078
                        //            }
28079
                        //        }
28080
                        //    }
28081
                        //    //value: rec.DefaultValue,
28082
                        //})
28083
                    }
28084
                }
28085
                if (isDesk) {
28086
                    if (rec.ColumnNo == 1) {
28087
                        col1.push(formfield);
28088
                    } else if (rec.ColumnNo == 2) {
28089
                        col2.push(formfield);
28090
                    } else {
28091
                        col0.push(formfield);
28092
                    }
28093
                } else {
28094
                    if (rec.ColumnNo == 1 || rec.ColumnNo == 2) {
28095
                        col1.push(formfield);
28096
                    } else {
28097
                        col0.push(formfield);
28098
                    }
28099
                }
28100

    
28101
            });
28102
        }
28103
        Ext.applyIf(me, {
28104
            items:
28105
                [
28106
                    {
28107
                        //width: 450,
28108
                        //style: 'width: 50%',
28109
                        defaults: {
28110
                            layout: 'anchor',
28111
                            xtype: 'container',
28112
                            flex: 1,
28113
                            margin: me.marginDefault,
28114
                            //defaultType: 'textfield',
28115
                            //anchor: '100%',
28116
                            ////style: 'width: 50%',
28117
                        },
28118
                        items: col1,
28119
                        flex: 1,
28120
                    },
28121
                    {
28122
                        //width: 450,
28123
                        //style: 'width: 50%',
28124
                        defaults: {
28125
                            layout: 'anchor',
28126
                            xtype: 'container',
28127
                            flex: 1,
28128
                            margin: me.marginDefault,
28129
                            //defaultType: 'textfield',
28130
                            //anchor: '100%',
28131
                            ////style: 'width: 50%',
28132
                        },
28133
                        items: col2,
28134
                        flex: 1,
28135
                    },
28136
                    {
28137
                        items: col0,
28138
                        flex: 0,
28139
                        hidden: true
28140
                    }
28141
                ]
28142
        });
28143
        this.callParent();
28144
    }
28145
});
28146

    
28147
/*EditableGrid ESS Generator YN 20211216 */
28148
Ext.define('MinovaUtil.MinovaES.MinovaWorkflowEditableGrid2', {
28149
    extend: 'Ext.form.Panel',
28150
    alias: ['widget.minovaworkfloweditablegrid2', 'widget.workfloweditablegrid2'],
28151
    requires: [
28152
        'Ext.grid.plugin.CellEditing',
28153
        'Ext.grid.RowNumberer',
28154
        'Ext.grid.Panel',
28155
    ],
28156
    cls: 'grid-ess',
28157
    anchor: '100%',
28158
    tableName: undefined,
28159
    hideButton: undefined,
28160
    multiSelect: undefined,
28161
    formname: this.name,
28162
    bizprocid: undefined,
28163
    bizflowid: undefined,
28164
    taskid: undefined,
28165
    features: undefined,
28166
    minHeight: undefined,
28167
    maxHeight: undefined,
28168
    headerLayout: undefined,
28169
    summaryType: undefined,
28170
    initComponent: function () {
28171
        var me = this;
28172
        var isLookup = me.isLookup;
28173
        var hide_ = false;
28174
        var widthLock = 250;
28175
        var checkSelection = '';
28176
        if (me.hideButton == true) {
28177
            hide_ = true;
28178
        }
28179
        if (me.multiSelect) {
28180
            locking = false;
28181
            checkSelection = 'checkboxmodel';
28182
            widthLock = 40;
28183
        }
28184
        var tableName = me.tableName;
28185
        var features = me.features;
28186
        var cols = [];
28187
        var fieldStore = [];
28188
        var _url = 'GetAllField';
28189
        var hasil = null;
28190
        var height = me.height;
28191
        var storeID = 'store' + me.tableName;
28192
        var gridName = 'grid' + me.name;
28193
        if (me.storeName) {
28194
            storeID = me.storeName;
28195
        }
28196
        var LangID = MinovaUtil.GetLangID();
28197
        var parameter = "LangID='" + LangID + "',BizProcessID='" + me.bizprocid + "',TaskID='" + me.taskid + "',TableName='" + me.tableName + "'";
28198
        Ext.Ajax.request({
28199
            async: false,
28200
            method: 'POST',
28201
            url: '/UserControl/GetStore',
28202
            params: {
28203
                tableName: 'PDSWFSTRUCTUREFIELD',
28204
                param: parameter
28205
            },
28206
            success: function (response) {
28207
                var results = Ext.decode(response.responseText);
28208
                hasil = results.data;
28209
            }
28210
        });
28211
        cols.push({
28212
            xtype: 'rownumberer'
28213
        });
28214
        var addData = 'var data={';
28215
        if (hasil.length > 0) {
28216
            Ext.each(hasil, function (rec) {
28217
                fieldStore.push(rec.FieldName);
28218
                if (rec.FieldName != 'Sequence') {
28219
                    addData = addData + rec.FieldName + ":" + "'',";
28220
                }
28221
                var null_ = null;
28222
                var ReadOnly_ = false;
28223
                if (rec.IsRequired == '1') {
28224
                    null_ = false;
28225
                } else {
28226
                    null_ = true;
28227
                }
28228
                var Hidden_ = false;
28229
                if (rec.IsReadOnly == '1') {
28230
                    ReadOnly_ = true;
28231
                }
28232
                if (rec.IsVisible == '1') {
28233
                    switch (rec.FormatRef) {
28234
                        case "date":
28235
                            cols.push({
28236
                                xtype: 'minovadatecolumn',
28237
                                hidden: Hidden_,
28238
                                text: rec.HeaderTitle,
28239
                                dataIndex: rec.FieldName,
28240
                                filter: {
28241
                                    itemDefaults: {
28242
                                        emptyText: 'Search for...',
28243
                                    }
28244
                                },
28245
                                editor: {
28246
                                    allowBlank: null_,
28247
                                    xtype: 'datefield',
28248
                                    hideMode: 'visibility',
28249
                                    readOnly: ReadOnly_,
28250
                                    id: tableName + rec.FieldName,
28251
                                    fieldGrid: rec.FieldName,
28252
                                    nameTable: rec.TableName,
28253
                                    value: rec.DefaultValue
28254
                                }
28255
                            });
28256
                            break
28257
                        case "amount":
28258
                            cols.push({
28259
                                xtype: 'minovacurrancycolumn',
28260
                                align: 'right',
28261
                                text: rec.HeaderTitle,
28262
                                dataIndex: rec.FieldName,
28263
                                hidden: Hidden_,
28264
                                filter: {
28265
                                    itemDefaults: {
28266
                                        emptyText: 'Search for...'
28267
                                    }
28268
                                },
28269
                                editor: {
28270
                                    allowBlank: null_,
28271
                                    xtype: 'minovacurrencyfield',
28272
                                    readOnly: ReadOnly_,
28273
                                    id: tableName + rec.FieldName,
28274
                                    nameTable: rec.TableName,
28275
                                    fieldGrid: rec.FieldName,
28276
                                    fieldStyle: 'text-align:right;',
28277
                                    value: '0',
28278
                                    maxLength: rec.Length,
28279
                                }
28280
                            });
28281
                            break
28282
                        default:
28283
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY' || rec.DataRef == 'CREATEDT' || rec.DataRef == 'CHANGEDT') {
28284
                                cols.push({
28285
                                    text: rec.HeaderTitle,
28286
                                    dataIndex: rec.FieldName,
28287
                                    width: 100,
28288
                                    filter: {
28289
                                        type: 'string',
28290
                                        itemDefaults: {
28291
                                            emptyText: 'Search for...'
28292
                                        }
28293
                                    }
28294
                                });
28295
                            } else if (rec.SearchType == '0') {
28296
                                var valueField = null;
28297
                                var displayValue = null;
28298
                                var TableRef = undefined;
28299
                                if (rec.TableRef != '') {
28300
                                    TableRef = rec.TableRef;
28301
                                    Ext.Ajax.request({
28302
                                        async: false,
28303
                                        method: 'POST',
28304
                                        url: '/UserControl/GetStore',
28305
                                        params: {
28306
                                            tableName: 'SDATATABLEFIELD',
28307
                                            param: 'TableName[equal]' + rec.TableRef
28308
                                        },
28309
                                        success: function (response) {
28310
                                            var results = Ext.decode(response.responseText);
28311
                                            data_ = results.data;
28312
                                            if (data_ != undefined) {
28313
                                                valueField_ = $.grep(data_, function (r) {
28314
                                                    return r.ValueField == '1'
28315
                                                });
28316
                                                valueField = valueField_[0].FieldName
28317
                                                displayValue_ = $.grep(data_, function (r) {
28318
                                                    return r.DisplayValue == '1'
28319
                                                });
28320
                                                displayValue = displayValue_[0].FieldName
28321
                                            }
28322
                                        }
28323
                                    });
28324
                                }
28325
                                Ext.create('Ext.data.Store', {
28326
                                    storeId: 'store_' + me.tableName + rec.FieldName,
28327
                                    autoLoad: true,
28328
                                    proxy: {
28329
                                        method: 'POST',
28330
                                        type: 'ajax',
28331
                                        url: '/UserControl/GetStoreAuth',
28332
                                        extraParams: {
28333
                                            tableName: TableRef,
28334
                                            param: rec.ParamCombo,
28335
                                            menuId: MinovaUtil.GetMenuID()
28336
                                        },
28337
                                        reader: {
28338
                                            type: 'json',
28339
                                            root: 'data',
28340
                                            totalProperty: 'data[0].TotalCount'
28341
                                        }
28342
                                    }
28343
                                });
28344
                                cols.push({
28345
                                    //xtype : 'minovacombocolumn',
28346
                                    hidden: Hidden_,
28347
                                    text: rec.HeaderTitle,
28348
                                    dataIndex: rec.FieldName,
28349
                                    width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
28350
                                    summaryType: function (records) {
28351
                                        var suma = 0;
28352
                                        if (me.summaryType == 'average') {
28353
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
28354
                                            Ext.each(records, function (record, index) {
28355
                                                if (record.get(rec.FieldName)) {
28356
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
28357
                                                }
28358
                                            });
28359
                                            (records.length == 0) ? suma = 0 : suma = suma / records.length;
28360
                                        }
28361
                                        else if (me.summaryType == 'sum') {
28362
                                            // Sumar en la columna solo las lineas que estan marcadas para ser sumadas a los totales
28363
                                            Ext.each(records, function (record, index) {
28364
                                                if (record.get(rec.FieldName)) {
28365
                                                    suma = suma + parseFloat(record.get(rec.FieldName).replace(",", "."));
28366
                                                }
28367
                                            });
28368
                                        }
28369
                                        return suma;
28370
                                    },
28371
                                    //valueField : valueField,
28372
                                    //displayField : displayValue,
28373
                                    //store : 'store_' + me.tableName + rec.FieldName,
28374
                                    editor: {
28375
                                        allowBlank: null_,
28376
                                        xtype: 'minovacombobox',
28377
                                        readOnly: ReadOnly_,
28378
                                        id: rec.TableName + rec.FieldName,
28379
                                        nameTable: rec.TableName,
28380
                                        fieldGrid: rec.FieldName,
28381
                                        valueField: valueField,
28382
                                        displayField: displayValue,
28383
                                        store: 'store_' + me.tableName + rec.FieldName,
28384
                                        value: rec.DefaultValue
28385
                                    },
28386
                                    renderer: function (value) {
28387
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
28388
                                        var index = store.find(valueField, value);
28389
                                        var val = "";
28390
											//SASWANTO 6JULI2022 BEGIN
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]' + 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
											//SASWANTO 6JULI2022 End
28411
										if (custumFunc) {
28412
											eval(custumFunc)
28413
										}												
28414
                                        if (index != -1) {
28415
                                            var rc = store.getAt(index);
28416
                                            val = rc.get(displayValue);
28417
                                        } else {
28418
                                            val = value;
28419
                                        }
28420
                                        return val;
28421
                                    },
28422
                                    filter: {
28423
                                        type: 'list',
28424
                                        itemDefaults: {
28425
                                            emptyText: 'Search for...'
28426
                                        }
28427
                                    }
28428
                                });
28429
                            } else if (rec.SearchType == '5') {
28430
                                var valueField = null;
28431
                                var displayValue = null;
28432
                                var AdditionaldisplayValue = null;
28433
                                var TableRef = undefined;
28434
                                if (rec.TableRef != '') {
28435
                                    TableRef = rec.TableRef;
28436
                                    Ext.Ajax.request({
28437
                                        async: false,
28438
                                        method: 'POST',
28439
                                        url: '/UserControl/GetStore',
28440
                                        params: {
28441
                                            tableName: 'SDATATABLEFIELD',
28442
                                            param: 'TableName[equal]' + rec.TableRef
28443
                                        },
28444
                                        success: function (response) {
28445
                                            var results = Ext.decode(response.responseText);
28446
                                            data_ = results.data;
28447
                                            if (data_ != undefined) {
28448
                                                valueField_ = $.grep(data_, function (r) {
28449
                                                    return r.ValueField == '1'
28450
                                                });
28451
                                                if (valueField_.length > 0) {
28452
                                                    valueField = valueField_[0].FieldName
28453
                                                }
28454

    
28455
                                                displayValue_ = $.grep(data_, function (r) {
28456
                                                    return r.DisplayValue == '1' || r.DisplayValue == '2'
28457
                                                });
28458
                                                if (displayValue_.length > 0) {
28459
                                                    displayValue = displayValue_[0].FieldName;
28460
                                                }
28461
                                                if (displayValue_.length >= 2) {
28462
                                                    AdditionaldisplayValue = displayValue_[1].FieldName
28463
                                                }
28464
                                            }
28465
                                        }
28466
                                    });
28467
                                }
28468
                                Ext.create('Ext.data.Store', {
28469
                                    storeId: 'store_' + me.tableName + rec.FieldName,
28470
                                    autoLoad: true,
28471
                                    proxy: {
28472
                                        method: 'POST',
28473
                                        type: 'ajax',
28474
                                        url: '/UserControl/GetStoreAuth',
28475
                                        extraParams: {
28476
                                            tableName: TableRef,
28477
                                            param: rec.ParamCombo,
28478
                                            menuId: MinovaUtil.GetMenuID()
28479
                                        },
28480
                                        reader: {
28481
                                            type: 'json',
28482
                                            root: 'data',
28483
                                            totalProperty: 'data[0].TotalCount'
28484
                                        }
28485
                                    }
28486
                                });
28487
                                cols.push({
28488
                                    //xtype : 'minovacombocolumn',
28489
                                    hidden: Hidden_,
28490
                                    text: rec.HeaderTitle,
28491
                                    dataIndex: rec.FieldName,
28492
                                    //valueField : valueField,
28493
                                    //displayField : displayValue,
28494
                                    //store : 'store_' + me.tableName + rec.FieldName,
28495
                                    tpl: Ext.create('Ext.XTemplate',
28496
                                        '<ul class="x-list-plain"><tpl for=".">',
28497
                                        '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
28498
                                        '</tpl></ul>'),
28499
                                    displayTpl: Ext.create('Ext.XTemplate',
28500
                                        '<tpl for=".">',
28501
                                        '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
28502
                                        '</tpl>'),
28503
                                    editor: {
28504
                                        allowBlank: null_,
28505
                                        xtype: 'combobox',
28506
                                        readOnly: ReadOnly_,
28507
                                        id: rec.TableName + rec.FieldName,
28508
                                        nameTable: rec.TableName,
28509
                                        fieldGrid: rec.FieldName,
28510
                                        valueField: valueField,
28511
                                        displayField: displayValue,
28512
                                        store: 'store_' + me.tableName + rec.FieldName,
28513
                                        value: rec.DefaultValue,
28514
                                        tpl: Ext.create('Ext.XTemplate',
28515
                                            '<ul class="x-list-plain"><tpl for=".">',
28516
                                            '<li role="option" class="x-boundlist-item">{' + AdditionaldisplayValue + '} - {' + displayValue + '}</li>',
28517
                                            '</tpl></ul>'),
28518
                                        displayTpl: Ext.create('Ext.XTemplate',
28519
                                            '<tpl for=".">',
28520
                                            '{' + AdditionaldisplayValue + '} - {' + displayValue + '}',
28521
                                            '</tpl>')
28522
                                    },
28523
                                    renderer: function (value) {
28524
                                        var store = Ext.data.StoreManager.lookup('store_' + me.tableName + rec.FieldName);
28525
                                        var index = store.find(valueField, value);
28526
                                        var val = "";
28527
                                        if (index != -1) {
28528
                                            var rc = store.getAt(index);
28529
                                            //val = rc.get(displayValue);
28530
                                            val = rc.get(AdditionaldisplayValue) + ' - ' + rc.get(displayValue);
28531
                                        } else {
28532
                                            val = value;
28533
                                        }
28534
                                        return val;
28535
                                    },
28536
                                    filter: {
28537
                                        type: 'list',
28538
                                        itemDefaults: {
28539
                                            emptyText: 'Search for...'
28540
                                        }
28541
                                    }
28542
                                });
28543
                            } else if (rec.SearchType == '2') {
28544
                                var triger = (rec.TriggerCombo).split('$');
28545
                                var targetField_ = triger[0];
28546
                                var fieldValue_ = triger[1];
28547
                                cols.push({
28548
                                    text: rec.HeaderTitle,
28549
                                    hidden: Hidden_,
28550
                                    dataIndex: rec.FieldName,
28551
                                    filter: {
28552
                                        itemDefaults: {
28553
                                            emptyText: 'Search for...'
28554
                                        }
28555
                                    },
28556
                                    editor: {
28557
                                        allowBlank: null_,
28558
                                        xtype: 'minovalookupgrid',
28559
                                        readOnly: ReadOnly_,
28560
                                        isGrid: true,
28561
                                        fieldTarget: targetField_,
28562
                                        fieldValue: fieldValue_,
28563
                                        isGrid: true,
28564
                                        id: tableName + rec.FieldName,
28565
                                        tableName: rec.TableRef,
28566
                                        triggerCls: 'x-form-search-trigger',
28567
                                        vtype: 'alphanum',
28568
                                        nameTable: rec.TableName,
28569
                                        fieldGrid: rec.FieldName,
28570
                                        listeners: {
28571
                                            change: function (val) {
28572
                                                var custumFunc = rec.SelectFunction;
28573
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28574
                                                    Ext.Ajax.request({
28575
                                                        async: false,
28576
                                                        method: 'POST',
28577
                                                        url: '/UserControl/GetStore',
28578
                                                        params: {
28579
                                                            tableName: 'PCMFUNC',
28580
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28581
                                                        },
28582
                                                        success: function (response) {
28583
                                                            var results = Ext.decode(response.responseText);
28584
                                                            data_ = results.data[0];
28585
                                                            if (data_ != undefined) {
28586
                                                                custumFunc = data_.FunctionCode;
28587
                                                            }
28588
                                                        }
28589
                                                    });
28590
                                                }
28591
                                                if (custumFunc) {
28592
                                                    eval(custumFunc)
28593
                                                }
28594
                                            }
28595
                                        }
28596
                                    }
28597
                                });
28598
                            } else if (rec.SearchType == '3') {
28599
                                cols.push({
28600
                                    text: rec.HeaderTitle,
28601
                                    hidden: Hidden_,
28602
                                    dataIndex: rec.FieldName,
28603
                                    filter: {
28604
                                        itemDefaults: {
28605
                                            emptyText: 'Search for...'
28606
                                        }
28607
                                    },
28608
                                    editor: {
28609
                                        allowBlank: null_,
28610
                                        xtype: 'MinovaLookupTree',
28611
                                        readOnly: ReadOnly_,
28612
                                        id: tableName + rec.FieldName,
28613
                                        tableName: rec.TableRef,
28614
                                        triggerCls: 'x-form-search-trigger',
28615
                                        vtype: 'alphanum',
28616
                                        treeSructure: rec.SearchFunction,
28617
                                        objClassValue: rec.ParamCombo,
28618
                                        nameTable: rec.TableName,
28619
                                        fieldGrid: rec.FieldName,
28620
                                        listeners: {
28621
                                            change: function (val) {
28622
                                                var custumFunc = rec.SelectFunction;
28623
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28624
                                                    Ext.Ajax.request({
28625
                                                        async: false,
28626
                                                        method: 'POST',
28627
                                                        url: '/UserControl/GetStore',
28628
                                                        params: {
28629
                                                            tableName: 'PCMFUNC',
28630
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28631
                                                        },
28632
                                                        success: function (response) {
28633
                                                            var results = Ext.decode(response.responseText);
28634
                                                            data_ = results.data[0];
28635
                                                            if (data_ != undefined) {
28636
                                                                custumFunc = data_.FunctionCode;
28637
                                                            }
28638
                                                        }
28639
                                                    });
28640
                                                }
28641
                                                if (custumFunc) {
28642
                                                    eval(custumFunc)
28643
                                                }
28644
                                            }
28645
                                        }
28646
                                    }
28647
                                });
28648
                            } 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) {
28649
                                var triger = (rec.TriggerCombo).split('&');
28650
                                var targetField_ = triger[0];
28651
                                var fieldValue_ = triger[0];
28652
                                cols.push({
28653
                                    text: rec.HeaderTitle,
28654
                                    hidden: Hidden_,
28655
                                    dataIndex: rec.FieldName,
28656
                                    filter: {
28657
                                        itemDefaults: {
28658
                                            emptyText: 'Search for...'
28659
                                        }
28660
                                    },
28661
                                    editor: {
28662
                                        allowBlank: null_,
28663
                                        xtype: 'lookupemployee',
28664
                                        readOnly: ReadOnly_,
28665
                                        isGrid: true,
28666
                                        fieldTarget: targetField_,
28667
                                        fieldValue: fieldValue_,
28668
                                        isGrid: true,
28669
                                        id: tableName + rec.FieldName,
28670
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
28671
                                        triggerCls: 'x-form-search-trigger',
28672
                                        vtype: 'alphanum', // disable space
28673
                                        nameTable: rec.TableName,
28674
                                        fieldGrid: rec.FieldName,
28675
                                        listeners: {
28676
                                            change: function (val) {
28677
                                                var custumFunc = rec.SelectFunction;
28678
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28679
                                                    Ext.Ajax.request({
28680
                                                        async: false,
28681
                                                        method: 'POST',
28682
                                                        url: '/UserControl/GetStore',
28683
                                                        params: {
28684
                                                            tableName: 'PCMFUNC',
28685
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28686
                                                        },
28687
                                                        success: function (response) {
28688
                                                            var results = Ext.decode(response.responseText);
28689
                                                            data_ = results.data[0];
28690
                                                            if (data_ != undefined) {
28691
                                                                custumFunc = data_.FunctionCode;
28692
                                                            }
28693
                                                        }
28694
                                                    });
28695
                                                }
28696
                                                if (custumFunc) {
28697
                                                    eval(custumFunc)
28698
                                                }
28699
                                            }
28700
                                        }
28701
                                    }
28702
                                });
28703
                            } else if (rec.SearchType == '4' && isLookup != true) {
28704
                                cols.push({
28705
                                    text: rec.HeaderTitle,
28706
                                    hidden: Hidden_,
28707
                                    dataIndex: rec.FieldName,
28708
                                    filter: {
28709
                                        itemDefaults: {
28710
                                            emptyText: 'Search for...'
28711
                                        }
28712
                                    },
28713
                                    editor: {
28714
                                        allowBlank: null_,
28715
                                        xtype: 'lookupemployee',
28716
                                        readOnly: ReadOnly_,
28717
                                        isGrid: true,
28718
                                        fieldTarget: targetField_,
28719
                                        fieldValue: fieldValue_,
28720
                                        isGrid: true,
28721
                                        id: tableName + rec.FieldName,
28722
                                        tableName: rec.TableRef, //name tabel yang jadi ref-nya
28723
                                        triggerCls: 'x-form-search-trigger',
28724
                                        vtype: 'alphanum', // disable space
28725
                                        nameTable: rec.TableName,
28726
                                        fieldGrid: rec.FieldName,
28727
                                        listeners: {
28728
                                            change: function (val) {
28729
                                                var custumFunc = rec.SelectFunction;
28730
                                                if (custumFunc.toLowerCase().substring(0, 2) == 'fn') {
28731
                                                    Ext.Ajax.request({
28732
                                                        async: false,
28733
                                                        method: 'POST',
28734
                                                        url: '/UserControl/GetStore',
28735
                                                        params: {
28736
                                                            tableName: 'PCMFUNC',
28737
                                                            param: 'FuncName[equal]' + rec.custumFunc + ',Active[=]1'
28738
                                                        },
28739
                                                        success: function (response) {
28740
                                                            var results = Ext.decode(response.responseText);
28741
                                                            data_ = results.data[0];
28742
                                                            if (data_ != undefined) {
28743
                                                                custumFunc = data_.FunctionCode;
28744
                                                            }
28745
                                                        }
28746
                                                    });
28747
                                                }
28748
                                                if (custumFunc) {
28749
                                                    eval(custumFunc)
28750
                                                }
28751
                                            }
28752
                                        }
28753
                                    }
28754
                                });
28755
                            } else if (rec.FixedValue != '') { // add by taufan
28756
                                cols.push({
28757
                                    text: rec.HeaderTitle,
28758
                                    hidden: Hidden_,
28759
                                    dataIndex: rec.FieldName,
28760
                                    filter: {
28761
                                        itemDefaults: {
28762
                                            emptyText: 'Search for...'
28763
                                        }
28764
                                    },
28765
                                    editor: {
28766
                                        allowBlank: null_,
28767
                                        xtype: 'minovafixvalue',
28768
                                        readOnly: ReadOnly_,
28769
                                        id: rec.TableName + rec.FieldName,
28770
                                        name: rec.TableName + rec.FieldName,
28771
                                        nameTable: rec.TableName,
28772
                                        fieldGrid: rec.FieldName,
28773
                                        fixedValue: rec.FixedValue,
28774
                                        valueField: 'code',
28775
                                        displayField: 'desc',
28776
                                        value: rec.DefaultValue
28777
                                    },
28778
                                    renderer: function (value) {
28779
                                        var val = "";
28780
                                        var storeData = [];
28781
                                        var str = rec.FixedValue;
28782
                                        var hasil = str.split('||');
28783
                                        hasil.forEach(function (h) {
28784
                                            store_ = h.split('=')
28785
                                            storeData.push({
28786
                                                code: store_[0],
28787
                                                desc: store_[1]
28788
                                            });
28789
                                        });
28790
                                        var item = storeData.find(x => x.code == value);
28791
                                        if (item != undefined) {
28792
                                            val = item.desc;
28793
                                        }
28794
                                        return val;
28795
                                    }
28796
                                });
28797
                            } else {
28798
                                var _custumFunc = null;
28799
                                Ext.Ajax.request({
28800
                                    async: false,
28801
                                    method: 'POST',
28802
                                    url: '/UserControl/GetStore',
28803
                                    params: {
28804
                                        tableName: 'SDATATABLEFIELD',
28805
                                        param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
28806
                                    },
28807
                                    success: function (response) {
28808
                                        var results = Ext.decode(response.responseText);
28809
                                        data_ = results.data[0];
28810
                                        if (data_ != undefined) {
28811
                                            _custumFunc = data_.SelectFunction;
28812
                                        }
28813
                                    }
28814
                                });
28815
                                _xtype = 'textfield';
28816
                                if (rec.Length > 250) {
28817
                                    _xtype = 'textareafield';
28818
                                    cols.push({
28819
                                        text: rec.HeaderTitle,
28820
                                        xtype: 'gridcolumn',
28821
                                        hidden: Hidden_,
28822
                                        dataIndex: rec.FieldName,
28823
                                        filter: {
28824
                                            itemDefaults: {
28825
                                                emptyText: 'Search for...'
28826
                                            }
28827
                                        },
28828
                                        cellWrap: true,
28829
                                        width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
28830
                                        editor: {
28831
                                            allowBlank: null_,
28832
                                            xtype: _xtype,
28833
                                            readOnly: ReadOnly_,
28834
                                            id: tableName + rec.FieldName,
28835
                                            nameTable: rec.TableName,
28836
                                            fieldGrid: rec.FieldName,
28837
                                            value: rec.DefaultValue,
28838
                                            maxLength: rec.Length,
28839
                                            grow: true,
28840
                                            listeners: {
28841
                                                //initialize: function (editor) {
28842
                                                //    editor.ownerCt.alignTo(editor.ownerCt.boundEl, 'tl-tl');
28843
                                                //    editor.ownerCt.alignment = 'tl-tl';
28844
                                                //},
28845
                                                afterrender: function () {
28846
                                                    var me = this;
28847
                                                    //me.el.swallowEvent(['keypress', 'keydown']);
28848
                                                }
28849
                                            }
28850
                                        },
28851
                                        renderer: function (v) {
28852
                                            result = v.replace(/\r\n\r\n/g, "</p><p>").replace(/\n\n/g, "</p><p>");
28853
                                            result = result.replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
28854
                                            result = result.replace(/\r\t/g, "&emsp;").replace(/\t/g, "&emsp;");
28855
                                            return result;
28856
                                        }
28857
                                    });
28858
                                }
28859
                                else {
28860
                                    cols.push({
28861
                                        text: rec.HeaderTitle,
28862
                                        xtype: 'gridcolumn',
28863
                                        hidden: Hidden_,
28864
                                        dataIndex: rec.FieldName,
28865
                                        filter: {
28866
                                            itemDefaults: {
28867
                                                emptyText: 'Search for...'
28868
                                            }
28869
                                        },
28870
                                        cellWrap: true,
28871
                                        width: (rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
28872
                                        editor: {
28873
                                            allowBlank: null_,
28874
                                            xtype: _xtype,
28875
                                            readOnly: ReadOnly_,
28876
                                            id: tableName + rec.FieldName,
28877
                                            nameTable: rec.TableName,
28878
                                            fieldGrid: rec.FieldName,
28879
                                            value: rec.DefaultValue,
28880
                                            maxLength: rec.Length,
28881
                                            grow: true,
28882
                                            listeners: {
28883
                                                change: function (val) {
28884
                                                    if (_custumFunc) {
28885
                                                        eval(_custumFunc)
28886
                                                    }
28887
                                                }
28888
                                                /*change: function (val) {
28889
                                                    var custumFunc = null;
28890
                                                    Ext.Ajax.request({
28891
                                                        async: false,
28892
                                                        method: 'POST',
28893
                                                        url: '/UserControl/GetStore',
28894
                                                        params: {
28895
                                                            tableName: 'SDATATABLEFIELD',
28896
                                                            param: 'FieldName[equal]' + rec.FieldName + ',TableName[equal]' + me.tableName
28897
                                                        },
28898
                                                        success: function (response) {
28899
                                                            var results = Ext.decode(response.responseText);
28900
                                                            data_ = results.data[0];
28901
                                                            if (data_ != undefined) {
28902
                                                                custumFunc = data_.SelectFunction;
28903
                                                                //console.log(data_)
28904
                                                            }
28905
                                                        }
28906
                                                    });
28907
    
28908
                                                    if (custumFunc) {
28909
                                                        eval(custumFunc)
28910
                                                    }
28911
                                                } */
28912
                                            }
28913
                                        }
28914
                                    });
28915
                                }
28916
                            }
28917
                            break
28918
                    }
28919
                } else {
28920
                    cols.push({
28921
                        text: rec.HeaderTitle,
28922
                        hidden: Hidden_,
28923
                        dataIndex: rec.FieldName,
28924
                        hidden: true,
28925
                        editor: {
28926
                            allowBlank: true,
28927
                            xtype: 'textfield',
28928
                            readOnly: ReadOnly_,
28929
                            id: tableName + rec.FieldName,
28930
                            nameTable: rec.TableName,
28931
                            fieldGrid: rec.FieldName,
28932
                            value: rec.DefaultValue
28933
                        },
28934
                        filter: {
28935
                            itemDefaults: {
28936
                                emptyText: 'Search for...'
28937
                            }
28938
                        }
28939
                    });
28940
                }
28941
            });
28942

    
28943
        };        
28944
        //cols.push({
28945
        //    xtype: 'actioncolumn',
28946
        //    text: 'Edit',
28947
        //    maxWidth: 150,
28948
        //    minWidth: 50,
28949
        //    border: false,
28950
        //    itemId: 'startEditActionColumn',
28951
        //    align: 'center',
28952
        //    items: [
28953
        //        {
28954
        //            iconCls: 'x-fa fa-pencil-square-o',
28955
        //            handler: function (grid, rowIndex, colIndex) {
28956
        //                grid.editingPlugin.startEdit(rowIndex, 0);
28957
        //            }
28958
        //        }
28959
        //    ]
28960
        //});
28961
        addData = addData + "}";
28962
        Ext.applyIf(me, {
28963
            items: [{
28964
                xtype: 'grid',
28965
                id: gridName,
28966
                name: gridName,
28967
                height: height,
28968
                minHeight: me.minHeight,
28969
                maxHeight: me.maxHeight,
28970
                addFlag: true,
28971
                deleteFlag: true,
28972
                store: Ext.create('Ext.data.Store', {
28973
                    storeId: storeID,
28974
                    fields: fieldStore,
28975
                    //groupField: 'QuestionGroup',
28976
                    grouper: {
28977
                        sortProperty: 'SeqQuest',
28978
                        groupFn: function (record) {
28979
                            return record.get('QuestionGroup');
28980
                        }
28981
                    },
28982
                    proxy: {
28983
                        method: 'POST',
28984
                        type: 'ajax',
28985
                        url: '',
28986
                        reader: {
28987
                            type: 'json',
28988
                            root: 'data'
28989
                        }
28990
                    }
28991
                }),
28992
                dockedItems: [{
28993
                    xtype: 'toolbar',
28994
                    items: [{
28995
                        text: 'Add',
28996
                        hidden: hide_,
28997
                        name: tableName + 'Add',
28998
                        iconCls: 'fa-plus-circle',
28999
                        style: 'font-family: FontAwesome',
29000
                        handler: function () {
29001
                            var grid = Ext.getCmp(gridName);
29002
                            if (grid.addFlag === true) {
29003
                                var store = Ext.StoreMgr.lookup(storeID)
29004
                                idx = store.getCount();
29005
                                var action = getParam('action');
29006
                                var data = '';
29007
                                var Sequence = 0;
29008
                                if (idx == 0) {
29009
                                    Sequence = 1;
29010
                                } else {
29011
                                    Sequence = 1 + idx;
29012
                                }
29013
                                var seq = 'Sequence';
29014
                                var SequenceValue = Sequence;
29015
                                eval(addData);
29016
                                data[seq] = SequenceValue;
29017
                                store.insert(idx, data);
29018
                            }
29019
                        }
29020
                    }, {
29021
                        text: 'Delete',
29022
                        hidden: hide_,
29023
                        name: tableName + 'DeleteText',
29024
                        iconCls: 'fa-trash-o',
29025
                        style: 'font-family: FontAwesome',
29026
                        handler: function () {
29027
                            var grid = Ext.getCmp(gridName);
29028
                            if (grid.deleteFlag === true) {
29029
                                var me = this,
29030
                                    store = Ext.StoreMgr.lookup(storeID)
29031
                                var grid = Ext.getCmp(gridName);
29032
                                Ext.MessageBox.show({
29033
                                    title: 'Remove tab',
29034
                                    msg: "This will remove. Do you want to continue?",
29035
                                    buttons: Ext.MessageBox.YESNO,
29036
                                    fn: function (choice) {
29037
                                        console.log(choice);
29038
                                        if (choice === 'yes') {
29039
                                            var selection = grid.getView().getSelectionModel().getSelection()[0];
29040
                                            if (selection) {
29041
                                                store.remove(selection);
29042
                                            }
29043
                                        }
29044
                                    }
29045
                                });
29046
                            }
29047
                        }
29048
                        },
29049
                        {
29050
                            xtype: 'label',
29051
                            name: tableName + 'Label',
29052
							id: tableName + 'Label', //YN 220316
29053
							hidden: true, //YN 220316
29054
                            html: '<i>*Please double click on the cell/row to edit content.</i>'
29055
                        }]
29056
                }
29057
                ],
29058
                columns: {
29059
                    defaults: {
29060
                        menuDisabled: true
29061
                    },
29062
                    items: cols
29063
                },
29064
                //selModel: 'rowmodel',
29065
                selType: 'rowmodel', //checkSelection,
29066
                plugins: [
29067
                    Ext.create('Ext.grid.plugin.CellEditing', {
29068
                        clicksToEdit: 2
29069
                    })
29070
                ],
29071
                //plugins: {
29072
                //    //ptype: 'actionColumnRowEditing', //rowediting
29073
                //    //pluginId: 'rowEditing',
29074
                //    ptype: 'cellediting',
29075
                //    //hiddenColumnsOnEdit: ['startEditActionColumn'],
29076
                //    clicksToEdit: 2,
29077
                //    //saveButtonIconCls: 'x-fa fa-floppy-o',
29078
                //    listeners: {}
29079
                //},
29080
                //listeners: {
29081
                //    'beforeedit': function (editor) {
29082
                //        editor.getEditor().floatingButtons.items.items[0].hide();
29083
                //        editor.getEditor().floatingButtons.items.items[1].hide();
29084
                //    }
29085
                //},
29086
                features: features,
29087
                viewConfig: {
29088
                    listeners: {
29089
                        refresh: function (dataview) {
29090
                            Ext.each(dataview.panel.columns, function (column) {
29091
                                column.autoSize();
29092
                                column.setWidth(column.width + 20); //YN 220316
29093
                            })
29094
                        }
29095
                    }
29096
                }
29097
            }
29098
            ]
29099
        });
29100
        me.callParent(arguments);
29101
    }
29102
});
29103

    
29104
/*Grid Display ESS Generator YN 20211216 */
29105
Ext.define('MinovaUtil.MinovaES.MinovaGridDisplay', {
29106
    extend: 'Ext.grid.Panel',
29107
    requires: ['Ext.grid.RowNumberer'],
29108
    alias: 'widget.minovagriddisplay',
29109
    //alternateClassName : 'Ext.grid.MinovaGrid',
29110
    tableName: undefined,
29111
    isLookup: undefined,
29112
    param: undefined,
29113
    pagesize: undefined,
29114
    storeName: undefined,
29115
    layoutType: undefined,
29116
    enableLocking: true,
29117
    initComponent: function () {
29118
        var me = this;
29119
        var cols_ = [];
29120
        var fieldeditor = {};
29121
        var hasil = null;
29122
        var autoLoad = true;
29123
        var LangID = MinovaUtil.GetLangID();
29124
        parameter = null;
29125
        if (me.isLookup == true || isLookup == 1 || isLookup == 'Y') {
29126
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "',LookupGrid='1'"
29127
        } else {
29128
            parameter = "LangID='" + LangID + "',TableName='" + me.tableName + "'"
29129
        }
29130
        Ext.Ajax.request({
29131
            async: false,
29132
            method: 'POST',
29133
            url: '/UserControl/GetStore',
29134
            params: {
29135
                tableName: 'PDSBS0007',
29136
                param: parameter
29137
            },
29138
            success: function (response) {
29139
                var results = Ext.decode(response.responseText);
29140
                hasil = results.data;
29141
            }
29142
        });
29143
        if (hasil.length > 0) {
29144
            Ext.each(hasil, function (rec) {
29145
                var null_ = null;
29146
                if (rec.IsPrimaryKey == true) {
29147
                    null_ = false;
29148
                }
29149
                if (rec.IsRequired == true) {
29150
                    null_ = false;
29151
                } else {
29152
                    null_ = true;
29153
                }
29154
                if (rec.GridView == 1) {
29155
                    switch (rec.FormatRef) {
29156
                        case "date":
29157
                            cols_.push({
29158
                                xtype: 'minovadatecolumn',
29159
                                text: rec.HeaderTitle,
29160
                                dataIndex: rec.FieldName,
29161
                                width: 100,
29162
                                filter: {
29163
                                    type: 'date',
29164
                                    itemDefaults: {
29165
                                        emptyText: 'Search for...'
29166
                                    }
29167
                                }
29168
                            });
29169
                            break
29170
                        case "amountencrypt":
29171
                            cols_.push({
29172
                                xtype: 'minovaamountcolumn',
29173
                                text: rec.HeaderTitle,
29174
                                dataIndex: rec.FieldName,
29175
                                align: 'right',
29176
                                width: 100,
29177
                                filter: {
29178
                                    type: 'string',
29179
                                    itemDefaults: {
29180
                                        emptyText: 'Search for...'
29181
                                    }
29182
                                }
29183
                            });
29184
                            break
29185
                        case "amount":
29186
                            cols_.push({
29187
                                xtype: 'minovacurrancycolumn',
29188
                                text: rec.HeaderTitle,
29189
                                dataIndex: rec.FieldName,
29190
                                align: 'right',
29191
                                width: 100,
29192
                                filter: {
29193
                                    type: 'number',
29194
                                    itemDefaults: {
29195
                                        emptyText: 'Search for...'
29196
                                    }
29197
                                }
29198
                            });
29199
                            break
29200
                        case "datetime":
29201
                            cols_.push({
29202
                                xtype: 'minovadatetimecolumn',
29203
                                text: rec.HeaderTitle,
29204
                                dataIndex: rec.FieldName,
29205
                                width: 140,
29206
                                filter: {
29207
                                    type: 'string',
29208
                                    itemDefaults: {
29209
                                        emptyText: 'Search for...'
29210
                                    }
29211
                                }
29212
                            });
29213
                            break
29214
                        default:
29215
                            if (rec.DataRef == 'CREATEBY' || rec.DataRef == 'CHANGEBY') {
29216
                                cols_.push({
29217
                                    text: rec.HeaderTitle,
29218
                                    dataIndex: rec.FieldName,
29219
                                    width: 100,
29220
                                    filter: {
29221
                                        type: 'string',
29222
                                        itemDefaults: {
29223
                                            emptyText: 'Search for...'
29224
                                        }
29225
                                    }
29226
                                });
29227
                            } else if (rec.SearchType == '2') {
29228
                                cols_.push({
29229
                                    xtype: 'minovalookupcolumn',
29230
                                    text: rec.HeaderTitle,
29231
                                    tableName: rec.TableRef,
29232
                                    dataIndex: rec.FieldName,
29233
                                    filter: {
29234
                                        itemDefaults: {
29235
                                            emptyText: 'Search for...'
29236
                                        }
29237
                                    }
29238
                                });
29239
                            } else if (rec.TableRef != "") {
29240
                                if (rec.TableRef != null) {
29241
                                    var valueField = null;
29242
                                    Ext.Ajax.request({
29243
                                        async: false,
29244
                                        method: 'POST',
29245
                                        url: '/UserControl/GetStore',
29246
                                        params: {
29247
                                            tableName: 'SDATATABLEFIELD',
29248
                                            param: 'ValueField[equal]1,TableName[equal]' + rec.TableRef
29249
                                        },
29250
                                        success: function (response) {
29251
                                            var results = Ext.decode(response.responseText);
29252
                                            data_ = results.data[0];
29253
                                            if (data_ != undefined) {
29254
                                                valueField = data_.FieldName;
29255
                                            }
29256
                                        }
29257
                                    });
29258

    
29259
                                    displayValue = null;
29260
                                    Ext.Ajax.request({
29261
                                        async: false,
29262
                                        method: 'POST',
29263
                                        url: '/UserControl/GetStore',
29264
                                        params: {
29265
                                            tableName: 'SDATATABLEFIELD',
29266
                                            param: 'DisplayValue[equal]1,TableName[equal]' + rec.TableRef
29267
                                        },
29268
                                        success: function (response) {
29269
                                            var results = Ext.decode(response.responseText);
29270
                                            data_ = results.data[0];
29271
                                            if (data_ != undefined) {
29272
                                                displayValue = data_.FieldName;
29273
                                                //console.log(data_)
29274
                                            }
29275
                                        }
29276
                                    });
29277
                                    var store_ = Ext.StoreMgr.lookup('store_' + rec.FieldName);
29278
                                    var count_ = 0;
29279
                                    if (store_) {
29280
                                        count_ = store_.count();
29281
                                    }
29282
                                    if (count_ == 0) {
29283
                                        Ext.create('Ext.data.Store', {
29284
                                            storeId: 'store_' + rec.FieldName,
29285
                                            autoLoad: true,
29286
                                            proxy: {
29287
                                                method: 'POST',
29288
                                                type: 'ajax',
29289
                                                url: '/UserControl/GetStore',
29290
                                                extraParams: {
29291
                                                    tableName: rec.TableRef,
29292
                                                    param: rec.ParamCombo
29293
                                                },
29294
                                                reader: {
29295
                                                    type: 'json',
29296
                                                    root: 'data',
29297
                                                    totalProperty: 'data[0].TotalCount'
29298
                                                }
29299
                                            }
29300
                                        })
29301
                                    }
29302
                                    cols_.push({
29303
                                        xtype: 'minovacombocolumn',
29304
                                        text: rec.HeaderTitle,
29305
                                        dataIndex: rec.FieldName,
29306
                                        valueField: valueField,
29307
                                        displayField: displayValue,
29308
                                        store: 'store_' + rec.FieldName,
29309
                                        filter: {
29310
                                            type: 'list',
29311
                                            itemDefaults: {
29312
                                                emptyText: 'Search for...'
29313
                                            }
29314
                                        }
29315
                                    });
29316
                                }
29317

    
29318
                            } else {
29319
                                cols_.push({
29320
                                    text: rec.HeaderTitle,
29321
                                    dataIndex: rec.FieldName,
29322
                                    width: rec.Length * 6.5 + 20, //(rec.Length * 6.5 + 20) > 300 ? 300 : rec.Length * 6.5 + 30,
29323
                                    flex: ((rec.Length * 6.5 + 20) >= 800)?1:0,
29324
                                    //autoSizeColumn: true,
29325
                                    cellWrap: true,
29326
                                    hidden: (rec.IsHidden=='1')? true:false,
29327
                                    filter: {
29328
                                        itemDefaults: {
29329
                                            emptyText: 'Search for...'
29330
                                        }
29331
                                    }
29332
                                });
29333
                            }
29334
                            break
29335
                    }
29336
                }
29337
                else {
29338
                    cols_.push({
29339
                        text: rec.HeaderTitle,
29340
                        dataIndex: rec.FieldName,
29341
                        hidden: true,
29342
                        filter: {
29343
                            itemDefaults: {
29344
                                emptyText: 'Search for...'
29345
                            }
29346
                        }
29347
                    });
29348
                }
29349
            });
29350
        };
29351
        var param_ = me.param;
29352
        if (param_ == undefined) {
29353
            param_ = ''
29354
        }
29355

    
29356
        var jsStoreGrid = new Ext.create('Ext.data.Store', {
29357
            storeId: me.storeName,
29358
            autoLoad: false,
29359
            proxy: {
29360
                method: 'POST',
29361
                type: 'ajax',
29362
                url: '/UserControl/GetStore',
29363
                extraParams: {
29364
                    tableName: me.tableName,
29365
                    param: param_
29366
                },
29367
                reader: {
29368
                    type: 'json',
29369
                    root: 'data',
29370
                    totalProperty: 'data[0].TotalCount'
29371
                }
29372
            }
29373
        });
29374

    
29375
        Ext.applyIf(me, {
29376
            defaults: {
29377
                autoSizeColumn: true,
29378
            },
29379
            columns: cols_,
29380
            store: jsStoreGrid,
29381
            viewConfig: {
29382
                listeners: {
29383
                    refresh: function (dataview) {
29384
                        Ext.each(dataview.panel.columns, function (column) {
29385
                            if (column.autoSizeColumn === true)
29386
                                column.autoSize();
29387
                        })
29388
                    }
29389
                }
29390
            },
29391
        });
29392
        me.callParent(arguments);
29393
    }
29394

    
29395
});
29396

    
29397
/*https://fiddle.sencha.com/#fiddle/1544&view/editor */
29398
Ext.define('MinovaUtil.MinovaES.StoreCheckboxGroup', {
29399
    extend: 'Ext.form.CheckboxGroup',
29400
    xtype: 'storecheckboxgroup', // <- this "xtype" is a unique name of the component.
29401
    name: undefined,
29402
    nametxt: undefined,
29403
    formname: undefined,
29404
    nameTable: undefined,
29405
    initComponent: function () {
29406
        var me = this;
29407
        if (!me.store) throw "No store defined for StoreCheckboxGroup";
29408
        if (!me.mapFn) throw "No mapFn defined for StoreCheckboxGroup";
29409
        if (me.items) throw "Items may not be defined for StoreCheckboxGroup; we get them from the store!";
29410
        var checklistStore = me.store, // <-- using the required "store" property
29411
            renderCheckboxes = function () {
29412
                me.removeAll();
29413
                //me.add(formfield = new Ext.form.TextField({
29414
                //    name: me.nametxt,
29415
                //    formname: me.formname,
29416
                //    nameTable: me.nameTable,
29417
                //}));
29418
                me.add(
29419
                    checklistStore.getRange().map(me.mapFn)); // <-- using the required "mapFn" property
29420
            };
29421
        me.callParent(arguments);
29422
        renderCheckboxes(); // <-- using the function I defined above
29423
        checklistStore.on({
29424
            load: renderCheckboxes, // <-------- binding the
29425
            update: renderCheckboxes, // <------ function to
29426
            datachanged: renderCheckboxes, // <- the store
29427
            filterchange: renderCheckboxes // <- events
29428
        });
29429
    }
29430
});
29431
/* END YN 20211216 */
(4-4/5)