Podesite pozadinsku boju za kolonu Grid objekta u ExtJS4

avgust 6th, 2013 1 comment

Ukoliko želite da određenu kolonu Grid objekta obojite drugom bojom, npr. crvenom, uradite sledeće:

  • U podešavanjima kolone dodati atribut tdCls:’cell-red’ gde je „cell-red“ CSS klasa i onda
  • U CSS dokumentu u kome se nalaze stilovi za aplikaciju (bitno je da se CSS dokument učitava posle extjs-all.css) dodati sledeću liniju:
    .cell-red	.x-grid-cell-inner	{ background-color:#ffe0e0; } 
    

Ukoliko je potrebno, dodatno modifikujte stil kolone.

Kako onemogućiti da ExtJS forma prosledi „emptyText“?

jul 27th, 2013 No comments

Ukoliko unesete „emptyText“ atribut u polje forme, ne zaboravite da dodate atribut

submitEmptyText: false

u delu za potvrdu forme. Ukoliko ovo ne uradite, tekst atributa „emptyText“ će biti poslat kao regularan tekst.

Primer:

this.up('form').getForm().submit({
	method			: 'POST',
	params			: { kontakti:izmene_kontakti },
	waitMsg			: core_messages.snimanje,
	submitEmptyText	: false,
	...

Brisanje slektovanog reda u Grid objektu

jul 27th, 2013 No comments

Evo primera kako jednostavno da obrišete red u okviru Grid objekta:

Potrebno je da imate dugme koje će inicirati akciju. U primeru, dugme je postavljeno u okviru toolbar-a

tbar : [{
    iconCls: 'cross- line ',
    text: 'Delete',
    tooltip:{ title:'Delete Rows' , text: 'Delete selected rows' },
    handler : function(ths, e)
    {
       Ext.Msg.confirm('Delete Confirmation', 'Delete selected rows?', function(btn)
        {
            if (btn == 'yes') {
                store_object.remove( ths.up('grid').
                                          getView().
                                          getSelectionModel().
                                          getSelection() );
            }
        });
    }
}]

Ukoliko korisnik potvrdi brisanje, selektovani redovi će biti uklonjeni iz skladista podataka. Kako bi došli do selektovanih redova, potrebno je proći kroz strukturu.

Promenljiva „ths“ je prva u seriji. Ona ukazuje na dugme koje smo pritisli. Dugme je deop Grid objekta. Funkcija up(‘grid’) uzima prvi Grid objekat koji je iznad u hijerarhiji (roditelj). Na sličan način se mogu zahtevati i drugi objektu, npr. stablo ili forma. Kada smo dosegli do Grid objekta, uzimamo selektovane redove.

Uklanjanje dugmeta za osvežavanje iz objekta za straničenje

jul 27th, 2013 1 comment

Kada se aktivira straničenje (Pagination objekat) sa Grid objektom, dobija se cela paleta alata za navigaciju. Jednom prilikom sam dobio zahtev da se dugme za osvežavanje isključi iz straničenja i prebaci u Toolbar iznad Grid objekta. Procedura bi mogla da e svede na sledeće:

Prvo je potrebno isključiti dugme za osvežavanje:

...
	bbar: Ext.create('Ext.toolbar.Paging', {
		store			: storeObject,
		displayInfo		: true,
		beforePageText	: 'Page',
		afterPageText	: 'of  {0}',
		displayMsg		: 'Elements {0} - {1} of {2}', 
		emptyMsg		: 'No elements',
		listeners		: { afterrender	: function() { this.child('#refresh').hide(); } }
    }),
...

Ključ je u praćenju događaja „afterRender“, preciznije, da se čeka dok se objekat pojavi na stranici. Onda se vrši sakrivanje dugmeta čiji je itemId „#refresh“. Na identičan način je moguće isključiti bilo koji element iz navigacije.

Posle ovoga, potrebno je ubaciti dugme za osvežavanje u okviru palete alata i dodati atrobut „handler“:

storeObject.pageLoad(storeObject.currentPage);

Kreiranje PHP objekta bez upotrebe klase

jul 20th, 2013 No comments

U okviru JavaScript-a, kreiranje objekta je krajnje jednostavno:

myObj = {};
myObj.abc = "Here we go";

U PHP-u ovo možete uraditi na sledeći način:

$myObj = new stdClass();
$myObj->abc = 'Here we go';

Podešavanje vremenske zone iz MySQL-a

jul 20th, 2013 No comments

Provera datuma i vremena kroz MySQL je moguća upotrebnom komande NOW() (MySQL ne pravi razliku između velikih i malih slova tako da ej moguće napisati i now()). Primer:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2013-07-20 11:11:11 | 
+---------------------+
1 row in set (0.00 sec)

Ukoliko je vreme drugačije nego ono u vašoj vremenskoj zoni , koristite sledeću komandu da bi ste postavili ispravnu vremensku zonu:

SET GLOBAL time_zone = '+1:00';
Categories: MySQL Tags: ,

Primena Defaults atributa na sve kolone Grid Objekta

jul 20th, 2013 No comments

U gotovo svakom objektu koji ima nabrajanja u okviru ExtJS 4 moguće je zajedničke atribute izdvojite u posebnu, defaults, sekciju. Ovom prilikom navodim primer kako to uraditi za kolone Grid objekta.

Prvo primer bez primene defaults atributa:

var mygrid = Ext.create(''Ext.grid.Panel'', {
    //... store config, other config...
    columns: [
            { header:'ID', dataIndex:'id', width: 65, hidden:true, sortable:true, width:100 },
            { header:'Firma', dataIndex:'company_name', hidden:false, sortable:true, width:100 },
            { header:'Adresa', dataIndex:'company_address', hidden:false, sortable:true, width:100 }
    ]
});

Sada i primer sa primenom defaults atributa:

var mygrid = Ext.create(''Ext.grid.Panel'', {
    //... store config, other config...
    columns: {
        items: [
            { header:'ID', dataIndex:'id', width: 65, hidden:true },
            { header:'Firma', dataIndex:'company_name' },
            { header:'Adresa', dataIndex:'company_address' }
        ],
        defaults: { hidden:false, sortable:true, width:100 }
    }
});
Categories: JavaScript Tags: ,

U ExtJS 4.2 hidden polje zauzima prostor

maj 21st, 2013 No comments

ExtJS 4.2 je već neko vreme među nama i kao svaka prva veća verzija ima sitnih grešaka. Jedna od njih je i ta da skrivena polja u formi, nisu potpuno skrivena. Polja se ne vide, ali zato se vidi tabela u okviru koje se polje nalazi i time stvara nekih 3-5px visine za svako sakriveno polje.

Greška je već uočena od strane ljudi iz Sencha tima i biće ispravljena u narednoj verziji. U međuvremenu evo jednostavnog načina kako to da zakrpite. U okviru CSS fajla koji koristite za svoje stilove ubacite sledeću liniju

.x-form-item-hidden { display:none; }

Navedeni stil se nalazi u okviru gore pomenute tabele. Na ovaj način će hidden polje stvarno postati u potpunosti sakriveno.

Detaljnije o problemu možete pogledati na lokaciji

ExtJS 4 – Tree Grid sa linijama

maj 14th, 2013 No comments

ExtJS 4 vam daje mogućnost da kombinujete dva objekta: stablo (Tree) i tabelarni prikaz (Grid). Ovaj efekat postižete tako što prilikom kreiranja objekta stabla dodate „column“ atribut i u okviru njega navedete kolone koje želite da prikažete, onako kako bi to uradili i za tabelarni prikaz. Ono što ne funkcioniše jesu linije koje razdvajaju redove, kakve tabelarni prikaz ima standardno.

null

Ukoliko želite da prikažete linije potrebno je da kreirate dodatni CSS stil koji ćete potom uključiti u okviru konfiguracionog dela stabla. Za ovu priliku ću kreirati dva stila:

.border-line > td {
  border-bottom: 1px solid #eee !important;
}
.border-cell > td {
  border-bottom: 1px solid #eee !important;
  border-right: 1px solid #eee !important;
}

Drugi korak je poziv odgovarajućeg stila na sledeći način:

viewConfig: {
  getRowClass: function(record) { return 'border-line'; }
}

Navedeni kod će kreirati liniju ispod svakog reda stabla što otprilike izgleda ovako:

line

A ukoliko stil „border-line“ zamenite sa „border-cell„, dobićete efekat sličan sledećoj slici:

cell

Provera ispravnosti datuma u PHP-u

maj 10th, 2013 No comments

Šta se dešava ukoliko korisnik unese za datum rođenja 31/02/2000.?
Da li će datum biti ispravno sačuvan u bazi podataka?

Naravno da neće. U bazi podataka biće sačuvano 03.03.2000, jer je u definisanom datumu 3 dana više nego što je broj dana u februaru. Bilo bi dobro upozoriti na grešku. Da bi smo to uradili potrebno je napraviti funkciju koja će kontrolisati datum.

PHP već poseduje funkciju koja proverava ispravnost datuma:

bool checkdate(int $month, int $day, int $year);

Za zadat mesec, dan i godinu funkcija će vratiti informacoju da li ej uneti datum ispravan ili ne.

Categories: PHP Tags: ,