یک وبسایت درست کن که در آن فرد ابتدا اطلاعات هویتی شامل نام نام خانوادگی سن سال تولد کد ملی را وارد و دیتای زیر را پر کند:
Browse files1) وضعیت جسمانی و فیزیکی (حداکثر 20 امتیاز)
قد (10 امتیاز)
175 تا 185 (3 امتیاز)
185 تا 195 (6امتیاز)
بیش از 195 (10 امتیاز)
شاخص توده بدنی BMI (10 امتیاز)
16 تا 5/18 (5 امتیاز)
5/18 تا25 (10 امتیاز)
25 تا 30 (5 امتیاز)
35 تا 40 (3امتیاز)
2) سابقه ورزشی (حداکثر 10 امتیاز)
مقام جهانی و آسیایی (۱۰ امتیاز)
مقام کشوری (۷ امتیاز و بیش از 2 مقام در مجموع 10 امتیاز)
مقام استانی (3 امتیاز و بیش از 2 مقام در مجموع 5 امتیاز)
3) سابقه بسیج و ایثارگری (حداکثر 5 امتیاز)
به ازای هر 2 سال یک امتیاز
4) گواهینامههای رانندگی و مهارت (حداکثر 5 امتیاز)
گواهینامه رانندگی موتور یا ماشین (۳ امتیاز)
گواهی مهارتهای هفتگانه ICDL سازمان فنی و حرفهای (5 امتیاز)
گواهی پایان دوره نصب و راه اندازی دوربین مداربسته (5 امتیاز)
گواهی پایان دوره کاربری سیستم مداربسته و مانیتورینگ (۵ امتیاز)
5) تسلط به زبان خارجی (حداکثر 10 امتیاز)
داشتن گواهی پایان دوره زبان خارجی از مراکز معتبر
6) سابقه کار مشابه (حداکثر 20 امتیاز)
هر سال کار در زمینه حفاظت فیزیکی با ارائه مستندات و گواهی کارکرد (5 امتیاز)
7) حمایت از خانواده و جوانی جمعیت (حداکثر 10 امتیاز)
متاهل بودن (2 امتیاز)
داشتن یک فرزند (۳ امتیاز)
داشتن دو فرزند به بالا (۵ امتیاز)
البته خود کاربر امتیاز را نبیند و سپس پس از تایید فرم ثبت شود. همچنین در پنل ادمین کلیه اطلاعات ثبت شده با مجموع امتیازات قابل مشاهده باشد.
طراحی بروز و رسمی باشد.
- README.md +7 -4
- admin.html +118 -0
- components/footer.js +37 -0
- components/navbar.js +65 -0
- index.html +165 -19
- script.js +49 -0
- style.css +32 -19
|
@@ -1,10 +1,13 @@
|
|
| 1 |
---
|
| 2 |
-
title: Guardian Score Evaluator
|
| 3 |
-
|
| 4 |
-
colorFrom: indigo
|
| 5 |
colorTo: pink
|
|
|
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Guardian Score Evaluator 🛡️
|
| 3 |
+
colorFrom: red
|
|
|
|
| 4 |
colorTo: pink
|
| 5 |
+
emoji: 🐳
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite-v3
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Welcome to your new DeepSite project!
|
| 13 |
+
This project was created with [DeepSite](https://huggingface.co/deepsite).
|
|
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="fa" dir="rtl">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>پنل مدیریت - Guardian Score Evaluator</title>
|
| 7 |
+
<link rel="stylesheet" href="style.css">
|
| 8 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 9 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 10 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 11 |
+
<script>
|
| 12 |
+
tailwind.config = {
|
| 13 |
+
theme: {
|
| 14 |
+
extend: {
|
| 15 |
+
colors: {
|
| 16 |
+
primary: '#1e40af',
|
| 17 |
+
secondary: '#1e3a8a',
|
| 18 |
+
}
|
| 19 |
+
}
|
| 20 |
+
}
|
| 21 |
+
}
|
| 22 |
+
</script>
|
| 23 |
+
</head>
|
| 24 |
+
<body class="bg-gray-50">
|
| 25 |
+
<custom-navbar></custom-navbar>
|
| 26 |
+
|
| 27 |
+
<main class="container mx-auto px-4 py-8">
|
| 28 |
+
<div class="mb-6 flex justify-between items-center">
|
| 29 |
+
<h1 class="text-2xl font-bold text-primary">پنل مدیریت ارزیابیها</h1>
|
| 30 |
+
<div class="flex space-x-2">
|
| 31 |
+
<button class="bg-primary hover:bg-secondary text-white px-4 py-2 rounded-lg flex items-center">
|
| 32 |
+
<i data-feather="download" class="ml-1"></i>
|
| 33 |
+
خروجی Excel
|
| 34 |
+
</button>
|
| 35 |
+
<button class="bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-lg flex items-center">
|
| 36 |
+
<i data-feather="refresh-cw" class="ml-1"></i>
|
| 37 |
+
بروزرسانی
|
| 38 |
+
</button>
|
| 39 |
+
</div>
|
| 40 |
+
</div>
|
| 41 |
+
|
| 42 |
+
<div class="bg-white rounded-xl shadow-md overflow-hidden">
|
| 43 |
+
<div class="overflow-x-auto">
|
| 44 |
+
<table class="min-w-full divide-y divide-gray-200">
|
| 45 |
+
<thead class="bg-gray-50">
|
| 46 |
+
<tr>
|
| 47 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">نام و نام خانوادگی</th>
|
| 48 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">کد ملی</th>
|
| 49 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">وضعیت جسمانی</th>
|
| 50 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">سابقه ورزشی</th>
|
| 51 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">سابقه کار</th>
|
| 52 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">امتیاز کل</th>
|
| 53 |
+
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">عملیات</th>
|
| 54 |
+
</tr>
|
| 55 |
+
</thead>
|
| 56 |
+
<tbody class="bg-white divide-y divide-gray-200">
|
| 57 |
+
<tr>
|
| 58 |
+
<td class="px-6 py-4 whitespace-nowrap">محمد احمدی</td>
|
| 59 |
+
<td class="px-6 py-4 whitespace-nowrap">1234567890</td>
|
| 60 |
+
<td class="px-6 py-4 whitespace-nowrap">16/20</td>
|
| 61 |
+
<td class="px-6 py-4 whitespace-nowrap">7/10</td>
|
| 62 |
+
<td class="px-6 py-4 whitespace-nowrap">15/20</td>
|
| 63 |
+
<td class="px-6 py-4 whitespace-nowrap font-bold text-primary">68/80</td>
|
| 64 |
+
<td class="px-6 py-4 whitespace-nowrap">
|
| 65 |
+
<button class="text-blue-600 hover:text-blue-900 mr-3">
|
| 66 |
+
<i data-feather="eye"></i>
|
| 67 |
+
</button>
|
| 68 |
+
<button class="text-green-600 hover:text-green-900">
|
| 69 |
+
<i data-feather="download"></i>
|
| 70 |
+
</button>
|
| 71 |
+
</td>
|
| 72 |
+
</tr>
|
| 73 |
+
<!-- More rows would be dynamically generated in a real app -->
|
| 74 |
+
</tbody>
|
| 75 |
+
</table>
|
| 76 |
+
</div>
|
| 77 |
+
<div class="bg-gray-50 px-6 py-4 flex items-center justify-between border-t border-gray-200">
|
| 78 |
+
<div class="flex-1 flex justify-between sm:hidden">
|
| 79 |
+
<a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"> قبلی </a>
|
| 80 |
+
<a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50"> بعدی </a>
|
| 81 |
+
</div>
|
| 82 |
+
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
|
| 83 |
+
<div>
|
| 84 |
+
<p class="text-sm text-gray-700">
|
| 85 |
+
نمایش
|
| 86 |
+
<span class="font-medium">1</span>
|
| 87 |
+
تا
|
| 88 |
+
<span class="font-medium">10</span>
|
| 89 |
+
از
|
| 90 |
+
<span class="font-medium">24</span>
|
| 91 |
+
نتیجه
|
| 92 |
+
</p>
|
| 93 |
+
</div>
|
| 94 |
+
<div>
|
| 95 |
+
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
|
| 96 |
+
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
|
| 97 |
+
<i data-feather="chevron-right"></i>
|
| 98 |
+
</a>
|
| 99 |
+
<a href="#" aria-current="page" class="z-10 bg-primary border-primary text-white relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 1 </a>
|
| 100 |
+
<a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 2 </a>
|
| 101 |
+
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
|
| 102 |
+
<i data-feather="chevron-left"></i>
|
| 103 |
+
</a>
|
| 104 |
+
</nav>
|
| 105 |
+
</div>
|
| 106 |
+
</div>
|
| 107 |
+
</div>
|
| 108 |
+
</div>
|
| 109 |
+
</main>
|
| 110 |
+
|
| 111 |
+
<custom-footer></custom-footer>
|
| 112 |
+
|
| 113 |
+
<script src="components/navbar.js"></script>
|
| 114 |
+
<script src="components/footer.js"></script>
|
| 115 |
+
<script src="script.js"></script>
|
| 116 |
+
<script>feather.replace();</script>
|
| 117 |
+
</body>
|
| 118 |
+
</html>
|
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomFooter extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
footer {
|
| 7 |
+
background: #111827;
|
| 8 |
+
color: white;
|
| 9 |
+
padding: 2rem;
|
| 10 |
+
text-align: center;
|
| 11 |
+
margin-top: 3rem;
|
| 12 |
+
}
|
| 13 |
+
.footer-content {
|
| 14 |
+
max-width: 1200px;
|
| 15 |
+
margin: 0 auto;
|
| 16 |
+
}
|
| 17 |
+
.copyright {
|
| 18 |
+
margin-top: 1rem;
|
| 19 |
+
font-size: 0.9rem;
|
| 20 |
+
opacity: 0.8;
|
| 21 |
+
}
|
| 22 |
+
@media (max-width: 768px) {
|
| 23 |
+
footer {
|
| 24 |
+
padding: 1.5rem;
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
</style>
|
| 28 |
+
<footer>
|
| 29 |
+
<div class="footer-content">
|
| 30 |
+
<p>سیستم ارزیابی و سنجش امتیازات حفاظتی</p>
|
| 31 |
+
<p class="copyright">تمامی حقوق محفوظ است © ۱۴۰۲</p>
|
| 32 |
+
</div>
|
| 33 |
+
</footer>
|
| 34 |
+
`;
|
| 35 |
+
}
|
| 36 |
+
}
|
| 37 |
+
customElements.define('custom-footer', CustomFooter);
|
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomNavbar extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
nav {
|
| 7 |
+
background: linear-gradient(135deg, #1e40af 0%, #1e3a8a 100%);
|
| 8 |
+
padding: 1rem 2rem;
|
| 9 |
+
display: flex;
|
| 10 |
+
justify-content: space-between;
|
| 11 |
+
align-items: center;
|
| 12 |
+
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
| 13 |
+
}
|
| 14 |
+
.logo {
|
| 15 |
+
color: white;
|
| 16 |
+
font-weight: bold;
|
| 17 |
+
font-size: 1.25rem;
|
| 18 |
+
display: flex;
|
| 19 |
+
align-items: center;
|
| 20 |
+
}
|
| 21 |
+
.logo i {
|
| 22 |
+
margin-left: 0.5rem;
|
| 23 |
+
}
|
| 24 |
+
ul {
|
| 25 |
+
display: flex;
|
| 26 |
+
gap: 1.5rem;
|
| 27 |
+
list-style: none;
|
| 28 |
+
margin: 0;
|
| 29 |
+
padding: 0;
|
| 30 |
+
}
|
| 31 |
+
a {
|
| 32 |
+
color: white;
|
| 33 |
+
text-decoration: none;
|
| 34 |
+
transition: opacity 0.2s;
|
| 35 |
+
font-size: 0.95rem;
|
| 36 |
+
}
|
| 37 |
+
a:hover {
|
| 38 |
+
opacity: 0.8;
|
| 39 |
+
}
|
| 40 |
+
@media (max-width: 768px) {
|
| 41 |
+
nav {
|
| 42 |
+
flex-direction: column;
|
| 43 |
+
padding: 1rem;
|
| 44 |
+
}
|
| 45 |
+
ul {
|
| 46 |
+
margin-top: 1rem;
|
| 47 |
+
flex-wrap: wrap;
|
| 48 |
+
justify-content: center;
|
| 49 |
+
}
|
| 50 |
+
}
|
| 51 |
+
</style>
|
| 52 |
+
<nav>
|
| 53 |
+
<div class="logo">
|
| 54 |
+
<i data-feather="shield"></i>
|
| 55 |
+
<span>سیستم ارزیابی حفاظتی</span>
|
| 56 |
+
</div>
|
| 57 |
+
<ul>
|
| 58 |
+
<li><a href="/">صفحه اصلی</a></li>
|
| 59 |
+
<li><a href="/admin.html">پنل مدیریت</a></li>
|
| 60 |
+
</ul>
|
| 61 |
+
</nav>
|
| 62 |
+
`;
|
| 63 |
+
}
|
| 64 |
+
}
|
| 65 |
+
customElements.define('custom-navbar', CustomNavbar);
|
|
@@ -1,19 +1,165 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="fa" dir="rtl">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Guardian Score Evaluator</title>
|
| 7 |
+
<link rel="stylesheet" href="style.css">
|
| 8 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 9 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 10 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 11 |
+
<script>
|
| 12 |
+
tailwind.config = {
|
| 13 |
+
theme: {
|
| 14 |
+
extend: {
|
| 15 |
+
colors: {
|
| 16 |
+
primary: '#1e40af',
|
| 17 |
+
secondary: '#1e3a8a',
|
| 18 |
+
}
|
| 19 |
+
}
|
| 20 |
+
}
|
| 21 |
+
}
|
| 22 |
+
</script>
|
| 23 |
+
</head>
|
| 24 |
+
<body class="bg-gray-50">
|
| 25 |
+
<custom-navbar></custom-navbar>
|
| 26 |
+
|
| 27 |
+
<main class="container mx-auto px-4 py-8">
|
| 28 |
+
<div class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden">
|
| 29 |
+
<div class="p-8">
|
| 30 |
+
<h1 class="text-3xl font-bold text-primary mb-6">فرم ارزیابی امتیازات حفاظتی</h1>
|
| 31 |
+
|
| 32 |
+
<form id="evaluationForm" class="space-y-6">
|
| 33 |
+
<section class="border-b pb-6">
|
| 34 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">اطلاعات هویتی</h2>
|
| 35 |
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
| 36 |
+
<div>
|
| 37 |
+
<label for="firstName" class="block text-sm font-medium text-gray-700">نام</label>
|
| 38 |
+
<input type="text" id="firstName" required class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 39 |
+
</div>
|
| 40 |
+
<div>
|
| 41 |
+
<label for="lastName" class="block text-sm font-medium text-gray-700">نام خانوادگی</label>
|
| 42 |
+
<input type="text" id="lastName" required class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 43 |
+
</div>
|
| 44 |
+
<div>
|
| 45 |
+
<label for="birthYear" class="block text-sm font-medium text-gray-700">سال تولد</label>
|
| 46 |
+
<input type="number" id="birthYear" required class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 47 |
+
</div>
|
| 48 |
+
<div>
|
| 49 |
+
<label for="nationalId" class="block text-sm font-medium text-gray-700">کد ملی</label>
|
| 50 |
+
<input type="text" id="nationalId" required class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 51 |
+
</div>
|
| 52 |
+
</div>
|
| 53 |
+
</section>
|
| 54 |
+
|
| 55 |
+
<section class="border-b pb-6">
|
| 56 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">وضعیت جسمانی و فیزیکی (حداکثر 20 امتیاز)</h2>
|
| 57 |
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
| 58 |
+
<div>
|
| 59 |
+
<label for="height" class="block text-sm font-medium text-gray-700">قد (سانتیمتر)</label>
|
| 60 |
+
<input type="number" id="height" required class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 61 |
+
</div>
|
| 62 |
+
<div>
|
| 63 |
+
<label for="weight" class="block text-sm font-medium text-gray-700">وزن (کیلوگرم)</label>
|
| 64 |
+
<input type="number" id="weight" required class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 65 |
+
</div>
|
| 66 |
+
</div>
|
| 67 |
+
</section>
|
| 68 |
+
|
| 69 |
+
<section class="border-b pb-6">
|
| 70 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">سابقه ورزشی (حداکثر 10 امتیاز)</h2>
|
| 71 |
+
<div class="space-y-4">
|
| 72 |
+
<div>
|
| 73 |
+
<label class="block text-sm font-medium text-gray-700">مقام جهانی/آسیایی</label>
|
| 74 |
+
<input type="number" placeholder="تعداد" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 75 |
+
</div>
|
| 76 |
+
<div>
|
| 77 |
+
<label class="block text-sm font-medium text-gray-700">مقام کشوری</label>
|
| 78 |
+
<input type="number" placeholder="تعداد" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 79 |
+
</div>
|
| 80 |
+
<div>
|
| 81 |
+
<label class="block text-sm font-medium text-gray-700">مقام استانی</label>
|
| 82 |
+
<input type="number" placeholder="تعداد" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 83 |
+
</div>
|
| 84 |
+
</div>
|
| 85 |
+
</section>
|
| 86 |
+
|
| 87 |
+
<section class="border-b pb-6">
|
| 88 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">سابقه بسیج و ایثارگری (حداکثر 5 امتیاز)</h2>
|
| 89 |
+
<div>
|
| 90 |
+
<label for="basijYears" class="block text-sm font-medium text-gray-700">تعداد سالهای فعالیت</label>
|
| 91 |
+
<input type="number" id="basijYears" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 92 |
+
</div>
|
| 93 |
+
</section>
|
| 94 |
+
|
| 95 |
+
<section class="border-b pb-6">
|
| 96 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">گواهینامهها (حداکثر 5 امتیاز)</h2>
|
| 97 |
+
<div class="space-y-3">
|
| 98 |
+
<div class="flex items-center">
|
| 99 |
+
<input id="drivingLicense" name="certificates" type="checkbox" class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
| 100 |
+
<label for="drivingLicense" class="mr-2 block text-sm text-gray-700">گواهینامه رانندگی</label>
|
| 101 |
+
</div>
|
| 102 |
+
<div class="flex items-center">
|
| 103 |
+
<input id="icdl" name="certificates" type="checkbox" class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
| 104 |
+
<label for="icdl" class="mr-2 block text-sm text-gray-700">گواهی ICDL</label>
|
| 105 |
+
</div>
|
| 106 |
+
<div class="flex items-center">
|
| 107 |
+
<input id="cctvInstallation" name="certificates" type="checkbox" class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
| 108 |
+
<label for="cctvInstallation" class="mr-2 block text-sm text-gray-700">نصب دوربین مداربسته</label>
|
| 109 |
+
</div>
|
| 110 |
+
<div class="flex items-center">
|
| 111 |
+
<input id="cctvMonitoring" name="certificates" type="checkbox" class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
| 112 |
+
<label for="cctvMonitoring" class="mr-2 block text-sm text-gray-700">کاربری سیستم مداربسته</label>
|
| 113 |
+
</div>
|
| 114 |
+
</div>
|
| 115 |
+
</section>
|
| 116 |
+
|
| 117 |
+
<section class="border-b pb-6">
|
| 118 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">تسلط به زبان خارجی (حداکثر 10 امتیاز)</h2>
|
| 119 |
+
<div>
|
| 120 |
+
<label for="languageCertificate" class="block text-sm font-medium text-gray-700">گواهی زبان معتبر</label>
|
| 121 |
+
<input type="text" id="languageCertificate" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 122 |
+
</div>
|
| 123 |
+
</section>
|
| 124 |
+
|
| 125 |
+
<section class="border-b pb-6">
|
| 126 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">سابقه کار مشابه (حداکثر 20 امتیاز)</h2>
|
| 127 |
+
<div>
|
| 128 |
+
<label for="workExperience" class="block text-sm font-medium text-gray-700">تعداد سالهای تجربه</label>
|
| 129 |
+
<input type="number" id="workExperience" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 130 |
+
</div>
|
| 131 |
+
</section>
|
| 132 |
+
|
| 133 |
+
<section class="border-b pb-6">
|
| 134 |
+
<h2 class="text-xl font-semibold text-gray-800 mb-4">وضعیت خانوادگی (حداکثر 10 امتیاز)</h2>
|
| 135 |
+
<div class="space-y-3">
|
| 136 |
+
<div class="flex items-center">
|
| 137 |
+
<input id="married" name="maritalStatus" type="checkbox" class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
|
| 138 |
+
<label for="married" class="mr-2 block text-sm text-gray-700">متأهل</label>
|
| 139 |
+
</div>
|
| 140 |
+
<div>
|
| 141 |
+
<label for="childrenCount" class="block text-sm font-medium text-gray-700">تعداد فرزندان</label>
|
| 142 |
+
<input type="number" id="childrenCount" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-primary focus:border-primary">
|
| 143 |
+
</div>
|
| 144 |
+
</div>
|
| 145 |
+
</section>
|
| 146 |
+
|
| 147 |
+
<div class="flex justify-end">
|
| 148 |
+
<button type="submit" class="bg-primary hover:bg-secondary text-white font-bold py-2 px-6 rounded-lg transition duration-200">
|
| 149 |
+
ثبت نهایی اطلاعات
|
| 150 |
+
</button>
|
| 151 |
+
</div>
|
| 152 |
+
</form>
|
| 153 |
+
</div>
|
| 154 |
+
</div>
|
| 155 |
+
</main>
|
| 156 |
+
|
| 157 |
+
<custom-footer></custom-footer>
|
| 158 |
+
|
| 159 |
+
<script src="components/navbar.js"></script>
|
| 160 |
+
<script src="components/footer.js"></script>
|
| 161 |
+
<script src="script.js"></script>
|
| 162 |
+
<script>feather.replace();</script>
|
| 163 |
+
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 164 |
+
</body>
|
| 165 |
+
</html>
|
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
document.getElementById('evaluationForm').addEventListener('submit', function(e) {
|
| 2 |
+
e.preventDefault();
|
| 3 |
+
|
| 4 |
+
// Collect all form data
|
| 5 |
+
const formData = {
|
| 6 |
+
personalInfo: {
|
| 7 |
+
firstName: document.getElementById('firstName').value,
|
| 8 |
+
lastName: document.getElementById('lastName').value,
|
| 9 |
+
birthYear: document.getElementById('birthYear').value,
|
| 10 |
+
nationalId: document.getElementById('nationalId').value
|
| 11 |
+
},
|
| 12 |
+
physicalInfo: {
|
| 13 |
+
height: document.getElementById('height').value,
|
| 14 |
+
weight: document.getElementById('weight').value
|
| 15 |
+
},
|
| 16 |
+
// ... collect other form data similarly
|
| 17 |
+
};
|
| 18 |
+
|
| 19 |
+
// Calculate score (this would be done server-side in a real app)
|
| 20 |
+
let score = 0;
|
| 21 |
+
|
| 22 |
+
// Height score
|
| 23 |
+
const height = parseInt(formData.physicalInfo.height);
|
| 24 |
+
if (height >= 175 && height < 185) score += 3;
|
| 25 |
+
else if (height >= 185 && height < 195) score += 6;
|
| 26 |
+
else if (height >= 195) score += 10;
|
| 27 |
+
|
| 28 |
+
// BMI score (sample calculation)
|
| 29 |
+
const weight = parseInt(formData.physicalInfo.weight);
|
| 30 |
+
if (height && weight) {
|
| 31 |
+
const bmi = weight / Math.pow(height/100, 2);
|
| 32 |
+
if (bmi >= 16 && bmi < 18.5) score += 5;
|
| 33 |
+
else if (bmi >= 18.5 && bmi < 25) score += 10;
|
| 34 |
+
else if (bmi >= 25 && bmi < 30) score += 5;
|
| 35 |
+
else if (bmi >= 35 && bmi < 40) score += 3;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
// Add other score calculations here...
|
| 39 |
+
|
| 40 |
+
// In a real app, you would send this to the server
|
| 41 |
+
console.log('Form data:', formData);
|
| 42 |
+
console.log('Calculated score:', score);
|
| 43 |
+
|
| 44 |
+
// Show success message
|
| 45 |
+
alert('اطلاعات با موفقیت ثبت شد. امتیاز شما محاسبه و به مدیر سیستم ارسال گردید.');
|
| 46 |
+
|
| 47 |
+
// Reset form
|
| 48 |
+
this.reset();
|
| 49 |
+
});
|
|
@@ -1,28 +1,41 @@
|
|
|
|
|
| 1 |
body {
|
| 2 |
-
|
| 3 |
-
font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
|
| 4 |
}
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
| 9 |
}
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
}
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
padding: 16px;
|
| 22 |
-
border: 1px solid lightgray;
|
| 23 |
-
border-radius: 16px;
|
| 24 |
}
|
| 25 |
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* Custom styles for RTL support */
|
| 2 |
body {
|
| 3 |
+
font-family: 'Yekan', 'Vazir', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
|
|
| 4 |
}
|
| 5 |
|
| 6 |
+
/* Form input styling */
|
| 7 |
+
input[type="text"],
|
| 8 |
+
input[type="number"],
|
| 9 |
+
input[type="checkbox"],
|
| 10 |
+
select {
|
| 11 |
+
font-family: inherit;
|
| 12 |
}
|
| 13 |
|
| 14 |
+
/* Custom checkbox */
|
| 15 |
+
input[type="checkbox"] {
|
| 16 |
+
-webkit-appearance: none;
|
| 17 |
+
-moz-appearance: none;
|
| 18 |
+
appearance: none;
|
| 19 |
+
display: inline-block;
|
| 20 |
+
width: 18px;
|
| 21 |
+
height: 18px;
|
| 22 |
+
padding: 2px;
|
| 23 |
+
background-clip: content-box;
|
| 24 |
+
border: 1px solid #d1d5db;
|
| 25 |
+
border-radius: 4px;
|
| 26 |
+
background-color: #fff;
|
| 27 |
+
margin-left: 5px;
|
| 28 |
}
|
| 29 |
|
| 30 |
+
input[type="checkbox"]:checked {
|
| 31 |
+
background-color: #1e40af;
|
| 32 |
+
border-color: #1e40af;
|
|
|
|
|
|
|
|
|
|
| 33 |
}
|
| 34 |
|
| 35 |
+
/* Responsive adjustments */
|
| 36 |
+
@media (max-width: 768px) {
|
| 37 |
+
.container {
|
| 38 |
+
padding-left: 1rem;
|
| 39 |
+
padding-right: 1rem;
|
| 40 |
+
}
|
| 41 |
+
}
|