feat: add dynamic years calculation and complete CV content migration
- Add dynamic years of experience calculation from April 1, 2005 - Update professional title badges: ANALYST | TECHNICAL CONSULTANT - Add all missing skill categories from React CV (Programming Languages, JavaScript Frameworks, PHP Frameworks, Java Frameworks, Application Servers, CMS, Design Tools, Team Management) - Add complete References section with LinkedIn, Behance, portfolios, and recommendation letters - Refine years-of-experience subtitle styling to match original design - Achieve 100% content parity with old React CV (English: 7→14 skill categories)
This commit is contained in:
+37
-8
@@ -51,12 +51,16 @@ func (h *CVHandler) Home(w http.ResponseWriter, r *http.Request) {
|
||||
// Split skills between left and right sidebars
|
||||
skillsLeft, skillsRight := splitSkills(cv.Skills.Technical)
|
||||
|
||||
// Calculate years of experience
|
||||
yearsOfExperience := calculateYearsOfExperience()
|
||||
|
||||
// Prepare template data
|
||||
data := map[string]interface{}{
|
||||
"CV": cv,
|
||||
"Lang": lang,
|
||||
"SkillsLeft": skillsLeft,
|
||||
"SkillsRight": skillsRight,
|
||||
"CV": cv,
|
||||
"Lang": lang,
|
||||
"SkillsLeft": skillsLeft,
|
||||
"SkillsRight": skillsRight,
|
||||
"YearsOfExperience": yearsOfExperience,
|
||||
}
|
||||
|
||||
// Render template
|
||||
@@ -97,12 +101,16 @@ func (h *CVHandler) CVContent(w http.ResponseWriter, r *http.Request) {
|
||||
// Split skills between left and right sidebars
|
||||
skillsLeft, skillsRight := splitSkills(cv.Skills.Technical)
|
||||
|
||||
// Calculate years of experience
|
||||
yearsOfExperience := calculateYearsOfExperience()
|
||||
|
||||
// Prepare template data
|
||||
data := map[string]interface{}{
|
||||
"CV": cv,
|
||||
"Lang": lang,
|
||||
"SkillsLeft": skillsLeft,
|
||||
"SkillsRight": skillsRight,
|
||||
"CV": cv,
|
||||
"Lang": lang,
|
||||
"SkillsLeft": skillsLeft,
|
||||
"SkillsRight": skillsRight,
|
||||
"YearsOfExperience": yearsOfExperience,
|
||||
}
|
||||
|
||||
// Render template
|
||||
@@ -178,3 +186,24 @@ func splitSkills(skills []models.SkillCategory) (left, right []models.SkillCateg
|
||||
|
||||
return left, right
|
||||
}
|
||||
|
||||
// calculateYearsOfExperience calculates years of experience since April 1, 2005
|
||||
// This matches the original React implementation that calculated from 01/04/2005
|
||||
func calculateYearsOfExperience() int {
|
||||
// First day at work: April 1, 2005
|
||||
firstDay := time.Date(2005, time.April, 1, 9, 0, 0, 0, time.UTC)
|
||||
|
||||
// Current date
|
||||
now := time.Now()
|
||||
|
||||
// Calculate the difference in years
|
||||
years := now.Year() - firstDay.Year()
|
||||
|
||||
// Adjust if we haven't reached the anniversary this year yet
|
||||
if now.Month() < firstDay.Month() ||
|
||||
(now.Month() == firstDay.Month() && now.Day() < firstDay.Day()) {
|
||||
years--
|
||||
}
|
||||
|
||||
return years
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user