Proses Reload Untuk Store yang Di Paging

thisForm.cboRecord.getStore().removeAll();
thisForm.cboRecord.setReset();
thisForm.cboRecord.reset();
Iklan

Contoh Validator Pada Row Editor

editor.on('validateedit', function(row, obj, rcd, idx){
	var Harian = typeof obj.Harian == "undefined"?rcd.get('Harian'):obj.Harian;
	var Penginapan = typeof obj.Penginapan == "undefined"?rcd.get('Penginapan'):obj.Penginapan;
	var Representasi = typeof obj.Representasi == "undefined"?rcd.get('Representasi'):obj.Representasi;
	var Transport = typeof obj.Transport == "undefined"?rcd.get('Transport'):obj.Transport;
	var Jumlah = Harian + Penginapan + Representasi + Transport;
	rcd.set('Jumlah', Jumlah);
});

Validator store detail

var recordIndex = DepartmentMemberStore.findBy(
    function(record, id){
        if(record.get('date') === date_from_form && 
           record.get('time') === time_from_form &&
           record.get('type') === type_from_form){
              return true;  // a record with this data exists
        }
        return false;  // there is no record in the store with this data
    }
);

if(recordIndex != -1){
    alert("We have a duplicate, abort!");
}

nsr.cls.MoneyField

Ext.ns("nsr.cls");
nsr.cls.MoneyField = Ext.extend(Ext.form.TextField, {
	fieldFormat: '0/i'
	,value: 0
	,constructor:function(config) {
		config = config || {};
		nsr.cls.MoneyField.superclass.constructor.call(this, config);
	}
	,initComponent:function() {
		var config = {};
		this.buildConfig(config);
		Ext.apply(this, Ext.apply(this.initialConfig, config));
        nsr.cls.MoneyField.superclass.initComponent.apply(this, arguments);
	}
	,buildConfig: function(config){
		config.maskRe 			= /[0-9\,]/;
		config.decimalSeparator	= ',';
	}
	,onBlur : function(){
		nsr.cls.MoneyField.superclass.onBlur.call(this);
		var value = this.el.dom.value;
        value = value.replace(/\,/, '.');
        value = Ext.util.Format.number(value, '0.' + this.fieldFormat);
        this.el.dom.value = value==''?0:value;
	}
	,onFocus : function(){
		nsr.cls.MoneyField.superclass.onFocus.call(this);
		var value = this.el.dom.value;
        value = value.replace(/[^0-9\,]+/g,'');
        value = value.replace(/\,/, '.');
        value = Number(value);
        value = Ext.util.Format.number(value, this.fieldFormat);
        this.el.dom.value = value;
	}
	,setValue : function(v){
		nsr.cls.MoneyField.superclass.setValue.call(this, v);
		var value = v;
        value = Ext.util.Format.number(value, '0.' + this.fieldFormat);
        this.el.dom.value = value==''?0:value;
    }
    ,getValue : function(){
    	var v = this.el.getValue();
        if(v === this.emptyText || v === undefined){
            v = '';
        }
        v = v.replace(/[^0-9\,]+/g,'');
        v = v.replace(/\,/, '.');
        v = Number(v);
        return v;
    }

});
Ext.reg('moneyfield', nsr.cls.MoneyField);

Contoh penggunaan:

xtype: 'moneyfield',
fieldLabel: 'Kurs',
name: 'Kurs',
maxLength: 50,
disabled: true,
allowBlank:false,
anchor:'-5',
fieldFormat: '0,00/i',
ref: '../../txtKursSumber'

ExtJs Overview

Dapet dari blog sebelah, sekedar untuk mangingatkan tentang apa yang pernah ku baca dan ku pelajari.

Keinginan untuk memiliki aplikasi berbasis web layaknya aplikasi desktop yang menyediakan kemampuan listener atau event handler mengharuskan penulis mencari contoh kode yang sudah menyediakan feature tersebut. Teknologi Java sudah memiliki framework yang mirip desktop listener, yaitu JSF. Hanya saja penulis tidak menyukai JSF dengan begitu banyaknya tag dan fleksibilitas kode yang tidak cocok dengan gaya penulis. Akhirnya setelah mencari-cari ketemu librari ExtJS yang menggunakan Javascript dan AJAX.
Baca lebih lanjut

Belajar ExtJs

Awalnya cuman iseng, karena ngeliat aplikasi web orang lain kok tampilannya bagus, padahal waktu itu dia cuman pake dhtmlgoodies. Nah saya jadi tertantang ingin membuat lebih bagus lagi dari yang dibuat oleh orang itu. Mulai deh pencarian dengan bantuan “mbah Google” akhirnya saya menemukan ExtJs
Baca lebih lanjut