From 9de5c85120d35198c0ce70dfab0e74dde5ef3d66 Mon Sep 17 00:00:00 2001 From: eee4 <41441600+eee4@users.noreply.github.com> Date: Mon, 2 Jun 2025 04:37:54 +0200 Subject: [PATCH] feat: image support also translated some strings back into english --- WebApp/Mapping/EventMapping.cs | 31 +++++++++++++++++++------- WebApp/ts/eventCreate.ts | 14 +++++++----- WebApp/ts/eventDelete.ts | 10 ++++----- WebApp/ts/eventList.ts | 11 +++++---- WebApp/ts/eventModify.ts | 24 +++++++++++--------- WebApp/ts/eventView.ts | 5 +++++ WebApp/ts/generalUseHelpers.ts | 1 + WebApp/wwwroot/create.html | 6 ++++- WebApp/wwwroot/css/style.css | 13 ++++++++++- WebApp/wwwroot/img/friendly_help.jfif | Bin 0 -> 63952 bytes WebApp/wwwroot/js/eventCreate.js | 2 ++ WebApp/wwwroot/js/eventDelete.js | 6 ++--- WebApp/wwwroot/js/eventList.js | 10 +++++---- WebApp/wwwroot/js/eventModify.js | 12 ++++++---- WebApp/wwwroot/js/eventView.js | 5 +++++ WebApp/wwwroot/modify.html | 6 ++++- WebApp/wwwroot/view.html | 29 +++++++++++++----------- 17 files changed, 125 insertions(+), 60 deletions(-) create mode 100644 WebApp/wwwroot/img/friendly_help.jfif diff --git a/WebApp/Mapping/EventMapping.cs b/WebApp/Mapping/EventMapping.cs index bb4292e..2d31606 100644 --- a/WebApp/Mapping/EventMapping.cs +++ b/WebApp/Mapping/EventMapping.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using System.Security.Cryptography; using WebApp.DTOs; using WebApp.Entities; @@ -12,6 +13,7 @@ public static class EventMapping { Title = ECDto.Title, Description = ECDto.Description, + ImageURL = ECDto.ImageURL, Location = ECDto.Location, EventDate = DateTime.SpecifyKind(ECDto.EventDate!.Value, DateTimeKind.Utc), EventSkills = ECDto.EventSkills, @@ -26,6 +28,7 @@ public static class EventMapping EventId = id, Title = EUDto.Title, Description = EUDto.Description, + ImageURL = EUDto.ImageURL, Location = EUDto.Location, EventDate = DateTime.SpecifyKind(EUDto.EventDate!.Value, DateTimeKind.Utc), EventSkills = EUDto.EventSkills @@ -38,14 +41,20 @@ public static class EventMapping List ssdto = []; List erdto = []; - foreach (EventSkill es in myEvent.EventSkills) + if (myEvent.EventSkills != null) { - ssdto.Add(es.ToSkillSummaryDto()); + foreach (EventSkill es in myEvent.EventSkills) + { + ssdto.Add(es.ToSkillSummaryDto()); + } } - foreach (EventRegistration er in myEvent.EventRegistrations) + if (myEvent.EventRegistrations != null) { - erdto.Add(er.ToEventRegistrationDto()); + foreach (EventRegistration er in myEvent.EventRegistrations) + { + erdto.Add(er.ToEventRegistrationDto()); + } } return new EventSummaryDto { @@ -92,14 +101,20 @@ public static class EventMapping List ssdto = []; List erdto = []; - foreach (EventSkill es in myEvent.EventSkills) + if (myEvent.EventSkills != null) { - ssdto.Add(es.ToSkillSummaryDto()); + foreach (EventSkill es in myEvent.EventSkills) + { + ssdto.Add(es.ToSkillSummaryDto()); + } } - foreach (EventRegistration er in myEvent.EventRegistrations) + if (myEvent.EventRegistrations != null) { - erdto.Add(er.ToEventRegistrationDto()); + foreach (EventRegistration er in myEvent.EventRegistrations) + { + erdto.Add(er.ToEventRegistrationDto()); + } } return new EventDetailsDto { diff --git a/WebApp/ts/eventCreate.ts b/WebApp/ts/eventCreate.ts index bd0681a..9721b9f 100644 --- a/WebApp/ts/eventCreate.ts +++ b/WebApp/ts/eventCreate.ts @@ -1,11 +1,12 @@ -import { getEvent, getMyAccount, unhideElementById } from './generalUseHelpers.js'; +import { getEvent, getMyAccount, unhideElementById } from './generalUseHelpers.js'; async function createEvent() { // Pobieranie danych z formularza - const title = (document.getElementById('title') as HTMLInputElement).value; - const location = (document.getElementById('location') as HTMLInputElement).value; - const description = (document.getElementById('description') as HTMLTextAreaElement).value; - const eventDateRaw = (document.getElementById('eventDate') as HTMLInputElement).value; + const title = (document.getElementById('title') as HTMLInputElement).value; + const location = (document.getElementById('location') as HTMLInputElement).value; + const description = (document.getElementById('description') as HTMLTextAreaElement).value; + const imageURL = (document.getElementById('imageURL') as HTMLInputElement).value; + const eventDateRaw = (document.getElementById('eventDate') as HTMLInputElement).value; // Walidacja prostych pól if (!title || !location || !eventDateRaw) { @@ -19,6 +20,7 @@ async function createEvent() { title, location, description, + imageURL, eventDate, }; @@ -62,4 +64,4 @@ document.addEventListener("DOMContentLoaded", async () => { createEvent(); }); } -}); \ No newline at end of file +}); diff --git a/WebApp/ts/eventDelete.ts b/WebApp/ts/eventDelete.ts index 253527e..e49dc52 100644 --- a/WebApp/ts/eventDelete.ts +++ b/WebApp/ts/eventDelete.ts @@ -1,4 +1,4 @@ -document.addEventListener("DOMContentLoaded", () => { +document.addEventListener("DOMContentLoaded", () => { // Obsługuje kliknięcie na przycisk "Usuń" document.body.addEventListener("click", async (e) => { const target = e.target as HTMLElement; @@ -13,7 +13,7 @@ window.location.href = "/modify.html?event=" + id; break; case "remove-btn": - const confirmed = confirm("Na pewno chcesz usunąć to wydarzenie?"); // Potwierdzenie usunięcia + const confirmed = confirm("Are you sure?"); // Potwierdzenie usunięcia if (!confirmed) return; try { @@ -27,14 +27,14 @@ const card = target.closest(".event-card"); if (card) card.remove(); } else { - alert("Błąd podczas usuwania wydarzenia."); + alert("Couldn't delete that event."); } } catch (err) { - alert("Błąd połączenia z serwerem."); + alert("Server connection failure."); console.error(err); } break; } }); -}); \ No newline at end of file +}); diff --git a/WebApp/ts/eventList.ts b/WebApp/ts/eventList.ts index fffaa76..7b3feaf 100644 --- a/WebApp/ts/eventList.ts +++ b/WebApp/ts/eventList.ts @@ -13,7 +13,7 @@ async function getEvents(titleOrDescription?: string) { if (titleOrDescription == null) { res = await fetch("/api/events" + (isAscending ? "?sort=asc" : "")); - if (!res.ok) throw new Error("Błąd pobierania wydarzeń"); + if (!res.ok) throw new Error("Couldn't load events"); } else { const payload = { titleOrDescription @@ -23,7 +23,7 @@ async function getEvents(titleOrDescription?: string) { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); - if (!res.ok) throw new Error("Błąd wyszukiwania wydarzeń"); + if (!res.ok) throw new Error("Failed to get search results"); } const events = await res.json(); @@ -44,13 +44,16 @@ async function loadEvents(org_id: number, evs?: Promise) { } if (events.length === 0) { - container.innerHTML = "

Brak wydarzeń do wyświetlenia.

"; + container.innerHTML = "

No events to display at this moment.

"; return; } // Wyczyść kontener przed dodaniem nowych container.innerHTML = ''; + const styleDefault = "color: #2898BD"; + const styleHighlighted = "#2393BD"; + for (const ev of events) { const card = document.createElement("div"); card.className = "event-card filled"; @@ -83,7 +86,7 @@ async function loadEvents(org_id: number, evs?: Promise) { container.appendChild(card); } } catch (err) { - container.innerHTML = `

Błąd ładowania danych.

`; + container.innerHTML = `

General failure when trying to load data.

`; console.error(err); } } diff --git a/WebApp/ts/eventModify.ts b/WebApp/ts/eventModify.ts index f7ff6f2..7d1a9e7 100644 --- a/WebApp/ts/eventModify.ts +++ b/WebApp/ts/eventModify.ts @@ -1,4 +1,4 @@ -import { getEvent, getMyAccount, unhideElementById } from './generalUseHelpers.js'; +import { getEvent, getMyAccount, unhideElementById } from './generalUseHelpers.js'; const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); @@ -7,10 +7,11 @@ const eventId = urlParams.get('event'); async function modifyEvent() { // Pobieranie danych z formularza - const title = (document.getElementById('title') as HTMLInputElement).value; - const location = (document.getElementById('location') as HTMLInputElement).value; - const description = (document.getElementById('description') as HTMLTextAreaElement).value; - const eventDateRaw = (document.getElementById('eventDate') as HTMLInputElement).value; + const title = (document.getElementById('title') as HTMLInputElement).value; + const location = (document.getElementById('location') as HTMLInputElement).value; + const description = (document.getElementById('description') as HTMLTextAreaElement).value; + const imageURL = (document.getElementById('imageURL') as HTMLInputElement).value; + const eventDateRaw = (document.getElementById('eventDate') as HTMLInputElement).value; // Walidacja prostych pól if (!title || !location || !eventDateRaw) @@ -24,6 +25,7 @@ async function modifyEvent() const payload = { title, location, + imageURL, description, eventDate, }; @@ -42,11 +44,11 @@ async function modifyEvent() throw new Error(errorText); } - alert("Wydarzenie zmodyfikowane!"); + alert("Event modified!"); window.location.href = "/"; // Przekierowanie do strony głównej } catch (error) { - console.error("Błąd podczas modyfikowania:", error); - alert("Nie udało się zmodyfikować wydarzenia: " + error); + console.error("Error occurred while trying to modify event:", error); + alert("Couldn't modify event, an error occurred: " + error); } } @@ -81,16 +83,18 @@ document.addEventListener("DOMContentLoaded", async () => { const locationInput = document.getElementById( 'location') as HTMLInputElement; const descriptionInput = document.getElementById('description') as HTMLInputElement; const dateInput = document.getElementById( 'eventDate') as HTMLInputElement; + const imageInput = document.getElementById( 'imageURL') as HTMLInputElement; var ev = await getEvent(eventId); if (ev === null) { - container.innerHTML = "

Brak wydarzeń do wyświetlenia.

"; + container.innerHTML = "

Failed to load event data.

"; return; } else { titleInput.value = ev.title || ''; locationInput.value = ev.location || ''; descriptionInput.value = ev.description || ''; dateInput.value = ev.eventDate.slice(0, 16) || ''; + imageInput.value = ev.imageURL || ''; } } catch (err) { @@ -99,4 +103,4 @@ document.addEventListener("DOMContentLoaded", async () => { } } -}); \ No newline at end of file +}); diff --git a/WebApp/ts/eventView.ts b/WebApp/ts/eventView.ts index 5905d86..62d88a5 100644 --- a/WebApp/ts/eventView.ts +++ b/WebApp/ts/eventView.ts @@ -43,6 +43,7 @@ document.addEventListener("DOMContentLoaded", async () => { const descText = document.getElementById( "descText") as HTMLElement; const dateText = document.getElementById( "dateText") as HTMLElement; const organizerText = document.getElementById("organizerText") as HTMLElement; + const coverImage = document.getElementById( "coverImage") as HTMLImageElement; const newdateText = new Date(thisEvent.eventDate).toLocaleDateString('pl-PL'); const newtimeText = new Date(thisEvent.eventDate).toLocaleTimeString('pl-PL'); @@ -52,6 +53,10 @@ document.addEventListener("DOMContentLoaded", async () => { descText.innerHTML = thisEvent.description; dateText.innerHTML = "📅 When: " + newdateText + " " + newtimeText; //thisEvent.eventDate; organizerText.innerHTML = "👥 Organized by: " + thisEvent.organisationName; + coverImage.src = thisEvent.imageURL + + console.log(thisEvent.imageURL); + if (thisEvent.imageURL !== "") unhideElementById(document, "imgdiv"); if (org_id == thisEvent.organisationId) { // Użytkownik jest organizacją, która diff --git a/WebApp/ts/generalUseHelpers.ts b/WebApp/ts/generalUseHelpers.ts index f7854bb..b8d8f4d 100644 --- a/WebApp/ts/generalUseHelpers.ts +++ b/WebApp/ts/generalUseHelpers.ts @@ -2,6 +2,7 @@ interface EventData { title: string; location: string; description: string; + imageURL: string; eventDate: string; organisationName: string, organisationId: number diff --git a/WebApp/wwwroot/create.html b/WebApp/wwwroot/create.html index 7f55362..47d63a5 100644 --- a/WebApp/wwwroot/create.html +++ b/WebApp/wwwroot/create.html @@ -1,4 +1,4 @@ - + @@ -73,6 +73,10 @@ +
+ + +
diff --git a/WebApp/wwwroot/css/style.css b/WebApp/wwwroot/css/style.css index b549785..948033f 100644 --- a/WebApp/wwwroot/css/style.css +++ b/WebApp/wwwroot/css/style.css @@ -1,7 +1,18 @@ -body { +body { color: #2898BD; } +#imgdiv { + padding-right: 2%; +} + +#coverImage { + min-width: 30em; + max-width: 50em; + border: 3px dashed #2898BD; + border-radius: 16px; +} + .hidden-before-load { display: none !important; visibility: hidden !important; diff --git a/WebApp/wwwroot/img/friendly_help.jfif b/WebApp/wwwroot/img/friendly_help.jfif new file mode 100644 index 0000000000000000000000000000000000000000..3e45f8cbde823174b27a86d0cd86a97ecdd0601a GIT binary patch literal 63952 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 kT { window.location.href = "/modify.html?event=" + id; break; case "remove-btn": - const confirmed = confirm("Na pewno chcesz usunąć to wydarzenie?"); // Potwierdzenie usunięcia + const confirmed = confirm("Are you sure?"); // Potwierdzenie usunięcia if (!confirmed) return; try { @@ -37,11 +37,11 @@ document.addEventListener("DOMContentLoaded", () => { card.remove(); } else { - alert("Błąd podczas usuwania wydarzenia."); + alert("Couldn't delete that event."); } } catch (err) { - alert("Błąd połączenia z serwerem."); + alert("Server connection failure."); console.error(err); } break; diff --git a/WebApp/wwwroot/js/eventList.js b/WebApp/wwwroot/js/eventList.js index 2b7a95d..f1b6d75 100644 --- a/WebApp/wwwroot/js/eventList.js +++ b/WebApp/wwwroot/js/eventList.js @@ -19,7 +19,7 @@ function getEvents(titleOrDescription) { if (titleOrDescription == null) { res = yield fetch("/api/events" + (isAscending ? "?sort=asc" : "")); if (!res.ok) - throw new Error("Błąd pobierania wydarzeń"); + throw new Error("Couldn't load events"); } else { const payload = { @@ -31,7 +31,7 @@ function getEvents(titleOrDescription) { body: JSON.stringify(payload) }); if (!res.ok) - throw new Error("Błąd wyszukiwania wydarzeń"); + throw new Error("Failed to get search results"); } const events = yield res.json(); return events; @@ -51,11 +51,13 @@ function loadEvents(org_id, evs) { events = yield evs; } if (events.length === 0) { - container.innerHTML = "

Brak wydarzeń do wyświetlenia.

"; + container.innerHTML = "

No events to display at this moment.

"; return; } // Wyczyść kontener przed dodaniem nowych container.innerHTML = ''; + const styleDefault = "color: #2898BD"; + const styleHighlighted = "#2393BD"; for (const ev of events) { const card = document.createElement("div"); card.className = "event-card filled"; @@ -85,7 +87,7 @@ function loadEvents(org_id, evs) { } } catch (err) { - container.innerHTML = `

Błąd ładowania danych.

`; + container.innerHTML = `

General failure when trying to load data.

`; console.error(err); } }); diff --git a/WebApp/wwwroot/js/eventModify.js b/WebApp/wwwroot/js/eventModify.js index 7962616..950d222 100644 --- a/WebApp/wwwroot/js/eventModify.js +++ b/WebApp/wwwroot/js/eventModify.js @@ -17,6 +17,7 @@ function modifyEvent() { const title = document.getElementById('title').value; const location = document.getElementById('location').value; const description = document.getElementById('description').value; + const imageURL = document.getElementById('imageURL').value; const eventDateRaw = document.getElementById('eventDate').value; // Walidacja prostych pól if (!title || !location || !eventDateRaw) { @@ -27,6 +28,7 @@ function modifyEvent() { const payload = { title, location, + imageURL, description, eventDate, }; @@ -40,12 +42,12 @@ function modifyEvent() { const errorText = yield response.text(); throw new Error(errorText); } - alert("Wydarzenie zmodyfikowane!"); + alert("Event modified!"); window.location.href = "/"; // Przekierowanie do strony głównej } catch (error) { - console.error("Błąd podczas modyfikowania:", error); - alert("Nie udało się zmodyfikować wydarzenia: " + error); + console.error("Error occurred while trying to modify event:", error); + alert("Couldn't modify event, an error occurred: " + error); } }); } @@ -77,9 +79,10 @@ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, vo const locationInput = document.getElementById('location'); const descriptionInput = document.getElementById('description'); const dateInput = document.getElementById('eventDate'); + const imageInput = document.getElementById('imageURL'); var ev = yield getEvent(eventId); if (ev === null) { - container.innerHTML = "

Brak wydarzeń do wyświetlenia.

"; + container.innerHTML = "

Failed to load event data.

"; return; } else { @@ -87,6 +90,7 @@ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, vo locationInput.value = ev.location || ''; descriptionInput.value = ev.description || ''; dateInput.value = ev.eventDate.slice(0, 16) || ''; + imageInput.value = ev.imageURL || ''; } } catch (err) { diff --git a/WebApp/wwwroot/js/eventView.js b/WebApp/wwwroot/js/eventView.js index aaf267e..a3a85d6 100644 --- a/WebApp/wwwroot/js/eventView.js +++ b/WebApp/wwwroot/js/eventView.js @@ -51,6 +51,7 @@ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, vo const descText = document.getElementById("descText"); const dateText = document.getElementById("dateText"); const organizerText = document.getElementById("organizerText"); + const coverImage = document.getElementById("coverImage"); const newdateText = new Date(thisEvent.eventDate).toLocaleDateString('pl-PL'); const newtimeText = new Date(thisEvent.eventDate).toLocaleTimeString('pl-PL'); titleText.innerHTML = thisEvent.title + ` (#${eventId})`; @@ -58,6 +59,10 @@ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, vo descText.innerHTML = thisEvent.description; dateText.innerHTML = "📅 When: " + newdateText + " " + newtimeText; //thisEvent.eventDate; organizerText.innerHTML = "👥 Organized by: " + thisEvent.organisationName; + coverImage.src = thisEvent.imageURL; + console.log(thisEvent.imageURL); + if (thisEvent.imageURL !== "") + unhideElementById(document, "imgdiv"); if (org_id == thisEvent.organisationId) { // Użytkownik jest organizacją, która // stworzyła to wydarzenie diff --git a/WebApp/wwwroot/modify.html b/WebApp/wwwroot/modify.html index 5104bce..15455ad 100644 --- a/WebApp/wwwroot/modify.html +++ b/WebApp/wwwroot/modify.html @@ -1,4 +1,4 @@ - + @@ -73,6 +73,10 @@ +
+ + +
diff --git a/WebApp/wwwroot/view.html b/WebApp/wwwroot/view.html index fd72330..0c56a6c 100644 --- a/WebApp/wwwroot/view.html +++ b/WebApp/wwwroot/view.html @@ -12,7 +12,6 @@ -
-
-

Event title

+
+
+ +
+
+

Event title

-

Organized by: dummy organization

-

Place: 127.0.0.1

-

When: now or never!

-

Description:

-


+

Organized by: dummy organization

+

Place: 127.0.0.1

+

When: now or never!

+

Description:

+


- - - - + + + + +
-