Tambahkan filter dan perbaikan tampilan pada stok bantuan
- Tambahkan fitur filter untuk stok bantuan (uang, barang, hampir habis) - Perbarui metode getFilteredStokBantuan() untuk mendukung filter - Tambahkan dropdown filter di tampilan stok bantuan - Tambahkan properti filterValue di StokBantuanController - Perbarui pesan tampilan saat tidak ada data sesuai filter - Tambahkan properti showInfoBanner untuk pengembangan selanjutnya
This commit is contained in:
@ -10,6 +10,7 @@ class StokBantuanController extends GetxController {
|
||||
final SupabaseService _supabaseService = SupabaseService.to;
|
||||
|
||||
final RxBool isLoading = false.obs;
|
||||
final RxBool showInfoBanner = true.obs;
|
||||
|
||||
// Data untuk stok bantuan
|
||||
final RxList<StokBantuanModel> daftarStokBantuan = <StokBantuanModel>[].obs;
|
||||
@ -26,6 +27,9 @@ class StokBantuanController extends GetxController {
|
||||
final TextEditingController searchController = TextEditingController();
|
||||
final RxString searchQuery = ''.obs;
|
||||
|
||||
// Filter untuk stok bantuan
|
||||
final RxString filterValue = 'semua'.obs;
|
||||
|
||||
// Tambahkan properti untuk total dana bantuan
|
||||
RxDouble totalDanaBantuan = 0.0.obs;
|
||||
|
||||
@ -241,10 +245,30 @@ class StokBantuanController extends GetxController {
|
||||
}
|
||||
|
||||
List<StokBantuanModel> getFilteredStokBantuan() {
|
||||
if (searchQuery.isEmpty) {
|
||||
return daftarStokBantuan;
|
||||
} else {
|
||||
return daftarStokBantuan
|
||||
var filteredList = <StokBantuanModel>[];
|
||||
|
||||
// Filter berdasarkan jenis (uang/barang/hampir habis)
|
||||
switch (filterValue.value) {
|
||||
case 'uang':
|
||||
filteredList =
|
||||
daftarStokBantuan.where((item) => item.isUang == true).toList();
|
||||
break;
|
||||
case 'barang':
|
||||
filteredList =
|
||||
daftarStokBantuan.where((item) => item.isUang != true).toList();
|
||||
break;
|
||||
case 'hampir_habis':
|
||||
filteredList = daftarStokBantuan
|
||||
.where((item) => (item.totalStok ?? 0) <= 10)
|
||||
.toList();
|
||||
break;
|
||||
default: // 'semua'
|
||||
filteredList = daftarStokBantuan.toList();
|
||||
}
|
||||
|
||||
// Filter berdasarkan pencarian jika ada
|
||||
if (searchQuery.isNotEmpty) {
|
||||
return filteredList
|
||||
.where((item) =>
|
||||
(item.nama
|
||||
?.toLowerCase()
|
||||
@ -260,6 +284,8 @@ class StokBantuanController extends GetxController {
|
||||
false))
|
||||
.toList();
|
||||
}
|
||||
|
||||
return filteredList;
|
||||
}
|
||||
|
||||
// Metode untuk mendapatkan jumlah stok yang hampir habis (stok <= 10)
|
||||
@ -287,4 +313,9 @@ class StokBantuanController extends GetxController {
|
||||
Future<void> _filterStokBantuan() async {
|
||||
// Implementasi metode _filterStokBantuan
|
||||
}
|
||||
|
||||
// Metode untuk mengatur filter
|
||||
void setFilter(String value) {
|
||||
filterValue.value = value;
|
||||
}
|
||||
}
|
||||
|
@ -235,11 +235,38 @@ class StokBantuanView extends GetView<StokBantuanController> {
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.grey.shade100,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(color: Colors.grey.shade300, width: 1),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
||||
child: DropdownButtonHideUnderline(
|
||||
child: DropdownButton<String>(
|
||||
value: controller.filterValue.value,
|
||||
icon: const Icon(Icons.filter_list),
|
||||
hint: const Text('Filter'),
|
||||
items: [
|
||||
DropdownMenuItem(
|
||||
value: 'semua',
|
||||
child: Text('Semua'),
|
||||
),
|
||||
DropdownMenuItem(
|
||||
value: 'uang',
|
||||
child: Text('Uang'),
|
||||
),
|
||||
DropdownMenuItem(
|
||||
value: 'barang',
|
||||
child: Text('Barang'),
|
||||
),
|
||||
DropdownMenuItem(
|
||||
value: 'hampir_habis',
|
||||
child: Text('Hampir Habis'),
|
||||
),
|
||||
],
|
||||
onChanged: (value) {
|
||||
if (value != null) {
|
||||
controller.setFilter(value);
|
||||
}
|
||||
},
|
||||
),
|
||||
child: IconButton(
|
||||
onPressed: controller.refreshData,
|
||||
icon: const Icon(Icons.refresh),
|
||||
tooltip: 'Refresh',
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -261,7 +288,9 @@ class StokBantuanView extends GetView<StokBantuanController> {
|
||||
const SizedBox(height: 16),
|
||||
Text(
|
||||
controller.searchQuery.isEmpty
|
||||
? controller.filterValue.value == 'semua'
|
||||
? 'Belum ada data stok bantuan'
|
||||
: 'Tidak ada stok bantuan yang sesuai dengan filter'
|
||||
: 'Tidak ada stok bantuan yang sesuai dengan pencarian',
|
||||
style: const TextStyle(color: Colors.grey),
|
||||
textAlign: TextAlign.center,
|
||||
|
Reference in New Issue
Block a user