Archive for March, 2010

Facebox – jQuery Pop Up Window Dialog Plugin

Kamu mungkin sebelumnya pernah menggunakan atau mendengar tentang plugin jQuery untuk menampilkan pop up window seperti Thickbox atau jqModal. Seperti Thickbox dan jqModal, Facebox berfungsi untuk membuat pop up window.
Mungkin memang fitur yang ditawarkan tidak selengkap Thickbox, tapi kemudahan yang diberikan bisa menjadi pertimbangan. Berbeda dengan thickbox yang memerlukan parameter height dan width saat triger (bila tidak diisi maka akan menggunakan setting default), di Facebox tidak perlu dan dapat mengatur lebar dan tinggi sesuai content yang berada dibelakangnya.

Berikut screenshot facebox di aplikasi yang sedang saya kerjakan:
facebox

Pertama, seperti biasa, file JS diload – tentunya setelah jQuery diload.

<script src="js/jquery-latest.js" type="text/javascript"></script>
<script src="js/facebox/facebox.js" type="text/javascript"></script>

Cara menampilkan atau memunculkan window tersebut mudah dan bisa dilakukan dalam berbagai cara:
Menambahkan atribut rel=”facebox” pada setiap anchor yang ingin ditampilkan dalam bentuk pop up. Cara ini sama dengan ada yang di Thickbox.

$('a[rel*=facebox]').facebox({
	loadingImage : 'js/facebox/loading.gif',
	closeImage   : 'js/facebox/closelabel.gif'
});
<a rel="facebox" href="toSomeUrl.html">Show Me</a>

Atau juga secara programatically, misalkan pop up muncul pada event-event yang diinginkan:
Sebelum ditriger untuk menampilkan, ada yang harus diset dulu sebelum digunakan seperti set alamat gambar yang diperlukan dan alamat file CSS.
Berikut contohnya:

$.facebox.settings.loadingImage = 'js/facebox/loading.gif';
$.facebox.settings.closeImage = 'js/facebox/closelabel.gif';
$.facebox.settings.opacity	= 0.3;
 
$('#show-dialog').click(function(){
	$.get('toSomeUrl.html', function(rspn){$.facebox(rspn);});
});
 
// atau bisa juga ditulis
$('#show-dialog').click(function(){
	$.facebox({ajax : 'toSomeUrl.html'});
});

Untuk menutup pop up window tersebut bisa menggunakan method

$.facebox.close();
//atau
$('button.close').click($.facebox.close());

Atau bila diembed di HTML seperti ini:

<button onclick="$.facebox.close();return false;">Close Me</button>

Oke, semoga bermanfaat.

LIMIT dan OFFSET di Microsoft SQL Server

Mungkin banyak dari pembaca di sini yang biasa menggunakan MySQL Server kemudian mendapatkan pekerjaan atau sekedar coba-coba Microsoft SQL Server. Seperti kita ketahui, SQL sendiri memiliki dialek dan fitur yang berbeda-beda tergantung dari vendor yang mengeluarkannya. Terkadang, ada satu fitur yang ada di DBMS satu, tapi tidak ada di DBMS yang lain begitu pun sebaliknya (mungkin bukan tidak ada, tapi cara implementasinya yang berbeda).

Dari yang saya lihat, banyak rekan-rekan yang menanyakan “Bagaimana syntax atau SQL untuk mendapatkan data pada baris dan jumlah tertentu di SQL Server?”

Contoh bila kita ingin mengambil 10 data teratas dari hasil query di MySQL:

SELECT * FROM students ORDER BY nim ASC LIMIT 10;

Di SQL Server ada keyword TOP, untuk mengambil sebanyak N teratas dari baris yang berhasil diretrieve. Padanan bila menggunakan SQL Server:

SELECT TOP 10 * FROM students ORDER BY nim ASC;

Kemudian bagaimana bila kita ingin mendapatkan record mulai dari baris ke 10 sampai ke 15? Kalau di MySQL kita bisa menggunakan OFFSET, contoh:

SELECT * FROM students ORDER BY nim ASC LIMIT 5 OFFSET 10;

Kalau di SQL Server maka:

SELECT * FROM (
    SELECT TOP 5 * FROM (
         SELECT TOP 10 * FROM students ORDER BY nim ASC
         ) B
    ) A

Sebenarnya cara yang saya tuliskan bukan satu-satunya cara, masih ada cara yang lain misalkan menggunakan fitur yang ada di stored procedure atau T-SQL, berikut contohnya. (Code saya ambil dari milist [dotnet-indonesia] dalam email yang ditulis oleh Akhirudin Fahmi, saya comot and edit dikit ya :D )

DECLARE	@PageSize INT,
	@PageNumber INT,
	@FirstRow INT,
	@LastRow INT
 
SELECT	@PageSize = 20,
	@PageNumber = 3
 
SELECT	@FirstRow = ( @PageNumber - 1) * @PageSize + 1,
	@LastRow = (@PageNumber - 1) * @PageSize + @PageSize ;
 
WITH studentRecords  AS
(
	SELECT	dbo.students.*,  ROW_NUMBER() OVER (ORDER BY num) AS RowNumber
	FROM	dbo.students
)
 
SELECT	* FROM	studentRecords
WHERE	RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY RowNumber ASC;

Okeh, semoga membantu dan bermanfaat.