added career section
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
<link rel="stylesheet" href="styles/sidebar_style.css">
|
<link rel="stylesheet" href="styles/sidebar_style.css">
|
||||||
<link rel="stylesheet" href="styles/mobile_bar_style.css">
|
<link rel="stylesheet" href="styles/mobile_bar_style.css">
|
||||||
<link rel="stylesheet" href="styles/projects_style.css">
|
<link rel="stylesheet" href="styles/projects_style.css">
|
||||||
|
<link rel="stylesheet" href="styles/work_style.css">
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
+39
-2
@@ -6,8 +6,45 @@
|
|||||||
"profession": "Medieninformatik",
|
"profession": "Medieninformatik",
|
||||||
"workplace": "Universität Ulm",
|
"workplace": "Universität Ulm",
|
||||||
"github_desc": "Auf GitHub ansehen ↗",
|
"github_desc": "Auf GitHub ansehen ↗",
|
||||||
"navbar_group": "Projekte",
|
"navbar_group_work": "Berufserfahrung",
|
||||||
"content": [
|
"navbar_group_projects": "Projekte",
|
||||||
|
"content_work": [
|
||||||
|
{
|
||||||
|
"id": "siemens_mobility",
|
||||||
|
"title": "Siemens Mobility GmbH",
|
||||||
|
"company": "Siemens Mobility GmbH",
|
||||||
|
"description": "Werkstudent Softwareentwicklung in Simulationsumgebung (Hybrid)",
|
||||||
|
"type": "Hybrid",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"title": "Netzwerkentwicklung & Integration",
|
||||||
|
"content": "Konzeption und Implementierung einer stabilen Remote-Schnittstelle zur Anbindung externer Clients an eine Unity-Simulationsumgebung."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Server-Infrastruktur & Deployment",
|
||||||
|
"content": "Einrichtung, Absicherung und Administration eines Debian 13-Servers sowie Bereitstellung der Anwendungsinstanzen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Agile Teamarbeit & Quality Assurance",
|
||||||
|
"content": "Aktive Kollaboration im Entwicklerteam unter Anwendung von Feature-Branching-Workflows (Git) und systematischen Code-Reviews."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tech": [
|
||||||
|
"Unity",
|
||||||
|
"WebRTC",
|
||||||
|
"Linux",
|
||||||
|
"GitLab",
|
||||||
|
"C#"
|
||||||
|
],
|
||||||
|
"start": "2026-05-15",
|
||||||
|
"end": "heute",
|
||||||
|
"locale": "de-DE",
|
||||||
|
"from": "von",
|
||||||
|
"to": "bis",
|
||||||
|
"at": "bei"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"content_projects": [
|
||||||
{
|
{
|
||||||
"id": "cnn_website",
|
"id": "cnn_website",
|
||||||
"title": "CNN Website",
|
"title": "CNN Website",
|
||||||
|
|||||||
+40
-2
@@ -6,8 +6,46 @@
|
|||||||
"profession": "Media Informatics",
|
"profession": "Media Informatics",
|
||||||
"workplace": "Ulm University",
|
"workplace": "Ulm University",
|
||||||
"github_desc": "View on GitHub ↗",
|
"github_desc": "View on GitHub ↗",
|
||||||
"navbar_group": "Projects",
|
"navbar_group_work": "Career",
|
||||||
"content": [
|
"navbar_group_projects": "Projects",
|
||||||
|
"content_work": [
|
||||||
|
{
|
||||||
|
"id": "siemens_mobility",
|
||||||
|
"title": "Siemens Mobility GmbH",
|
||||||
|
"company": "Siemens Mobility GmbH",
|
||||||
|
"description": "Working Student Software Engineering in Simulation Environment (Hybrid)",
|
||||||
|
"type": "Hybrid",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"title": "Network Development & Integration",
|
||||||
|
"content": "Design and implementation of a stable remote interface to connect external clients to a Unity simulation environment."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Server Infrastructure & Deployment",
|
||||||
|
"content": "Setup, securing, and administration of a Debian 13 server as well as deployment of application instances."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Agile Teamwork & Quality Assurance",
|
||||||
|
"content": "Active collaboration within the development team using feature-branching workflows (Git) and systematic code reviews."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tech": [
|
||||||
|
"Unity",
|
||||||
|
"WebRTC",
|
||||||
|
"Linux",
|
||||||
|
"GitLab",
|
||||||
|
"C#",
|
||||||
|
"FFmpeg"
|
||||||
|
],
|
||||||
|
"start": "2026-05-15",
|
||||||
|
"end": "present",
|
||||||
|
"locale": "en-US",
|
||||||
|
"from": "from",
|
||||||
|
"to": "to",
|
||||||
|
"at": "at"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"content_projects": [
|
||||||
{
|
{
|
||||||
"id": "cnn_website",
|
"id": "cnn_website",
|
||||||
"title": "CNN Website",
|
"title": "CNN Website",
|
||||||
|
|||||||
+97
-5
@@ -126,6 +126,27 @@ function setupObserver() {
|
|||||||
sections.forEach(section => observer.observe(section));
|
sections.forEach(section => observer.observe(section));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createDate(date, lang){
|
||||||
|
const dateObj = new Date(date);
|
||||||
|
|
||||||
|
if (isNaN(dateObj.getTime())) {
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
|
const formattedDate = new Intl.DateTimeFormat(lang || 'de-DE', {
|
||||||
|
dateStyle: 'medium'
|
||||||
|
}).format(dateObj);
|
||||||
|
|
||||||
|
return formattedDate
|
||||||
|
}
|
||||||
|
|
||||||
|
function StartEndDate(item){
|
||||||
|
const startDate = createDate(item.start, item.locale);
|
||||||
|
const endDate = createDate(item.end, item.locale);
|
||||||
|
|
||||||
|
return item.from + "\n" + startDate + "\n" + item.to + "\n" + endDate;
|
||||||
|
}
|
||||||
|
|
||||||
async function loadData() {
|
async function loadData() {
|
||||||
const response = await fetch(`./lang/${lang}.json`);
|
const response = await fetch(`./lang/${lang}.json`);
|
||||||
const image_response = await fetch(`./config/img_config.json`)
|
const image_response = await fetch(`./config/img_config.json`)
|
||||||
@@ -196,13 +217,84 @@ async function loadData() {
|
|||||||
|
|
||||||
create_navbar_entry(navbar, navbar_mobile_links, data.title_introduction, "introduction", 0);
|
create_navbar_entry(navbar, navbar_mobile_links, data.title_introduction, "introduction", 0);
|
||||||
|
|
||||||
const navbar_group = document.createElement("li");
|
const navbar_group_work = document.createElement("li");
|
||||||
navbar_group.className = "navbar-group";
|
navbar_group_work.className = "navbar-group";
|
||||||
navbar_group.textContent = data.navbar_group
|
navbar_group_work.textContent = data.navbar_group_work
|
||||||
navbar.appendChild(navbar_group);
|
navbar.appendChild(navbar_group_work);
|
||||||
|
|
||||||
|
|
||||||
data.content.forEach((item, j) => {
|
data.content_work.forEach((item, j) => {
|
||||||
|
const project = document.createElement("section");
|
||||||
|
project.className = "project-section";
|
||||||
|
project.id = item.id;
|
||||||
|
project.setAttribute("data-nav", item.id);
|
||||||
|
container.appendChild(project);
|
||||||
|
|
||||||
|
create_navbar_entry(navbar, navbar_mobile_links, item.title, item.id, j + 1);
|
||||||
|
|
||||||
|
|
||||||
|
const header = document.createElement("div");
|
||||||
|
header.className = "section-header";
|
||||||
|
project.appendChild(header);
|
||||||
|
|
||||||
|
const headerTitle = document.createElement("h1");
|
||||||
|
headerTitle.className = "section-title";
|
||||||
|
headerTitle.textContent = item.title;
|
||||||
|
header.appendChild(headerTitle);
|
||||||
|
|
||||||
|
const headerDescRole = document.createElement("p");
|
||||||
|
headerDescRole.className = "section-desc";
|
||||||
|
headerDescRole.textContent = item.description;
|
||||||
|
header.appendChild(headerDescRole);
|
||||||
|
|
||||||
|
const headerDescCompany = document.createElement("p");
|
||||||
|
headerDescCompany.className = "section-desc";
|
||||||
|
headerDescCompany.textContent = StartEndDate(item) + "\n" + item.at + "\n" + item.company;
|
||||||
|
header.appendChild(headerDescCompany);
|
||||||
|
|
||||||
|
|
||||||
|
const techs = document.createElement("div");
|
||||||
|
techs.className = "tags";
|
||||||
|
header.appendChild(techs);
|
||||||
|
|
||||||
|
item.tech.forEach(tech_json => {
|
||||||
|
const tech = document.createElement("span");
|
||||||
|
tech.className = "tag";
|
||||||
|
tech.textContent = tech_json;
|
||||||
|
techs.appendChild(tech);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const tasks = document.createElement("div");
|
||||||
|
tasks.className = "tasks-div";
|
||||||
|
project.appendChild(tasks);
|
||||||
|
|
||||||
|
item.tasks.forEach(task_json => {
|
||||||
|
const task = document.createElement("div");
|
||||||
|
task.className = "task-div";
|
||||||
|
|
||||||
|
|
||||||
|
const taskTitle = document.createElement("span");
|
||||||
|
taskTitle.className = "task-title";
|
||||||
|
taskTitle.textContent = task_json.title + ": ";
|
||||||
|
task.appendChild(taskTitle);
|
||||||
|
|
||||||
|
const taskContent = document.createElement("span");
|
||||||
|
taskContent.className = "task-content";
|
||||||
|
taskContent.textContent = task_json.content;
|
||||||
|
task.appendChild(taskContent);
|
||||||
|
|
||||||
|
tasks.appendChild(task);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const navbar_group_projects = document.createElement("li");
|
||||||
|
navbar_group_projects.className = "navbar-group";
|
||||||
|
navbar_group_projects.textContent = data.navbar_group_projects
|
||||||
|
navbar.appendChild(navbar_group_projects);
|
||||||
|
|
||||||
|
data.content_projects.forEach((item, j) => {
|
||||||
const project = document.createElement("section");
|
const project = document.createElement("section");
|
||||||
project.className = "project-section";
|
project.className = "project-section";
|
||||||
project.id = item.id;
|
project.id = item.id;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.navbar-group {
|
.navbar-group {
|
||||||
margin-top: 15px;
|
margin-top: 25px;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
font-size: calc(var(--font-size) + 0.1rem);
|
font-size: calc(var(--font-size) + 0.1rem);
|
||||||
font-family: var(--serif);
|
font-family: var(--serif);
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
.work-date {
|
||||||
|
margin-top: 30px;
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tasks-div {
|
||||||
|
margin-top: 60px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 35px;
|
||||||
|
margin-bottom: 120px;
|
||||||
|
margin-left: var(--margin-main-content);
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-div {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0px;
|
||||||
|
align-items: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-title {
|
||||||
|
color: var(--text);
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.task-content {
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user