|
|
|
@ -205,15 +205,16 @@ |
|
|
|
<th class="biogas">Target</th> |
|
|
|
<th class="biogas">Achieved</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">Achieved</th> |
|
|
|
<th class="incinerator">%</th> |
|
|
|
<th class="baling">Target</th> |
|
|
|
<th class="baling">Achieved</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">Achieved</th> |
|
|
|
@ -244,6 +245,9 @@ |
|
|
|
<th class="biogas"></th> |
|
|
|
<th class="biogas"></th> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Incinerator --> |
|
|
|
<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: "MCC_target", defaultContent: 0 }, |
|
|
|
{ data: "MCC_achieved", defaultContent: 0 }, |
|
|
|
{ data: "MCC_percentage", defaultContent: "0%" }, |
|
|
|
// { data: "Bio-GAS_target", defaultContent: 0 }, |
|
|
|
// { data: "Bio-GAS_achieved", defaultContent: 0 }, |
|
|
|
// { data: "Bio-GAS_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: "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%" }, |
|
|
|
|
|
|
|
// { 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: "Plasting Baling Centre_target", defaultContent: 0 }, |
|
|
|
{ data: "Plasting Baling Centre_achieved", defaultContent: 0 }, |
|
|
|
{ data: "Plasting Baling Centre_percentage", defaultContent: "0%" }, |
|
|
|
// { data: "CD_target", defaultContent: 0 }, |
|
|
|
// { data: "CD_achieved", defaultContent: 0 }, |
|
|
|
// { data: "CD_percentage", defaultContent: "0%" } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ], |
|
|
|
columns: [ |
|
|
|
{ data: "sno" }, |
|
|
|
{ data: "zone" }, |
|
|
|
|
|
|
|
{ data: "GWTC_target", defaultContent: 0 }, |
|
|
|
{ data: "GWTC_achieved", defaultContent: 0 }, |
|
|
|
{ data: "GWTC_percentage", defaultContent: "0%" }, |
|
|
|
{ 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: "CD_target", defaultContent: 0 }, |
|
|
|
{ data: "CD_achieved", defaultContent: 0 }, |
|
|
|
{ data: "CD_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: "incinerator_target", defaultContent: 0 }, |
|
|
|
{ data: "incinerator_achieved", defaultContent: 0 }, |
|
|
|
{ data: "incinerator_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 ================= */ |
|
|
|
footerCallback: function () { |
|
|
|
|
|
|
|
@ -455,34 +498,93 @@ |
|
|
|
|
|
|
|
function normalizeFacilityName(facility) { |
|
|
|
const map = { |
|
|
|
// MCC |
|
|
|
"MCC": "mcc", |
|
|
|
|
|
|
|
// Windrow |
|
|
|
"Windrow": "windrow", |
|
|
|
|
|
|
|
// Bio-CNG |
|
|
|
"Bio-CNG": "biocng", |
|
|
|
|
|
|
|
// Bio-GAS |
|
|
|
"Bio-GAS": "biogas", |
|
|
|
|
|
|
|
// Incinerator |
|
|
|
"Incinerator": "incinerator", |
|
|
|
|
|
|
|
// 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 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() { |
|
|
|
|
|
|
|
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 |
|
|
|
$('.grp-mcc,.grp-windrow,.grp-biocng,.grp-biogas,.grp-incinerator,.grp-baling,.grp-gwtc,.grp-cd').hide(); |
|
|
|
@ -491,18 +593,22 @@ |
|
|
|
const map = { |
|
|
|
"mcc": { cols: [2, 3, 4], cls: "mcc", grp: "grp-mcc" }, |
|
|
|
"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" }, |
|
|
|
|
|
|
|
"bio_gas": { 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" }, |
|
|
|
|
|
|
|
"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 |
|
|
|
"gwtc_waste": { 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" }, |
|
|
|
"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" } |
|
|
|
}; |
|
|
|
@ -519,6 +625,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// function renderZoneTable(data) { |
|
|
|
|
|
|
|
// const zoneMap = {}; |
|
|
|
@ -555,21 +662,48 @@ |
|
|
|
// 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) { |
|
|
|
|
|
|
|
const zoneMap = {}; |
|
|
|
|
|
|
|
data.forEach(row => { |
|
|
|
const zone = row.zone; |
|
|
|
const facility = normalizeFacilityName(row.facility); |
|
|
|
const facilityKey = 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"] = |
|
|
|
zoneMap[zone][facilityKey + "_target"] = row.target ?? 0; |
|
|
|
zoneMap[zone][facilityKey + "_achieved"] = row.achieved ?? 0; |
|
|
|
zoneMap[zone][facilityKey + "_percentage"] = |
|
|
|
row.percentage != null ? row.percentage + "%" : "0%"; |
|
|
|
}); |
|
|
|
|
|
|
|
@ -611,6 +745,7 @@ |
|
|
|
}); |
|
|
|
}, |
|
|
|
success: function (res) { |
|
|
|
console.log(res); |
|
|
|
Swal.close(); |
|
|
|
renderZoneTable(res.data); |
|
|
|
}, |
|
|
|
|