diff --git a/Views/Website/Shared/Partials/Frontend/_Scripts.cshtml b/Views/Website/Shared/Partials/Frontend/_Scripts.cshtml
index 7526ca6..d5f1eff 100644
--- a/Views/Website/Shared/Partials/Frontend/_Scripts.cshtml
+++ b/Views/Website/Shared/Partials/Frontend/_Scripts.cshtml
@@ -16,3 +16,4 @@
+
diff --git a/Views/Website/Shared/_Layout.cshtml b/Views/Website/Shared/_Layout.cshtml
index 301980d..1620157 100644
--- a/Views/Website/Shared/_Layout.cshtml
+++ b/Views/Website/Shared/_Layout.cshtml
@@ -51,7 +51,9 @@
+
+
@await RenderSectionAsync("css", required: false)
diff --git a/wwwroot/website/css/datatables-custom.css b/wwwroot/website/css/datatables-custom.css
new file mode 100644
index 0000000..8c3d617
--- /dev/null
+++ b/wwwroot/website/css/datatables-custom.css
@@ -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;
+}
diff --git a/wwwroot/website/css/watch.css b/wwwroot/website/css/watch.css
index 56f92a4..dbe1f04 100644
--- a/wwwroot/website/css/watch.css
+++ b/wwwroot/website/css/watch.css
@@ -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: "*";
diff --git a/wwwroot/website/data/pengolahan-data.json b/wwwroot/website/data/pengolahan-data.json
index 3d3acab..e0b242e 100644
--- a/wwwroot/website/data/pengolahan-data.json
+++ b/wwwroot/website/data/pengolahan-data.json
@@ -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"
},
{
diff --git a/wwwroot/website/js/datatables_angkut.js b/wwwroot/website/js/datatables_angkut.js
index 32f14d6..f5929a1 100644
--- a/wwwroot/website/js/datatables_angkut.js
+++ b/wwwroot/website/js/datatables_angkut.js
@@ -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 = `
- ${
+ | ${
index + 1
} |
- ${
+ | ${
item.nama
} |
- ${item.alamat} |
-
+ | ${
+ item.alamat
+ } |
+
${formattedDate}
${statusText}
diff --git a/wwwroot/website/js/datatables_pengolahan.js b/wwwroot/website/js/datatables_pengolahan.js
index 256eb92..fb58325 100644
--- a/wwwroot/website/js/datatables_pengolahan.js
+++ b/wwwroot/website/js/datatables_pengolahan.js
@@ -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 = `
- | ${
+ | ${
index + 1
} |
- ${
+ | ${
item.nama
} |
- ${item.alamat} |
-
+ | ${
+ item.alamat
+ } |
+
${formattedDate}
${statusText}
|