DishaMFProposalWriter / index.html
DivyaShah2025's picture
Update index.html
ac36565 verified
Raw
History Blame Contribute Delete
14.9 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Disha Wealth – MF Tool Cluster</title>
<!-- Tailwind CSS for modern scannable design layout -->
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-50 text-gray-800 antialiased font-sans">
<!-- Header Section -->
<header class="bg-[#1B4F72] text-white shadow-md py-6 px-8 text-center relative">
<h1 class="text-3xl font-bold tracking-tight">🧭 Disha Wealth</h1>
<p class="text-blue-200 text-sm mt-1">Your Compass to Financial Freedom</p>
<div class="absolute bottom-2 right-4 text-xs text-blue-100 opacity-75">Advisor: Divya Shah | ARN-339305</div>
</header>
<main class="max-w-6xl mx-auto my-8 px-4">
<!-- Tab Navigation Navigation -->
<div class="flex border-b border-gray-200 mb-6 bg-white rounded-t-lg shadow-sm">
<button id="tab-generator-btn" class="flex-1 py-4 px-6 text-center font-medium border-b-2 border-[#1B4F72] text-[#1B4F72] focus:outline-none transition-all">
🏠 Proposal Parameters
</button>
<button id="tab-nav-btn" class="flex-1 py-4 px-6 text-center font-medium border-b-2 border-transparent text-gray-500 hover:text-gray-700 focus:outline-none transition-all">
🔍 NAV History Categories
</button>
</div>
<!-- PAGE 1: PROPOSAL GENERATOR INPUTS -->
<section id="page-generator" class="space-y-6">
<div class="bg-white p-6 rounded-xl shadow-sm border border-gray-100">
<h3 class="text-lg font-bold text-[#1B4F72] mb-4 border-b pb-2">📋 Client Details & Assumptions</h3>
<div class="grid grid-cols-1 md:grid-cols-4 gap-4">
<div>
<label class="block text-xs font-semibold uppercase text-gray-500 mb-1">Client Name</label>
<input type="text" id="client_name" value="Divya" class="w-full bg-gray-50 border border-gray-200 rounded p-2 focus:ring-1 focus:ring-[#1B4F72] outline-none">
</div>
<div>
<label class="block text-xs font-semibold uppercase text-gray-500 mb-1">Monthly SIP (Rs.)</label>
<input type="number" id="monthly_sip" value="10000" step="5000" class="w-full bg-gray-50 border border-gray-200 rounded p-2 focus:ring-1 focus:ring-[#1B4F72] outline-none">
</div>
<div>
<label class="block text-xs font-semibold uppercase text-gray-500 mb-1">Annual Top-Up (Rs.)</label>
<input type="number" id="annual_topup" value="1000" step="1000" class="w-full bg-gray-50 border border-gray-200 rounded p-2 focus:ring-1 focus:ring-[#1B4F72] outline-none">
</div>
<div>
<label class="block text-xs font-semibold uppercase text-gray-500 mb-1">Horizon (Years)</label>
<input type="number" id="horizon_yrs" value="15" min="1" max="40" class="w-full bg-gray-50 border border-gray-200 rounded p-2 focus:ring-1 focus:ring-[#1B4F72] outline-none">
</div>
</div>
<div class="mt-4">
<button onclick="calculateStaticProjection()" class="w-full bg-[#1B4F72] text-white font-semibold py-3 px-4 rounded shadow-md hover:bg-opacity-90 transition-all">
🚀 Run Wealth Compounding Model
</button>
</div>
</div>
<!-- Client Output Container Dynamic Generation -->
<div id="projection-output-card" class="bg-white p-6 rounded-xl shadow-sm border border-gray-100 hidden">
<h3 class="text-lg font-bold text-[#1B4F72] mb-4">📈 Compound Growth Estimates Table</h3>
<div class="overflow-x-auto">
<table class="w-full text-left text-sm border-collapse">
<thead>
<tr class="bg-[#1B4F72] text-white font-medium text-xs uppercase">
<th class="p-3 rounded-tl">Year Milestone</th>
<th class="p-3">Total Cumulative Principal (Rs.)</th>
<th class="p-3">Probable Maturity Balance (Rs.)</th>
<th class="p-3 rounded-tr">Wealth Multiple Factor</th>
</tr>
</thead>
<tbody id="projection-table-body" class="divide-y divide-gray-100">
<!-- Injected programmatically -->
</tbody>
</table>
</div>
<p class="text-xs text-gray-400 mt-3 italic">Calculations assume static target benchmark compounding vector matching profile inputs.</p>
</div>
</section>
<!-- PAGE 2: GRANULAR CATEGORY NAV MANAGER -->
<section id="page-nav-history" class="space-y-6 hidden">
<div class="bg-white p-6 rounded-xl shadow-sm border border-gray-100">
<h3 class="text-lg font-bold text-[#1B4F72] mb-4 border-b pb-2">🔍 Granular Classification Workspace</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Step 1: Select Specific Fund Category</label>
<select id="category-selector" class="w-full bg-gray-50 border border-gray-200 rounded p-3 text-gray-700 outline-none focus:ring-1 focus:ring-[#1B4F72]">
<option>Equity Large</option>
<option>Equity Large and Mid</option>
<option>Equity Multicap</option>
<option>Equity Small</option>
<option>Equity Flexicap</option>
<option>Hybrid Conservative</option>
<option>Hybrid Balanced</option>
<option>Hybrid Aggressive</option>
<option>Debt</option>
</select>
</div>
<div>
<button onclick="simulateCategoryRegistryFetch()" class="w-full bg-[#1B4F72] text-white font-semibold py-3 px-4 rounded shadow-md hover:bg-opacity-90 transition-all">
📊 Load Matching Registry Schemes
</button>
</div>
</div>
</div>
<!-- Dynamic Mock Table Display Container -->
<div id="category-table-container" class="bg-white p-6 rounded-xl shadow-sm border border-gray-100 hidden">
<div class="flex items-center justify-between mb-4">
<h4 id="category-table-title" class="text-base font-bold text-gray-800"></h4>
<span class="text-xs bg-green-100 text-green-800 font-semibold px-2 py-1 rounded">Live Client Mode</span>
</div>
<div class="overflow-x-auto">
<table class="w-full text-left text-xs border-collapse">
<thead>
<tr class="bg-gray-100 text-gray-700 font-semibold uppercase tracking-wider border-b border-gray-200">
<th class="p-3">Sample Matching Scheme Name</th>
<th class="p-3">Inferred Asset Cluster</th>
<th class="p-3">Historical 3Y CAGR</th>
<th class="p-3">Historical 5Y CAGR</th>
<th class="p-3">Max Drawdown Risk</th>
</tr>
</thead>
<tbody id="category-table-body" class="divide-y divide-gray-100 text-gray-600">
<!-- Simulated Data Rows injected dynamically -->
</tbody>
</table>
</div>
</div>
</section>
</main>
<!-- UI Interaction Engine JavaScript Scripts -->
<script>
// Tab Router Mechanics
const tabGenBtn = document.getElementById('tab-generator-btn');
const tabNavBtn = document.getElementById('tab-nav-btn');
const pageGen = document.getElementById('page-generator');
const pageNav = document.getElementById('page-nav-history');
tabGenBtn.addEventListener('click', () => {
toggleTabs(tabGenBtn, tabNavBtn, pageGen, pageNav);
});
tabNavBtn.addEventListener('click', () => {
toggleTabs(tabNavBtn, tabGenBtn, pageNav, pageGen);
});
function toggleTabs(activeBtn, inactiveBtn, activePage, inactivePage) {
activeBtn.classList.remove('border-transparent', 'text-gray-500');
activeBtn.classList.add('border-[#1B4F72]', 'text-[#1B4F72]');
inactiveBtn.classList.remove('border-[#1B4F72]', 'text-[#1B4F72]');
inactiveBtn.classList.add('border-transparent', 'text-gray-500');
activePage.classList.remove('hidden');
inactivePage.classList.add('hidden');
}
// Mathematical Wealth Compounding Function
function calculateStaticProjection() {
const principalInput = parseFloat(document.getElementById('monthly_sip').value) || 0;
const topupInput = parseFloat(document.getElementById('annual_topup').value) || 0;
const timelineYears = parseInt(document.getElementById('horizon_yrs').value) || 15;
const assumedRate = 0.12; // Inverted core 12% factor matrix variable
const tbody = document.getElementById('projection-table-body');
tbody.innerHTML = ''; // Reset frame array elements
const milestones = [3, 5, 8, 10, 15, 20];
milestones.forEach(years => {
if (years <= timelineYears || years === 20) {
// Core dynamic formula equation structures
const months = years * 12;
const monthlyRate = assumedRate / 12;
// Simple programmatic compounding representation matching pipeline values
let totalInvested = (principalInput * months) + (topupInput * years);
let probableValue = principalInput * (((Math.pow(1 + monthlyRate, months) - 1) / monthlyRate) * (1 + monthlyRate));
if(topupInput > 0) {
for(let i = 0; i < years; i++) {
let remainingMonths = (years - i) * 12;
probableValue += (topupInput / 12) * (((Math.pow(1 + monthlyRate, remainingMonths) - 1) / monthlyRate) * (1 + monthlyRate));
}
}
const multiple = (probableValue / totalInvested).toFixed(1);
const row = `
<tr class="hover:bg-gray-50 transition-colors">
<td class="p-3 font-semibold text-gray-700">${years} Years</td>
<td class="p-3">Rs. ${Math.round(totalInvested).toLocaleString('en-IN')}</td>
<td class="p-3 font-bold text-emerald-700">Rs. ${Math.round(probableValue).toLocaleString('en-IN')}</td>
<td class="p-3"><span class="bg-blue-50 text-blue-700 font-semibold px-2 py-0.5 rounded text-xs">${multiple}x</span></td>
</tr>
`;
tbody.innerHTML += row;
}
});
document.getElementById('projection-output-card').classList.remove('hidden');
}
// Granular Categorization Simulator Logic Matrix
function simulateCategoryRegistryFetch() {
const category = document.getElementById('category-selector').value;
const container = document.getElementById('category-table-container');
const title = document.getElementById('category-table-title');
const tbody = document.getElementById('category-table-body');
title.innerText = `Registry Audit Profiles — Target Segment: ${category}`;
tbody.innerHTML = ''; // Wipe matrix array indicators
// Structural Mock Asset Profile Matrix Database
const baseMockData = {
"Equity Large": [
{ name: "HDFC Top 100 Equal Weight Fund", asset: "Equity", cagr3: "18.4%", cagr5: "14.2%", dd: "-11.2%" },
{ name: "ICICI Prudential Bluechip Index Registry", asset: "Equity", cagr3: "19.1%", cagr5: "15.0%", dd: "-10.5%" }
],
"Equity Large and Mid": [
{ name: "Mirae Asset Large & Midcap Capital Scale", asset: "Equity", cagr3: "22.3%", cagr5: "16.8%", dd: "-14.1%" }
],
"Equity Small": [
{ name: "Nippon India Small Cap Alpha Multiplier", asset: "Equity", cagr3: "31.2%", cagr5: "24.5%", dd: "-19.8%" },
{ name: "Bandhan Micro Cap Long Opportunity", asset: "Equity", cagr3: "28.7%", cagr5: "21.1%", dd: "-22.4%" }
],
"Hybrid Balanced": [
{ name: "HDFC Balanced Advantage Value Master", asset: "Hybrid", cagr3: "16.5%", cagr5: "13.1%", dd: "-8.4%" }
],
"Debt": [
{ name: "ICICI Prudential Gilt Capital Lock-In", asset: "Debt", cagr3: "7.2%", cagr5: "6.9%", dd: "-2.1%" }
]
};
const dataToRender = baseMockData[category] || [
{ name: `Sample Core ${category} Registry Strategy`, asset: "Mixed Class", cagr3: "14.5%", cagr5: "12.0%", dd: "-9.5%" }
];
dataToRender.forEach(item => {
const row = `
<tr class="hover:bg-gray-50 border-b border-gray-100 transition-colors">
<td class="p-3 font-medium text-gray-800">${item.name}</td>
<td class="p-3">${item.asset}</td>
<td class="p-3 font-semibold text-emerald-600">${item.cagr3}</td>
<td class="p-3 text-emerald-600">${item.cagr5}</td>
<td class="p-3 text-rose-600 font-medium">${item.dd}</td>
</tr>
`;
tbody.innerHTML += row;
});
container.classList.remove('hidden');
}
</script>
</body>
</html>