fix: add iteration 100 for multiple table

main-dlh
Yuri Dimas 2025-11-19 17:15:53 +07:00
parent 803af98bbe
commit 6d63c5172b
No known key found for this signature in database
GPG Key ID: 9FD7E44BC294C68C
3 changed files with 307 additions and 761 deletions

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using System.Linq;
namespace BpsRwApp.Controllers
{
@ -13,296 +14,138 @@ namespace BpsRwApp.Controllers
[HttpGet]
public IActionResult TableRapot()
{
var data = new[]
var data = Enumerable.Range(0, 100)
.Select(index =>
{
new {
nama = "Risky Adi Putra",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>10",
rumah_aktif_memilah = "<div class=\"badge badge-error badge-soft rounded-xs px-12\">0</div>",
status = "<div class=\"badge badge-info badge-soft rounded-full\">Sangat Baik</div>",
},
new {
nama = "Sulaiman",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
berat_sampah = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Baik</div>",
},
new {
nama = "Siti Nurhaliza",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">12</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-error badge-soft rounded-xs px-12\">0</div>",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Baik</div>",
},
new {
nama = "Budi Santoso",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">18</div>",
berat_sampah = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">1</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Baik</div>",
},
new {
nama = "Dewi Lestari",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">1</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Baik</div>",
},
new {
nama = "Andi Prabowo",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">17</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
status = "<div class=\"badge badge-info badge-soft rounded-full\">Sangat Baik</div>",
},
new {
nama = "Nina Sari",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">15</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
status = "<div class=\"badge badge-info badge-soft rounded-full\">Sengat Baik</div>",
},
new {
nama = "Hendra Wijaya",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">1</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
status = "<div class=\"badge badge-info badge-soft rounded-full\">Sangat Baik</div>",
},
new {
nama = "Lina Marlina",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">12</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
status = "<div class=\"badge badge-info badge-soft rounded-full\">Sangat Baik</div>",
},
new {
nama = "Yudi Hartono",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">16</div>",
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
status = "<div class=\"badge badge-info badge-soft rounded-full\">Sangat Baik</div>",
},
};
var nama = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
var checklistCount = 8 + (index % 15);
var totalBeratSampah = 40 + (index * 3 % 70);
var fotoCount = 5 + (index * 4 % 250);
var rumahAktif = (index * 3) % 15;
var response = new
return new
{
data = data
nama,
checklist = BuildMetricBadge(checklistCount, 8, 12),
berat_sampah = BuildMetricBadge(totalBeratSampah, 50, 90),
foto = BuildFotoIndicator(fotoCount),
rumah_aktif_memilah = BuildMetricBadge(rumahAktif, 3, 9),
status = BuildStatusBadge(index),
};
})
.ToArray();
return Json(response);
return Json(new { data });
}
[HttpGet]
public IActionResult TableChecklist()
{
var data = new[]
var data = Enumerable.Range(0, 100)
.Select(index =>
{
new {
nama = "Risky Adi Putra",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>10",
rumah_aktif_memilah = "<div class=\"badge badge-error badge-soft rounded-xs px-12\">0/12</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Sulaiman",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11/11</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Siti Nurhaliza",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">12</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-error badge-soft rounded-xs px-12\">0/10</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Budi Santoso",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">18</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11/11</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Dewi Lestari",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">1</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10/10</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Andi Prabowo",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">17</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11/11</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Nina Sari",
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">15</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10/10</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Hendra Wijaya",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">1</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11/11</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Lina Marlina",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">12</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>22",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10/10</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
new {
nama = "Yudi Hartono",
checklist = "<div class=\"badge badge-warning badge-soft rounded-xs px-12\">16</div>",
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>889",
rumah_aktif_memilah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">11/11</div>",
aksi = "<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>",
},
};
var response = new
var nama = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
var checklistCount = 9 + (index % 18);
var fotoCount = 3 + (index * 2 % 180);
var targetRumah = 8 + (index % 10);
var rumahAktif = targetRumah - (index % 5);
if (rumahAktif < 0)
{
data = data
};
rumahAktif = 0;
}
return Json(response);
return new
{
nama,
checklist = BuildMetricBadge(checklistCount, 10, 15),
foto = BuildFotoIndicator(fotoCount),
rumah_aktif_memilah = BuildRatioBadge(rumahAktif, targetRumah),
aksi = BuildDetailAction(),
};
})
.ToArray();
return Json(new { data });
}
[HttpGet]
public IActionResult TableBeratSampah()
{
var data = new[]
var data = Enumerable.Range(0, 100)
.Select(index =>
{
new {
nama = "Risky Adi Putra",
total_berat = 104,
mudah_terurai = 104,
material_daur_ulang = 104,
b3 = 104,
residu = 104,
},
new {
nama = "Sulaiman",
total_berat = 67,
mudah_terurai = 67,
material_daur_ulang = 67,
b3 = 67,
residu = 67,
},
new {
nama = "Siti Nurhaliza",
total_berat = 110,
mudah_terurai = 110,
material_daur_ulang = 110,
b3 = 110,
residu = 110,
},
new {
nama = "Budi Santoso",
total_berat = 88,
mudah_terurai = 88,
material_daur_ulang = 88,
b3 = 88,
residu = 88,
},
new {
nama = "Dewi Lestari",
total_berat = 90,
mudah_terurai = 90,
material_daur_ulang = 90,
b3 = 90,
residu = 90,
},
new {
nama = "Andi Prabowo",
total_berat = 72,
mudah_terurai = 72,
material_daur_ulang = 72,
b3 = 72,
residu = 72,
},
new {
nama = "Nina Sari",
total_berat = 81,
mudah_terurai = 81,
material_daur_ulang = 81,
b3 = 81,
residu = 81,
},
new {
nama = "Hendra Wijaya",
total_berat = 65,
mudah_terurai = 65,
material_daur_ulang = 65,
b3 = 65,
residu = 65,
},
new {
nama = "Lina Marlina",
total_berat = 78,
mudah_terurai = 78,
material_daur_ulang = 78,
b3 = 78,
residu = 78,
},
new {
nama = "Yudi Hartono",
total_berat = 95,
mudah_terurai = 95,
material_daur_ulang = 95,
b3 = 95,
residu = 95,
},
};
var nama = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
var mudahTerurai = 40 + (index * 2 % 80);
var materialDaurUlang = 25 + (index * 3 % 60);
var b3 = 5 + index % 7;
var residu = 10 + index % 9;
var totalBerat = mudahTerurai + materialDaurUlang + b3 + residu;
var response = new
return new
{
data = data
nama,
total_berat = totalBerat,
mudah_terurai = mudahTerurai,
material_daur_ulang = materialDaurUlang,
b3,
residu,
};
})
.ToArray();
return Json(response);
return Json(new { data });
}
private static string BuildMetricBadge(int value, int warningThreshold, int successThreshold)
{
string tone;
if (value <= 0)
{
tone = "error";
}
else if (value < warningThreshold)
{
tone = "warning";
}
else if (value < successThreshold)
{
tone = "info";
}
else
{
tone = "success";
}
return BuildBadge(value.ToString(), tone);
}
private static string BuildRatioBadge(int achieved, int target)
{
var tone = achieved <= 0 ? "error" : achieved < target ? "warning" : "success";
return BuildBadge($"{achieved}/{target}", tone);
}
private static string BuildBadge(string label, string tone) =>
$"<div class=\"badge badge-{tone} badge-soft rounded-xs px-12\">{label}</div>";
private static string BuildFotoIndicator(int totalFoto) =>
"<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>" + totalFoto;
private static string BuildStatusBadge(int index)
{
var status = (index % 3) switch
{
0 => ("Sangat Baik", "info"),
1 => ("Baik", "success"),
_ => ("Perlu Pendampingan", "warning")
};
return $"<div class=\"badge badge-{status.Item2} badge-soft rounded-full\">{status.Item1}</div>";
}
private static string BuildDetailAction() =>
"<div class=\"flex gap-2\">" +
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" +
"</div>";
}
}

View File

@ -1,106 +1,67 @@
using BpsRwApp.Models.ProfilRw;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
namespace BpsRwApp.Controllers
{
public class ProfilRwController : AppControllerBase
{
private static readonly List<AlatPengumpulSampahViewModel> SampleAlatPengumpul = new()
private static readonly string[][] JadwalCombinations =
{
new AlatPengumpulSampahViewModel
{
Id = 1,
Kelurahan = "Kelurahan Cililitan",
Rw = "005",
Rt = "003",
GerobakDorong = 1,
GerobakMotor = 2,
MobilPickup = 1,
Truk = 1,
Dustbin = 4,
Container = 1,
Landasan = 2,
JenisPetugas = "Petugas Harian Lepas",
NamaPetugas = "Taufik Hidayat",
Jadwal = new List<string> { "Senin", "Rabu", "Jumat" },
TpsTujuan = "TPS Jakarta Timur"
},
new AlatPengumpulSampahViewModel
{
Id = 2,
Kelurahan = "Kelurahan Rawamangun",
Rw = "004",
Rt = "002",
GerobakDorong = 2,
GerobakMotor = 3,
MobilPickup = 1,
Truk = 0,
Dustbin = 3,
Container = 1,
Landasan = 1,
JenisPetugas = "DLH",
NamaPetugas = "Bambang Wijaya",
Jadwal = new List<string> { "Selasa", "Kamis", "Sabtu" },
TpsTujuan = "TPS Cililitan"
},
new AlatPengumpulSampahViewModel
{
Id = 3,
Kelurahan = "Kelurahan Duren Sawit",
Rw = "003",
Rt = "005",
GerobakDorong = 1,
GerobakMotor = 1,
MobilPickup = 0,
Truk = 1,
Dustbin = 5,
Container = 2,
Landasan = 2,
JenisPetugas = "Swadaya Warga",
NamaPetugas = "Rini Setiawan",
Jadwal = new List<string> { "Senin", "Rabu", "Jumat" },
TpsTujuan = "TPS Duren Sawit"
},
new AlatPengumpulSampahViewModel
{
Id = 4,
Kelurahan = "Kelurahan Balekambang",
Rw = "002",
Rt = "001",
GerobakDorong = 2,
GerobakMotor = 1,
MobilPickup = 1,
Truk = 1,
Dustbin = 2,
Container = 1,
Landasan = 1,
JenisPetugas = "Kader Lingkungan",
NamaPetugas = "Eko Nugroho",
Jadwal = new List<string> { "Selasa", "Kamis" },
TpsTujuan = "TPS Kampung Melayu"
},
new AlatPengumpulSampahViewModel
{
Id = 5,
Kelurahan = "Kelurahan Pondok Bambu",
Rw = "001",
Rt = "007",
GerobakDorong = 3,
GerobakMotor = 2,
MobilPickup = 2,
Truk = 1,
Dustbin = 6,
Container = 2,
Landasan = 3,
JenisPetugas = "Petugas Harian Lepas",
NamaPetugas = "Ratna Sari",
Jadwal = new List<string> { "Rabu", "Jumat", "Minggu" },
TpsTujuan = "TPS Pondok Bambu"
}
new[] { "Senin", "Rabu", "Jumat" },
new[] { "Selasa", "Kamis" },
new[] { "Sabtu", "Minggu" },
new[] { "Senin", "Selasa", "Kamis" },
new[] { "Rabu", "Jumat" }
};
private static readonly string[] JenisPetugasOptions =
{
"Petugas Harian Lepas",
"DLH",
"Swadaya Warga",
"Kader Lingkungan",
"Relawan"
};
private static readonly string[] TpsOptions =
{
"TPS Jakarta Timur",
"TPS Cililitan",
"TPS Duren Sawit",
"TPS Kampung Melayu",
"TPS Pondok Bambu",
"TPS Pulogadung"
};
private static readonly List<AlatPengumpulSampahViewModel> SampleAlatPengumpul =
Enumerable.Range(1, 100)
.Select(index =>
{
var wilayah = ControllerSampleData.WilayahSeeds[index % ControllerSampleData.WilayahSeeds.Length];
var namaPetugas = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
var jadwal = JadwalCombinations[index % JadwalCombinations.Length];
return new AlatPengumpulSampahViewModel
{
Id = index,
Kelurahan = $"Kelurahan {wilayah.Kelurahan}",
Rw = ((index % 15) + 1).ToString("D3"),
Rt = ((index % 20) + 1).ToString("D3"),
GerobakDorong = 1 + (index % 4),
GerobakMotor = 1 + (index % 3),
MobilPickup = index % 2,
Truk = index % 3 == 0 ? 1 : 0,
Dustbin = 4 + (index % 5),
Container = 1 + (index % 2),
Landasan = 1 + (index % 3),
JenisPetugas = JenisPetugasOptions[index % JenisPetugasOptions.Length],
NamaPetugas = namaPetugas,
Jadwal = jadwal.ToList(),
TpsTujuan = TpsOptions[index % TpsOptions.Length]
};
})
.ToList();
public IActionResult Index()
{
return View();
@ -109,411 +70,141 @@ namespace BpsRwApp.Controllers
[HttpGet]
public IActionResult TableLokasi()
{
var data = new[]
var data = Enumerable.Range(0, 100)
.Select(index =>
{
new {
usulan = "Lokasi G",
alamat = "Perumahan Mawar Indah",
statusLahan = "Inventaris",
pemilikLahan = "Larasati Wulandari",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi I",
alamat = "Jl. Bougenville, RT 02",
statusLahan = "Inventaris",
pemilikLahan = "Arya Dwipangga",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi F",
alamat = "Lingk. Edelweiss, No. 7",
statusLahan = "Inventaris",
pemilikLahan = "Kirana Lazuardi",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi C",
alamat = "Jl. Anggrek No. 14",
statusLahan = "Inventaris",
pemilikLahan = "Bagas Priambodo",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi B",
alamat = "Jl. Tulip, Kel. Gardenia",
statusLahan = "Inventaris",
pemilikLahan = "Raisa Adiwangsa",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi E",
alamat = "Jl. Lavender, RT 09",
statusLahan = "Inventaris",
pemilikLahan = "Satria Gunawan",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi A",
alamat = "Komp. Melati, No. 22",
statusLahan = "Inventaris",
pemilikLahan = "Kartika Hastuti",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi D",
alamat = "Gg. Dahlia, RT 05",
statusLahan = "Inventaris",
pemilikLahan = "Bayu Anggoro",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi H",
alamat = "Ds. Cempaka, Kab. Anyer",
statusLahan = "Inventaris",
pemilikLahan = "Citra Kirani",
luasLahan = 500,
statusUsulan = "Aktif"
},
new {
usulan = "Lokasi J",
alamat = "Jl. Kenanga, Blok C",
statusLahan = "Inventaris",
pemilikLahan = "Galih Prasetya",
luasLahan = 500,
statusUsulan = "Aktif"
},
var wilayah = ControllerSampleData.WilayahSeeds[index % ControllerSampleData.WilayahSeeds.Length];
var street = ControllerSampleData.StreetNames[index % ControllerSampleData.StreetNames.Length];
var pemilik = ControllerSampleData.PersonNames[(index + 3) % ControllerSampleData.PersonNames.Length];
var luas = 300 + (index * 11 % 900);
var statusLahan = (index % 3) switch
{
0 => "Inventaris",
1 => "Sewa",
_ => "Milik Warga"
};
var response = new
return new
{
data = data
id = index + 1,
usulan = $"Lokasi {index + 1:000}",
alamat = ControllerSampleData.FormatAlamat(wilayah, street, 5 + index),
statusLahan,
pemilikLahan = pemilik,
luasLahan = $"{luas} m²",
statusUsulan = BuildLokasiStatusBadge(index),
aksi = BuildLokasiActionButtons(index + 1)
};
})
.ToArray();
return Json(response);
return Json(new { data });
}
[HttpGet]
public IActionResult TableSuratUsulan()
{
var data = new[]
var namaSuratTemplates = new[]
{
new {
nama_surat = "Surat Permohonan Perbaikan Jalan Lingkungan",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 7, 11)),
file_upload = "Surat Pengantar Proposal",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Rekomendasi untuk Pengajuan Kredit UMKM",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 1, 9)),
file_upload = "Surat Undangan Rapat Warga",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Pernyataan Persetujuan Pembangunan Pos Kamling",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 21)),
file_upload = "Surat Pemberitahuan Gotong Royong",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Keterangan Tidak Mampu untuk Berobat",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 2, 17)),
file_upload = "Surat Keputusan Ketua RW",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Laporan Keuangan RW Triwulan II 2023",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 8, 18)),
file_upload = "Surat Edaran Kebersihan",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Keputusan RW tentang Jadwal Ronda Malam",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 5, 14)),
file_upload = "Surat Rekomendasi Usaha",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Pemberitahuan Kerja Bakti Rutin",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 6, 2)),
file_upload = "Laporan Kegiatan RW",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Edaran tentang Pembayaran Iuran Sampah",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 6, 22)),
file_upload = "Surat Keterangan Domisili",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Pengantar untuk Pembuatan KTP",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 3, 1)),
file_upload = "Surat Permohonan Bantuan Dana",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
nama_surat = "Surat Undangan Pertemuan Rutin PKK",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 28)),
file_upload = "Surat Pernyataan Kesanggupan",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
"Surat Permohonan Perbaikan Jalan Lingkungan",
"Surat Rekomendasi Pengajuan Kredit UMKM",
"Surat Pernyataan Persetujuan Pembangunan Pos Kamling",
"Surat Keterangan Tidak Mampu untuk Berobat",
"Laporan Keuangan RW Triwulan",
"Surat Keputusan Jadwal Ronda Malam",
"Surat Pemberitahuan Kerja Bakti Rutin",
"Surat Edaran Pembayaran Iuran Sampah",
"Surat Pengantar Pembuatan KTP",
"Surat Undangan Pertemuan PKK"
};
var response = new
var fileTemplates = new[]
{
data = data
"Surat Pengantar Proposal",
"Surat Undangan Rapat Warga",
"Surat Pemberitahuan Gotong Royong",
"Surat Keputusan Ketua RW",
"Surat Edaran Kebersihan",
"Surat Rekomendasi Usaha",
"Laporan Kegiatan RW",
"Surat Keterangan Domisili",
"Surat Permohonan Bantuan Dana",
"Surat Pernyataan Kesanggupan"
};
return Json(response);
var startDate = new DateTime(2023, 1, 1);
var data = Enumerable.Range(0, 100)
.Select(index =>
{
var namaSurat = namaSuratTemplates[index % namaSuratTemplates.Length];
var fileUpload = fileTemplates[(index + 3) % fileTemplates.Length];
var status = (index % 5) switch
{
0 => BuildStatusPill("Menunggu", "warning"),
1 => BuildStatusPill("Ditinjau", "info"),
_ => BuildStatusPill("Aktif", "success")
};
return new
{
id = index + 1,
nama_surat = namaSurat,
tanggal_surat = ControllerSampleData.FormatTanggal(startDate.AddDays(index * 2)),
file_upload = fileUpload,
status,
aksi = BuildCrudActionButtons(index + 1)
};
})
.ToArray();
return Json(new { data });
}
[HttpGet]
public IActionResult TablePengadaanWadah()
{
var data = new[]
var data = Enumerable.Range(0, 100)
.Select(index =>
{
new {
rt = "001",
jumlah_kepala_keluarga = "11",
total_wadah_unit = "07",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "002",
jumlah_kepala_keluarga = "09",
total_wadah_unit = "01",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "003",
jumlah_kepala_keluarga = "21",
total_wadah_unit = "04",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "004",
jumlah_kepala_keluarga = "17",
total_wadah_unit = "02",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "005",
jumlah_kepala_keluarga = "18",
total_wadah_unit = "08",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "006",
jumlah_kepala_keluarga = "14",
total_wadah_unit = "05",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "007",
jumlah_kepala_keluarga = "02",
total_wadah_unit = "06",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "008",
jumlah_kepala_keluarga = "22",
total_wadah_unit = "06",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "009",
jumlah_kepala_keluarga = "01",
total_wadah_unit = "03",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
new {
rt = "010",
jumlah_kepala_keluarga = "28",
total_wadah_unit = "04",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>",
},
};
var jumlahKk = 40 + (index * 5 % 200);
var totalWadah = 4 + (index % 12);
var status = index % 7 == 0
? BuildStatusPill("Menunggu", "warning")
: BuildStatusPill("Aktif", "success");
var response = new
return new
{
data = data
rt = ((index % 25) + 1).ToString("D3"),
jumlah_kepala_keluarga = jumlahKk.ToString("D2"),
total_wadah_unit = totalWadah.ToString("D2"),
status
};
})
.ToArray();
return Json(response);
return Json(new { data });
}
[HttpGet]
public IActionResult TableKebutuhanSarpras()
{
var data = new[]
{
new {
rt = "001",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 11)),
jumlah_unit = "507",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "002",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 9)),
jumlah_unit = "501",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "003",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 21)),
jumlah_unit = "504",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "004",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 17)),
jumlah_unit = "502",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "005",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 18)),
jumlah_unit = "508",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "006",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 14)),
jumlah_unit = "505",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "007",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 2)),
jumlah_unit = "506",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "008",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 22)),
jumlah_unit = "506",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "009",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 1)),
jumlah_unit = "503",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
new {
rt = "010",
tanggal = ControllerSampleData.FormatTanggal(new DateTime(2023, 4, 28)),
jumlah_unit = "504",
aksi = "<div class=\"flex gap-2 \">" +
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" +
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" +
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" +
"</div>"
},
};
var startDate = new DateTime(2023, 4, 1);
var response = new
var data = Enumerable.Range(0, 100)
.Select(index =>
{
data = data
var jumlahUnit = 480 + (index * 7 % 120);
return new
{
rt = ((index % 40) + 1).ToString("D3"),
tanggal = ControllerSampleData.FormatTanggal(startDate.AddDays(index)),
jumlah_unit = jumlahUnit.ToString(),
aksi = BuildCrudActionButtons(index + 1)
};
})
.ToArray();
return Json(response);
return Json(new { data });
}
[HttpGet]
@ -590,6 +281,31 @@ namespace BpsRwApp.Controllers
return Json(new { data });
}
private static string BuildLokasiStatusBadge(int index)
{
var statuses = new[]
{
("Aktif", "success"),
("Dalam Review", "warning"),
("Tidak Aktif", "error")
};
var status = statuses[index % statuses.Length];
return $"<span class=\"badge badge-{status.Item2} badge-soft badge-sm rounded-full font-medium\">{status.Item1}</span>";
}
private static string BuildLokasiActionButtons(int id) => BuildCrudActionButtons(id);
private static string BuildStatusPill(string label, string tone) =>
$"<div class=\"badge badge-{tone} badge-soft rounded-full\">{label}</div>";
private static string BuildCrudActionButtons(int id) =>
"<div class=\"flex gap-2 \">" +
$"<button type=\"button\" class=\"btn btn-xs bg-white btn-detail rounded-full\" data-id=\"{id}\">Detail</button>" +
$"<button type=\"button\" class=\"btn btn-xs bg-white btn-edit rounded-full\" data-id=\"{id}\">Edit</button>" +
$"<button type=\"button\" class=\"btn btn-xs btn-error btn-outline btn-delete rounded-full\" data-id=\"{id}\">Delete</button>" +
"</div>";
[HttpGet]
public IActionResult DetailAlatPengumpulSampah(int id)
{

View File

@ -82,21 +82,8 @@
{ data: 'statusLahan' },
{ data: 'pemilikLahan' },
{ data: 'luasLahan' },
{
data: 'statusUsulan',
render: (data) => `<span class="badge badge-success badge-soft badge-sm rounded-full font-medium">${data}</span>`
},
{
data: null,
className: "text-center",
render: (data, type, row) => `<div class="flex justify-center gap-2">` +
`<button class="btn btn-xs bg-white btn-detail rounded-full" data-id="${row.id}">Detail</button>` +
`<button class="btn btn-xs bg-white btn-edit rounded-full" data-id="${row.id}">Edit</button>` +
`<button class="btn btn-xs btn-error btn-outline btn-delete rounded-full" data-id="${row.id}">Delete</button>` +
`</div>`,
orderable: false,
searchable: false
}
{ data: 'statusUsulan', className: "text-center", orderable: false, searchable: false },
{ data: 'aksi', className: "text-center", orderable: false, searchable: false }
]
});