Overview
The Dev Showcase project uses Chart.js to visualize vocational assessment data and skill proficiency metrics. The charts manager handles multiple chart types including radar charts for RIASEC profiles, cognitive assessments, and horizontal bar charts for various skill categories.Chart Types
Radar Charts
RIASEC vocational profiles and cognitive assessments
Bar Charts
Skill proficiency, interests, and career recommendations
Dynamic Data
Real-time updates based on language selection
RIASEC Vocational Chart
Overview
The RIASEC (Holland Codes) chart visualizes six vocational personality types:- Realistic: Practical, hands-on work
- Investigative: Analytical, scientific thinking
- Artistic: Creative, expressive activities
- Social: Helping, teaching, counseling
- Enterprising: Leading, persuading, business
- Conventional: Organizing, data management
Color Configuration
charts-manager.js (lines 11-18)
Data Structure
The radar chart builds datasets from translation files:charts-manager.js (lines 28-55)
Chart Options
charts-manager.js (lines 115-136)
Cognitive Assessment Chart
Purpose
The cognitive chart compares personal scores against general averages across multiple cognitive dimensions.Color Scheme
charts-manager.js (lines 20-23)
Data Builder
charts-manager.js (lines 57-82)
The average dataset uses a dashed border (
borderDash: [6, 3]) to distinguish it visually from the personal score.Bar Charts
Bar Chart Categories
The charts manager handles seven different bar chart types:- Top Skills - Highest proficiency areas
- Top Interests - Primary interest areas
- Top Careers - Best career matches
- Low Skills - Areas for development
- Low Interests - Lower interest areas
- Low Careers - Less suitable careers
- Occupational Values - Work value preferences
Color Scheme
charts-manager.js (lines 25-26)
- Blue (
BAR_TOP): Positive metrics (top skills, interests, careers) - Pink (
BAR_LOW): Areas for improvement (low skills, interests)
Data Structure
charts-manager.js (lines 94-113)
Bar Chart Options
charts-manager.js (lines 161-186)
Chart Lifecycle Management
Section-Based Chart Display
Charts are created and destroyed based on the active section:charts-manager.js (lines 188-193)
Creation and Destruction
- Create Charts
- Destroy Charts
charts-manager.js (lines 243-265)
Language Support
Translation Function
charts-manager.js (lines 7-9)
Data from Language Files
Chart labels and data come from JSON translation files:en.json (example structure)
Global Refresh Function
Charts are refreshed when language changes:charts-manager.js (lines 267-274)
MutationObserver Pattern
Charts are automatically created/destroyed when sections become visible:charts-manager.js (lines 296-320)
The 150ms delay ensures the DOM has fully updated before creating charts.
Performance Considerations
Chart Destruction
Chart Destruction
Charts are properly destroyed before creating new ones to prevent memory leaks:
Lazy Initialization
Lazy Initialization
Charts are only created when their section becomes visible, reducing initial page load:
Conditional Rendering
Conditional Rendering
Only relevant charts for each section are rendered:
HTML Canvas Elements
Charts render to canvas elements in the HTML:Dependencies
The charts manager requires:- Chart.js (v3+)
- Language translation system (
window.currentTranslations) - Proper HTML structure with canvas elements