5 changed files with 1378 additions and 104 deletions
-
18src/main/java/com/gcc/commissionerreview/controller/CoworkspaceApicontroller.java
-
5src/main/java/com/gcc/commissionerreview/controller/MainController.java
-
569src/main/java/com/gcc/commissionerreview/service/CoworkspaceService.java
-
407src/main/resources/templates/modules/communityreport.html
-
483src/main/resources/templates/modules/coworkspace.html
@ -0,0 +1,407 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en" xmlns:th="http://www.thymeleaf.org"> |
||||
|
|
||||
|
<head> |
||||
|
<title>Coworkspace Report</title> |
||||
|
|
||||
|
<!-- Bootstrap 5 CSS --> |
||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> |
||||
|
<!-- FontAwesome CSS for icons --> |
||||
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> |
||||
|
<!-- DataTables CSS --> |
||||
|
<link href="https://cdn.datatables.net/1.13.4/css/jquery.dataTables.min.css" rel="stylesheet" /> |
||||
|
<link href="https://cdn.datatables.net/buttons/2.3.6/css/buttons.dataTables.min.css" rel="stylesheet" /> |
||||
|
<link href="https://cdn.datatables.net/fixedcolumns/4.2.2/css/fixedColumns.dataTables.min.css" rel="stylesheet" /> |
||||
|
|
||||
|
|
||||
|
<style> |
||||
|
body { |
||||
|
background-color: #f8f9fa; |
||||
|
} |
||||
|
|
||||
|
.report-container { |
||||
|
overflow-x: auto; |
||||
|
} |
||||
|
|
||||
|
/*#hallBookingTable { |
||||
|
width: 100% !important; |
||||
|
}*/ |
||||
|
|
||||
|
.page-header-title h4 { |
||||
|
margin: 20px 0; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
color: #003366; |
||||
|
text-transform: uppercase; |
||||
|
} |
||||
|
|
||||
|
.filter-section { |
||||
|
background: #fff; |
||||
|
padding: 15px; |
||||
|
border-radius: 8px; |
||||
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.report-container { |
||||
|
background: #fff; |
||||
|
padding: 15px; |
||||
|
border-radius: 8px; |
||||
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/* table.dataTable th, |
||||
|
table.dataTable td { |
||||
|
text-align: center; |
||||
|
vertical-align: middle; |
||||
|
border: 1px solid #dee2e6 !important; |
||||
|
white-space: nowrap; |
||||
|
}*/ |
||||
|
.dashboard-card { |
||||
|
height: 180px; |
||||
|
} |
||||
|
|
||||
|
.dashboard-card .card-body { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.category-card .card-body { |
||||
|
display: block; |
||||
|
overflow-y: auto; |
||||
|
height: 120px; |
||||
|
} |
||||
|
|
||||
|
thead th { |
||||
|
background-color: #003366 !important; |
||||
|
color: white !important; |
||||
|
} |
||||
|
|
||||
|
/* Horizontal Scroll */ |
||||
|
.dataTables_scrollBody { |
||||
|
overflow-x: auto !important; |
||||
|
overflow-y: auto !important; |
||||
|
} |
||||
|
|
||||
|
/* Fixed Column Background */ |
||||
|
table.dataTable tbody tr td.dtfc-fixed-left { |
||||
|
background-color: #fff !important; |
||||
|
} |
||||
|
|
||||
|
table.dataTable.table-striped tbody tr:nth-of-type(odd) td.dtfc-fixed-left { |
||||
|
background-color: #f9f9f9 !important; |
||||
|
} |
||||
|
|
||||
|
.dataTables_scrollBody { |
||||
|
overflow-x: auto !important; |
||||
|
overflow-y: auto !important; |
||||
|
} |
||||
|
|
||||
|
.select2-container { |
||||
|
width: 100% !important; |
||||
|
} |
||||
|
|
||||
|
.select2-results__options { |
||||
|
max-height: 400px !important; |
||||
|
/* increase height */ |
||||
|
} |
||||
|
|
||||
|
.select2-dropdown { |
||||
|
z-index: 9999 !important; |
||||
|
} |
||||
|
|
||||
|
/*.dataTables_scrollHeadInner, |
||||
|
#hallBookingTable { |
||||
|
width: max-content !important; |
||||
|
}*/ |
||||
|
|
||||
|
/* table.dataTable th, |
||||
|
table.dataTable td { |
||||
|
white-space: nowrap; |
||||
|
}*/ |
||||
|
/* table.dataTable th, |
||||
|
table.dataTable td { |
||||
|
text-align: center; |
||||
|
vertical-align: middle; |
||||
|
border: 1px solid #dee2e6 !important; |
||||
|
} |
||||
|
|
||||
|
#hallBookingTable th:nth-child(8), |
||||
|
#hallBookingTable td:nth-child(8) { |
||||
|
white-space: nowrap !important; |
||||
|
min-width: 180px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
#hallBookingTable th:nth-child(5), |
||||
|
#hallBookingTable td:nth-child(5) { |
||||
|
|
||||
|
min-width: 220px; |
||||
|
max-width: 220px; |
||||
|
|
||||
|
white-space: normal !important; |
||||
|
word-wrap: break-word; |
||||
|
word-break: break-word; |
||||
|
} |
||||
|
|
||||
|
#hallBookingTable th:nth-child(20), |
||||
|
#hallBookingTable td:nth-child(20) { |
||||
|
width: 80px !important; |
||||
|
max-width: 80px !important; |
||||
|
min-width: 80px !important; |
||||
|
|
||||
|
white-space: normal !important; |
||||
|
word-break: break-word !important; |
||||
|
}*/ |
||||
|
.hall-name-wrap { |
||||
|
min-width: 220px !important; |
||||
|
max-width: 220px !important; |
||||
|
white-space: normal !important; |
||||
|
word-break: break-word; |
||||
|
} |
||||
|
|
||||
|
.dashboard-card { |
||||
|
border: none; |
||||
|
border-radius: 12px; |
||||
|
min-height: 110px; |
||||
|
} |
||||
|
|
||||
|
/* Total Buildings */ |
||||
|
.building-card { |
||||
|
background: #E3F2FD; |
||||
|
color: #1565C0; |
||||
|
} |
||||
|
|
||||
|
/* Total Bookings */ |
||||
|
.booking-card { |
||||
|
background: #E8F5E9; |
||||
|
color: #2E7D32; |
||||
|
} |
||||
|
|
||||
|
/* Total Revenue */ |
||||
|
.revenue-card { |
||||
|
background: #FFF8E1; |
||||
|
color: #EF6C00; |
||||
|
} |
||||
|
|
||||
|
.dashboard-card h6 { |
||||
|
font-size: 18px; |
||||
|
font-weight: 600; |
||||
|
margin-bottom: 15px; |
||||
|
} |
||||
|
|
||||
|
.dashboard-card h3 { |
||||
|
font-size: 42px; |
||||
|
font-weight: 700; |
||||
|
margin: 0; |
||||
|
} |
||||
|
|
||||
|
#bookingTable th:nth-child(8), |
||||
|
#bookingTable td:nth-child(8) { |
||||
|
width: 50px !important; |
||||
|
min-width: 50px !important; |
||||
|
max-width: 50px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
#bookingTable th:nth-child(9), |
||||
|
#bookingTable td:nth-child(9) { |
||||
|
width: 50px !important; |
||||
|
min-width: 50px !important; |
||||
|
max-width: 50px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/* #hallBookingTable th:not(:nth-child(4)), |
||||
|
#hallBookingTable td:not(:nth-child(4)) { |
||||
|
white-space: nowrap; |
||||
|
}*/ |
||||
|
|
||||
|
/* Wrap selected columns */ |
||||
|
|
||||
|
|
||||
|
|
||||
|
.wrap { |
||||
|
white-space: normal !important; |
||||
|
word-break: break-word; |
||||
|
line-height: 1.2; |
||||
|
text-align: center; |
||||
|
vertical-align: middle; |
||||
|
min-width: 110px; |
||||
|
} |
||||
|
|
||||
|
#performanceTable thead tr:first-child th { |
||||
|
text-align: center; |
||||
|
vertical-align: middle; |
||||
|
background: #003366; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
#performanceTable thead tr:nth-child(2) th { |
||||
|
text-align: center; |
||||
|
vertical-align: middle; |
||||
|
background: #0d6efd; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
#performanceTable td { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
#performanceTable td:nth-child(2) { |
||||
|
text-align: left; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/* Scrollbar */ |
||||
|
.dataTables_scrollBody::-webkit-scrollbar { |
||||
|
height: 8px; |
||||
|
} |
||||
|
|
||||
|
.dataTables_scrollBody::-webkit-scrollbar-thumb { |
||||
|
background: #c1c1c1; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
.dataTables_scrollBody::-webkit-scrollbar-track { |
||||
|
background: #f1f1f1; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
|
||||
|
<div class="container-fluid py-4"> |
||||
|
<div class="page-header-title"> |
||||
|
<h4> community Hall report</h4> |
||||
|
</div> |
||||
|
<div class="row mb-4"> |
||||
|
|
||||
|
<!-- Card 1 --> |
||||
|
<div class="col-md-4"> |
||||
|
<div class="card dashboard-card building-card shadow" style="cursor:pointer;" |
||||
|
onclick="window.open('https://gccservices.in/commissionerreview/communityhallcaretaker', '_blank');"> |
||||
|
<div class="card-body text-center"> |
||||
|
<h6>Community Hall CareTaker Performance Report</h6> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- Card 2 --> |
||||
|
<div class="col-md-4"> |
||||
|
<div class="card dashboard-card booking-card shadow" style="cursor:pointer;" |
||||
|
onclick="window.open('https://gccservices.in/commissionerreview/communityhallreport', '_blank');"> |
||||
|
<div class="card-body text-center"> |
||||
|
<h6>Community Hall Popularity Report</h6> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- Card 3 --> |
||||
|
<div class="col-md-4"> |
||||
|
<div class="card dashboard-card revenue-card shadow" style="cursor:pointer;" |
||||
|
onclick="window.open('https://gccservices.in/commissionerreview/communityhallrefund', '_blank');"> |
||||
|
<div class="card-body text-center"> |
||||
|
<h6>Community Hall Refund Review Report</h6> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<!--<div class="col-md-3"> |
||||
|
<div class="card bg-primary text-white shadow dashboard-card"> |
||||
|
<div class="card-body text-center"> |
||||
|
<h6>Total Buildings</h6> |
||||
|
<h3 id="totalBuildings">0</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-md-3"> |
||||
|
<div class="card bg-success text-white shadow dashboard-card"> |
||||
|
<div class="card-body text-center"> |
||||
|
<h6>Total Bookings</h6> |
||||
|
<h3 id="totalBookings">0</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-md-3"> |
||||
|
<div class="card bg-warning text-dark shadow dashboard-card"> |
||||
|
<div class="card-body text-center"> |
||||
|
<h6>Total Revenue</h6> |
||||
|
<h3 id="totalRevenue">0</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div>--> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
<!-- Media Modal --> |
||||
|
<div class="modal fade" id="mediaModal" tabindex="-1" aria-labelledby="mediaModalLabel" aria-hidden="true" |
||||
|
style="z-index: 1060;"> |
||||
|
<div class="modal-dialog modal-lg modal-dialog-centered"> |
||||
|
<div class="modal-content"> |
||||
|
<div class="modal-header"> |
||||
|
<h5 class="modal-title" id="mediaModalLabel">Media Viewer</h5> |
||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> |
||||
|
</div> |
||||
|
<div class="modal-body text-center" id="mediaModalBody"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div id="pageLoader" |
||||
|
style="display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.8); z-index: 9999; text-align: center;"> |
||||
|
<div style="position: relative; top: 50%; transform: translateY(-50%);"> |
||||
|
<div class="spinner-border text-primary" role="status" style="width: 3rem; height: 3rem;"> |
||||
|
<span class="sr-only"></span> |
||||
|
</div> |
||||
|
<!-- Add the 'Please wait' text below the spinner --> |
||||
|
<p style="margin-top: 1rem; font-size: 1.2rem; color: #007bff;">Please wait...</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- Scripts --> |
||||
|
|
||||
|
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> |
||||
|
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /> |
||||
|
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script> |
||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script> |
||||
|
|
||||
|
|
||||
|
<!-- DataTables JS --> |
||||
|
<script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script> |
||||
|
<script src="https://cdn.datatables.net/buttons/2.3.6/js/dataTables.buttons.min.js"></script> |
||||
|
<script src="https://cdn.datatables.net/buttons/2.3.6/js/buttons.html5.min.js"></script> |
||||
|
<script src="https://cdn.datatables.net/buttons/2.3.6/js/buttons.print.min.js"></script> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script> |
||||
|
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script> |
||||
|
<script src="https://cdn.datatables.net/fixedcolumns/4.2.2/js/dataTables.fixedColumns.min.js"></script> |
||||
|
|
||||
|
<!-- SweetAlert --> |
||||
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> |
||||
|
|
||||
|
<script th:inline="none"> |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
</body> |
||||
|
|
||||
|
</html> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue