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 Microsoft.AspNetCore.Mvc;
using System.Linq;
namespace BpsRwApp.Controllers namespace BpsRwApp.Controllers
{ {
@ -13,296 +14,138 @@ namespace BpsRwApp.Controllers
[HttpGet] [HttpGet]
public IActionResult TableRapot() public IActionResult TableRapot()
{ {
var data = new[] var data = Enumerable.Range(0, 100)
{ .Select(index =>
new { {
nama = "Risky Adi Putra", var nama = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>", var checklistCount = 8 + (index % 15);
berat_sampah = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>", var totalBeratSampah = 40 + (index * 3 % 70);
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>10", var fotoCount = 5 + (index * 4 % 250);
rumah_aktif_memilah = "<div class=\"badge badge-error badge-soft rounded-xs px-12\">0</div>", var rumahAktif = (index * 3) % 15;
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 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] [HttpGet]
public IActionResult TableChecklist() public IActionResult TableChecklist()
{ {
var data = new[] var data = Enumerable.Range(0, 100)
{ .Select(index =>
new { {
nama = "Risky Adi Putra", var nama = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
checklist = "<div class=\"badge badge-success badge-soft rounded-xs px-12\">10</div>", var checklistCount = 9 + (index % 18);
foto = "<button class=\"btn btn-xs btn-square me-2\" disabled><span class=\"icon icon-outline text-sm text-black\">image</span></button>10", var fotoCount = 3 + (index * 2 % 180);
rumah_aktif_memilah = "<div class=\"badge badge-error badge-soft rounded-xs px-12\">0/12</div>", var targetRumah = 8 + (index % 10);
aksi = "<div class=\"flex gap-2\">" + var rumahAktif = targetRumah - (index % 5);
"<a href=\"#\" class=\"btn bg-white rounded-full btn-xs\">Detail</a>" + if (rumahAktif < 0)
"</div>", {
}, rumahAktif = 0;
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 return new
{ {
data = data nama,
}; checklist = BuildMetricBadge(checklistCount, 10, 15),
foto = BuildFotoIndicator(fotoCount),
rumah_aktif_memilah = BuildRatioBadge(rumahAktif, targetRumah),
aksi = BuildDetailAction(),
};
})
.ToArray();
return Json(response); return Json(new { data });
} }
[HttpGet] [HttpGet]
public IActionResult TableBeratSampah() public IActionResult TableBeratSampah()
{ {
var data = new[] var data = Enumerable.Range(0, 100)
{ .Select(index =>
new { {
nama = "Risky Adi Putra", var nama = ControllerSampleData.PersonNames[index % ControllerSampleData.PersonNames.Length];
total_berat = 104, var mudahTerurai = 40 + (index * 2 % 80);
mudah_terurai = 104, var materialDaurUlang = 25 + (index * 3 % 60);
material_daur_ulang = 104, var b3 = 5 + index % 7;
b3 = 104, var residu = 10 + index % 9;
residu = 104, var totalBerat = mudahTerurai + materialDaurUlang + b3 + residu;
},
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 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 BpsRwApp.Models.ProfilRw;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
namespace BpsRwApp.Controllers namespace BpsRwApp.Controllers
{ {
public class ProfilRwController : AppControllerBase public class ProfilRwController : AppControllerBase
{ {
private static readonly List<AlatPengumpulSampahViewModel> SampleAlatPengumpul = new() private static readonly string[][] JadwalCombinations =
{ {
new AlatPengumpulSampahViewModel new[] { "Senin", "Rabu", "Jumat" },
{ new[] { "Selasa", "Kamis" },
Id = 1, new[] { "Sabtu", "Minggu" },
Kelurahan = "Kelurahan Cililitan", new[] { "Senin", "Selasa", "Kamis" },
Rw = "005", new[] { "Rabu", "Jumat" }
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"
}
}; };
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() public IActionResult Index()
{ {
return View(); return View();
@ -109,411 +70,141 @@ namespace BpsRwApp.Controllers
[HttpGet] [HttpGet]
public IActionResult TableLokasi() public IActionResult TableLokasi()
{ {
var data = new[] var data = Enumerable.Range(0, 100)
{ .Select(index =>
new { {
usulan = "Lokasi G", var wilayah = ControllerSampleData.WilayahSeeds[index % ControllerSampleData.WilayahSeeds.Length];
alamat = "Perumahan Mawar Indah", var street = ControllerSampleData.StreetNames[index % ControllerSampleData.StreetNames.Length];
statusLahan = "Inventaris", var pemilik = ControllerSampleData.PersonNames[(index + 3) % ControllerSampleData.PersonNames.Length];
pemilikLahan = "Larasati Wulandari", var luas = 300 + (index * 11 % 900);
luasLahan = 500, var statusLahan = (index % 3) switch
statusUsulan = "Aktif" {
}, 0 => "Inventaris",
new { 1 => "Sewa",
usulan = "Lokasi I", _ => "Milik Warga"
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 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] [HttpGet]
public IActionResult TableSuratUsulan() public IActionResult TableSuratUsulan()
{ {
var data = new[] var namaSuratTemplates = new[]
{ {
new { "Surat Permohonan Perbaikan Jalan Lingkungan",
nama_surat = "Surat Permohonan Perbaikan Jalan Lingkungan", "Surat Rekomendasi Pengajuan Kredit UMKM",
tanggal_surat = ControllerSampleData.FormatTanggal(new DateTime(2023, 7, 11)), "Surat Pernyataan Persetujuan Pembangunan Pos Kamling",
file_upload = "Surat Pengantar Proposal", "Surat Keterangan Tidak Mampu untuk Berobat",
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>", "Laporan Keuangan RW Triwulan",
aksi = "<div class=\"flex gap-2 \">" + "Surat Keputusan Jadwal Ronda Malam",
"<a class=\"btn btn-xs bg-white rounded-full\">Detail</a>" + "Surat Pemberitahuan Kerja Bakti Rutin",
"<a class=\"btn btn-xs bg-white rounded-full\">Edit</a>" + "Surat Edaran Pembayaran Iuran Sampah",
"<a class=\"btn btn-xs btn-error btn-outline rounded-full\">Delete</a>" + "Surat Pengantar Pembuatan KTP",
"</div>" "Surat Undangan Pertemuan PKK"
},
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>"
},
}; };
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] [HttpGet]
public IActionResult TablePengadaanWadah() public IActionResult TablePengadaanWadah()
{ {
var data = new[] var data = Enumerable.Range(0, 100)
{ .Select(index =>
new { {
rt = "001", var jumlahKk = 40 + (index * 5 % 200);
jumlah_kepala_keluarga = "11", var totalWadah = 4 + (index % 12);
total_wadah_unit = "07", var status = index % 7 == 0
status = "<div class=\"badge badge-success badge-soft rounded-full\">Aktif</div>", ? BuildStatusPill("Menunggu", "warning")
}, : BuildStatusPill("Aktif", "success");
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 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] [HttpGet]
public IActionResult TableKebutuhanSarpras() public IActionResult TableKebutuhanSarpras()
{ {
var data = new[] var startDate = new DateTime(2023, 4, 1);
{
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 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] [HttpGet]
@ -590,6 +281,31 @@ namespace BpsRwApp.Controllers
return Json(new { data }); 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] [HttpGet]
public IActionResult DetailAlatPengumpulSampah(int id) public IActionResult DetailAlatPengumpulSampah(int id)
{ {

View File

@ -82,21 +82,8 @@
{ data: 'statusLahan' }, { data: 'statusLahan' },
{ data: 'pemilikLahan' }, { data: 'pemilikLahan' },
{ data: 'luasLahan' }, { data: 'luasLahan' },
{ { data: 'statusUsulan', className: "text-center", orderable: false, searchable: false },
data: 'statusUsulan', { data: 'aksi', className: "text-center", orderable: false, searchable: false }
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
}
] ]
}); });