TDS_Calculation/welcome.jsp

831 lines
34 KiB
Plaintext

<%--
Document : welcome
Created on : Apr 11, 2024, 3:49:41 PM
Author : 2552586
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8" />
<!-- <title>IPKS | Home</title>-->
<title>IFSS | Home</title>
<link rel="shortcut icon" href="img/favicon.ico?pacs=<%=((new java.util.Date()).getTime())%>" type="image/x-icon" />
<link rel="shortcut icon" href="/IFSS/img/favicon.ico?pacs=<%=((new java.util.Date()).getTime())%>" type="image/x-icon" />
<script type="text/javascript">
function noBack()
{
window.history.forward();
}
</script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="/IFSS/css/styles.css?pacs=<%=((new java.util.Date()).getTime())%>"/>
<link rel="stylesheet" type="text/css" href="/IFSS/css/ButtonAndText.css?pacs=<%=((new java.util.Date()).getTime())%>" />
<link rel="stylesheet" type="text/css" href="/IFSS/css/info.css?pacs=<%=((new java.util.Date()).getTime())%>" />
<link rel="stylesheet" type="text/css" href="/IFSS/css/wrapper.css?pacs=<%=((new java.util.Date()).getTime())%>"/>
<link rel="stylesheet" type="text/css" href="/IFSS/bootstrap/css/bootstrap.min.css?pacs=<%=((new java.util.Date()).getTime())%>"/>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap" rel="stylesheet">
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-ui-1.10.4.custom/development-bundle/jquery-1.10.2.js?pacs=<%=((new java.util.Date()).getTime())%>"></script>
<script type="text/javascript" src="/IFSS/chromejs/chrome.js?pacs=<%=((new java.util.Date()).getTime())%>"></script>
<script type="text/javascript" src="/IFSS/js/iFrame_killer.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sockjs-client/dist/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@stomp/stompjs@7.0.0/bundles/stomp.umd.min.js"></script>
<script>
let stompClient = null;
let inactivityTimeout;
function connectWebSocket() {
const socket = new SockJS('/IFSS/websocket-endpoint');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
console.log('Connected: ' + frame);
// Subscribe to session timeout topic
stompClient.subscribe('/topic/session-timeout', function (message) {
showSessionTimeoutPopup(message.body);
});
});
}
function resetInactivityTimer() {
clearTimeout(inactivityTimeout);
inactivityTimeout = setTimeout(() => {
if (stompClient && stompClient.connected) {
stompClient.send('/app/check-inactivity', {}, JSON.stringify({ userId: '<%=user%>' }));
}
}, 60000); // 1 minute
}
function showSessionTimeoutPopup(message) {
alert(message); // Replace with a custom popup if needed
window.location.href = '/IFSS/logout'; // Redirect to logout
}
// Initialize WebSocket connection and inactivity timer
window.onload = function () {
connectWebSocket();
resetInactivityTimer();
// Reset timer on user activity
document.addEventListener('mousemove', resetInactivityTimer);
document.addEventListener('keydown', resetInactivityTimer);
};
</script>
<style>
body {
height: 100vh;
}
/* The snackbar - position it at the bottom and in the middle of the screen */
#snackbar {
visibility: hidden; /* Hidden by default. Visible on click */
min-width: 200px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
left: 89%; /* Center the snackbar */
bottom: 100px; /* 30px from the bottom */
}
#snackbar2 {
visibility: hidden; /* Hidden by default. Visible on click */
min-width: 200px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
left: 12%; /* Center the snackbar */
bottom: 100px; /* 100px from the bottom */
}
#snackbar3 {
visibility: hidden; /* Hidden by default. Visible on click */
min-width: 200px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
left: 12%; /* Center the snackbar */
bottom: 100px; /* 100px from the bottom */
}
#notiButton {
min-width: 100px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
left: 95%; /* Center the snackbar */
bottom: 30px; /* 30px from the bottom */
}
#dReport {
min-width: 100px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
left: 12%; /* Center the snackbar */
bottom: 35px; /* 30px from the bottom */
}
#dReport2 {
min-width: 100px; /* Set a default minimum width */
margin-left: -125px; /* Divide value of min-width by 2 */
background-color: #333; /* Black background color */
color: #fff; /* White text color */
text-align: center; /* Centered text */
border-radius: 2px; /* Rounded borders */
padding: 16px; /* Padding */
position: fixed; /* Sit on top of the screen */
z-index: 1; /* Add a z-index if needed */
left: 28%; /* Center the snackbar */
bottom: 35px; /* 30px from the bottom */
}
/*commented on 19/3/24*/
#footer {
width:100%;
height:75px;
position:fixed;
padding-top: 130px;
left: 0;
padding-bottom:0px;
/* position: fixed;
padding: 10px 10px 0px 10px;
bottom: 0;
left: 0;
right: 0;*/
/*height: 40px; Height of the footer*/
/* background: #8dce09; 57EE0B; #B5FF33*/
}
/*.footerSection_New {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
min-width: 1024px !important;
min-height: 10px;
z-index: 111;
background: #2b2b2b 0 0 no-repeat padding-box;
}*/
/*added on 19/3/24*/
#page-footer {
display: flex;
justify-content: space-between;
background-color: #f2f2df;
font-size: 1em;
font-weight: 500;
color: #5C8DC5;
font-family: "Rubik", sans-serif;
/* position: fixed;
left: 0;
bottom: 0;*/
width: 100%;
}
#page-footer div {
padding: 10px;
}
.privacyPol {
right: 0;
text-align: right;
padding: 5px;
border-radius: 5px;
;
position: fixed;
bottom: 1;
color: #0000e6;
min-width: 10px !important;
min-height: 7px;
z-index: 111;
/* background: #2b2b2b 0 0 no-repeat padding-box;*/
}
/* Show the snackbar when clicking on a button (class added with JavaScript) */
#snackbar.show {
visibility: visible; /* Show the snackbar */
/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
However, delay the fade out process for 2.5 seconds */
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
#snackbar2.show {
visibility: visible; /* Show the snackbar */
/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
However, delay the fade out process for 2.5 seconds */
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
#snackbar3.show {
visibility: visible; /* Show the snackbar */
/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
However, delay the fade out process for 2.5 seconds */
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
/*//added on 16/4/24*/
fieldset {
display: block;
margin-inline-start: 2px;
margin-inline-end: 2px;
padding-block-start: 0.35em;
padding-inline-start: 0.75em;
padding-inline-end: 0.75em;
padding-block-end: 0.625em;
min-inline-size: min-content;
border-style: groove;
border-image: initial;
flex: 1;
/* legend {
display: block;
padding-inline-start: 2px;
padding-inline-end: 2px;
unicode-bidi: isolate;
border-width: initial;
border-style: none;
border-color: initial;
border-image: initial;
element.style {
padding: 8px;
border-radius: 20px;
background-color: #006600;
color: white;*/
}
/*#menu a {
float: left;
padding: 12px 30px;
color: rgb(0,140,69);
text-transform: uppercase;
font: bold 12px Arial, Helvetica;
text-decoration: none; }*/
/* Animations to fade the snackbar in and out */
@-webkit-keyframes fadein {
from {
bottom: 60;
opacity: 0;
}
to {
bottom: 100px;
opacity: 1;
}
}
@keyframes fadein {
from {
bottom: 60;
opacity: 0;
}
to {
bottom: 100px;
opacity: 1;
}
}
@-webkit-keyframes fadeout {
from {
bottom: 100px;
opacity: 1;
}
to {
bottom: 60;
opacity: 0;
}
}
@keyframes fadeout {
from {
bottom: 100px;
opacity: 1;
}
to {
bottom: 60;
opacity: 0;
}
}
/* added style on 28/6/24*/
.main-container {
display: flex;
/*height: 80vh;*/
width: inherit;
padding: 0px 10px;
}
.left-section {
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 2;
/* background-color: #B1E1B3;*/
color: #008C46;
/* Light gray background */
/* padding: 10px;*/
}
.right-section {
flex: 5;
/*background-color: #B1E1B3;*/
/* Light gray background */
/*text-align: center;*/
/*color: #008C46*/;
color: #5C8DC5;
font-size: 15px;
/*padding-top: 45px;*/
}
.left-section-below {
display: flex;
flex: 1;
/* background-color: #B1E1B3;*/
color: #008C46;
gap: 50px;
/* Light gray background */
/* padding: 10px;*/
}
#holiday-legend {
background-color: #AD9E90;
/*color: rgb(177,224,178);*/
color: white;
border-color: #80AE82 !important;
}
/* Added here for bradcast message style*/
.blur {
filter : blur(10px);
}
.popup {
position: fixed;
top: 50%;
left:50%;
background-color: white;
transform: translate(-50%, -50%);
padding: 20px;
border-radius: 10px;
z-index: 1000;
box-shadow: 0px 0px 10px rgba(0,0,0,0.5) ;
width: 80%;
max-width: 500px;
text-align: center;
}
.popup h2{
margin-top: 0;
color: #333;
}
.popup p {
color: #666;
line-height: 1.6;
}
.popup button{
background-color: #007bff;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
font-size: 16px;
margin-top: 20px;
}
/*Added for dashboard*/
.dashboard-container {
display: flex;
justify-content: center;
/* flex-wrap: wrap;*/
gap: 10px;
padding: 10px;
}
.chart-container {
width: 250px;
height: 290px;
background: beige;
padding: 10px;
border-radius: 10px;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
}
</style>
<script type="text/javascript" language="javascript">
$(function () {
$('marquee').mouseover(function () {
$(this).attr('scrollamount', 0);
}).mouseout(function () {
$(this).attr('scrollamount', 5);
});
});
$(document).ready(function () {
$(document).on('click', '.est_btn', function (event) {
if ($('.est_btn').index(this) == 0) {
document.location.href = "/IFSS/KCCSevlet";
} else if ($('.est_btn').index(this) == 1) {
document.location.href = "/IFSS/TradingSevlet";
} else if ($('.est_btn').index(this) == 2) {
document.location.href = "/IFSS/AssetServlet";
<%--}else if($('.est_btn').index(this) == 3){
document.location.href="/IFSS/PDSServlet";--%>
} else if ($('.est_btn').index(this) == 4) {
document.location.href = "/IFSS/SHGServlet";
<%-- }else if($('.est_btn').index(this) == 5){
document.location.href="/IFSS/GPSServlet";--%>
} else if ($('.est_btn').index(this) == 6) {
document.location.href = "/IFSS/MISDashboardSevlet";
} else if ($('.est_btn').index(this) == 7) {
document.location.href = "/IFSS/DepositServlet";
} else if ($('.est_btn').index(this) == 8) {
document.location.href = "/IFSS/LoanServlet";
} else if ($('.est_btn').index(this) == 9) {
document.location.href = "/IFSS/ShareServlet";
<%--}else if($('.est_btn').index(this) == 10){
document.location.href="/IFSS/SODEODServlet";--%>
}
});
});
// to restrict going back
history.pushState(null, null, location.href);
window.addEventListener('popstate', function (event) {
history.pushState(null, null, location.href);
});
$(function () {
if ($.browser.msie && $.browser.version.substr(0, 1) < 7)
{
$('li').has('ul').mouseover(function () {
$(this).children('ul').css('visibility', 'visible');
}).mouseout(function () {
$(this).children('ul').css('visibility', 'hidden');
})
}
});
var repeater;
function downloadReport()
{
var formDownloadReport = document.getElementById("reportForm");
formDownloadReport.reportPath.value = "/Reports/investment_mat_report.jasper";
formDownloadReport.reportName.value = "investment_mat_report";
formDownloadReport.DOWNLOAD.value = "P";
formDownloadReport.action = '/IFSS/jasperReportServlet';
formDownloadReport.submit();
}
function downloadReport2()
{
var formDownloadReport = document.getElementById("reportForm3");
formDownloadReport.reportPath.value = "/Reports/nsckvp_exp_report.jasper";
formDownloadReport.reportName.value = "NSC_KVP_Exp_Report";
formDownloadReport.DOWNLOAD.value = "P";
formDownloadReport.action = '/IFSS/jasperReportServlet';
formDownloadReport.submit();
}
</script>
<!-- Added by Paramita for broadcast Message -->
<script>
function closePopup() {
document.getElementById("popup").style.display = "none";
document.getElementById("overlay").style.display = "none";
document.getElementById("mainContent").classList.remove('blur');
}
</script>
</head>
<body onload="noBack()">
<%
String ModuleName = new String();
ModuleName = (String) session.getAttribute("moduleName");
String role = (String) session.getAttribute("userRole");
String pacsId = (String) session.getAttribute("pacsId");
String holidayList = (String) session.getAttribute("holidayList");
String kccBalanceTransfer = (String) session.getAttribute("kccBalanceTransfer");
String broadcastMessage = (String)session.getAttribute("returnMessage");
// added by chhanda on 29/8/24
String user = (String) session.getAttribute("user");
String pacsName = (String) session.getAttribute("pacsName");
String UserName = (String) session.getAttribute("UserName");
String Mobile = (String) session.getAttribute("Mobile");
%>
<!-- Added for Dashboard -->
<script>
window.onload = function () {
fetchUserData();
};
function fetchUserData() {
$.ajax({
url: "/IFSS/TicketServlet",
method: "GET",
dataType: "json",
success: function (data) {
console.log(data);
populateUserDropdown(data);
},
error: function (xhr, status, error) {
console.error("Error fetching data: " + error);
}
});
}
function populateUserDropdown(users) {
let dropdown = document.getElementById("userDropdown");
users.forEach(user => {
let option = document.createElement("option");
option.value = user.user_id;
option.textContent = "User_" + user.user_id;
dropdown.appendChild(option);
});
// Add event listener for dropdown change
dropdown.addEventListener("change", function () {
let selectedUserId = this.value;
let selectedUser = users.find(user => user.user_id == selectedUserId);
displayUserCharts(selectedUser);
});
}
function displayUserCharts(user) {
let container = document.getElementById("userDashboard");
container.innerHTML = ""; // Clear previous charts
// Create doughnut chart container
let doughnutChartContainer = document.createElement("div");
doughnutChartContainer.classList.add("chart-container");
let doughnutTitle = document.createElement("h4");
doughnutTitle.textContent = user.user_id;
let doughnutCanvas = document.createElement("canvas");
doughnutCanvas.id = "doughnut_chart_" + user.user_id;
// Append elements for doughnut chart
doughnutChartContainer.appendChild(doughnutTitle);
doughnutChartContainer.appendChild(doughnutCanvas);
container.appendChild(doughnutChartContainer);
// Create bar chart container
let barChartContainer = document.createElement("div");
barChartContainer.classList.add("chart-container");
let barTitle = document.createElement("h4");
barTitle.textContent = user.user_id;
let barCanvas = document.createElement("canvas");
barCanvas.id = "bar_chart_" + user.user_id;
// Append elements for bar chart
barChartContainer.appendChild(barTitle);
barChartContainer.appendChild(barCanvas);
container.appendChild(barChartContainer);
setTimeout(() => {
// Doughnut chart
let doughnutCtx = doughnutCanvas.getContext("2d");
if (!doughnutCtx) {
console.error(`Failed to get 2D context for canvas '${doughnutCanvas.id}'`);
return;
}
new Chart(doughnutCtx, {
type: 'doughnut',
data: {
labels: ["unclaimed", "Overdue", "kyc", "SI"],
datasets: [{
data: [user.unclaimed, user.Loan_overdue, user.kyc_status, user.si_status],
backgroundColor: ["#36A2EB", "#FF6384", "#4BC0C0", "#FFCE56"],
hoverOffset: 8
}]
},
options: {
responsive: true,
cutout: '70%', // Inner empty circle
plugins: {
legend: {
display: true,
position: 'right'
}
}
}
});
// Bar chart
let barCtx = barCanvas.getContext("2d");
if (!barCtx) {
console.error(`Failed to get 2D context for canvas '${barCanvas.id}'`);
return;
}
new Chart(barCtx, {
type: 'bar',
data: {
labels: ["unclaimed", "Overdue", "kyc", "SI"],
datasets: [{
label: 'User Data',
data: [user.unclaimed, user.Loan_overdue, user.kyc_status, user.si_status],
backgroundColor: ["#36A2EB", "#FF6384", "#4BC0C0", "#FFCE56"]
}]
},
options: {
responsive: true,
plugins: {
legend: {
display: true,
position: 'top'
}
},
scales: {
y: {
beginAtZero: true
}
}
}
});
}, 100);
}
</script>
<div id ="mainContent" class="<%=broadcastMessage != null ? "blur" : ""%>">
<jsp:include page="/menuHeadDeposit" flush="true" />
<br>
<div class="main-container">
<div class="left-section">
<fieldset style="background-color: rgb(237, 237, 237); border-color: rgb(100, 149, 237); border-radius: 20px; border-width:2px; margin-left: 5px;margin-right: 01px;">
<legend id="holiday-legend" style=" margin-left: 40px; width:110px; padding: .5px 10px; border-radius: 18px; background-color: rgb(100, 149, 237); color: rgb(255,255,255)">Holidays</legend>
<form name="holidayForm" method="post" action="">
<ul>
<li>
<p><font color="#6495ed"><%=holidayList%></font>
</p>
</li>
</ul></form></fieldset>
<fieldset style="border-radius: 20px; border-color: rgb(100, 149, 237); border-width: 2px; margin-left: 5px;margin-right: 01px; margin-top: 20px;background-color: rgb(237, 237, 237)"/>
<legend style="margin-left: 40px; width:110px; padding: .5px 15px; border-radius: 18px; background-color: rgb(100, 149, 237); color: rgb(255,255,255)">Notifications</legend>
<form name="UserInfo" method="post" action="">
<!-- <ul>
<li>
<p><font color="dimgrey">Teller Id : <font color="green"><%=user%></font></font>
</p>
</li>
<li>
<p><font color="dimgrey">Institute : <font color="green"><%=pacsName%></font></font>
</p>
</li>
<li>
<p><font color="dimgrey">User Type : <font color="green"><%=UserName%></font></font>
</p>
</li>
<li>
<p><font color="dimgrey">Phone No : <font color="green"><%=Mobile%></font></font>
</p>
</li>
</ul>-->
<ul>
<li>
<p><font color="dimgrey">Reach us: 033-4065-9546</font>
</p>
</li>
</ul>
<ul>
<li>
<p><font color="dimgrey">Please complete all the transaction before 31st March,2025</font>
</p>
</li>
</ul>
<ul>
<li>
<p><font color="dimgrey">Test Notification 4. </font></p>
</li>
</ul>
<ul>
<li>
<p><font color="dimgrey">Test Notification 5.</font></p>
</li>
</ul>
<ul>
<li>
<p><font color="dimgrey">Test Notification 6. </font></p>
</li>
</ul>
</form>
</fieldset>
</div>
<div class="right-section">
<fieldset style="border-radius: 20px; border-color: rgb(100, 149, 237); border-width: 2px; margin-left: 10px;margin-right: 1px;background-color: rgb(237, 237, 237)">
<legend style="margin-left: 40px; width:120px; padding: .5px 20px; border-radius: 18px; background-color: rgb(100, 149, 237); color: rgb(255,255,255)">Dashboard</legend>
<form name="notificationForm" method="post" action="">
<select id="userDropdown">
<option value="">Select User</option>
</select>
<div class="dashboard-container" id="userDashboard">
<!-- Charts will be added dynamically -->
</div>
</form>
</fieldset>
<input type="hidden" name="roleId" id="roleId" value="<%=role%>"/>
<input type="hidden" name="pacsId" id="pacsId" value="<%=pacsId%>"/>
<!--added div-->
</div>
</div>
<!--added on 19/3/24-->
<footer id="page-footer">
<!-- <div>
Copyright © 2025, Managed By Tata Consultancy Services. All rights reserved
</div>-->
<div>
<a href="/IFSS/privacyPolicy.jsp">Privacy Policy</a>
</div>
</footer>
</div>
<!-- Added here for broadcast -->
<% if (broadcastMessage != null && !broadcastMessage.isEmpty()) {%>
<div id ="popup" class ="popup">
<p><%=broadcastMessage%></p>
<button onclick="closePopup()">Close</button>
</div>
<div id ="overlay" class="overlay"></div>
<%} else{%>
<script>
console.log("Broadcast Message is either empty or null");
</script>
<% }%>
</body>
</html>