You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
982 lines
33 KiB
982 lines
33 KiB
<!DOCTYPE html>
|
|
<html lang="en" dir="ltr">
|
|
<html xmlns:th="http://www.thymeleaf.org">
|
|
|
|
<head th:replace="~{fragments/modules/base/head :: head}"></head>
|
|
<style>
|
|
body {
|
|
background-color: #f8f9fa;
|
|
/* font-family: Arial, sans-serif;*/
|
|
}
|
|
|
|
.header {
|
|
font-size: 22px;
|
|
font-weight: bold;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.table {
|
|
border: 1px solid #dee2e6;
|
|
}
|
|
|
|
.table th,
|
|
.table td {
|
|
border: 1px solid #dee2e6;
|
|
padding: 10px;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 18px;
|
|
font-weight: bold;
|
|
margin-top: 20px;
|
|
border-bottom: 2px solid #007bff;
|
|
padding-bottom: 5px;
|
|
}
|
|
|
|
.form-group {
|
|
margin-top: 15px;
|
|
}
|
|
|
|
.radio-group {
|
|
display: flex;
|
|
gap: 20px;
|
|
margin-top: 10px;
|
|
}
|
|
</style>
|
|
|
|
<body>
|
|
<div class="wrapper">
|
|
<header th:replace="~{fragments/modules/base/header :: header}"></header>
|
|
<div class="page-wrap">
|
|
<div th:replace="~{fragments/modules/base/menu :: menu}"></div>
|
|
<div class="main-content">
|
|
<div class="container">
|
|
<div class="header">School Module - Master Details</div>
|
|
|
|
<hr style="border: 1px solid #ccc; margin-top: 10px; margin-bottom: 20px;">
|
|
|
|
<!-- Card 1: School Information -->
|
|
<div class="col-md-12">
|
|
<div class="card">
|
|
<div class="card-header" style="background-color: #404E67; color: white;">
|
|
School Information
|
|
</div>
|
|
<table class="table" id="schoolInfoTable" >
|
|
<!-- Table rows will be dynamically injected -->
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
|
<li class="nav-item"><a class="nav-link active" id="otherDetailsTab" href="#">Other Details</a>
|
|
</li>
|
|
<li class="nav-item"><a class="nav-link" id="staffDetailsTab" data-toggle="tab"
|
|
href="/gcc/school/staffdetails" role="tab" aria-controls="staffdetails"
|
|
aria-selected="false">Staff
|
|
Details</a></li>
|
|
<li class="nav-item"><a class="nav-link" id="staffDetailsTab" data-toggle="tab"
|
|
href="/gcc/school/studentdetails" role="tab" aria-controls="staffdetails"
|
|
aria-selected="false">Student
|
|
Details</a></li>
|
|
<li class="nav-item" role="presentation"><a class="nav-link" id="buildingDetailstab"
|
|
href="#">Buildings</a></li>
|
|
<li class="nav-item" role="presentation"><a class="nav-link" id="playgroundDetailstab"
|
|
data-toggle="tab" href="/gcc/school/playground" role="tab" aria-controls="playground"
|
|
aria-selected="false">Playground</a></li>
|
|
<li class="nav-item" role="presentation"><a class="nav-link" id="drinkingwaterDetailstab"
|
|
data-toggle="tab" href="/gcc/school/drinkingwater" role="tab"
|
|
aria-controls="drinkingwater" aria-selected="false">Drinking
|
|
Water</a></li>
|
|
<li class="nav-item" role="presentation"><a class="nav-link" id="tioletsDetailstab"
|
|
data-toggle="tab" href="/gcc/school/toilets" role="tab" aria-controls="tiolets"
|
|
aria-selected="false">Toilets</a></li>
|
|
<li class="nav-item" role="presentation"><a class="nav-link" id="itassestsDetailstab"
|
|
href="#">School Assets</a></li>
|
|
</li>
|
|
<li class="nav-item" role="presentation"><a class="nav-link" id="kitchenDetailstab"
|
|
data-toggle="tab" href="/gcc/school/kitchen" role="tab" aria-controls="kitchen"
|
|
aria-selected="false">Kitchen</a></li>
|
|
|
|
</ul>
|
|
<div id="itassestsDetailsSection" style="display: none;">
|
|
<ul class="nav nav-tabs" id="itAssetsSubTabs">
|
|
<li class="nav-item"><a class="nav-link active" id="RoomAssetTab"
|
|
data-url="/gcc/school/roomassets" href="#">Rooms Assets Mapping</a></li>
|
|
<li class="nav-item"><a class="nav-link" id="AssetManageTab"
|
|
data-url="/gcc/school/assetmanagement" href="#">IT Asset Management</a></li>
|
|
<li class="nav-item"><a class="nav-link" id="AddElectricalAssetTab"
|
|
data-url="/gcc/school/addelectricalasset" href="#">Electrical Asset Management</a></li>
|
|
<li class="nav-item"><a class="nav-link" id="AddFurnitureAssetTab"
|
|
data-url="/gcc/school/addfurnitureasset" href="#">Furniture Asset Management</a></li>
|
|
</ul>
|
|
|
|
<div id="itAssetsContent"></div>
|
|
</div>
|
|
|
|
<!-- This section should be initially hidden -->
|
|
<div id="buildingDetailsSection" style="display: none;">
|
|
<!-- Place for sub-tabs -->
|
|
<ul id="buildingSubTabs" class="nav nav-tabs">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" id="buildingListTab" data-url="/gcc/school/building"
|
|
href="#">Building List</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" id="roomListTab" data-url="/gcc/school/room" href="#">Room List</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<!-- Content loaded by tab click -->
|
|
<div id="buildingContent"></div>
|
|
</div>
|
|
|
|
|
|
<div id="staffDetailsSection" style="display: none;">Loading
|
|
staff details...</div>
|
|
|
|
<div id="playgroundDetailsSection" style="display: none;">
|
|
Loading playground details...</div>
|
|
<div id="drinkingwaterDetailsSection" style="display: none;">
|
|
Loading drinking water details...</div>
|
|
<div id="toiletsDetailsSection" style="display: none;">
|
|
Loading toilets details...</div>
|
|
<div id="itassestsDetailsSection" style="display: none;">
|
|
Loading IT assets details...</div>
|
|
<div id="kitchenDetailsSection" style="display: none;">
|
|
Loading kitchen details...</div>
|
|
|
|
|
|
|
|
|
|
<!-- Single Card Wrapper -->
|
|
<div class="col-md-12" id="otherDetailsSection" style="display: none;">
|
|
<div class="card" style="padding: 18px; margin-top: 27px;">
|
|
<div class="card-header">
|
|
<b>Site & Built Up Area</b>
|
|
</div>
|
|
|
|
<!-- Read-Only View -->
|
|
<div id="otherDetailsReadOnlyView" style="display: none; text-align: center;">
|
|
<br>
|
|
<div style="display: inline-block; width: 100%; max-width: 900px; text-align: left;">
|
|
<table class="table table-bordered">
|
|
<tbody>
|
|
<tr>
|
|
<td><b> Site Area (Acre)</b></td>
|
|
<td id="ro_land_area"></td>
|
|
<td><b> Built-up Area (Sq. ft)</b></td>
|
|
<td id="ro_buildup_area"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Compound Wall</b></td>
|
|
<td id="ro_compoundWall"></td>
|
|
<td><b>Name Board</b></td>
|
|
<td id="ro_nameBoard"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>PA System</b></td>
|
|
<td id="ro_paSystem"></td>
|
|
<td><b>Electric Bell</b></td>
|
|
<td id="ro_electricBell"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><b>Generator Set</b></td>
|
|
<td id="ro_generatorSet"></td>
|
|
<td colspan="2"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="text-center">
|
|
<button type="button" class="btn btn-primary"
|
|
id="updateOtherDetailsBtn">Update</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Form View -->
|
|
<div id="otherDetailsSectionform" style="display: none;">
|
|
<form id="schoolDetailsForm">
|
|
<div class="row" style="padding: 15px;">
|
|
<div class="col-md-6 form-group">
|
|
<label>Approx Site Area of the School (In Acre) *</label>
|
|
<input type="text" id="land_area" class="form-control"
|
|
placeholder="Enter in Acre" required />
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<label> Approx Built Up Area of the School (In Sq. ft) *</label>
|
|
<input type="text" id="buildup_area" class="form-control"
|
|
placeholder="Enter in Sq. ft" required />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card-header"><b>Compound & Name Board</b></div>
|
|
<div class="row" style="padding: 15px;">
|
|
<div class="col-md-6 form-group">
|
|
<label>Presence of Compound Wall *</label>
|
|
<div class="radio-group">
|
|
<input type="radio" name="compoundWall" value="Yes"> Yes
|
|
<input type="radio" name="compoundWall" value="No"> No
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<label>Presence of School Name Board (New Board) *</label>
|
|
<div class="radio-group">
|
|
<input type="radio" name="nameBoard" value="Yes"> Yes
|
|
<input type="radio" name="nameBoard" value="No"> No
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card-header"><b>Electrical</b></div>
|
|
<div class="row" style="padding: 15px;">
|
|
<div class="col-md-4 form-group">
|
|
<label>Is PA System Available? *</label>
|
|
<div class="radio-group">
|
|
<input type="radio" name="paSystem" value="Yes"> Yes
|
|
<input type="radio" name="paSystem" value="No"> No
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 form-group">
|
|
<label>Is Electric Bell Available? *</label>
|
|
<div class="radio-group">
|
|
<input type="radio" name="electricBell" value="Yes"> Yes
|
|
<input type="radio" name="electricBell" value="No"> No
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4 form-group">
|
|
<label>Is Generator Set Available? *</label>
|
|
<div class="radio-group">
|
|
<input type="radio" name="generatorSet" value="Yes"> Yes
|
|
<input type="radio" name="generatorSet" value="No"> No
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card-footer text-center">
|
|
<button type="submit" class="btn btn-primary" id="requestSubmitBtn"><i
|
|
class="ik ik-save"></i> Submit</button>
|
|
<button type="reset" class="btn btn-secondary mr-2" id="resetButton"><i
|
|
class="ik ik-refresh-cw"></i> Reset</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
<footer th:replace="~{fragments/modules/base/footer :: footer}"></footer>
|
|
</div>
|
|
|
|
<!-- Form -->
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="otherDetailsModal" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false" aria-labelledby="otherDetailsModalLabel"
|
|
aria-hidden="true" >
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="otherDetailsModalLabel">Update Other
|
|
Details</h5>
|
|
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div id="otherDetailsFormWrapper">
|
|
<form id="updateOtherDetailsForm">
|
|
<div class="row mb-3">
|
|
<div class="col-md-6">
|
|
<label> Approx Site Area of the School (In Acre) *</label>
|
|
<input type="text" id="modal_land_area" class="form-control"
|
|
placeholder="Enter in Acres" required />
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label> Approx Built Up Area of the School (In Sq. ft)
|
|
*</label>
|
|
<input type="text" id="modal_buildup_area" class="form-control"
|
|
placeholder="Enter in Sq. ft" required />
|
|
</div>
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="col-md-6">
|
|
<label>Presence of Compound Wall *</label>
|
|
<div>
|
|
<input type="radio" name="modalcompoundWall" value="1"> Yes
|
|
<input type="radio" name="modalcompoundWall" value="0"> No
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label>Presence of School Name Board (New Board)* </label>
|
|
<div>
|
|
<input type="radio" name="modalnameBoard" value="1"> Yes
|
|
<input type="radio" name="modalnameBoard" value="0">
|
|
No
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row mb-3">
|
|
<div class="col-md-4">
|
|
<label>Is PA System Available? *</label>
|
|
<div>
|
|
<input type="radio" name="modalpaSystem" value="1">
|
|
Yes
|
|
<input type="radio" name="modalpaSystem" value="0">
|
|
No
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label>Is Electric Bell Available? *</label>
|
|
<div>
|
|
<input type="radio" name="modalelectricBell" value="1"> Yes
|
|
<input type="radio" name="modalelectricBell" value="0"> No
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label>Is Generator Set Available? *</label>
|
|
<div>
|
|
<input type="radio" name="modalgeneratorSet" value="1"> Yes
|
|
<input type="radio" name="modalgeneratorSet" value="0"> No
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="text-center">
|
|
<button type="submit" class="btn btn-primary" id="requestSubmitBtn">Submit</button>
|
|
<!--<button type="reset" class="btn btn-secondary btn-gap"
|
|
id="resetButton">Reset</button>-->
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script th:replace="~{fragments/modules/base/script :: script}"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
|
|
|
|
<script>
|
|
|
|
// jQuery or vanilla JS to open the modal
|
|
$(document).on('click', '#updateOtherDetailsBtn', function () {
|
|
$('#otherDetailsModal').modal('show');
|
|
});
|
|
|
|
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
const schoolId = urlParams.get("schoolId");
|
|
$(document).ready(function () {
|
|
/* const urlParams = new URLSearchParams(window.location.search);
|
|
const schoolId = urlParams.get("schoolId"); */
|
|
|
|
$.ajax({
|
|
type: 'GET',
|
|
url: '/gcc/api/gccschool/schoolproperty/getSchoolDetails',
|
|
data: {schoolId: schoolId},
|
|
success: function (data) {
|
|
console.log(data);
|
|
const html = `
|
|
<tr><th>School Name:</th><td>${data.school_name}</td><th>UDISE Code:</th><td>${data.udise}</td></tr>
|
|
<tr><th>Category:</th><td>${data.category}</td><th>Ward:</th><td>${data.division}</td></tr>
|
|
<tr></td><th>Zone:</th><td>${data.zone}</td>
|
|
<th>Address:</th><td>${data.address}</td></tr>
|
|
`;
|
|
$('#schoolInfoTable').html(html);
|
|
}
|
|
});
|
|
$('.nav-link').click(function (e) {
|
|
e.preventDefault();
|
|
let url = $(this).attr(
|
|
'href');
|
|
let targetId = $(this)
|
|
.attr('id');
|
|
|
|
// Hide all sections
|
|
$(
|
|
'#otherDetailsSection, #staffDetailsSection, #buildingDetailsSection, #playgroundDetailsSection, #drinkingwaterDetailsSection, #toiletsDetailsSection, #itassestsDetailsSection, #kitchenDetailsSection')
|
|
.hide();
|
|
|
|
// Remove active class from all nav links
|
|
$('.nav-link').removeClass(
|
|
'active');
|
|
$(this).addClass('active');
|
|
|
|
// Handle Section Display and Load Data
|
|
switch (targetId) {
|
|
case 'otherDetailsTab':
|
|
$('#otherDetailsSection').show();
|
|
$('#schoolDetailsForm')[0].reset();
|
|
break;
|
|
case 'staffDetailsTab':
|
|
$(
|
|
'#staffDetailsSection')
|
|
.show();
|
|
loadData(url,
|
|
'#staffDetailsSection');
|
|
break;
|
|
case 'buildingDetailstab':
|
|
$('#buildingDetailsSection').show();
|
|
|
|
// Set Building List as default
|
|
$('#buildingListTab').addClass('active');
|
|
$('#roomListTab').removeClass('active');
|
|
|
|
// Load Building List content
|
|
$('#buildingContent').html('<p>Loading Building List...</p>');
|
|
loadData('/gcc/school/building', '#buildingContent');
|
|
break;
|
|
|
|
case 'roomListTab':
|
|
$('#buildingDetailsSection').show();
|
|
|
|
// Reset sub-tab states
|
|
$('#buildingListTab').removeClass('active');
|
|
$('#roomListTab').addClass('active');
|
|
|
|
// Load Building List by default
|
|
$('#buildingContent').html('<p>Loading Room List...</p>');
|
|
loadData('/gcc/school/room', '#buildingContent');
|
|
break;
|
|
case 'playgroundDetailstab':
|
|
$(
|
|
'#playgroundDetailsSection')
|
|
.show();
|
|
loadData(url,
|
|
'#playgroundDetailsSection');
|
|
break;
|
|
case 'drinkingwaterDetailstab':
|
|
$(
|
|
'#drinkingwaterDetailsSection')
|
|
.show();
|
|
loadData(url,
|
|
'#drinkingwaterDetailsSection');
|
|
break;
|
|
case 'tioletsDetailstab':
|
|
$(
|
|
'#toiletsDetailsSection')
|
|
.show();
|
|
loadData(url,
|
|
'#toiletsDetailsSection');
|
|
break;
|
|
case 'kitchenDetailstab':
|
|
$(
|
|
'#kitchenDetailsSection')
|
|
.show();
|
|
loadData(url,
|
|
'#kitchenDetailsSection');
|
|
break;
|
|
case 'itassestsDetailstab':
|
|
$('#itassestsDetailsSection').show();
|
|
|
|
// Set Building List as default
|
|
$('#RoomAssetTab').addClass('active');
|
|
$('#AssetManageTab').removeClass('active');
|
|
$('#AddElectricalAssetTab').removeClass('active');
|
|
$('#AddFurnitureAssetTab').removeClass('active');
|
|
|
|
// Load Building List content
|
|
$('#itAssetsContent').html('<p>Loading Asset Room List...</p>');
|
|
loadData('/gcc/school/roomassets', '#itAssetsContent');
|
|
break;
|
|
case 'AssetManageTab':
|
|
$('#itassestsDetailsSection').show();
|
|
|
|
// Reset sub-tab states
|
|
$('#AssetManageTab').addClass('active');
|
|
$('#RoomAssetTab').removeClass('active');
|
|
$('#AddElectricalAssetTab').removeClass('active');
|
|
$('#AddFurnitureAssetTab').removeClass('active');
|
|
|
|
// Load Building List by default
|
|
$('#itAssetsContent').html('<p>Loading Asset List...</p>');
|
|
loadData('/gcc/school/assetmanagement', '#itAssetsContent');
|
|
break;
|
|
case 'AddElectricalAssetTab':
|
|
$('#itassestsDetailsSection').show();
|
|
|
|
// Reset sub-tab states
|
|
$('#AssetManageTab').removeClass('active');
|
|
$('#RoomAssetTab').removeClass('active');
|
|
$('#AddElectricalAssetTab').addClass('active');
|
|
$('#AddFurnitureAssetTab').removeClass('active');
|
|
|
|
// Load Building List by default
|
|
$('#itAssetsContent').html('<p>Loading Add Electrical Asset content...</p>');
|
|
loadData('/gcc/school/addelectricalasset', '#itAssetsContent');
|
|
break;
|
|
|
|
case 'AddFurnitureAssetTab':
|
|
$('#itassestsDetailsSection').show();
|
|
|
|
// Reset sub-tab states
|
|
$('#AssetManageTab').removeClass('active');
|
|
$('#RoomAssetTab').removeClass('active');
|
|
$('#AddElectricalAssetTab').removeClass('active');
|
|
$('#AddFurnitureAssetTab').addClass('active');
|
|
|
|
// Load Building List by default
|
|
$('#itAssetsContent').html('<p>Loading Add Furniture Asset content...</p>');
|
|
loadData('/gcc/school/addfurnitureasset', '#itAssetsContent');
|
|
break;
|
|
}
|
|
});
|
|
|
|
|
|
// Handle IT Assets Sub-tabs Click
|
|
/*$('#itAssetsSubTabs').on('click', '.nav-link', function (e) {
|
|
e.preventDefault();
|
|
let url = $(this).attr('href');
|
|
$('#itAssetsSubTabs .nav-link').removeClass('active');
|
|
$(this).addClass('active');
|
|
|
|
// Ensure #itAssetsContent is cleared before loading
|
|
$('#itAssetsContent').html('<p>Loading...</p>');
|
|
$.get(url, function (data) {
|
|
$('#itAssetsContent').html(data);
|
|
}).fail(function () {
|
|
$('#itAssetsContent').html('<p>Error loading data. Please try again later.</p>');
|
|
});
|
|
});*/
|
|
|
|
// Click event for Room List Tab
|
|
/* $(document).on('click', '#roomListTab', function (e) {
|
|
e.preventDefault();
|
|
|
|
// Show the main building section
|
|
$('#buildingDetailsSection').show();
|
|
|
|
// Set active tab
|
|
$('#roomListTab').addClass('active');
|
|
$('#buildingListTab').removeClass('active');
|
|
|
|
// Load Room List content
|
|
$('#buildingContent').html('<p>Loading Room List...</p>');
|
|
loadData('/gcc/school/room', '#buildingContent');
|
|
}); */
|
|
|
|
// Click event for Building List Tab
|
|
$(document).on('click', '#buildingListTab', function (e) {
|
|
e.preventDefault();
|
|
|
|
// Show the main building section
|
|
$('#buildingDetailsSection').show();
|
|
|
|
// Set active tab
|
|
$('#buildingListTab').addClass('active');
|
|
$('#roomListTab').removeClass('active');
|
|
|
|
// Load Building List content
|
|
$('#buildingContent').html('<p>Loading Building List...</p>');
|
|
loadData('/gcc/school/building', '#buildingContent');
|
|
});
|
|
|
|
$(document).on('click', '#RoomAssetTab', function (e) {
|
|
e.preventDefault();
|
|
|
|
// Show the main building section
|
|
$('#itassestsDetailsSection').show();
|
|
|
|
// Set active tab
|
|
$('#RoomAssetTab').addClass('active');
|
|
$('#AssetManageTab').removeClass('active');
|
|
|
|
// Load Building List content
|
|
$('#itAssetsContent').html('<p>Loading Asset Room List...</p>');
|
|
loadData('/gcc/school/roomassets', '#itAssetsContent');
|
|
});
|
|
|
|
|
|
// 🔁 Delegate Click Event for Building Sub-tabs
|
|
/* $(document).on('click', '#buildingSubTabs .nav-link', function (e) {
|
|
e.preventDefault();
|
|
|
|
// Remove active class from all sub-tabs
|
|
$('#buildingSubTabs .nav-link').removeClass('active');
|
|
$(this).addClass('active');
|
|
|
|
// Get the correct API URL from `data-url`
|
|
let contentUrl = $(this).data('url');
|
|
|
|
// Load content dynamically
|
|
if (contentUrl) {
|
|
$('#buildingContent').html('<p>Loading...</p>');
|
|
$.get(contentUrl, function (data) {
|
|
$('#buildingContent').html(data);
|
|
}).fail(function () {
|
|
$('#buildingContent').html('<p>Error loading data. Please try again later.</p>');
|
|
});
|
|
}
|
|
});*/
|
|
|
|
});
|
|
// Function to load data via AJAX
|
|
function loadData(url, sectionId) {
|
|
$.get(url, function (data) {
|
|
$(sectionId).html(data);
|
|
}).fail(function () {
|
|
$(sectionId).html('<p>Error loading data. Please try again later.</p>');
|
|
});
|
|
}
|
|
|
|
|
|
document.getElementById('buildup_area').addEventListener('input', function () {
|
|
// Allow only whole numbers (no decimals)
|
|
this.value = this.value.replace(/[^0-9]/g, '');
|
|
|
|
// Prevent negative values
|
|
if (parseInt(this.value) < 0) {
|
|
this.value = '';
|
|
}
|
|
});
|
|
document.getElementById('modal_buildup_area').addEventListener('input', function () {
|
|
// Allow only whole numbers (no decimals)
|
|
this.value = this.value.replace(/[^0-9]/g, '');
|
|
|
|
// Prevent negative values
|
|
if (parseInt(this.value) < 0) {
|
|
this.value = '';
|
|
}
|
|
});
|
|
|
|
document.getElementById('land_area').addEventListener('input', function () {
|
|
// Remove any non-numeric characters except decimal point
|
|
this.value = this.value.replace(/[^0-9.]/g, '');
|
|
|
|
// Ensure the value is nfot negative
|
|
if (this.value < 0) {
|
|
this.value = '';
|
|
}
|
|
});
|
|
document.getElementById('modal_land_area').addEventListener('input', function () {
|
|
// Remove any non-numeric characters except decimal point
|
|
this.value = this.value.replace(/[^0-9.]/g, '');
|
|
|
|
// Ensure the value is nfot negative
|
|
if (this.value < 0) {
|
|
this.value = '';
|
|
}
|
|
});
|
|
|
|
|
|
$('#requestSubmitBtn').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
let landArea = $('#land_area').val().trim();
|
|
let buildupArea = $('#buildup_area').val().trim();
|
|
let isCompound = $('input[name="compoundWall"]:checked').val();
|
|
let isNameboard = $('input[name="nameBoard"]:checked').val();
|
|
let isPasystem = $('input[name="paSystem"]:checked').val();
|
|
let isBell = $('input[name="electricBell"]:checked').val();
|
|
let isGenerator = $('input[name="generatorSet"]:checked').val();
|
|
|
|
//let schoolId = 1; // hardcoded
|
|
|
|
// Field validation
|
|
if (isNaN(parseFloat(landArea)) || landArea <= 0 ) {
|
|
Swal.fire({
|
|
icon: 'info',
|
|
title: 'Validation Error',
|
|
text: 'Site Area numbers greater than 0.',
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false,
|
|
confirmButtonText: 'OK'
|
|
});
|
|
return;
|
|
}
|
|
if ( isNaN(parseFloat(buildupArea)) || buildupArea < 50) {
|
|
Swal.fire({
|
|
icon: 'info',
|
|
title: 'Validation Error',
|
|
text: ' Built-up Area must be numbers greater than 50.',
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false,
|
|
confirmButtonText: 'OK'
|
|
});
|
|
return;
|
|
}
|
|
let fields = {
|
|
"Site Area of the School": landArea,
|
|
"Built Up Area of the School": buildupArea,
|
|
"Compound Wall": isCompound,
|
|
"School Name Board": isNameboard,
|
|
"PA System": isPasystem,
|
|
"Electric Bell": isBell,
|
|
"Generator Set": isGenerator
|
|
};
|
|
|
|
for (let key in fields) {
|
|
if (!fields[key] || fields[key] === "") {
|
|
Swal.fire({
|
|
icon: 'info',
|
|
title: 'Validation Error',
|
|
text: `Please enter/select: ${key}`,
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false,
|
|
confirmButtonText: 'OK'
|
|
});
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Check numeric fields
|
|
|
|
|
|
|
|
|
|
|
|
// Show loader
|
|
$('#pageLoader').show();
|
|
|
|
// Prepare form data
|
|
let formData = {
|
|
land_area: parseFloat(landArea),
|
|
buildup_area: parseFloat(buildupArea),
|
|
is_compound: isCompound ,
|
|
is_nameboard: isNameboard,
|
|
is_pasystem: isPasystem,
|
|
is_bell: isBell,
|
|
is_generator: isGenerator,
|
|
school_id: schoolId
|
|
};
|
|
|
|
// AJAX call
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: '/gcc/api/gccschool/schoolproperty/saveSchoolBuildupArea',
|
|
data: $.param(formData), // Serialize object to x-www-form-urlencoded
|
|
success: function (data) {
|
|
$('#pageLoader').hide();
|
|
Swal.fire({
|
|
title: 'Success!',
|
|
text: 'School Build-up Area data saved successfully!',
|
|
icon: 'success',
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false,
|
|
confirmButtonText: 'OK'
|
|
}).then(() => {
|
|
window.location.reload();
|
|
});
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error('AJAX Error:', error);
|
|
$('#pageLoader').hide();
|
|
Swal.fire({
|
|
title: 'Error!',
|
|
text: 'Something went wrong while saving the data.',
|
|
icon: 'error',
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false,
|
|
confirmButtonText: 'OK'
|
|
});
|
|
}
|
|
});
|
|
});
|
|
/* document.getElementById("resetButton").addEventListener("click", function (event) {
|
|
event.preventDefault(); // Prevent default reset behavior (which might refresh or reset other logic)
|
|
|
|
// Clear all input fields (text)
|
|
document.querySelectorAll('input[type="text"]').forEach(input => input.value = "");
|
|
|
|
// Uncheck all radio buttons
|
|
document.querySelectorAll('input[type="radio"]').forEach(radio => radio.checked = false);
|
|
});*/
|
|
|
|
$(document).ready(function () {
|
|
$.ajax({
|
|
url: '/gcc/api/gccschool/buildingasset/getotherdetailsBySchoolId',
|
|
type: 'GET',
|
|
data: {schoolId},
|
|
success: function (response) {
|
|
if (response.status === 'OK' && response.otherdetailsBySchool.length > 0) {
|
|
const data = response.otherdetailsBySchool[0];
|
|
|
|
const hasValidData =
|
|
!!data.land_area ||
|
|
!!data.buildup_area ||
|
|
data.is_compound !== null ||
|
|
data.is_nameboard !== null ||
|
|
data.is_pasystem !== null ||
|
|
data.is_bell !== null ||
|
|
data.is_generator !== null;
|
|
|
|
if (hasValidData) {
|
|
// Fill read-only
|
|
$('#ro_land_area').text(data.land_area || '');
|
|
$('#ro_buildup_area').text(data.buildup_area || '');
|
|
$('#ro_compoundWall').text(data.is_compound ? 'Yes' : 'No');
|
|
$('#ro_nameBoard').text(data.is_nameboard ? 'Yes' : 'No');
|
|
$('#ro_paSystem').text(data.is_pasystem ? 'Yes' : 'No');
|
|
$('#ro_electricBell').text(data.is_bell ? 'Yes' : 'No');
|
|
$('#ro_generatorSet').text(data.is_generator ? 'Yes' : 'No');
|
|
|
|
$('#otherDetailsSection').show();
|
|
$('#otherDetailsReadOnlyView').show();
|
|
$('#otherDetailsSectionform').hide();
|
|
} else {
|
|
$('#otherDetailsSection').show();
|
|
$('#otherDetailsReadOnlyView').hide();
|
|
$('#otherDetailsSectionform').show();
|
|
}
|
|
} else {
|
|
// ✅ No data at all
|
|
$('#otherDetailsSection').show();
|
|
$('#otherDetailsReadOnlyView').hide();
|
|
$('#otherDetailsSectionform').show();
|
|
}
|
|
},
|
|
error: function () {
|
|
console.error('Error fetching other details');
|
|
$('#otherDetailsSection').show();
|
|
$('#otherDetailsReadOnlyView').hide();
|
|
$('#otherDetailsSectionform').show();
|
|
}
|
|
});
|
|
|
|
$('#updateOtherDetailsBtn').on('click', function () {
|
|
console.log("schoolId", schoolId);
|
|
|
|
$.ajax({
|
|
url: '/gcc/api/gccschool/buildingasset/getotherdetailsBySchoolId',
|
|
type: 'GET',
|
|
data: {schoolId},
|
|
success: function (response) {
|
|
console.log("response");
|
|
console.log(response);
|
|
if (response.status === 'OK' && response.otherdetailsBySchool.length > 0) {
|
|
const data = response.otherdetailsBySchool[0];
|
|
console.log("land_area:", data.land_area);
|
|
console.log("buildup_area:", data.buildup_area);
|
|
|
|
$('#modal_land_area').val(data.land_area);
|
|
$('#modal_buildup_area').val(data.buildup_area );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//$('#buildup_area').val(data.buildup_area);
|
|
$('input[name="modalcompoundWall"][value="' + (data.is_compound ? '1' : '0') + '"]').prop('checked', true);
|
|
$('input[name="modalnameBoard"][value="' + (data.is_nameboard ? '1' : '0') + '"]').prop('checked', true);
|
|
$('input[name="modalpaSystem"][value="' + (data.is_pasystem ? '1' : '0') + '"]').prop('checked', true);
|
|
$('input[name="modalelectricBell"][value="' + (data.is_bell ? '1' : '0') + '"]').prop('checked', true);
|
|
$('input[name="modalgeneratorSet"][value="' + (data.is_generator ? '1' : '0') + '"]').prop('checked', true);
|
|
$('#otherDetailsFormWrapper').show();
|
|
$('#otherDetailsReadOnlyView').show();
|
|
$('#otherDetailsModal').modal('show');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
$('#updateOtherDetailsForm').on('submit', function (e) {
|
|
e.preventDefault();
|
|
|
|
// Collect values from modal
|
|
const land_area = parseFloat($('#modal_land_area').val().trim());
|
|
|
|
const buildup_area = parseFloat($('#modal_buildup_area').val().trim());
|
|
const is_compound = $('input[name="modalcompoundWall"]:checked').val();
|
|
const is_nameboard = $('input[name="modalnameBoard"]:checked').val();
|
|
const is_pasystem = $('input[name="modalpaSystem"]:checked').val();
|
|
const is_bell = $('input[name="modalelectricBell"]:checked').val();
|
|
const is_generator = $('input[name="modalgeneratorSet"]:checked').val();
|
|
console.log("text");
|
|
console.log(land_area);
|
|
console.log(is_bell);
|
|
|
|
|
|
if (isNaN(land_area) || isNaN(buildup_area)) {
|
|
Swal.fire("Validation Error", "Please enter valid area values.", "warning");
|
|
return;
|
|
}
|
|
if (isNaN(parseFloat(land_area)) || land_area <= 0 || isNaN(parseFloat(buildup_area)) || buildup_area <= 50) {
|
|
Swal.fire({
|
|
icon: 'info',
|
|
title: 'Validation Error',
|
|
text: 'Site Area and Built-up Area must be valid numbers.',
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false,
|
|
confirmButtonText: 'OK'
|
|
});
|
|
return;
|
|
}
|
|
|
|
// Prepare payload
|
|
const formData = {
|
|
land_area,
|
|
buildup_area,
|
|
is_compound,
|
|
is_nameboard,
|
|
is_pasystem,
|
|
is_bell,
|
|
is_generator,
|
|
school_id: schoolId // already declared in your script
|
|
};
|
|
|
|
// AJAX call to your controller
|
|
$.ajax({
|
|
url: '/gcc/api/gccschool/schoolproperty/updateOtherDetails',
|
|
type: 'POST',
|
|
data: formData,
|
|
success: function (response) {
|
|
/* if (response === 'Success') {
|
|
Swal.fire("Success!", "Other details updated successfully.", "success")
|
|
.then(() => window.location.reload());
|
|
} else {
|
|
Swal.fire("Error", "Something went wrong. Try again.", "error");
|
|
}
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("AJAX Error:", error);
|
|
Swal.fire("Error", "Server error occurred.", "error");
|
|
}*/
|
|
if (response === 'Success') {
|
|
Swal.fire({
|
|
title: "Success!",
|
|
text: "Other details updated successfully.",
|
|
icon: "success",
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false
|
|
}).then(() => window.location.reload());
|
|
} else {
|
|
Swal.fire({
|
|
title: "Error",
|
|
text: "Something went wrong. Try again.",
|
|
icon: "error",
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false
|
|
});
|
|
}
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("AJAX Error:", error);
|
|
Swal.fire({
|
|
title: "Error",
|
|
text: "Server error occurred.",
|
|
icon: "error",
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false,
|
|
allowEnterKey: false
|
|
});
|
|
}
|
|
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|