NgoreiFlot adalah pustaka query builder Chart Generator yang menyediakan antarmuka sederhana untuk membuat query database dan menghasilkan berbagai jenis visualisasi data. Pustaka ini dirancang untuk memudahkan pengembang dalam mengolah dan menampilkan data dalam bentuk grafik interaktif.
Untuk menggunakan NgoreiFlot, cukup include file NgoreiFlot.php ke dalam project Anda:
use app\Ngorei;
$Tds = new Ngorei();
$flot = $Tds->Float();
// Contoh query sederhana
$flot->table('users')
->select(['name', 'email'])
->get();
// Select semua kolom
$flot->table('products')->get();
// Contoh penggunaan where
$flot->table('users')
->where('age', '>', 18)
->where('status', '=', 'active')
->get();
// Pengurutan dan pengelompokan
$flot->table('orders')
->groupBy('status')
->orderBy('created_at', 'DESC')
->get();
Membatasi jumlah data yang diambil dan mengatur posisi awal pengambilan data.
Method yang tersedia:
limit($limit)
: Membatasi jumlah record yang diambiloffset($offset)
: Mengatur posisi awal pengambilan datalimit($limit, $offset)
: Kombinasi limit dan offset dalam satu method
// Mengambil 10 data pertama
$flot->table('products')
->limit(10)
->get();
// Mengambil 10 data mulai dari record ke-20
$flot->table('products')
->limit(10)
->offset(20)
->get();
// Cara alternatif dengan satu method
$flot->table('products')
->limit(10, 20) // 10 data mulai dari offset 20
->get();
// Contoh untuk paginasi
$page = 2; // Halaman ke-2
$perPage = 15; // 15 data per halaman
$offset = ($page - 1) * $perPage;
$data = $flot->table('articles')
->orderBy('created_at', 'DESC')
->limit($perPage)
->offset($offset)
->get();
Grafik garis untuk menampilkan data berkelanjutan dalam periode waktu.
Atribut:
$labelColumn
: Kolom untuk sumbu X (biasanya tanggal/waktu)$valueColumn
: Kolom untuk sumbu Y (nilai numerik)
$data = $flot->table('sales')
->select(['date', 'amount'])
->get();
$chart = $flot->toLineChart($data, 'date', 'amount');
Grafik lingkaran untuk menampilkan proporsi dari keseluruhan data.
Atribut:
$labelColumn
: Kolom untuk label setiap bagian$valueColumn
: Kolom untuk nilai numerik
$data = $flot->table('categories')
->select(['name', 'total'])
->get();
$chart = $flot->toPieChart($data, 'name', 'total');
Grafik batang untuk membandingkan nilai antar kategori.
Atribut:
$labelColumn
: Kolom untuk label batang$valueColumn
: Kolom untuk nilai batang
$data = $flot->table('sales')
->select(['product', 'quantity'])
->get();
$chart = $flot->toBarChart($data, 'product', 'quantity');
Grafik area untuk menampilkan data berkelanjutan dengan area terisi.
Atribut:
$dateColumn
: Kolom tanggal untuk sumbu X$valueColumn
: Kolom nilai untuk sumbu Ylines.fill
: Tingkat transparansi area (0-1)
$data = $flot->table('traffic')
->select(['date', 'visitors'])
->get();
$chart = $flot->toAreaChart($data, 'date', 'visitors');
Grafik gelembung untuk menampilkan data dengan 3 dimensi.
Atribut:
$xColumn
: Kolom untuk posisi X$yColumn
: Kolom untuk posisi Y$radiusColumn
: Kolom untuk ukuran gelembung
$data = $flot->table('population')
->select(['income', 'lifespan', 'population'])
->get();
$chart = $flot->toBubbleChart($data, 'income', 'lifespan', 'population');
Grafik candlestick untuk menampilkan pergerakan harga dalam trading.
Atribut:
tanggal
: Kolom tanggalopen
: Harga pembukaanhigh
: Harga tertinggilow
: Harga terendahclose
: Harga penutupan
$data = $flot->table('stock_prices')->get();
$chart = $flot->toCandlestickChart($data);
Grafik batang bertumpuk untuk menampilkan komposisi dari beberapa kategori.
Atribut:
$categories
: Array kategori$valueColumns
: Array kolom nilai untuk setiap kategori
$data = $flot->table('sales_by_category')->get();
$chart = $flot->toStackedBar($data,
['Q1', 'Q2', 'Q3', 'Q4'],
['Food' => 'food_sales', 'Drinks' => 'drink_sales']
);
Grafik deret waktu untuk menampilkan multiple data dalam periode waktu.
Atribut:
$dateColumn
: Kolom tanggal$valueColumns
: Array kolom nilai yang akan ditampilkan
$data = $flot->table('metrics')->get();
$chart = $flot->toTimeSeriesChart($data, 'date', [
'Visitors' => 'visitor_count',
'Orders' => 'order_count'
]);
Variasi dari pie chart dengan lubang di tengah.
Atribut:
$labelColumn
: Kolom untuk label$valueColumn
: Kolom untuk nilai
$data = $flot->table('market_share')->get();
$chart = $flot->toDonutChart($data, 'company', 'share');
Grafik radar untuk membandingkan multiple metrik dalam bentuk jaring laba-laba.
Atribut:
$categoryColumn
: Kolom kategori$metrics
: Array metrik yang akan diukur
$data = $flot->table('product_metrics')->get();
$chart = $flot->toRadarChart($data, 'product', [
'Quality' => 'quality_score',
'Price' => 'price_score',
'Service' => 'service_score'
]);
Grafik peta panas untuk menampilkan intensitas data dalam matriks.
Atribut:
$xColumn
: Kolom untuk sumbu X$yColumn
: Kolom untuk sumbu Y$valueColumn
: Kolom untuk nilai intensitas
$data = $flot->table('activity_matrix')->get();
$chart = $flot->toHeatmapChart($data, 'hour', 'day', 'activity_level');
Grafik air terjun untuk menampilkan perubahan nilai secara kumulatif.
Atribut:
$labelColumn
: Kolom untuk label setiap langkah$valueColumn
: Kolom untuk nilai perubahan
$data = $flot->table('financial_changes')->get();
$chart = $flot->toWaterfallChart($data, 'transaction', 'amount');
Menggunakan sistem cache untuk mengoptimalkan performa query database.
// Set waktu cache
$flot->setCacheExpiry(3600); // 1 jam
// Query akan dicache
$result = $flot->table('large_table')
->get();
Kemampuan untuk mengekspor data hasil query ke format CSV.
$data = $flot->table('users')->get();
$flot->toCSV($data, 'users_export.csv');
Memproses data dalam jumlah besar dengan membaginya menjadi beberapa chunk untuk mengoptimalkan penggunaan memori.
foreach ($flot->table('huge_table')->getChunked(1000) as $chunk) {
// Proses setiap chunk
foreach ($chunk as $row) {
// Proses setiap baris
}
}
Utilitas untuk memformat data ke dalam format Rupiah dan format tanggal Indonesia.
// Format Rupiah
$harga = $flot->toRupiah(150000); // Output: Rp 150.000
// Format Tanggal Indonesia
$tanggal = $flot->toIndonesianDate('2024-03-20'); // Output: 20 Maret 2024