DE / index.html
stat2025's picture
Upload 6 files
633e8c5 verified
Raw
History Blame Contribute Delete
8.7 kB
<!doctype html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#123c69" />
<meta name="robots" content="noindex, nofollow" />
<title>نظام متابعة العينات</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;600;700;800&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="background-shape shape-one"></div>
<div class="background-shape shape-two"></div>
<main>
<section id="loginView" class="login-view">
<div class="login-card">
<div class="brand-mark" aria-hidden="true">
<svg viewBox="0 0 48 48" role="img">
<path d="M24 4 42 14v20L24 44 6 34V14L24 4Z" />
<path d="M16 25.5 21.5 31 33 18.5" />
</svg>
</div>
<p class="eyebrow">بوابة العمل الميداني</p>
<h1>نظام متابعة العينات</h1>
<p class="login-description">
أدخل رمز الدخول للوصول إلى بيانات التواصل ومتابعة حالات العينات.
</p>
<form id="loginForm" class="login-form" autocomplete="off">
<label for="password">رمز الدخول</label>
<div class="password-field">
<input
id="password"
name="password"
type="password"
inputmode="numeric"
placeholder="أدخل رمز الدخول"
required
autofocus
/>
<button id="togglePassword" type="button" class="icon-button" aria-label="إظهار رمز الدخول">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z" />
<circle cx="12" cy="12" r="2.8" />
</svg>
</button>
</div>
<p id="loginError" class="form-error" role="alert"></p>
<button id="loginButton" class="primary-button" type="submit">
<span>دخول آمن</span>
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="m9 18 6-6-6-6" />
</svg>
</button>
</form>
<div class="security-note">
<svg viewBox="0 0 24 24" aria-hidden="true">
<rect x="5" y="10" width="14" height="10" rx="2" />
<path d="M8 10V7a4 4 0 0 1 8 0v3" />
</svg>
<span>البيانات مشفرة ولا تُعرض قبل تسجيل الدخول.</span>
</div>
</div>
</section>
<section id="dashboardView" class="dashboard-view" hidden>
<header class="topbar">
<div class="topbar-brand">
<div class="brand-mark small" aria-hidden="true">
<svg viewBox="0 0 48 48">
<path d="M24 4 42 14v20L24 44 6 34V14L24 4Z" />
<path d="M16 25.5 21.5 31 33 18.5" />
</svg>
</div>
<div>
<p>بوابة العمل الميداني</p>
<h1>نظام متابعة العينات</h1>
</div>
</div>
<button id="logoutButton" class="secondary-button compact" type="button">
<svg viewBox="0 0 24 24" aria-hidden="true">
<path d="M10 17l5-5-5-5M15 12H3M15 4h4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4" />
</svg>
خروج
</button>
</header>
<div class="dashboard-shell">
<section class="welcome-panel">
<div>
<p class="eyebrow">لوحة الاستعلام</p>
<h2>الوصول إلى بيانات العينة بسهولة</h2>
<p>ابحث مباشرة، أو اختر المشرف لعرض عيناته ثم حدّد الباحث عند الحاجة.</p>
</div>
<div class="privacy-pill">
<span class="status-dot"></span>
جلسة خاصة
</div>
</section>
<section class="controls-card">
<div class="filters-grid">
<div class="field-group">
<label for="supervisorSelect">اسم المشرف</label>
<div class="select-wrap">
<select id="supervisorSelect">
<option value="">اختر المشرف</option>
</select>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5" /></svg>
</div>
</div>
<div class="field-group">
<label for="researcherSelect">اسم الباحث</label>
<div class="select-wrap">
<select id="researcherSelect" disabled>
<option value="">اختر الباحث</option>
</select>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5" /></svg>
</div>
</div>
<div class="field-group">
<label for="statusSelect">حالة الاستيفاء</label>
<div class="select-wrap">
<select id="statusSelect" disabled>
<option value="">جميع الحالات</option>
</select>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5" /></svg>
</div>
</div>
<div class="field-group search-group">
<label for="searchInput">البحث الذكي</label>
<div class="search-wrap">
<svg viewBox="0 0 24 24" aria-hidden="true">
<circle cx="11" cy="11" r="7" />
<path d="m20 20-4-4" />
</svg>
<input
id="searchInput"
type="search"
placeholder="اسم العينة أو رقم السجل"
/>
</div>
</div>
</div>
</section>
<section id="emptyState" class="empty-state">
<div class="empty-icon">
<svg viewBox="0 0 48 48" aria-hidden="true">
<path d="M8 13h32v27H8z" />
<path d="M15 8h18v10H15zM15 26h18M15 33h11" />
</svg>
</div>
<h3>ابحث أو اختر المشرف</h3>
<p>اكتب اسم العينة أو رقم السجل مباشرة، أو اختر المشرف لعرض كامل عيناته.</p>
</section>
<section id="resultsSection" class="results-section" hidden>
<div class="results-header">
<div>
<p id="resultsMeta" class="results-meta"></p>
<h2 id="resultsTitle">العينات</h2>
</div>
<button id="copyAllButton" class="primary-button copy-all" type="button">
<svg viewBox="0 0 24 24" aria-hidden="true">
<rect x="8" y="8" width="11" height="11" rx="2" />
<path d="M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2" />
</svg>
نسخ جميع عينات الباحث
</button>
</div>
<div id="statusChips" class="status-chips" aria-label="ملخص الحالات"></div>
<div id="samplesGrid" class="samples-grid"></div>
<div id="loadMoreWrap" class="load-more-wrap" hidden>
<button id="loadMoreButton" class="secondary-button load-more-button" type="button">
عرض المزيد
</button>
<p id="loadMoreMeta"></p>
</div>
<div id="noResults" class="no-results" hidden>
<h3>لا توجد نتائج مطابقة</h3>
<p>جرّب تغيير حالة الاستيفاء أو عبارة البحث.</p>
</div>
</section>
</div>
</section>
</main>
<footer id="footer">إعداد نوف الناصر</footer>
<div id="toast" class="toast" role="status" aria-live="polite"></div>
<script src="data.js"></script>
<script src="app.js"></script>
</body>
</html>