هذا الالتزام موجود في:
Muhammad Kadi
2026-03-30 19:08:22 +04:00
الأصل 9708ac6a37
التزام 66de18b11c

126
join.js
عرض الملف

@@ -4,15 +4,64 @@
const API_URL = `/api/join`; const API_URL = `/api/join`;
const form = document.getElementById('driverForm'); const form = document.getElementById("driverForm");
const btn = document.getElementById('submitBtn'); const btn = document.getElementById("submitBtn");
const photoInput = document.getElementById('photoInput'); const photoInput = document.getElementById("photoInput");
function compressImage(file, maxWidth = 1280, quality = 0.7) {
return new Promise((resolve) => {
if (file.size <= 1024 * 1024) {
return resolve(file);
}
const img = new Image();
const url = URL.createObjectURL(file);
img.onload = () => {
URL.revokeObjectURL(url);
let width = img.width;
let height = img.height;
if (width > maxWidth) {
height = Math.round((height * maxWidth) / width);
width = maxWidth;
}
const canvas = document.createElement("canvas");
canvas.width = width;
canvas.height = height;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
canvas.toBlob(
(blob) => {
const compressed = new File([blob], file.name, {
type: "image/jpeg",
lastModified: Date.now(),
});
resolve(compressed);
},
"image/jpeg",
quality,
);
};
img.onerror = () => {
URL.revokeObjectURL(url);
resolve(file);
};
img.src = url;
});
}
// --- عرض معاينة الصورة الشخصية عند اختيارها --- // --- عرض معاينة الصورة الشخصية عند اختيارها ---
photoInput.addEventListener('change', () => { photoInput.addEventListener("change", () => {
const preview = document.getElementById('fileNamePreview'); const preview = document.getElementById("fileNamePreview");
const previewContainer = document.getElementById('imagePreviewContainer'); const previewContainer = document.getElementById("imagePreviewContainer");
const imagePreview = document.getElementById('imagePreview'); const imagePreview = document.getElementById("imagePreview");
const file = photoInput.files[0]; const file = photoInput.files[0];
if (file) { if (file) {
@@ -20,63 +69,72 @@ photoInput.addEventListener('change', () => {
const reader = new FileReader(); const reader = new FileReader();
reader.onload = (e) => { reader.onload = (e) => {
imagePreview.src = e.target.result; imagePreview.src = e.target.result;
previewContainer.classList.remove('hidden'); previewContainer.classList.remove("hidden");
}; };
reader.readAsDataURL(file); reader.readAsDataURL(file);
} else { } else {
preview.innerText = ''; preview.innerText = "";
previewContainer.classList.add('hidden'); previewContainer.classList.add("hidden");
} }
}); });
// --- إرسال النموذج --- // --- إرسال النموذج ---
form.addEventListener('submit', async (e) => { form.addEventListener("submit", async (e) => {
e.preventDefault(); e.preventDefault();
btn.disabled = true; btn.disabled = true;
btn.innerText = 'جاري إرسال طلبك...'; btn.innerText = "جاري إرسال طلبك...";
const formData = new FormData(form); const formData = new FormData(form);
const photoFile = photoInput.files[0]; const photoFile = photoInput.files[0];
const idFrontFile = document.getElementById('idFrontInput').files[0]; const idFrontFile = document.getElementById("idFrontInput").files[0];
const idBackFile = document.getElementById('idBackInput').files[0]; const idBackFile = document.getElementById("idBackInput").files[0];
const message = const message =
`🚀 *طلب انضمام جديد (طلباتك بلس)* \n\n` + `🚀 *طلب انضمام جديد (طلباتك بلس)* \n\n` +
`👤 *الاسم:* ${formData.get('name')}\n` + `👤 *الاسم:* ${formData.get("name")}\n` +
`📱 *الجوال:* ${formData.get('phone')}\n` + `📱 *الجوال:* ${formData.get("phone")}\n` +
`🎂 *العمر:* ${formData.get('age')}\n` + `🎂 *العمر:* ${formData.get("age")}\n` +
`🆔 *الرقم الوطني:* ${formData.get('nationalId')}\n` + `🆔 *الرقم الوطني:* ${formData.get("nationalId")}\n` +
`📍 *العنوان:* ${formData.get('address')}\n` + `📍 *العنوان:* ${formData.get("address")}\n` +
`🛵 *نوع المركبة:* ${formData.get('vehicleType')}\n` + `🛵 *نوع المركبة:* ${formData.get("vehicleType")}\n` +
`🔢 *هل منمرة:* ${formData.get('isNumbered')}\n` + `🔢 *هل منمرة:* ${formData.get("isNumbered")}\n` +
`📄 *رقم اللوحة:* ${formData.get('plateNumber') || 'لا يوجد'}\n` + `📄 *رقم اللوحة:* ${formData.get("plateNumber") || "لا يوجد"}\n` +
`💡 *عمل سابقاً في التوصيل:* ${formData.get('previousExperience')}\n` + `💡 *عمل سابقاً في التوصيل:* ${formData.get("previousExperience")}\n` +
`🗺️ *خبرة بمناطق حلب:* ${formData.get('aleppKnowledge')}\n\n` + `🗺️ *خبرة بمناطق حلب:* ${formData.get("aleppKnowledge")}\n\n` +
`✅ *موافق على الشروط والتأمين*`; `✅ *موافق على الشروط والتأمين*`;
try { try {
const [compressedPhoto, compressedFront, compressedBack] =
await Promise.all([
compressImage(photoFile),
compressImage(idFrontFile),
compressImage(idBackFile),
]);
const backendFormData = new FormData(); const backendFormData = new FormData();
backendFormData.append('photo', photoFile); backendFormData.append("photo", compressedPhoto);
backendFormData.append('idFront', idFrontFile); backendFormData.append("idFront", compressedFront);
backendFormData.append('idBack', idBackFile); backendFormData.append("idBack", compressedBack);
backendFormData.append('message', message); backendFormData.append("message", message);
const response = await fetch(API_URL, { const response = await fetch(API_URL, {
method: 'POST', method: "POST",
body: backendFormData body: backendFormData,
}); });
const result = await response.json(); const result = await response.json();
if (result.ok) { if (result.ok) {
window.location.href = 'success.html'; window.location.href = "success.html";
} else { } else {
alert('حدث خطأ في الإرسال: ' + (result.description || 'فشل إرسال الطلب.')); alert(
"حدث خطأ في الإرسال: " + (result.description || "فشل إرسال الطلب."),
);
} }
} catch (error) { } catch (error) {
alert('فشل الاتصال بالخادم.'); alert("فشل الاتصال بالخادم.");
} finally { } finally {
btn.disabled = false; btn.disabled = false;
btn.innerText = 'إرسال طلب الانضمام'; btn.innerText = "إرسال طلب الانضمام";
} }
}); });