Nem szeretem, amikor valamely komponenshez tartozó segéd komponens úgy be van égetve a kódba, hogy annak lecserélés csak hosszas munkával, illetve felesleges kódmásolással lehetséges.
Ez a helyzet áll fent a DateField esetén is. Amennyiben egy speciális dátum mezőt készítünk, amelyhez speciális dátumválasztó elem tartozik, akkor a DateField.createPicker függvényt úgy kell felülírni, hogy számtalan – az új osztály szempontjából egyáltalán nem érdekes – kódsort kell lemásolni. A függvényben létrehozzunk egy Ext.picker.Date-t, majd a létrehozott példányon kisebb nagyobb módosítást csinálunk.
Ilyenkor merül fel az a kérdés, hogy melyik kezembe harapjak, vagy tényleg egy majdnem harminc soros függvényt majdnem karakter pontosan lemásolok, vagy...
... vagy átmenetileg a picker osztályt kicserélem.
extend:'Ext.form.field.Date',
// ...
createPicker: function() {
var originalClass = Ext.picker.Date;
Ext.picker.Date = My.picker.Date;
var picker = this.callParent();
Ext.picker.Date = originalClass;
return Ext.apply(picker, {
// ...
});
}
});
Ext.define('My.picker.Date', {
extend: 'Ext.picker.Date',
// ...
});
Nem mondom, hogy szép megoldás, de jelenleg ez tűnik a jobb megoldásnak, felkészülve arra, hogy a későbbiekben bármi változhat a DateField.createPicker-ben.
Más ötlet? :)