first push message

This commit is contained in:
2026-07-01 14:41:49 +07:00
parent 6667dec2bf
commit 58b5f46cc4
2951 changed files with 316619 additions and 0 deletions
+193
View File
@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="party_list" name="Party Voter Statistics">
<t t-call="portal.portal_layout">
<div class="container-fluid mt-4">
<!-- Auto-refresh -->
<meta http-equiv="refresh" content="3600"/>
<!-- Header -->
<div class="row mb-4">
<div class="col-12">
<div class="card bg-primary text-white shadow-sm">
<div class="card-body py-3">
<div class="row align-items-center">
<div class="col-md-8">
<h3 class="mb-0 fw-bold">
<i class="fa fa-users me-2"/>
ទម្រង់បញ្ជីតាមការវិភាគលើគណបក្សនយោបាយ
</h3>
<small>(មានប្រភេទសមាជិកគណបក្សនយោបាយ)</small>
</div>
<div class="col-md-4 text-md-end">
<h4 class="mb-0 fw-bold">
<i class="fa fa-clock me-2"/>
ម៉ោង: <t t-esc="current_dt.strftime('%H:%M')"/>
</h4>
<small>ថ្ងៃ: <t t-esc="current_dt.strftime('%d/%m/%Y')"/></small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Filters -->
<div class="row mb-4">
<div class="col-12">
<div class="card shadow-sm">
<div class="card-body">
<form method="get" action="/my/cpp_entries/party_list" class="row g-3">
<div class="col-md-4">
<label class="form-label fw-bold">ស្រុក/ខណ្ឌ</label>
<select name="district_id" class="form-select" onchange="this.form.submit()">
<option value="">-- ទាំងអស់ --</option>
<t t-foreach="districts" t-as="district">
<option t-att-value="district.id" t-att-selected="sel_district == str(district.id)">
<t t-esc="district.location_name"/>
</option>
</t>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold">ឃុំ/សង្កាត់</label>
<select name="commune_id" class="form-select" onchange="this.form.submit()">
<option value="">-- ទាំងអស់ --</option>
<t t-foreach="communes" t-as="commune">
<option t-att-value="commune.id" t-att-selected="sel_commune == str(commune.id)">
<t t-esc="commune.location_name"/>
</option>
</t>
</select>
</div>
<div class="col-md-4 d-flex align-items-end">
<a href="/my/cpp_entries/party_list" class="btn btn-outline-primary w-100">
<i class="fa fa-refresh me-1"/> រីផ្រេស
</a>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Info Box -->
<div class="alert alert-info mb-4">
<i class="fa fa-info-circle me-2"/>
<strong>ការព្រមាន:</strong> បញ្ជីនេះបង្ហាញពីចំនួនអ្នកបោះឆ្នោតតាមគណបក្សនយោបាយ។
ចុចលើឈ្មោះគណបក្ស ដើម្បីមើលបញ្ជីឈ្មោះអ្នកបោះឆ្នោតនីមួយៗ។
</div>
<!-- Party Statistics Table -->
<div class="row mb-4">
<div class="col-12">
<div class="card shadow-sm">
<div class="card-header bg-success text-white">
<h5 class="mb-0">
<i class="fa fa-chart-bar me-2"/>
ទម្រង់បញ្ជីលទ្ធផលរាប់សន្លឹកឆ្នោត
</h5>
</div>
<div class="card-body p-0">
<div class="table-responsive">
<table class="table table-bordered table-hover mb-0">
<thead class="table-light">
<tr>
<th class="text-center" style="width: 10%;">ល.រ.</th>
<th class="text-center" style="width: 60%;">ឈ្មោះគណបក្សនយោបាយ</th>
<th class="text-center" style="width: 15%;">សម្គាល់</th>
<th class="text-center" style="width: 15%;">សកម្មភាព</th>
</tr>
</thead>
<tbody>
<t t-foreach="party_stats.items()" t-as="party">
<tr class="table-hover" style="cursor: pointer;">
<td class="text-center fw-bold"><t t-esc="party_index + 1"/></td>
<td class="fw-bold text-primary">
<a t-attf-href="/my/cpp_entries/party_voters/#{party[0]}"
class="text-decoration-none"
style="color: inherit;">
<i class="fa fa-users me-2"/>
<t t-esc="party[1]['name']"/>
</a>
</td>
<td class="text-center">
<span class="badge bg-primary fs-6">
<t t-esc="party[1]['total']"/> នាក់
</span>
</td>
<td class="text-center">
<a t-attf-href="/my/cpp_entries/party_voters/#{party[0]}"
class="btn btn-sm btn-primary">
<i class="fa fa-eye"/> មើលលម្អិត
</a>
</td>
</tr>
</t>
<tr class="table-primary fw-bold">
<td class="text-center" colspan="2">សរុបទាំងអស់</td>
<td class="text-center">
<span class="badge bg-success fs-6">
<t t-esc="total_voters"/> នាក់
</span>
</td>
<td/>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- Summary Cards -->
<div class="row mb-4">
<t t-foreach="party_stats.items()" t-as="party">
<div class="col-md-4 mb-3">
<div class="card h-100 shadow-sm border-primary">
<div class="card-header bg-primary text-white">
<h6 class="mb-0"><t t-esc="party[1]['name']"/></h6>
</div>
<div class="card-body">
<div class="row text-center">
<div class="col-6 mb-2">
<h4 class="text-primary"><t t-esc="party[1]['total']"/></h4>
<small class="text-muted">សរុប</small>
</div>
<div class="col-6 mb-2">
<h4 class="text-success"><t t-esc="party[1]['voted']"/></h4>
<small class="text-muted">បានបោះឆ្នោត</small>
</div>
<div class="col-6">
<small>ប្រុស: <strong><t t-esc="party[1]['male']"/></strong></small>
</div>
<div class="col-6">
<small>ស្រី: <strong><t t-esc="party[1]['female']"/></strong></small>
</div>
</div>
</div>
<div class="card-footer bg-white">
<a t-attf-href="/my/cpp_entries/party_voters/#{party[0]}"
class="btn btn-sm btn-outline-primary w-100">
<i class="fa fa-list me-1"/> មើលបញ្ជី
</a>
</div>
</div>
</div>
</t>
</div>
<!-- Back to Dashboard -->
<div class="row">
<div class="col-12">
<a href="/my/cpp_entries/dashboard" class="btn btn-secondary">
<i class="fa fa-arrow-left me-1"/> ត្រឡប់ទៅ Dashboard
</a>
</div>
</div>
</div>
</t>
</template>
</odoo>