update: responsive datatables
parent
b854effd6d
commit
413cd6017a
|
@ -7,7 +7,7 @@
|
|||
<div class="bg-cyan-700 pt-30 pb-10 mb-8 shadow-md rounded-br-4xl rounded-bl-4xl relative overflow-hidden">
|
||||
<div class="absolute inset-0" style="background-image: radial-gradient(circle at 85% 1%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 96%, transparent 96%, transparent 100%), radial-gradient(circle at 14% 15%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 1%, transparent 1%, transparent 100%), radial-gradient(circle at 60% 90%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 20%, transparent 20%, transparent 100%), radial-gradient(circle at 79% 7%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 78%, transparent 78%, transparent 100%), radial-gradient(circle at 55% 65%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 52%, transparent 52%, transparent 100%), linear-gradient(135deg, rgb(0, 163, 227), rgb(6, 182, 212));"></div>
|
||||
|
||||
<div class="max-w-6xl mx-auto px-6 hidden md:block relative z-10">
|
||||
<div class="max-w-6xl mx-auto px-6 relative z-10">
|
||||
<nav class="flex items-center text-white text-sm space-x-2" aria-label="Breadcrumb">
|
||||
<a href="@Url.Action("Index", "Home")" class="hover:underline">Beranda</a>
|
||||
<i class="w-4 h-4 text-white transition-colors duration-300" data-lucide="chevron-right"></i>
|
||||
|
@ -213,13 +213,13 @@
|
|||
</div>
|
||||
|
||||
<div class="overflow-x-auto">
|
||||
<table id="pengangkutanTable" class="min-w-full bg-white">
|
||||
<table id="pengangkutanTable" class="w-full bg-white table-fixed" style="width:100%">
|
||||
<thead class="bg-cyan-400 text-white">
|
||||
<tr>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">No</th>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">Perusahaan</th>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">Alamat</th>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">Berlaku Hingga</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 5%">No</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 25%">Perusahaan</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 50%">Alamat</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 20%">Berlaku Hingga</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<div class="bg-cyan-700 pt-30 pb-10 mb-8 shadow-md rounded-br-4xl rounded-bl-4xl relative overflow-hidden">
|
||||
<div class="absolute inset-0" style="background-image: radial-gradient(circle at 85% 1%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 96%, transparent 96%, transparent 100%), radial-gradient(circle at 14% 15%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 1%, transparent 1%, transparent 100%), radial-gradient(circle at 60% 90%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 20%, transparent 20%, transparent 100%), radial-gradient(circle at 79% 7%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 78%, transparent 78%, transparent 100%), radial-gradient(circle at 55% 65%, hsla(190, 0%, 93%, 0.05) 0%, hsla(190, 0%, 93%, 0.05) 52%, transparent 52%, transparent 100%), linear-gradient(135deg, rgb(0, 163, 227), rgb(6, 182, 212));"></div>
|
||||
|
||||
<div class="max-w-6xl mx-auto px-6 hidden md:block relative z-10">
|
||||
<div class="max-w-6xl mx-auto px-6 relative z-10">
|
||||
<nav class="flex items-center text-white text-sm space-x-2" aria-label="Breadcrumb">
|
||||
<a href="@Url.Action("Index", "Home")" class="hover:underline">Beranda</a>
|
||||
<i class="w-4 h-4 text-white transition-colors duration-300" data-lucide="chevron-right"></i>
|
||||
|
@ -292,13 +292,13 @@
|
|||
</div>
|
||||
|
||||
<div class="overflow-x-auto">
|
||||
<table id="pengolahanTable" class="min-w-full bg-white">
|
||||
<table id="pengolahanTable" class="w-full bg-white table-fixed" style="width:100%">
|
||||
<thead class="bg-cyan-400 text-white">
|
||||
<tr>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">No</th>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">Perusahaan</th>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">Alamat</th>
|
||||
<th class="px-6 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider">Berlaku Hingga</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 5%">No</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 25%">Perusahaan</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 50%">Alamat</th>
|
||||
<th class="px-3 py-4 text-left text-white text-sm font-semibold uppercase tracking-wider" style="width: 20%">Berlaku Hingga</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200">
|
||||
|
|
|
@ -16,3 +16,4 @@
|
|||
<script src="https://cdn.datatables.net/2.1.8/js/dataTables.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/2.1.8/js/dataTables.tailwindcss.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/responsive/3.0.3/js/dataTables.responsive.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/responsive/3.0.3/js/responsive.dataTables.min.js"></script>
|
||||
|
|
|
@ -51,7 +51,9 @@
|
|||
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/2.1.8/css/dataTables.tailwindcss.css">
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/responsive/3.0.3/css/responsive.dataTables.css">
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/responsive/3.0.3/css/responsive.tailwindcss.css">
|
||||
<link rel="stylesheet" href="~/website/css/datatables-responsive.css" asp-append-version="true" />
|
||||
<link rel="stylesheet" href="~/website/css/datatables-custom.css" asp-append-version="true" />
|
||||
|
||||
<dynamic-section name="css" />
|
||||
@await RenderSectionAsync("css", required: false)
|
||||
|
|
|
@ -0,0 +1,195 @@
|
|||
.table-fixed {
|
||||
table-layout: fixed;
|
||||
}
|
||||
|
||||
.table-fixed td,
|
||||
.table-fixed th {
|
||||
word-wrap: break-word;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
.break-words {
|
||||
word-wrap: break-word;
|
||||
word-break: break-word;
|
||||
overflow-wrap: break-word;
|
||||
white-space: normal !important;
|
||||
}
|
||||
|
||||
.dtr-control {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#pengolahanTable td,
|
||||
#pengangkutanTable td {
|
||||
vertical-align: top;
|
||||
padding: 12px 8px;
|
||||
}
|
||||
|
||||
#pengolahanTable th,
|
||||
#pengangkutanTable th {
|
||||
vertical-align: middle;
|
||||
padding: 16px 8px;
|
||||
}
|
||||
|
||||
#pengolahanTable th:nth-child(1),
|
||||
#pengolahanTable td:nth-child(1),
|
||||
#pengangkutanTable th:nth-child(1),
|
||||
#pengangkutanTable td:nth-child(1) {
|
||||
width: 5% !important;
|
||||
min-width: 40px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#pengolahanTable th:nth-child(2),
|
||||
#pengolahanTable td:nth-child(2),
|
||||
#pengangkutanTable th:nth-child(2),
|
||||
#pengangkutanTable td:nth-child(2) {
|
||||
width: 25% !important;
|
||||
min-width: 150px;
|
||||
}
|
||||
|
||||
#pengolahanTable th:nth-child(3),
|
||||
#pengolahanTable td:nth-child(3),
|
||||
#pengangkutanTable th:nth-child(3),
|
||||
#pengangkutanTable td:nth-child(3) {
|
||||
width: 50% !important;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
#pengolahanTable th:nth-child(4),
|
||||
#pengolahanTable td:nth-child(4),
|
||||
#pengangkutanTable th:nth-child(4),
|
||||
#pengangkutanTable td:nth-child(4) {
|
||||
width: 20% !important;
|
||||
min-width: 120px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.overflow-x-auto {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
#pengolahanTable,
|
||||
#pengangkutanTable {
|
||||
min-width: 600px;
|
||||
}
|
||||
|
||||
#pengolahanTable th,
|
||||
#pengolahanTable td,
|
||||
#pengangkutanTable th,
|
||||
#pengangkutanTable td {
|
||||
padding: 8px 4px;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.dataTables_wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter,
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
text-align: center;
|
||||
margin: 0.75rem 0;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
width: 100% !important;
|
||||
max-width: 280px;
|
||||
margin: 0.5rem 0 0 0 !important;
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_length select {
|
||||
margin: 0 0.5rem;
|
||||
padding: 6px 8px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_info {
|
||||
font-size: 0.875rem;
|
||||
color: #6b7280;
|
||||
margin: 1rem 0 0.5rem 0;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button {
|
||||
padding: 8px 12px !important;
|
||||
margin: 2px !important;
|
||||
font-size: 0.875rem !important;
|
||||
min-width: 36px !important;
|
||||
border-radius: 6px !important;
|
||||
border: 1px solid #d1d5db !important;
|
||||
background: white !important;
|
||||
color: #374151 !important;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
||||
background: #f3f4f6 !important;
|
||||
border-color: #9ca3af !important;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.current {
|
||||
background: #0ea5e9 !important;
|
||||
color: white !important;
|
||||
border-color: #0ea5e9 !important;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled {
|
||||
opacity: 0.5 !important;
|
||||
cursor: not-allowed !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.dataTables_wrapper
|
||||
.dataTables_paginate
|
||||
.paginate_button:not(.current):not(.previous):not(.next):not(.first):not(
|
||||
.last
|
||||
) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.previous:before {
|
||||
content: "‹";
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.next:before {
|
||||
content: "›";
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.previous,
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.next {
|
||||
padding: 10px 16px !important;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
max-width: 240px;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.dataTables_wrapper .dataTables_length {
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
}
|
||||
|
||||
.status-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 4px 8px;
|
||||
border-radius: 9999px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 500;
|
||||
margin-top: 4px;
|
||||
}
|
|
@ -85,12 +85,10 @@
|
|||
--color-indigo-50: oklch(96.2% 0.018 272.314);
|
||||
--color-indigo-100: oklch(93% 0.034 272.788);
|
||||
--color-indigo-300: oklch(78.5% 0.115 274.713);
|
||||
--color-indigo-700: oklch(45.7% 0.24 277.023);
|
||||
--color-indigo-800: oklch(39.8% 0.195 277.366);
|
||||
--color-purple-50: oklch(97.7% 0.014 308.299);
|
||||
--color-purple-100: oklch(94.6% 0.033 307.174);
|
||||
--color-purple-200: oklch(90.2% 0.063 306.703);
|
||||
--color-purple-300: oklch(82.7% 0.119 306.383);
|
||||
--color-purple-500: oklch(62.7% 0.265 303.9);
|
||||
--color-purple-600: oklch(55.8% 0.288 302.321);
|
||||
--color-purple-700: oklch(49.6% 0.265 301.924);
|
||||
|
@ -98,8 +96,6 @@
|
|||
--color-purple-900: oklch(38.1% 0.176 304.987);
|
||||
--color-pink-50: oklch(97.1% 0.014 343.198);
|
||||
--color-pink-500: oklch(65.6% 0.241 354.308);
|
||||
--color-pink-600: oklch(59.2% 0.249 0.584);
|
||||
--color-pink-700: oklch(52.5% 0.223 3.958);
|
||||
--color-rose-50: oklch(96.9% 0.015 12.422);
|
||||
--color-rose-500: oklch(64.5% 0.246 16.439);
|
||||
--color-rose-600: oklch(58.6% 0.253 17.585);
|
||||
|
@ -121,13 +117,15 @@
|
|||
--color-gray-700: oklch(37.3% 0.034 259.733);
|
||||
--color-gray-800: oklch(27.8% 0.033 256.848);
|
||||
--color-gray-900: oklch(21% 0.034 264.665);
|
||||
--color-neutral-200: oklch(92.2% 0 0);
|
||||
--color-neutral-600: oklch(43.9% 0 0);
|
||||
--color-neutral-800: oklch(26.9% 0 0);
|
||||
--color-black: #000;
|
||||
--color-white: #fff;
|
||||
--spacing: 0.25rem;
|
||||
--container-xs: 20rem;
|
||||
--container-sm: 24rem;
|
||||
--container-md: 28rem;
|
||||
--container-lg: 32rem;
|
||||
--container-xl: 36rem;
|
||||
--container-2xl: 42rem;
|
||||
--container-3xl: 48rem;
|
||||
|
@ -150,8 +148,6 @@
|
|||
--text-3xl--line-height: calc(2.25 / 1.875);
|
||||
--text-4xl: 2.25rem;
|
||||
--text-4xl--line-height: calc(2.5 / 2.25);
|
||||
--text-5xl: 3rem;
|
||||
--text-5xl--line-height: 1;
|
||||
--text-6xl: 3.75rem;
|
||||
--text-6xl--line-height: 1;
|
||||
--font-weight-light: 300;
|
||||
|
@ -181,7 +177,6 @@
|
|||
--blur-sm: 8px;
|
||||
--blur-md: 12px;
|
||||
--blur-lg: 16px;
|
||||
--blur-xl: 24px;
|
||||
--aspect-video: 16 / 9;
|
||||
--default-transition-duration: 150ms;
|
||||
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
|
@ -629,6 +624,9 @@
|
|||
.col-span-2 {
|
||||
grid-column: span 2 / span 2;
|
||||
}
|
||||
.col-span-12 {
|
||||
grid-column: span 12 / span 12;
|
||||
}
|
||||
.float-end {
|
||||
float: inline-end;
|
||||
}
|
||||
|
@ -809,9 +807,6 @@
|
|||
.mt-8 {
|
||||
margin-top: calc(var(--spacing) * 8);
|
||||
}
|
||||
.mt-12 {
|
||||
margin-top: calc(var(--spacing) * 12);
|
||||
}
|
||||
.mt-25 {
|
||||
margin-top: calc(var(--spacing) * 25);
|
||||
}
|
||||
|
@ -869,18 +864,12 @@
|
|||
.-ml-1 {
|
||||
margin-left: calc(var(--spacing) * -1);
|
||||
}
|
||||
.ml-0 {
|
||||
margin-left: calc(var(--spacing) * 0);
|
||||
}
|
||||
.ml-2 {
|
||||
margin-left: calc(var(--spacing) * 2);
|
||||
}
|
||||
.ml-4 {
|
||||
margin-left: calc(var(--spacing) * 4);
|
||||
}
|
||||
.ml-9 {
|
||||
margin-left: calc(var(--spacing) * 9);
|
||||
}
|
||||
.ml-auto {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
@ -1016,6 +1005,12 @@
|
|||
.h-full {
|
||||
height: 100%;
|
||||
}
|
||||
.max-h-\[85vh\] {
|
||||
max-height: 85vh;
|
||||
}
|
||||
.max-h-\[90vh\] {
|
||||
max-height: 90vh;
|
||||
}
|
||||
.min-h-\[200px\] {
|
||||
min-height: 200px;
|
||||
}
|
||||
|
@ -1166,6 +1161,9 @@
|
|||
.shrink {
|
||||
flex-shrink: 1;
|
||||
}
|
||||
.shrink-0 {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.flex-grow {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
@ -1187,6 +1185,9 @@
|
|||
.border-collapse {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.border-separate {
|
||||
border-collapse: separate;
|
||||
}
|
||||
.origin-top {
|
||||
transform-origin: top;
|
||||
}
|
||||
|
@ -1234,12 +1235,6 @@
|
|||
--tw-scale-z: 100%;
|
||||
scale: var(--tw-scale-x) var(--tw-scale-y);
|
||||
}
|
||||
.scale-102 {
|
||||
--tw-scale-x: 102%;
|
||||
--tw-scale-y: 102%;
|
||||
--tw-scale-z: 102%;
|
||||
scale: var(--tw-scale-x) var(--tw-scale-y);
|
||||
}
|
||||
.scale-110 {
|
||||
--tw-scale-x: 110%;
|
||||
--tw-scale-y: 110%;
|
||||
|
@ -1294,6 +1289,9 @@
|
|||
.grid-cols-4 {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
.grid-cols-12 {
|
||||
grid-template-columns: repeat(12, minmax(0, 1fr));
|
||||
}
|
||||
.flex-col {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
@ -1399,13 +1397,6 @@
|
|||
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
|
||||
}
|
||||
}
|
||||
.space-x-1 {
|
||||
:where(& > :not(:last-child)) {
|
||||
--tw-space-x-reverse: 0;
|
||||
margin-inline-start: calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));
|
||||
margin-inline-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)));
|
||||
}
|
||||
}
|
||||
.space-x-2 {
|
||||
:where(& > :not(:last-child)) {
|
||||
--tw-space-x-reverse: 0;
|
||||
|
@ -1448,11 +1439,6 @@
|
|||
border-color: var(--color-amber-100);
|
||||
}
|
||||
}
|
||||
.divide-gray-100 {
|
||||
:where(& > :not(:last-child)) {
|
||||
border-color: var(--color-gray-100);
|
||||
}
|
||||
}
|
||||
.divide-gray-200 {
|
||||
:where(& > :not(:last-child)) {
|
||||
border-color: var(--color-gray-200);
|
||||
|
@ -1629,9 +1615,6 @@
|
|||
.border-black {
|
||||
border-color: var(--color-black);
|
||||
}
|
||||
.border-blue-100 {
|
||||
border-color: var(--color-blue-100);
|
||||
}
|
||||
.border-blue-200 {
|
||||
border-color: var(--color-blue-200);
|
||||
}
|
||||
|
@ -1641,9 +1624,6 @@
|
|||
.border-blue-600 {
|
||||
border-color: var(--color-blue-600);
|
||||
}
|
||||
.border-blue-800 {
|
||||
border-color: var(--color-blue-800);
|
||||
}
|
||||
.border-cyan-100 {
|
||||
border-color: var(--color-cyan-100);
|
||||
}
|
||||
|
@ -1701,9 +1681,6 @@
|
|||
.border-gray-300 {
|
||||
border-color: var(--color-gray-300);
|
||||
}
|
||||
.border-gray-400 {
|
||||
border-color: var(--color-gray-400);
|
||||
}
|
||||
.border-green-100 {
|
||||
border-color: var(--color-green-100);
|
||||
}
|
||||
|
@ -1716,6 +1693,9 @@
|
|||
.border-green-400 {
|
||||
border-color: var(--color-green-400);
|
||||
}
|
||||
.border-neutral-200 {
|
||||
border-color: var(--color-neutral-200);
|
||||
}
|
||||
.border-orange-200 {
|
||||
border-color: var(--color-orange-200);
|
||||
}
|
||||
|
@ -1749,9 +1729,6 @@
|
|||
border-color: color-mix(in oklab, var(--color-slate-200) 50%, transparent);
|
||||
}
|
||||
}
|
||||
.border-transparent {
|
||||
border-color: transparent;
|
||||
}
|
||||
.border-white {
|
||||
border-color: var(--color-white);
|
||||
}
|
||||
|
@ -1830,6 +1807,9 @@
|
|||
.bg-blue-600 {
|
||||
background-color: var(--color-blue-600);
|
||||
}
|
||||
.bg-current {
|
||||
background-color: currentcolor;
|
||||
}
|
||||
.bg-cyan-50 {
|
||||
background-color: var(--color-cyan-50);
|
||||
}
|
||||
|
@ -1845,9 +1825,6 @@
|
|||
.bg-cyan-500 {
|
||||
background-color: var(--color-cyan-500);
|
||||
}
|
||||
.bg-cyan-600 {
|
||||
background-color: var(--color-cyan-600);
|
||||
}
|
||||
.bg-cyan-700 {
|
||||
background-color: var(--color-cyan-700);
|
||||
}
|
||||
|
@ -1908,9 +1885,6 @@
|
|||
.bg-green-600 {
|
||||
background-color: var(--color-green-600);
|
||||
}
|
||||
.bg-indigo-100 {
|
||||
background-color: var(--color-indigo-100);
|
||||
}
|
||||
.bg-indigo-300 {
|
||||
background-color: var(--color-indigo-300);
|
||||
}
|
||||
|
@ -1929,9 +1903,6 @@
|
|||
.bg-orange-500 {
|
||||
background-color: var(--color-orange-500);
|
||||
}
|
||||
.bg-pink-500 {
|
||||
background-color: var(--color-pink-500);
|
||||
}
|
||||
.bg-purple-50 {
|
||||
background-color: var(--color-purple-50);
|
||||
}
|
||||
|
@ -2040,10 +2011,6 @@
|
|||
--tw-gradient-from: var(--color-blue-100);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.from-blue-400 {
|
||||
--tw-gradient-from: var(--color-blue-400);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.from-blue-500 {
|
||||
--tw-gradient-from: var(--color-blue-500);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
|
@ -2152,10 +2119,6 @@
|
|||
--tw-gradient-from: var(--color-slate-700);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.from-slate-800 {
|
||||
--tw-gradient-from: var(--color-slate-800);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.from-teal-400 {
|
||||
--tw-gradient-from: var(--color-teal-400);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
|
@ -2190,11 +2153,6 @@
|
|||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
||||
}
|
||||
.via-blue-700 {
|
||||
--tw-gradient-via: var(--color-blue-700);
|
||||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
||||
}
|
||||
.via-cyan-400 {
|
||||
--tw-gradient-via: var(--color-cyan-400);
|
||||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||
|
@ -2220,11 +2178,6 @@
|
|||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
||||
}
|
||||
.via-slate-700 {
|
||||
--tw-gradient-via: var(--color-slate-700);
|
||||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
||||
}
|
||||
.via-white {
|
||||
--tw-gradient-via: var(--color-white);
|
||||
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
||||
|
@ -2254,10 +2207,6 @@
|
|||
--tw-gradient-to: var(--color-blue-600);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.to-blue-700 {
|
||||
--tw-gradient-to: var(--color-blue-700);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.to-cyan-50 {
|
||||
--tw-gradient-to: var(--color-cyan-50);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
|
@ -2342,10 +2291,6 @@
|
|||
--tw-gradient-to: var(--color-purple-50);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.to-purple-500 {
|
||||
--tw-gradient-to: var(--color-purple-500);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.to-purple-600 {
|
||||
--tw-gradient-to: var(--color-purple-600);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
|
@ -2382,10 +2327,6 @@
|
|||
--tw-gradient-to: var(--color-slate-50);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.to-slate-800 {
|
||||
--tw-gradient-to: var(--color-slate-800);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
.to-slate-900 {
|
||||
--tw-gradient-to: var(--color-slate-900);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
|
@ -2480,9 +2421,6 @@
|
|||
.py-0 {
|
||||
padding-block: calc(var(--spacing) * 0);
|
||||
}
|
||||
.py-0\.5 {
|
||||
padding-block: calc(var(--spacing) * 0.5);
|
||||
}
|
||||
.py-1 {
|
||||
padding-block: calc(var(--spacing) * 1);
|
||||
}
|
||||
|
@ -2750,6 +2688,9 @@
|
|||
.text-wrap {
|
||||
text-wrap: wrap;
|
||||
}
|
||||
.break-words {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
.break-all {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
@ -2837,9 +2778,6 @@
|
|||
.text-gray-900 {
|
||||
color: var(--color-gray-900);
|
||||
}
|
||||
.text-green-100 {
|
||||
color: var(--color-green-100);
|
||||
}
|
||||
.text-green-400 {
|
||||
color: var(--color-green-400);
|
||||
}
|
||||
|
@ -2858,8 +2796,8 @@
|
|||
.text-green-900 {
|
||||
color: var(--color-green-900);
|
||||
}
|
||||
.text-indigo-800 {
|
||||
color: var(--color-indigo-800);
|
||||
.text-neutral-800 {
|
||||
color: var(--color-neutral-800);
|
||||
}
|
||||
.text-orange-100 {
|
||||
color: var(--color-orange-100);
|
||||
|
@ -2879,9 +2817,6 @@
|
|||
.text-orange-900 {
|
||||
color: var(--color-orange-900);
|
||||
}
|
||||
.text-purple-100 {
|
||||
color: var(--color-purple-100);
|
||||
}
|
||||
.text-purple-600 {
|
||||
color: var(--color-purple-600);
|
||||
}
|
||||
|
@ -2960,11 +2895,6 @@
|
|||
.underline {
|
||||
text-decoration-line: underline;
|
||||
}
|
||||
.placeholder-gray-400 {
|
||||
&::placeholder {
|
||||
color: var(--color-gray-400);
|
||||
}
|
||||
}
|
||||
.opacity-0 {
|
||||
opacity: 0%;
|
||||
}
|
||||
|
@ -3155,6 +3085,10 @@
|
|||
--tw-outline-style: none;
|
||||
outline-style: none;
|
||||
}
|
||||
.select-all {
|
||||
-webkit-user-select: all;
|
||||
user-select: all;
|
||||
}
|
||||
.select-none {
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
|
@ -3315,13 +3249,6 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.hover\:border-transparent {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
.hover\:bg-amber-50 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
|
@ -3478,30 +3405,6 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.hover\:bg-gradient-to-r {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
--tw-gradient-position: to right in oklab;
|
||||
background-image: linear-gradient(var(--tw-gradient-stops));
|
||||
}
|
||||
}
|
||||
}
|
||||
.hover\:from-blue-500 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
--tw-gradient-from: var(--color-blue-500);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
}
|
||||
}
|
||||
.hover\:from-blue-600 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
--tw-gradient-from: var(--color-blue-600);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
}
|
||||
}
|
||||
.hover\:from-cyan-600 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
|
@ -3566,22 +3469,6 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.hover\:to-purple-600 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
--tw-gradient-to: var(--color-purple-600);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
}
|
||||
}
|
||||
.hover\:to-purple-700 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
--tw-gradient-to: var(--color-purple-700);
|
||||
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
||||
}
|
||||
}
|
||||
}
|
||||
.hover\:text-amber-300 {
|
||||
&:hover {
|
||||
@media (hover: hover) {
|
||||
|
@ -3778,21 +3665,11 @@
|
|||
margin-top: calc(var(--spacing) * 8);
|
||||
}
|
||||
}
|
||||
.sm\:mb-0 {
|
||||
@media (width >= 40rem) {
|
||||
margin-bottom: calc(var(--spacing) * 0);
|
||||
}
|
||||
}
|
||||
.sm\:mb-8 {
|
||||
@media (width >= 40rem) {
|
||||
margin-bottom: calc(var(--spacing) * 8);
|
||||
}
|
||||
}
|
||||
.sm\:block {
|
||||
@media (width >= 40rem) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.sm\:h-5 {
|
||||
@media (width >= 40rem) {
|
||||
height: calc(var(--spacing) * 5);
|
||||
|
@ -3823,11 +3700,6 @@
|
|||
max-width: var(--container-md);
|
||||
}
|
||||
}
|
||||
.sm\:flex-row {
|
||||
@media (width >= 40rem) {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
.sm\:space-y-6 {
|
||||
@media (width >= 40rem) {
|
||||
:where(& > :not(:last-child)) {
|
||||
|
@ -3872,11 +3744,6 @@
|
|||
padding-left: calc(var(--spacing) * 10);
|
||||
}
|
||||
}
|
||||
.sm\:text-right {
|
||||
@media (width >= 40rem) {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
.sm\:text-3xl {
|
||||
@media (width >= 40rem) {
|
||||
font-size: var(--text-3xl);
|
||||
|
@ -3965,21 +3832,6 @@
|
|||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
.md\:items-center {
|
||||
@media (width >= 48rem) {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.md\:justify-between {
|
||||
@media (width >= 48rem) {
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.md\:gap-0 {
|
||||
@media (width >= 48rem) {
|
||||
gap: calc(var(--spacing) * 0);
|
||||
}
|
||||
}
|
||||
.md\:space-x-4 {
|
||||
@media (width >= 48rem) {
|
||||
:where(& > :not(:last-child)) {
|
||||
|
@ -4100,25 +3952,6 @@
|
|||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
.lg\:items-center {
|
||||
@media (width >= 64rem) {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.lg\:justify-between {
|
||||
@media (width >= 64rem) {
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.lg\:space-y-0 {
|
||||
@media (width >= 64rem) {
|
||||
:where(& > :not(:last-child)) {
|
||||
--tw-space-y-reverse: 0;
|
||||
margin-block-start: calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));
|
||||
margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));
|
||||
}
|
||||
}
|
||||
}
|
||||
.lg\:p-8 {
|
||||
@media (width >= 64rem) {
|
||||
padding: calc(var(--spacing) * 8);
|
||||
|
@ -4139,6 +3972,16 @@
|
|||
padding-inline: calc(var(--spacing) * 8);
|
||||
}
|
||||
}
|
||||
.dark\:border-neutral-600 {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
border-color: var(--color-neutral-600);
|
||||
}
|
||||
}
|
||||
.dark\:text-white {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
color: var(--color-white);
|
||||
}
|
||||
}
|
||||
}
|
||||
@property --tw-translate-x {
|
||||
syntax: "*";
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
},
|
||||
{
|
||||
"nama": "PT. Green Processing Solution",
|
||||
"alamat": "Jl. Sudirman No. 78 Kelurahan Tanah Abang, Jakarta Pusat",
|
||||
"alamat": "Jl. Sudirman No. 78 Kelurahan Tanah Abang, Jakarta Pusatssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss",
|
||||
"tglBerlakuIzin": "2026-01-20"
|
||||
},
|
||||
{
|
||||
|
|
|
@ -2,46 +2,64 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
initializePengangkutanDataTable();
|
||||
});
|
||||
|
||||
function parseDateDMY(dateStr) {
|
||||
if (!dateStr) return new Date(dateStr);
|
||||
if (dateStr.indexOf("/") !== -1) {
|
||||
const parts = dateStr.split("/");
|
||||
const d = parseInt(parts[0], 10);
|
||||
const m = parseInt(parts[1], 10) - 1;
|
||||
const y = parseInt(parts[2], 10);
|
||||
return new Date(y, m, d);
|
||||
}
|
||||
return new Date(dateStr);
|
||||
}
|
||||
|
||||
function initializePengangkutanDataTable() {
|
||||
if (!document.getElementById("pengangkutanTable")) return;
|
||||
|
||||
if (typeof $ !== "undefined" && $.fn.DataTable) {
|
||||
$("#pengangkutanTable").DataTable({
|
||||
ajax: {
|
||||
url: "/website/data/pengangkutan-data.json",
|
||||
type: "GET",
|
||||
dataSrc: "",
|
||||
url: "/api/web/jasa/angkutan",
|
||||
type: "POST",
|
||||
dataSrc: function (json) {
|
||||
if (!json) return [];
|
||||
return json.data || [];
|
||||
},
|
||||
error: function (xhr, error, thrown) {
|
||||
console.error("Error fetching pengangkutan data:", error || thrown);
|
||||
},
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
data: null,
|
||||
className: "px-6 py-4 text-sm text-gray-900 text-center font-medium",
|
||||
className: "px-3 py-4 text-sm text-gray-900 text-center font-medium",
|
||||
title: "No",
|
||||
width: "8%",
|
||||
width: "5%",
|
||||
render: function (data, type, row, meta) {
|
||||
return meta.row + 1;
|
||||
},
|
||||
},
|
||||
{
|
||||
data: "nama",
|
||||
className: "px-6 py-4 text-sm text-gray-900 font-medium",
|
||||
className: "px-3 py-4 text-sm text-gray-900 font-medium break-words",
|
||||
title: "Nama Perusahaan",
|
||||
width: "35%",
|
||||
width: "25%",
|
||||
},
|
||||
{
|
||||
data: "alamat",
|
||||
className: "px-6 py-4 text-sm text-gray-700",
|
||||
className: "px-3 py-4 text-sm text-gray-700 break-words",
|
||||
title: "Alamat",
|
||||
width: "40%",
|
||||
width: "50%",
|
||||
},
|
||||
{
|
||||
data: "tglBerlakuIzin",
|
||||
className: "px-6 py-4 text-sm text-gray-900 text-center",
|
||||
className: "px-3 py-4 text-sm text-gray-900 text-center",
|
||||
title: "Berlaku Hingga",
|
||||
width: "17%",
|
||||
width: "20%",
|
||||
render: function (data, type, row) {
|
||||
if (type === "display") {
|
||||
const date = new Date(data);
|
||||
const date = parseDateDMY(data);
|
||||
const formattedDate = date.toLocaleDateString("id-ID", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
|
@ -49,7 +67,7 @@ function initializePengangkutanDataTable() {
|
|||
});
|
||||
|
||||
const today = new Date();
|
||||
const expiry = new Date(data);
|
||||
const expiry = parseDateDMY(data);
|
||||
const daysUntilExpiry = Math.ceil(
|
||||
(expiry - today) / (1000 * 60 * 60 * 24)
|
||||
);
|
||||
|
@ -146,6 +164,13 @@ function initializePengangkutanDataTable() {
|
|||
.find(".dt-paging .dt-paging-button.disabled")
|
||||
.addClass("opacity-50 cursor-not-allowed");
|
||||
|
||||
if (window.innerWidth <= 768) {
|
||||
wrapper.find(".dt-paging").addClass("text-center");
|
||||
wrapper.find(".dt-info").addClass("text-center text-sm");
|
||||
wrapper.find(".dt-length").addClass("text-center");
|
||||
wrapper.find(".dt-search").addClass("text-center");
|
||||
}
|
||||
|
||||
wrapper.find(".dt-length").addClass("flex items-center space-x-2");
|
||||
wrapper.find(".dt-search").addClass("flex items-center space-x-2");
|
||||
wrapper.find(".dt-info").addClass("text-sm text-gray-600");
|
||||
|
@ -160,6 +185,21 @@ function initializePengangkutanDataTable() {
|
|||
$("#pengangkutanTable tbody tr").addClass(
|
||||
"transition-all duration-200"
|
||||
);
|
||||
|
||||
$(window).on("resize", function () {
|
||||
const wrapper = $(".dataTables_wrapper");
|
||||
if (window.innerWidth <= 768) {
|
||||
wrapper.find(".dt-paging").addClass("text-center");
|
||||
wrapper.find(".dt-info").addClass("text-center text-sm");
|
||||
wrapper.find(".dt-length").addClass("text-center");
|
||||
wrapper.find(".dt-search").addClass("text-center");
|
||||
} else {
|
||||
wrapper.find(".dt-paging").removeClass("text-center");
|
||||
wrapper.find(".dt-info").removeClass("text-center text-sm");
|
||||
wrapper.find(".dt-length").removeClass("text-center");
|
||||
wrapper.find(".dt-search").removeClass("text-center");
|
||||
}
|
||||
});
|
||||
},
|
||||
drawCallback: function () {
|
||||
$("#pengangkutanTable tbody tr")
|
||||
|
@ -185,14 +225,17 @@ function initializePengangkutanDataTable() {
|
|||
}
|
||||
|
||||
function loadPengangkutanDataManually() {
|
||||
fetch("/website/data/pengangkutan-data.json")
|
||||
fetch("https://pesapakawan.dinaslhdki.id/api/web/jasa/angkutan", {
|
||||
method: "POST",
|
||||
})
|
||||
.then((response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
.then((resp) => {
|
||||
const data = resp && resp.data ? resp.data : [];
|
||||
const tbody = document.querySelector("#pengangkutanTable tbody");
|
||||
tbody.innerHTML = "";
|
||||
|
||||
|
@ -202,7 +245,7 @@ function loadPengangkutanDataManually() {
|
|||
index % 2 === 0 ? "bg-gray-50" : "bg-white"
|
||||
} hover:bg-blue-50 transition-all duration-200`;
|
||||
|
||||
const date = new Date(item.tglBerlakuIzin);
|
||||
const date = parseDateDMY(item.tglBerlakuIzin);
|
||||
const formattedDate = date.toLocaleDateString("id-ID", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
|
@ -228,14 +271,16 @@ function loadPengangkutanDataManually() {
|
|||
}
|
||||
|
||||
row.innerHTML = `
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 text-center font-medium">${
|
||||
<td class="px-3 py-4 text-sm text-gray-900 text-center font-medium" style="width: 5%">${
|
||||
index + 1
|
||||
}</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 font-medium">${
|
||||
<td class="px-3 py-4 text-sm text-gray-900 font-medium break-words" style="width: 25%">${
|
||||
item.nama
|
||||
}</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-700">${item.alamat}</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 text-center">
|
||||
<td class="px-3 py-4 text-sm text-gray-700 break-words" style="width: 50%">${
|
||||
item.alamat
|
||||
}</td>
|
||||
<td class="px-3 py-4 text-sm text-gray-900 text-center" style="width: 20%">
|
||||
<div class="text-sm font-medium text-gray-900">${formattedDate}</div>
|
||||
<span class="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium ${statusClass} mt-1">
|
||||
${statusText}
|
||||
|
|
|
@ -2,46 +2,67 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
initializePengolahanDataTable();
|
||||
});
|
||||
|
||||
// helper: parse date string in format dd/mm/yyyy to a Date object (local)
|
||||
function parseDateDMY(dateStr) {
|
||||
if (!dateStr) return new Date(dateStr);
|
||||
// accept either dd/mm/yyyy or ISO
|
||||
if (dateStr.indexOf("/") !== -1) {
|
||||
const parts = dateStr.split("/");
|
||||
// parts[0]=dd, [1]=mm, [2]=yyyy
|
||||
const d = parseInt(parts[0], 10);
|
||||
const m = parseInt(parts[1], 10) - 1;
|
||||
const y = parseInt(parts[2], 10);
|
||||
return new Date(y, m, d);
|
||||
}
|
||||
return new Date(dateStr);
|
||||
}
|
||||
|
||||
function initializePengolahanDataTable() {
|
||||
if (!document.getElementById("pengolahanTable")) return;
|
||||
|
||||
if (typeof $ !== "undefined" && $.fn.DataTable) {
|
||||
$("#pengolahanTable").DataTable({
|
||||
ajax: {
|
||||
url: "/website/data/pengolahan-data.json",
|
||||
type: "GET",
|
||||
dataSrc: "",
|
||||
url: "/api/web/jasa/olah",
|
||||
type: "POST",
|
||||
dataSrc: function (json) {
|
||||
if (!json) return [];
|
||||
return json.data || json;
|
||||
},
|
||||
error: function (xhr, error, thrown) {
|
||||
console.error("Error fetching pengolahan data:", error || thrown);
|
||||
},
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
data: null,
|
||||
className: "px-6 py-4 text-sm text-gray-900 text-center font-medium",
|
||||
className: "px-3 py-4 text-sm text-gray-900 text-center font-medium",
|
||||
title: "No",
|
||||
width: "8%",
|
||||
width: "5%",
|
||||
render: function (data, type, row, meta) {
|
||||
return meta.row + 1;
|
||||
},
|
||||
},
|
||||
{
|
||||
data: "nama",
|
||||
className: "px-6 py-4 text-sm text-gray-900 font-medium",
|
||||
className: "px-3 py-4 text-sm text-gray-900 font-medium break-words",
|
||||
title: "Nama Perusahaan",
|
||||
width: "28%",
|
||||
width: "25%",
|
||||
},
|
||||
{
|
||||
data: "alamat",
|
||||
className: "px-6 py-4 text-sm text-gray-700",
|
||||
className: "px-3 py-4 text-sm text-gray-700 break-words",
|
||||
title: "Alamat",
|
||||
width: "50%",
|
||||
},
|
||||
{
|
||||
data: "tglBerlakuIzin",
|
||||
className: "px-6 py-4 text-sm text-gray-900 text-center",
|
||||
className: "px-3 py-4 text-sm text-gray-900 text-center",
|
||||
title: "Berlaku Hingga",
|
||||
width: "25%",
|
||||
width: "20%",
|
||||
render: function (data, type, row) {
|
||||
if (type === "display") {
|
||||
const date = new Date(data);
|
||||
const date = parseDateDMY(data);
|
||||
const formattedDate = date.toLocaleDateString("id-ID", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
|
@ -49,7 +70,7 @@ function initializePengolahanDataTable() {
|
|||
});
|
||||
|
||||
const today = new Date();
|
||||
const expiry = new Date(data);
|
||||
const expiry = parseDateDMY(data);
|
||||
const daysUntilExpiry = Math.ceil(
|
||||
(expiry - today) / (1000 * 60 * 60 * 24)
|
||||
);
|
||||
|
@ -121,7 +142,7 @@ function initializePengolahanDataTable() {
|
|||
wrapper
|
||||
.find('input[type="search"]')
|
||||
.addClass(
|
||||
"block w-full px-4 py-2 text-sm border border-gray-300 rounded-lg bg-white focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all duration-200 w-full"
|
||||
"block w-full px-4 py-2 text-sm border border-gray-300 rounded-lg bg-white focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all duration-200"
|
||||
)
|
||||
.attr("placeholder", "Cari perusahaan pengolahan...");
|
||||
|
||||
|
@ -146,6 +167,13 @@ function initializePengolahanDataTable() {
|
|||
.find(".dt-paging .dt-paging-button.disabled")
|
||||
.addClass("opacity-50 cursor-not-allowed");
|
||||
|
||||
if (window.innerWidth <= 768) {
|
||||
wrapper.find(".dt-paging").addClass("text-center");
|
||||
wrapper.find(".dt-info").addClass("text-center text-sm");
|
||||
wrapper.find(".dt-length").addClass("text-center");
|
||||
wrapper.find(".dt-search").addClass("text-center");
|
||||
}
|
||||
|
||||
wrapper.find(".dt-length").addClass("flex items-center space-x-2");
|
||||
wrapper.find(".dt-search").addClass("flex items-center space-x-2");
|
||||
wrapper.find(".dt-info").addClass("text-sm text-gray-600");
|
||||
|
@ -158,6 +186,21 @@ function initializePengolahanDataTable() {
|
|||
wrapper.find(".dtr-control").remove();
|
||||
|
||||
$("#pengolahanTable tbody tr").addClass("transition-all duration-200");
|
||||
|
||||
$(window).on("resize", function () {
|
||||
const wrapper = $(".dataTables_wrapper");
|
||||
if (window.innerWidth <= 768) {
|
||||
wrapper.find(".dt-paging").addClass("text-center");
|
||||
wrapper.find(".dt-info").addClass("text-center text-sm");
|
||||
wrapper.find(".dt-length").addClass("text-center");
|
||||
wrapper.find(".dt-search").addClass("text-center");
|
||||
} else {
|
||||
wrapper.find(".dt-paging").removeClass("text-center");
|
||||
wrapper.find(".dt-info").removeClass("text-center text-sm");
|
||||
wrapper.find(".dt-length").removeClass("text-center");
|
||||
wrapper.find(".dt-search").removeClass("text-center");
|
||||
}
|
||||
});
|
||||
},
|
||||
drawCallback: function () {
|
||||
$("#pengolahanTable tbody tr")
|
||||
|
@ -200,7 +243,7 @@ function loadPengolahanDataManually() {
|
|||
index % 2 === 0 ? "bg-gray-50" : "bg-white"
|
||||
} hover:bg-blue-50 transition-all duration-200`;
|
||||
|
||||
const date = new Date(item.tglBerlakuIzin);
|
||||
const date = parseDateDMY(item.tglBerlakuIzin);
|
||||
const formattedDate = date.toLocaleDateString("id-ID", {
|
||||
year: "numeric",
|
||||
month: "2-digit",
|
||||
|
@ -226,14 +269,16 @@ function loadPengolahanDataManually() {
|
|||
}
|
||||
|
||||
row.innerHTML = `
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 text-center font-medium">${
|
||||
<td class="px-3 py-4 text-sm text-gray-900 text-center font-medium" style="width: 5%">${
|
||||
index + 1
|
||||
}</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 font-medium">${
|
||||
<td class="px-3 py-4 text-sm text-gray-900 font-medium break-words" style="width: 25%">${
|
||||
item.nama
|
||||
}</td>
|
||||
<td class="px-6 py-4 text-sm text-gray-700">${item.alamat}</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900 text-center">
|
||||
<td class="px-3 py-4 text-sm text-gray-700 break-words" style="width: 50%">${
|
||||
item.alamat
|
||||
}</td>
|
||||
<td class="px-3 py-4 text-sm text-gray-900 text-center" style="width: 20%">
|
||||
<div class="text-sm font-medium text-gray-900">${formattedDate}</div>
|
||||
<span class="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium ${statusClass} mt-1">
|
||||
${statusText}
|
||||
|
|
Loading…
Reference in New Issue