przejscie na api

przed rozwaleniem
This commit is contained in:
Witkopawel
2025-04-30 11:01:40 +02:00
parent 04f99d666f
commit 74b69f045d
11 changed files with 807 additions and 1 deletions

View File

@@ -19,4 +19,17 @@ html {
body {
margin-bottom: 60px;
}
}
.custom-btn {
background: linear-gradient(135deg, #00b09b, #96c93d);
color: white;
border: none;
padding: 12px 24px;
border-radius: 10px;
font-size: 18px;
transition: background 0.3s ease;
}
.custom-btn:hover {
background: linear-gradient(135deg, #007d71, #7ba328);
}

View File

@@ -0,0 +1,61 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
console.log("TypeScript działa!");
function createEvent() {
return __awaiter(this, void 0, void 0, function* () {
// Pobieranie danych z formularza
const title = document.getElementById('title').value;
const location = document.getElementById('location').value;
const description = document.getElementById('description').value;
const eventDateRaw = document.getElementById('eventDate').value;
const organisationIdRaw = document.getElementById('organisationId').value;
// Walidacja prostych pól
if (!title || !location || !eventDateRaw || !organisationIdRaw) {
alert("Uzupełnij wszystkie wymagane pola!");
return;
}
const eventDate = new Date(eventDateRaw).toISOString();
const organisationId = parseInt(organisationIdRaw);
const payload = {
title,
location,
description,
eventDate,
organisationId
};
try {
const response = yield fetch('/api/events', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
if (!response.ok) {
const errorText = yield response.text();
throw new Error(errorText);
}
alert("Wydarzenie zostało utworzone!");
window.location.href = "/"; // Przekierowanie do strony głównej
}
catch (error) {
console.error("Błąd podczas tworzenia:", error);
alert("Nie udało się utworzyć wydarzenia: " + error);
}
});
}
document.addEventListener("DOMContentLoaded", () => {
const saveBtn = document.getElementById("saveBtn");
if (saveBtn) {
saveBtn.addEventListener("click", (e) => {
e.preventDefault();
createEvent();
});
}
});

View File

@@ -0,0 +1,34 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
document.addEventListener("DOMContentLoaded", () => {
const deleteButtons = document.querySelectorAll(".delete-btn");
deleteButtons.forEach(button => {
button.addEventListener("click", () => __awaiter(void 0, void 0, void 0, function* () {
const id = button.dataset.id;
if (!id)
return;
const confirmed = confirm("Na pewno chcesz usunąć to wydarzenie?");
if (!confirmed)
return;
const response = yield fetch(`/api/events/${id}`, {
method: "DELETE"
});
if (response.ok) {
const row = button.closest("tr");
if (row)
row.remove();
}
else {
alert("Nie udało się usunąć wydarzenia.");
}
}));
});
});