2025-12-11 10:16:43 +05:30
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8">
|
2026-01-12 13:32:09 +05:30
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
|
<title>{{ title if title else "Comparison Software" }}</title>
|
2025-12-11 10:16:43 +05:30
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Bootstrap CSS -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
2026-01-12 13:32:09 +05:30
|
|
|
|
|
|
|
|
<!-- Bootstrap Icons -->
|
|
|
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css" rel="stylesheet">
|
2025-12-11 10:16:43 +05:30
|
|
|
</head>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<body class="bg-light">
|
2025-12-11 10:16:43 +05:30
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- NAVBAR -->
|
|
|
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark shadow-sm">
|
2025-12-11 10:16:43 +05:30
|
|
|
<div class="container-fluid">
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Brand -->
|
|
|
|
|
<a class="navbar-brand fw-bold" href="/">
|
|
|
|
|
<i class="bi bi-buildings me-1"></i> LCEPL
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<!-- Mobile toggle -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navMenu">
|
|
|
|
|
<span class="navbar-toggler-icon"></span>
|
|
|
|
|
</button>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Menu -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<div class="collapse navbar-collapse" id="navMenu">
|
2026-01-12 13:32:09 +05:30
|
|
|
<ul class="navbar-nav ms-auto align-items-lg-center">
|
2025-12-11 10:16:43 +05:30
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Dashboard -->
|
|
|
|
|
<li class="nav-item">
|
|
|
|
|
<a class="nav-link" href="/dashboard">
|
|
|
|
|
<i class="bi bi-speedometer2 me-1"></i> Dashboard
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
2025-12-12 11:38:54 +05:30
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Subcontractor -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<li class="nav-item dropdown">
|
2026-01-12 13:32:09 +05:30
|
|
|
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
|
|
|
|
|
<i class="bi bi-people-fill me-1"></i> Subcontractor
|
|
|
|
|
</a>
|
2025-12-11 10:16:43 +05:30
|
|
|
<ul class="dropdown-menu dropdown-menu-dark">
|
2026-01-12 13:32:09 +05:30
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/subcontractor/add">
|
|
|
|
|
<i class="bi bi-plus-circle me-2"></i> Add Subcontractor
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/subcontractor/list">
|
|
|
|
|
<i class="bi bi-list-ul me-2"></i> Subcontractor List
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
2025-12-11 10:16:43 +05:30
|
|
|
</ul>
|
|
|
|
|
</li>
|
2025-12-13 18:50:27 +05:30
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- File System -->
|
2025-12-13 18:50:27 +05:30
|
|
|
<li class="nav-item dropdown">
|
2026-01-12 13:32:09 +05:30
|
|
|
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
|
|
|
|
|
<i class="bi bi-folder-fill me-1"></i> File System
|
|
|
|
|
</a>
|
2025-12-13 18:50:27 +05:30
|
|
|
<ul class="dropdown-menu dropdown-menu-dark">
|
2026-01-12 13:32:09 +05:30
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/file/import">
|
|
|
|
|
<i class="bi bi-upload me-2"></i> Import File
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/file/report">
|
|
|
|
|
<i class="bi bi-download me-2"></i> Download Reports
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
2025-12-13 18:50:27 +05:30
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Client System -->
|
2025-12-13 18:50:27 +05:30
|
|
|
<li class="nav-item dropdown">
|
2026-01-12 13:32:09 +05:30
|
|
|
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
|
|
|
|
|
<i class="bi bi-building me-1"></i> Client System
|
|
|
|
|
</a>
|
2025-12-13 18:50:27 +05:30
|
|
|
<ul class="dropdown-menu dropdown-menu-dark">
|
2026-01-12 13:32:09 +05:30
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/file/import_client">
|
|
|
|
|
<i class="bi bi-upload me-2"></i> Import Client File
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/report/comparison_report">
|
|
|
|
|
<i class="bi bi-arrow-left-right me-2"></i> client vs sub-cont. Comparison Report
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/file/client_vs_subcont">
|
|
|
|
|
<i class="bi bi-arrow-left-right me-2"></i> Comparison Report
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
2025-12-13 18:50:27 +05:30
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Formats -->
|
2026-01-10 01:04:21 +05:30
|
|
|
<li class="nav-item">
|
2026-01-12 13:32:09 +05:30
|
|
|
<a class="nav-link" href="/file_format">
|
|
|
|
|
<i class="bi bi-file-earmark-text me-1"></i> Formats
|
|
|
|
|
</a>
|
2026-01-10 01:04:21 +05:30
|
|
|
</li>
|
2026-01-12 13:32:09 +05:30
|
|
|
|
|
|
|
|
<!-- USER DROPDOWN -->
|
|
|
|
|
{% if session.get("user_id") %}
|
|
|
|
|
<li class="nav-item dropdown ms-lg-3">
|
|
|
|
|
|
|
|
|
|
<a class="nav-link dropdown-toggle d-flex align-items-center gap-2" href="#"
|
|
|
|
|
data-bs-toggle="dropdown">
|
|
|
|
|
<i class="bi bi-person-circle fs-5"></i>
|
|
|
|
|
<span class="d-none d-lg-inline">
|
|
|
|
|
{{ session.get("user_name") }}
|
|
|
|
|
</span>
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-dark shadow">
|
|
|
|
|
|
|
|
|
|
<!-- User card -->
|
|
|
|
|
<li class="px-3 py-3 text-center border-bottom">
|
|
|
|
|
<i class="bi bi-person-circle fs-1"></i>
|
|
|
|
|
<div class="fw-semibold mt-1">
|
|
|
|
|
{{ session.get("user_name") }}
|
|
|
|
|
</div>
|
|
|
|
|
<small class="text-muted">Logged in user</small>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item" href="/dashboard">
|
|
|
|
|
<i class="bi bi-speedometer2 me-2"></i> Dashboard
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
<a class="dropdown-item text-warning" href="/logout">
|
|
|
|
|
<i class="bi bi-box-arrow-right me-2"></i> Logout
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
</ul>
|
2026-01-10 01:04:21 +05:30
|
|
|
</li>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
2025-12-11 10:16:43 +05:30
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</nav>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- FLASH MESSAGES -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<div class="container mt-3">
|
|
|
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
2026-01-12 13:32:09 +05:30
|
|
|
{% if messages %}
|
2025-12-11 10:16:43 +05:30
|
|
|
{% for category, message in messages %}
|
|
|
|
|
<div class="alert alert-{{ category }} alert-dismissible fade show">
|
|
|
|
|
{{ message }}
|
|
|
|
|
<button class="btn-close" data-bs-dismiss="alert"></button>
|
|
|
|
|
</div>
|
|
|
|
|
{% endfor %}
|
2026-01-12 13:32:09 +05:30
|
|
|
{% endif %}
|
2025-12-11 10:16:43 +05:30
|
|
|
{% endwith %}
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- PAGE CONTENT -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<div class="container mt-4">
|
|
|
|
|
{% block content %}{% endblock %}
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-12 13:32:09 +05:30
|
|
|
<!-- Bootstrap JS -->
|
2025-12-11 10:16:43 +05:30
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
2026-01-12 13:32:09 +05:30
|
|
|
|
2025-12-11 10:16:43 +05:30
|
|
|
</body>
|
|
|
|
|
|
2025-12-13 18:50:27 +05:30
|
|
|
</html>
|