feat(election): candidate analysis enhancements + overall shareholder analysis page

- candidate-analysis: add family voter influence donut chart (% of total shareholders)
- candidate-analysis: sub-caste breakdown by client lastname
- candidate-analysis: religion profile with candidate match (★) highlighting
- candidate-analysis: remove active savings holders metric, expand grid to 3 cols
- shareholder-analysis: new standalone page showing demographic analysis of all active shareholders (11 charts across gender, age, religion, caste, sub-caste, occupation, education, marital, share-holding, tenure, area)
- candidate-board: add 'Overall Analysis' button navigating to shareholder analysis page
- election-routing: lazy-load route for :electionId/shareholders/analysis
- election.service: add getOverallShareholderAnalysis() API call

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-06-30 18:31:40 +05:30
co-authored by Claude Sonnet 4.6
parent 78b87fb6ce
commit a915259ba1
10 changed files with 2347 additions and 744 deletions
@@ -89,6 +89,14 @@ const routes: Routes = [
(m) => m.CandidateAnalysisComponent
),
data: { title: 'Candidate Voter Analysis' }
},
{
path: ':electionId/shareholders/analysis',
loadComponent: () =>
import('./components/shareholder-analysis/shareholder-analysis.component').then(
(m) => m.ShareholderAnalysisComponent
),
data: { title: 'Overall Shareholder Analysis' }
}
]
}