62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
import type { TimelineItem } from '@nuxt/ui';
|
|
import type { Tool } from './tool';
|
|
import { timeToString, type TimePeriod } from './time';
|
|
|
|
export interface ResumeExperience {
|
|
dates: TimePeriod;
|
|
title: string;
|
|
company: string;
|
|
description: string;
|
|
tools: Tool[];
|
|
icon: string;
|
|
}
|
|
|
|
export class ResumeExperienceTimelineItem implements TimelineItem {
|
|
tools: Tool[];
|
|
description?: string;
|
|
date: string;
|
|
title: string;
|
|
icon: string;
|
|
|
|
constructor(from: ResumeExperience) {
|
|
this.date = timeToString(from.dates);
|
|
this.title = `${from.title} — ${from.company}`;
|
|
this.description = from.description;
|
|
this.icon = from.icon;
|
|
this.tools = from.tools;
|
|
}
|
|
}
|
|
|
|
export interface Education {
|
|
dates: TimePeriod;
|
|
degree: string;
|
|
institution: string;
|
|
location: string;
|
|
description?: string;
|
|
icon: string;
|
|
}
|
|
|
|
export class EducationTimelineItem implements TimelineItem {
|
|
date: string;
|
|
description?: string;
|
|
title: string;
|
|
icon: string;
|
|
|
|
constructor(from: Education) {
|
|
this.date = timeToString(from.dates);
|
|
this.description = from.description;
|
|
this.title = `${from.degree} — ${from.institution}, ${from.location}`;
|
|
this.icon = from.icon;
|
|
}
|
|
}
|
|
|
|
export class ResumeContent {
|
|
experience: ResumeExperience[] = [];
|
|
education: Education[] = [];
|
|
otherTools: Tool[] = [];
|
|
devops: Tool[] = [];
|
|
os: Tool[] = [];
|
|
programmingLanguages: Tool[] = [];
|
|
frameworks: Tool[] = [];
|
|
}
|