Browse Source

changes in facilitywise login

master
yoganandhan 9 months ago
parent
commit
ce6d447ba3
  1. 1
      src/main/java/com/gcc/swm_services/configuration/DataSourceConfig.java
  2. 196
      src/main/java/com/gcc/swm_services/swm/service/AddDetailsService.java
  3. 63
      src/main/resources/templates/modules/swm/biocng.html
  4. 6
      src/main/resources/templates/modules/swm/biogas.html
  5. 32
      src/main/resources/templates/modules/swm/cdwaste.html
  6. 239
      src/main/resources/templates/modules/swm/eachreport.html
  7. 8
      src/main/resources/templates/modules/swm/gwtcwaste.html
  8. 5
      src/main/resources/templates/modules/swm/incinerator.html
  9. 5
      src/main/resources/templates/modules/swm/mcc.html
  10. 5
      src/main/resources/templates/modules/swm/mrf.html
  11. 4
      src/main/resources/templates/modules/swm/plastingbaling.html
  12. 35
      src/main/resources/templates/modules/swm/requestlist.html
  13. 4
      src/main/resources/templates/modules/swm/windrow.html

1
src/main/java/com/gcc/swm_services/configuration/DataSourceConfig.java

@ -22,6 +22,7 @@ import java.util.Properties;
@EnableTransactionManagement @EnableTransactionManagement
public class DataSourceConfig { public class DataSourceConfig {
// local
// private static String host = "localhost:3306"; // private static String host = "localhost:3306";
// private static String dbpassword = "root"; // private static String dbpassword = "root";

196
src/main/java/com/gcc/swm_services/swm/service/AddDetailsService.java

@ -296,67 +296,165 @@ public class AddDetailsService {
return jdbcTemplate.queryForList(sql, fromDate, toDate); return jdbcTemplate.queryForList(sql, fromDate, toDate);
} }
// public List<Map<String, Object>> getZoneWiseFacilityByLogin(
// String username,
// String fromDate,
// String toDate) {
// String sql = """
// SELECT
// t.zone,
// t.facility,
// t.target,
// COALESCE(a.achieved, 0) AS achieved,
// ROUND(
// CASE
// WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100
// WHEN t.target = 0 AND COALESCE(a.achieved, 0) = 0 THEN 0
// ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100)
// END, 2
// ) AS percentage
// FROM (
// /* 🔹 TARGET – ONLY FACILITY FROM LOGIN */
// SELECT
// zt.zone,
// ft.facilities_name AS facility,
// CASE ft.ft_id
// WHEN 1 THEN zt.mcc
// WHEN 2 THEN zt.windrow
// WHEN 3 THEN zt.bio_cng
// WHEN 4 THEN zt.bio_gas
// WHEN 5 THEN zt.gw_tc_waste
// WHEN 6 THEN zt.mrf_mrr
// WHEN 7 THEN zt.incinerator
// WHEN 8 THEN zt.plasting_baling_centre
// ELSE 0
// END AS target
// FROM department_login dl
// JOIN facilities_type ft ON ft.ft_id = dl.dpid
// JOIN zonewise_target zt ON zt.is_active = 1 AND zt.is_delete = 0
// WHERE dl.user_name = ?
// ) t
// LEFT JOIN (
// /* 🔹 ACHIEVED – SAME FT_ID + LOGIN */
// SELECT
// fwd.zone_id AS zone,
// ft.facilities_name AS facility,
// SUM(COALESCE(fwd.weight, 0) + COALESCE(fwd.weight_1, 0)) AS achieved
// FROM facilities_weight_details fwd
// JOIN facilities_type ft ON ft.ft_id = fwd.ft_id
// WHERE fwd.is_active = 1
// AND fwd.is_delete = 0
// AND fwd.cby = ?
// AND DATE(fwd.req_date) BETWEEN ? AND ?
// GROUP BY fwd.zone_id, ft.facilities_name
// ) a
// ON a.zone = t.zone AND a.facility = t.facility
// ORDER BY t.zone
// """;
// return jdbcTemplate.queryForList(
// sql,
// username,
// username,
// fromDate,
// toDate);
// }
private String normalizeDate(String date) {
if (date == null || date.isBlank()) {
return date;
}
// If browser format yyyy-MM-dd → convert to dd-MM-yyyy
if (date.matches("\\d{4}-\\d{2}-\\d{2}")) {
String[] p = date.split("-");
return p[2] + "-" + p[1] + "-" + p[0];
}
// Already dd-MM-yyyy
return date;
}
public List<Map<String, Object>> getZoneWiseFacilityByLogin( public List<Map<String, Object>> getZoneWiseFacilityByLogin(
String username, String username,
String fromDate, String fromDate,
String toDate) { String toDate) {
// 🔥 Normalize date format (supports yyyy-MM-dd and dd-MM-yyyy)
fromDate = normalizeDate(fromDate);
toDate = normalizeDate(toDate);
String sql = """ String sql = """
SELECT
t.zone,
t.facility,
t.target,
COALESCE(a.achieved, 0) AS achieved,
ROUND(
CASE
WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100
WHEN t.target = 0 AND COALESCE(a.achieved, 0) = 0 THEN 0
ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100)
END, 2
) AS percentage
FROM (
/* 🔹 TARGET – ONLY FACILITY FROM LOGIN */
SELECT
zt.zone,
ft.facilities_name AS facility,
CASE
WHEN ft.facilities_name = 'MCC' THEN zt.mcc
WHEN ft.facilities_name = 'Windrow' THEN zt.windrow
WHEN ft.facilities_name = 'Bio-CNG' THEN zt.bio_cng
WHEN ft.facilities_name = 'Bio-GAS' THEN zt.bio_gas
WHEN ft.facilities_name = 'Incinerator' THEN zt.incinerator
WHEN ft.facilities_name = 'Plastic Baling Centre'
THEN zt.plasting_baling_centre
END AS target
FROM department_login dl
JOIN facilities_type ft ON ft.ft_id = dl.dpid
JOIN zonewise_target zt ON zt.is_active = 1 AND zt.is_delete = 0
WHERE dl.user_name = ?
) t
LEFT JOIN (
/* 🔹 ACHIEVED – SAME FT_ID + LOGIN */
SELECT
fwd.zone_id AS zone,
ft.facilities_name AS facility,
SUM(COALESCE(fwd.weight, 0) + COALESCE(fwd.weight_1, 0)) AS achieved
FROM facilities_weight_details fwd
JOIN facilities_type ft ON ft.ft_id = fwd.ft_id
WHERE fwd.is_active = 1
AND fwd.is_delete = 0
AND fwd.cby = ?
AND DATE(fwd.req_date) BETWEEN ? AND ?
GROUP BY fwd.zone_id, ft.facilities_name
) a
ON a.zone = t.zone AND a.facility = t.facility
ORDER BY t.zone
""";
SELECT
t.zone,
t.facility,
t.target,
COALESCE(a.achieved, 0) AS achieved,
ROUND(
CASE
WHEN t.target = 0 AND COALESCE(a.achieved, 0) > 0 THEN 100
WHEN t.target = 0 AND COALESCE(a.achieved, 0) = 0 THEN 0
ELSE LEAST((COALESCE(a.achieved, 0) / t.target) * 100, 100)
END, 2
) AS percentage
FROM (
/* TARGET */
SELECT
zt.zone,
ft.ft_id,
ft.facilities_name AS facility,
CASE ft.ft_id
WHEN 1 THEN zt.mcc
WHEN 2 THEN zt.windrow
WHEN 3 THEN zt.bio_cng
WHEN 4 THEN zt.bio_gas
WHEN 5 THEN zt.gw_tc_waste
WHEN 6 THEN zt.mrf_mrr
WHEN 7 THEN zt.incinerator
WHEN 8 THEN zt.plasting_baling_centre
ELSE 0
END AS target
FROM department_login dl
JOIN facilities_type ft ON ft.ft_id = dl.dpid
JOIN zonewise_target zt
ON zt.is_active = 1
AND zt.is_delete = 0
WHERE TRIM(dl.user_name) = ?
) t
LEFT JOIN (
/* ACHIEVED */
SELECT
fwd.zone_id AS zone,
fwd.ft_id,
SUM(COALESCE(fwd.weight, 0) + COALESCE(fwd.weight_1, 0)) AS achieved
FROM facilities_weight_details fwd
WHERE fwd.is_active = 1
AND fwd.is_delete = 0
AND TRIM(fwd.cby) = ?
AND fwd.req_date >= STR_TO_DATE(CONCAT(?, ' 00:00:00'), '%d-%m-%Y %H:%i:%s')
AND fwd.req_date <= STR_TO_DATE(CONCAT(?, ' 23:59:59'), '%d-%m-%Y %H:%i:%s')
AND fwd.ft_id = (
SELECT dpid
FROM department_login
WHERE TRIM(user_name) = ?
)
GROUP BY fwd.zone_id, fwd.ft_id
) a
ON a.zone = t.zone
AND a.ft_id = t.ft_id
ORDER BY t.zone
""";
return jdbcTemplate.queryForList( return jdbcTemplate.queryForList(
sql, sql,
username, username,
username, username,
fromDate, fromDate,
toDate);
toDate,
username);
} }
} }

63
src/main/resources/templates/modules/swm/biocng.html

@ -281,6 +281,11 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {
@ -743,65 +748,7 @@
function submitRdoDecision(status) {
let date = ($("#date").val() || "").trim();
let = $("#detailsModal").data("refid");
let approvedBy = $("#userName").val(); // 🔥 FROM HIDDEN INPUT
if (!remarks) {
Swal.fire({
icon: 'warning',
title: 'Remarks Required',
text: 'Please enter remarks before submitting'
});
return;
}
Swal.fire({
title: `Are you sure?`,
text: `You want to ${status.toLowerCase()} this request`,
icon: status === 'APPROVED' ? 'success' : 'error',
showCancelButton: true,
confirmButtonColor: status === 'APPROVED' ? '#28a745' : '#dc3545',
cancelButtonColor: '#6c757d',
confirmButtonText: `Yes, ${status}`
}).then((result) => {
if (!result.isConfirmed) return;
$.ajax({
url: "/gcc/api/flagpoleregistration/rdo/updateDecision",
type: "POST",
data: {
refid: refid,
status: status,
remarks: remarks,
approvedBy: approvedBy // 🔥 PASS TO BACKEND
},
success: function (res) {
Swal.fire({
icon: 'success',
title: status === 'APPROVED' ? 'Approved!' : 'Rejected!',
text: res.message || `Request has been ${status.toLowerCase()}`,
timer: 2000,
showConfirmButton: false
});
$("#detailsModal").modal("hide");
$("#QaqcDatatable").DataTable().ajax.reload(null, false);
},
error: function () {
Swal.fire({
icon: 'error',
title: 'Error',
text: 'Failed to update decision'
});
}
});
});
}
</script> </script>

6
src/main/resources/templates/modules/swm/biogas.html

@ -148,7 +148,7 @@
<div class="col-md-3"> <div class="col-md-3">
<label for="date" class="form-label" <label for="date" class="form-label"
style="font-size: medium;">Date:</label> style="font-size: medium;">Date:</label>
<input type="date" id="date" class="form-control" readonly>
<input type="date" id="date" class="form-control">
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label for="zones" class="form-label">Zones <span <label for="zones" class="form-label">Zones <span
@ -287,6 +287,10 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {

32
src/main/resources/templates/modules/swm/cdwaste.html

@ -175,8 +175,7 @@
</div> </div>
<div class="col-md-3" id="weightTypeDiv"> <div class="col-md-3" id="weightTypeDiv">
<label class="form-label">Weight Type <span
class="text-danger">*</span></label>
<label class="form-label">Location<span class="text-danger">*</span></label>
<select id="facilitytype" class="form-control"> <select id="facilitytype" class="form-control">
<option value="">Select</option> <option value="">Select</option>
<option value="KDG">KDG</option> <option value="KDG">KDG</option>
@ -265,41 +264,32 @@
LAST SATURDAY LAST SATURDAY
============================= */ ============================= */
const lastSaturday = new Date(today); const lastSaturday = new Date(today);
// If today is Saturday (6) → today
// Else → go back to previous Saturday
const diffToLastSaturday = (day >= 6)
? day - 6
: day + 1;
const diffToLastSaturday = (day >= 6) ? day - 6 : day + 1;
lastSaturday.setDate(today.getDate() - diffToLastSaturday); lastSaturday.setDate(today.getDate() - diffToLastSaturday);
/* ============================= /* =============================
THIS WEEK FRIDAY THIS WEEK FRIDAY
============================= */ ============================= */
const thisFriday = new Date(today); const thisFriday = new Date(today);
// Friday = 5
const diffToFriday = (5 - day + 7) % 7; const diffToFriday = (5 - day + 7) % 7;
thisFriday.setDate(today.getDate() + diffToFriday); thisFriday.setDate(today.getDate() + diffToFriday);
/* ============================= /* =============================
FORMAT YYYY-MM-DD FORMAT YYYY-MM-DD
============================= */ ============================= */
const formatDate = (d) => d.toISOString().split("T")[0];
const minDate = formatDate(lastSaturday);
const maxDate = formatDate(thisFriday);
const formatDate = d => d.toISOString().split("T")[0];
/* =============================
APPLY LIMITS
============================= */
$("#date") $("#date")
.attr("min", minDate)
.attr("max", maxDate)
.val(formatDate(today));
.attr("min", formatDate(lastSaturday))
.attr("max", formatDate(thisFriday))
.val(formatDate(today))
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {
const isTwoWeightFacility = const isTwoWeightFacility =
$("body").data("two-weight") === true || $("body").data("two-weight") === true ||

239
src/main/resources/templates/modules/swm/eachreport.html

@ -205,15 +205,16 @@
<th class="biogas">Target</th> <th class="biogas">Target</th>
<th class="biogas">Achieved</th> <th class="biogas">Achieved</th>
<th class="biogas">%</th> <th class="biogas">%</th>
<th class="gwtc">Target</th>
<th class="gwtc">Achieved</th>
<th class="gwtc">%</th>
<th class="incinerator">Target</th> <th class="incinerator">Target</th>
<th class="incinerator">Achieved</th> <th class="incinerator">Achieved</th>
<th class="incinerator">%</th> <th class="incinerator">%</th>
<th class="baling">Target</th> <th class="baling">Target</th>
<th class="baling">Achieved</th> <th class="baling">Achieved</th>
<th class="baling">%</th> <th class="baling">%</th>
<th class="gwtc">Target</th>
<th class="gwtc">Achieved</th>
<th class="gwtc">%</th>
<th class="cd">Target</th> <th class="cd">Target</th>
<th class="cd">Achieved</th> <th class="cd">Achieved</th>
@ -244,6 +245,9 @@
<th class="biogas"></th> <th class="biogas"></th>
<th class="biogas"></th> <th class="biogas"></th>
<!-- Incinerator --> <!-- Incinerator -->
<th class="incinerator"></th> <th class="incinerator"></th>
<th class="incinerator"></th> <th class="incinerator"></th>
@ -367,49 +371,88 @@
} }
], ],
columns: [
{ data: "sno", defaultContent: "" },
{ data: "zone", defaultContent: "" },
// columns: [
// { data: "sno", defaultContent: "" },
// { data: "zone", defaultContent: "" },
// { data: "MCC_target", defaultContent: 0 },
// { data: "MCC_achieved", defaultContent: 0 },
// { data: "MCC_percentage", defaultContent: "0%" },
// { data: "Windrow_target", defaultContent: 0 },
// { data: "Windrow_achieved", defaultContent: 0 },
// { data: "Windrow_percentage", defaultContent: "0%" },
// { data: "Bio-CNG_target", defaultContent: 0 },
// { data: "Bio-CNG_achieved", defaultContent: 0 },
// { data: "Bio-CNG_percentage", defaultContent: "0%" },
// { data: "Bio-GAS_target", defaultContent: 0 },
// { data: "Bio-GAS_achieved", defaultContent: 0 },
// { data: "Bio-GAS_percentage", defaultContent: "0%" },
{ data: "MCC_target", defaultContent: 0 },
{ data: "MCC_achieved", defaultContent: 0 },
{ data: "MCC_percentage", defaultContent: "0%" },
// { data: "Incinerator_target", defaultContent: 0 },
// { data: "Incinerator_achieved", defaultContent: 0 },
// { data: "Incinerator_percentage", defaultContent: "0%" },
{ data: "Windrow_target", defaultContent: 0 },
{ data: "Windrow_achieved", defaultContent: 0 },
{ data: "Windrow_percentage", defaultContent: "0%" },
// { data: "Plasting Baling Centre_target", defaultContent: 0 },
// { data: "Plasting Baling Centre_achieved", defaultContent: 0 },
// { data: "Plasting Baling Centre_percentage", defaultContent: "0%" },
{ data: "Bio-CNG_target", defaultContent: 0 },
{ data: "Bio-CNG_achieved", defaultContent: 0 },
{ data: "Bio-CNG_percentage", defaultContent: "0%" },
// { data: "GWTC_target", defaultContent: 0 },
// { data: "GWTC_achieved", defaultContent: 0 },
// { data: "GWTC_percentage", defaultContent: "0%" },
{ data: "Bio-GAS_target", defaultContent: 0 },
{ data: "Bio-GAS_achieved", defaultContent: 0 },
{ data: "Bio-GAS_percentage", defaultContent: "0%" },
// { data: "CD_target", defaultContent: 0 },
// { data: "CD_achieved", defaultContent: 0 },
// { data: "CD_percentage", defaultContent: "0%" }
{ data: "Incinerator_target", defaultContent: 0 },
{ data: "Incinerator_achieved", defaultContent: 0 },
{ data: "Incinerator_percentage", defaultContent: "0%" },
{ data: "Plasting Baling Centre_target", defaultContent: 0 },
{ data: "Plasting Baling Centre_achieved", defaultContent: 0 },
{ data: "Plasting Baling Centre_percentage", defaultContent: "0%" },
// ],
columns: [
{ data: "sno" },
{ data: "zone" },
{ data: "mcc_target", defaultContent: 0 },
{ data: "mcc_achieved", defaultContent: 0 },
{ data: "mcc_percentage", defaultContent: "0%" },
{ data: "windrow_target", defaultContent: 0 },
{ data: "windrow_achieved", defaultContent: 0 },
{ data: "windrow_percentage", defaultContent: "0%" },
{ data: "biocng_target", defaultContent: 0 },
{ data: "biocng_achieved", defaultContent: 0 },
{ data: "biocng_percentage", defaultContent: "0%" },
{ data: "biogas_target", defaultContent: 0 },
{ data: "biogas_achieved", defaultContent: 0 },
{ data: "biogas_percentage", defaultContent: "0%" },
{ data: "GWTC_target", defaultContent: 0 },
{ data: "GWTC_achieved", defaultContent: 0 },
{ data: "GWTC_percentage", defaultContent: "0%" },
{ data: "incinerator_target", defaultContent: 0 },
{ data: "incinerator_achieved", defaultContent: 0 },
{ data: "incinerator_percentage", defaultContent: "0%" },
{ data: "CD_target", defaultContent: 0 },
{ data: "CD_achieved", defaultContent: 0 },
{ data: "CD_percentage", defaultContent: "0%" }
{ data: "baling_target", defaultContent: 0 },
{ data: "baling_achieved", defaultContent: 0 },
{ data: "baling_percentage", defaultContent: "0%" },
{ data: "gwtc_target", defaultContent: 0 },
{ data: "gwtc_achieved", defaultContent: 0 },
{ data: "gwtc_percentage", defaultContent: "0%" },
{ data: "cd_target", defaultContent: 0 },
{ data: "cd_achieved", defaultContent: 0 },
{ data: "cd_percentage", defaultContent: "0%" }
], ],
/* ================= FOOTER TOTAL ================= */ /* ================= FOOTER TOTAL ================= */
footerCallback: function () { footerCallback: function () {
@ -455,34 +498,93 @@
function normalizeFacilityName(facility) { function normalizeFacilityName(facility) {
const map = { const map = {
// MCC
"MCC": "mcc",
// Windrow
"Windrow": "windrow",
// Bio-CNG
"Bio-CNG": "biocng",
// Bio-GAS
"Bio-GAS": "biogas",
// Incinerator
"Incinerator": "incinerator",
// Baling // Baling
"Plasting Baling Centre": "Plasting Baling Centre",
"Plastic Baling Centre": "Plasting Baling Centre",
"Plasting Baling Centre": "baling",
"Plastic Baling Centre": "baling",
// GW & TC
"GW & TC Waste": "GWTC",
"GW & TC Waste Processing Centre": "GWTC",
"GW TC Waste": "GWTC",
// 🔥 GW & TC (THIS IS THE FIX)
"GW & TC Waste": "gwtc",
"GW & TC Waste Processing Centre": "gwtc",
"GW TC Waste": "gwtc",
// C&D // C&D
"C&D Waste Processing Centre": "CD",
"C & D Waste Processing Centre": "CD",
"C&D Waste": "CD",
"SWM C&D": "CD"
"C&D Waste Processing Centre": "cd",
"C & D Waste Processing Centre": "cd",
"C&D Waste": "cd",
"SWM C&D": "cd"
}; };
return map[facility] || facility;
return map[facility] || facility.toLowerCase().replace(/[^a-z]/g, "");
} }
// function applyFacilityVisibility() {
// const username = $("#userName").val().toLowerCase();
// // hide all facility columns
// table.columns([...Array(26).keys()].slice(2)).visible(false);
// // hide all headers
// $('.grp-mcc,.grp-windrow,.grp-biocng,.grp-biogas,.grp-incinerator,.grp-baling,.grp-gwtc,.grp-cd').hide();
// $('.mcc,.windrow,.biocng,.biogas,.incinerator,.baling,.gwtc,.cd').hide();
// const map = {
// "mcc": { cols: [2, 3, 4], cls: "mcc", grp: "grp-mcc" },
// "windrow": { cols: [5, 6, 7], cls: "windrow", grp: "grp-windrow" },
// "biocng": { cols: [8, 9, 10], cls: "biocng", grp: "grp-biocng" },
// "biogas": { cols: [11, 12, 13], cls: "biogas", grp: "grp-biogas" },
// "incinerator": { cols: [14, 15, 16], cls: "incinerator", grp: "grp-incinerator" },
// "baling": { cols: [17, 18, 19], cls: "baling", grp: "grp-baling" },
// // ✅ ADD THIS (CRITICAL FIX)
// "pbc": { cols: [17, 18, 19], cls: "baling", grp: "grp-baling" },
// // ✅ GW & TC
// "gw": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
// "tc": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
// "gwtc": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
// // ✅ C&D
// "cd": { cols: [23, 24, 25], cls: "cd", grp: "grp-cd" },
// "c&d": { cols: [23, 24, 25], cls: "cd", grp: "grp-cd" }
// };
// Object.keys(map).forEach(key => {
// if (username.includes(key)) {
// table.columns(map[key].cols).visible(true);
// $('.' + map[key].cls).show();
// $('.' + map[key].grp).show();
// }
// });
// table.columns.adjust().draw(false);
// }
function applyFacilityVisibility() { function applyFacilityVisibility() {
const username = $("#userName").val().toLowerCase(); const username = $("#userName").val().toLowerCase();
// hide all facility columns
table.columns([...Array(26).keys()].slice(2)).visible(false);
// hide all columns except S.No & Zone
table.columns().visible(false);
table.columns([0, 1]).visible(true);
// hide all headers // hide all headers
$('.grp-mcc,.grp-windrow,.grp-biocng,.grp-biogas,.grp-incinerator,.grp-baling,.grp-gwtc,.grp-cd').hide(); $('.grp-mcc,.grp-windrow,.grp-biocng,.grp-biogas,.grp-incinerator,.grp-baling,.grp-gwtc,.grp-cd').hide();
@ -491,18 +593,22 @@
const map = { const map = {
"mcc": { cols: [2, 3, 4], cls: "mcc", grp: "grp-mcc" }, "mcc": { cols: [2, 3, 4], cls: "mcc", grp: "grp-mcc" },
"windrow": { cols: [5, 6, 7], cls: "windrow", grp: "grp-windrow" }, "windrow": { cols: [5, 6, 7], cls: "windrow", grp: "grp-windrow" },
// 🔥 FIX: support bio_cng login
"bio_cng": { cols: [8, 9, 10], cls: "biocng", grp: "grp-biocng" },
"biocng": { cols: [8, 9, 10], cls: "biocng", grp: "grp-biocng" }, "biocng": { cols: [8, 9, 10], cls: "biocng", grp: "grp-biocng" },
"bio_gas": { cols: [11, 12, 13], cls: "biogas", grp: "grp-biogas" },
"biogas": { cols: [11, 12, 13], cls: "biogas", grp: "grp-biogas" }, "biogas": { cols: [11, 12, 13], cls: "biogas", grp: "grp-biogas" },
"incinerator": { cols: [14, 15, 16], cls: "incinerator", grp: "grp-incinerator" }, "incinerator": { cols: [14, 15, 16], cls: "incinerator", grp: "grp-incinerator" },
"baling": { cols: [17, 18, 19], cls: "baling", grp: "grp-baling" }, "baling": { cols: [17, 18, 19], cls: "baling", grp: "grp-baling" },
// ✅ ADD THIS (CRITICAL FIX)
"pbc": { cols: [17, 18, 19], cls: "baling", grp: "grp-baling" }, "pbc": { cols: [17, 18, 19], cls: "baling", grp: "grp-baling" },
// ✅ GW & TC
"gwtc_waste": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
"gw": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" }, "gw": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
"tc": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" }, "tc": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
"gwtc": { cols: [20, 21, 22], cls: "gwtc", grp: "grp-gwtc" },
// ✅ C&D
"cd": { cols: [23, 24, 25], cls: "cd", grp: "grp-cd" }, "cd": { cols: [23, 24, 25], cls: "cd", grp: "grp-cd" },
"c&d": { cols: [23, 24, 25], cls: "cd", grp: "grp-cd" } "c&d": { cols: [23, 24, 25], cls: "cd", grp: "grp-cd" }
}; };
@ -519,6 +625,7 @@
} }
// function renderZoneTable(data) { // function renderZoneTable(data) {
// const zoneMap = {}; // const zoneMap = {};
@ -555,21 +662,48 @@
// table.clear().rows.add(tableData).draw(); // table.clear().rows.add(tableData).draw();
// } // }
// function renderZoneTable(data) {
// const zoneMap = {};
// data.forEach(row => {
// const zone = row.zone;
// const facility = normalizeFacilityName(row.facility);
// if (!zoneMap[zone]) {
// zoneMap[zone] = { zone };
// }
// zoneMap[zone][facility + "_target"] = row.target ?? 0;
// zoneMap[zone][facility + "_achieved"] = row.achieved ?? 0;
// zoneMap[zone][facility + "_percentage"] =
// row.percentage != null ? row.percentage + "%" : "0%";
// });
// let i = 1;
// const tableData = Object.values(zoneMap).map(r => ({
// sno: i++,
// ...r
// }));
// table.clear().rows.add(tableData).draw();
// }
function renderZoneTable(data) { function renderZoneTable(data) {
const zoneMap = {}; const zoneMap = {};
data.forEach(row => { data.forEach(row => {
const zone = row.zone; const zone = row.zone;
const facility = normalizeFacilityName(row.facility);
const facilityKey = normalizeFacilityName(row.facility);
if (!zoneMap[zone]) { if (!zoneMap[zone]) {
zoneMap[zone] = { zone }; zoneMap[zone] = { zone };
} }
zoneMap[zone][facility + "_target"] = row.target ?? 0;
zoneMap[zone][facility + "_achieved"] = row.achieved ?? 0;
zoneMap[zone][facility + "_percentage"] =
zoneMap[zone][facilityKey + "_target"] = row.target ?? 0;
zoneMap[zone][facilityKey + "_achieved"] = row.achieved ?? 0;
zoneMap[zone][facilityKey + "_percentage"] =
row.percentage != null ? row.percentage + "%" : "0%"; row.percentage != null ? row.percentage + "%" : "0%";
}); });
@ -611,6 +745,7 @@
}); });
}, },
success: function (res) { success: function (res) {
console.log(res);
Swal.close(); Swal.close();
renderZoneTable(res.data); renderZoneTable(res.data);
}, },

8
src/main/resources/templates/modules/swm/gwtcwaste.html

@ -181,8 +181,7 @@
<div class="col-md-3" id="weightTypeDiv"> <div class="col-md-3" id="weightTypeDiv">
<label class="form-label">Weight Type <span
class="text-danger">*</span></label>
<label class="form-label">Location<span class="text-danger">*</span></label>
<select id="facilitytype" class="form-control"> <select id="facilitytype" class="form-control">
<option value="">Select</option> <option value="">Select</option>
<option value="KDG">KDG</option> <option value="KDG">KDG</option>
@ -303,6 +302,11 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {

5
src/main/resources/templates/modules/swm/incinerator.html

@ -288,6 +288,11 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {

5
src/main/resources/templates/modules/swm/mcc.html

@ -288,6 +288,11 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });

5
src/main/resources/templates/modules/swm/mrf.html

@ -288,6 +288,11 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {

4
src/main/resources/templates/modules/swm/plastingbaling.html

@ -281,6 +281,10 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {

35
src/main/resources/templates/modules/swm/requestlist.html

@ -147,7 +147,7 @@
<div class="col-md-3"> <div class="col-md-3">
<label for="date" class="form-label" <label for="date" class="form-label"
style="font-size: medium;">Date:</label> style="font-size: medium;">Date:</label>
<input type="date" id="date" class="form-control" readonly>
<input type="date" id="date" class="form-control">
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label for="zones" class="form-label">Zones <span <label for="zones" class="form-label">Zones <span
@ -163,7 +163,7 @@
<div class="col-md-3"> <div class="col-md-3">
<label for="weight" class="form-label">Enter Weight(in MT):</label> <label for="weight" class="form-label">Enter Weight(in MT):</label>
<input type=" number" class="form-control" id="weight">
<input type="number" class="form-control" id="weight">
</div> </div>
<!-- SECOND WEIGHT (TC) --> <!-- SECOND WEIGHT (TC) -->
@ -283,11 +283,38 @@
//$(document).ready(function () {
// const today = new Date().toISOString().split('T')[0];
//$("#date").val(today);
//});
$(document).ready(function () { $(document).ready(function () {
const today = new Date().toISOString().split('T')[0];
$("#date").val(today);
const today = new Date();
const yyyyMmDd = today.toISOString().split('T')[0];
const yesterday = new Date();
yesterday.setDate(today.getDate() - 1);
const yyyMmDdYesterday = yesterday.toISOString().split('T')[0];
const $date = $("#date");
// set default date
$date.val(yyyyMmDd);
// allow only yesterday and today
$date.attr("min", yyyMmDdYesterday);
$date.attr("max", yyyyMmDd);
// 🚫 block manual typing & paste
$date.on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$("#resetBtn").on("click", function () { $("#resetBtn").on("click", function () {
location.reload(); location.reload();
}); });

4
src/main/resources/templates/modules/swm/windrow.html

@ -281,6 +281,10 @@
.attr("min", minDate) .attr("min", minDate)
.attr("max", maxDate) .attr("max", maxDate)
.val(formatDate(today)); .val(formatDate(today));
// 🔒 BLOCK MANUAL TYPING (BUT ALLOW CALENDAR)
$("#date").on("keydown paste", function (e) {
e.preventDefault();
});
}); });
$(document).ready(function () { $(document).ready(function () {
const isTwoWeightFacility = const isTwoWeightFacility =

Loading…
Cancel
Save