adds per page
This commit is contained in:
2
admin.py
2
admin.py
@@ -25,7 +25,7 @@ def register_admin_routes(app):
|
|||||||
def admin_users(page=1):
|
def admin_users(page=1):
|
||||||
"""Admin page to manage all users"""
|
"""Admin page to manage all users"""
|
||||||
# Pagination settings
|
# Pagination settings
|
||||||
per_page = 25
|
per_page = int(request.args.get('per_page', 25))
|
||||||
offset = (page - 1) * per_page
|
offset = (page - 1) * per_page
|
||||||
|
|
||||||
# Get all users from Firestore
|
# Get all users from Firestore
|
||||||
|
|||||||
2
app.py
2
app.py
@@ -136,7 +136,7 @@ def dashboard(page=1):
|
|||||||
return abort(400, "Invalid email format")
|
return abort(400, "Invalid email format")
|
||||||
|
|
||||||
# Pagination settings
|
# Pagination settings
|
||||||
per_page = 25
|
per_page = int(request.args.get('per_page', 25))
|
||||||
offset = (page - 1) * per_page
|
offset = (page - 1) * per_page
|
||||||
query = None
|
query = None
|
||||||
|
|
||||||
|
|||||||
2
sync.py
2
sync.py
@@ -40,7 +40,7 @@ def convert_to_pacific_time(date_str):
|
|||||||
pacific_time = utc_time.astimezone(pytz.timezone('America/Los_Angeles'))
|
pacific_time = utc_time.astimezone(pytz.timezone('America/Los_Angeles'))
|
||||||
|
|
||||||
# Format as YYYY-MM-DD
|
# Format as YYYY-MM-DD
|
||||||
return pacific_time.strftime('%d/%m/%Y')
|
return pacific_time.strftime('%m/%d/%Y')
|
||||||
except (ValueError, AttributeError) as e:
|
except (ValueError, AttributeError) as e:
|
||||||
print(f"[WARN] Date conversion failed for '{date_str}': {e}")
|
print(f"[WARN] Date conversion failed for '{date_str}': {e}")
|
||||||
return ''
|
return ''
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{% if total_pages > 1 %}
|
{% if total_pages > 1 %}
|
||||||
<div class="flex justify-center items-center mt-6 space-x-2">
|
<div class="flex justify-center items-center mt-6 space-x-2">
|
||||||
{% if current_page > 1 %}
|
{% if current_page > 1 %}
|
||||||
<a href="{{ url_for(request.endpoint, page=current_page - 1) }}" class="px-3 py-2 text-sm text-slate-600 bg-white border border-slate-300 rounded-md hover:bg-slate-50">
|
<a href="{{ url_for(request.endpoint, page=current_page - 1, per_page=per_page) }}" class="px-3 py-2 text-sm text-slate-600 bg-white border border-slate-300 rounded-md hover:bg-slate-50">
|
||||||
Previous
|
Previous
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
{% if page == current_page %}
|
{% if page == current_page %}
|
||||||
<span class="px-3 py-2 text-sm font-medium text-white bg-blue-600 border border-blue-600 rounded-md">{{ page }}</span>
|
<span class="px-3 py-2 text-sm font-medium text-white bg-blue-600 border border-blue-600 rounded-md">{{ page }}</span>
|
||||||
{% elif page == 1 or page == total_pages or (page >= current_page - 2 and page <= current_page + 2) %}
|
{% elif page == 1 or page == total_pages or (page >= current_page - 2 and page <= current_page + 2) %}
|
||||||
<a href="{{ url_for(request.endpoint, page=page) }}" class="px-3 py-2 text-sm text-slate-600 bg-white border border-slate-300 rounded-md hover:bg-slate-50">
|
<a href="{{ url_for(request.endpoint, page=page, per_page=per_page) }}" class="px-3 py-2 text-sm text-slate-600 bg-white border border-slate-300 rounded-md hover:bg-slate-50">
|
||||||
{{ page }}
|
{{ page }}
|
||||||
</a>
|
</a>
|
||||||
{% elif page == current_page - 3 or page == current_page + 3 %}
|
{% elif page == current_page - 3 or page == current_page + 3 %}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if current_page < total_pages %}
|
{% if current_page < total_pages %}
|
||||||
<a href="{{ url_for(request.endpoint, page=current_page + 1) }}" class="px-3 py-2 text-sm text-slate-600 bg-white border border-slate-300 rounded-md hover:bg-slate-50">
|
<a href="{{ url_for(request.endpoint, page=current_page + 1, per_page=per_page) }}" class="px-3 py-2 text-sm text-slate-600 bg-white border border-slate-300 rounded-md hover:bg-slate-50">
|
||||||
Next
|
Next
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
@@ -19,6 +19,17 @@
|
|||||||
{% set _ = session.pop('reset_user_email', None) %}
|
{% set _ = session.pop('reset_user_email', None) %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h1 class="text-xl font-semibold mb-4">Admin: User Management</h1>
|
<h1 class="text-xl font-semibold mb-4">Admin: User Management</h1>
|
||||||
|
<div class="mb-4 flex items-center">
|
||||||
|
<label for="perPage" class="mr-2 text-sm font-medium text-slate-700">Items per page:</label>
|
||||||
|
<select id="perPage" x-data="{ perPage: {{ per_page }} }" x-model="perPage" @change="window.location.href = `/admin/users/1?per_page=${$data.perPage}`"
|
||||||
|
class="px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
|
||||||
|
<option value="10">10</option>
|
||||||
|
<option value="25">25</option>
|
||||||
|
<option value="50">50</option>
|
||||||
|
<option value="100">100</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="mb-6">
|
<div class="mb-6">
|
||||||
<a href="/admin/users/new" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
|
<a href="/admin/users/new" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
|
||||||
Create New User
|
Create New User
|
||||||
|
|||||||
@@ -14,6 +14,18 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<!-- Per Page Dropdown -->
|
||||||
|
<div class="mb-4 flex items-center">
|
||||||
|
<label for="perPage" class="mr-2 text-sm font-medium text-slate-700">Items per page:</label>
|
||||||
|
<select id="perPage" x-model="perPage" @change="window.location.href = `/dashboard/1?per_page=${$data.perPage}${$data.case_email_sim ? '&case_email=' + encodeURIComponent($data.case_email_sim) : ''}`"
|
||||||
|
class="px-3 py-2 border border-slate-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
|
||||||
|
<option value="10">10</option>
|
||||||
|
<option value="25">25</option>
|
||||||
|
<option value="50">50</option>
|
||||||
|
<option value="100">100</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Configure Visible Columns Link -->
|
<!-- Configure Visible Columns Link -->
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<button @click="showColumnModal = true" class="text-blue-600 hover:text-blue-800 text-sm font-medium underline">
|
<button @click="showColumnModal = true" class="text-blue-600 hover:text-blue-800 text-sm font-medium underline">
|
||||||
@@ -516,6 +528,7 @@
|
|||||||
return {
|
return {
|
||||||
showColumnModal: false,
|
showColumnModal: false,
|
||||||
case_email_sim: '',
|
case_email_sim: '',
|
||||||
|
perPage: 25,
|
||||||
columns: [
|
columns: [
|
||||||
'Matter Num',
|
'Matter Num',
|
||||||
'Matter Description',
|
'Matter Description',
|
||||||
@@ -573,12 +586,16 @@
|
|||||||
init() {
|
init() {
|
||||||
this.loadColumnSettings();
|
this.loadColumnSettings();
|
||||||
|
|
||||||
// Extract case_email from URL query parameter
|
// Extract case_email and per_page from URL query parameter
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
const caseEmail = urlParams.get('case_email');
|
const caseEmail = urlParams.get('case_email');
|
||||||
|
const perPage = urlParams.get('per_page');
|
||||||
if (caseEmail) {
|
if (caseEmail) {
|
||||||
this.case_email_sim = caseEmail;
|
this.case_email_sim = caseEmail;
|
||||||
}
|
}
|
||||||
|
if (perPage) {
|
||||||
|
this.perPage = parseInt(perPage);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
isColumnVisible(columnName) {
|
isColumnVisible(columnName) {
|
||||||
|
|||||||
Reference in New Issue
Block a user