mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2025-11-05 09:04:55 +00:00
Compare commits
3 Commits
HIDE_REFER
...
sorting-pa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dedbaabb94 | ||
|
|
b77582a167 | ||
|
|
982291e63c |
@@ -76,7 +76,7 @@ app.config['LOGIN_DISABLED'] = False
|
|||||||
|
|
||||||
# Disables caching of the templates
|
# Disables caching of the templates
|
||||||
app.config['TEMPLATES_AUTO_RELOAD'] = True
|
app.config['TEMPLATES_AUTO_RELOAD'] = True
|
||||||
|
app.jinja_env.add_extension('jinja2.ext.loopcontrols')
|
||||||
csrf = CSRFProtect()
|
csrf = CSRFProtect()
|
||||||
csrf.init_app(app)
|
csrf.init_app(app)
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,13 @@ class model(dict):
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@property
|
||||||
|
def label(self):
|
||||||
|
# Used for sorting
|
||||||
|
if self['title']:
|
||||||
|
return self['title']
|
||||||
|
return self['url']
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def last_changed(self):
|
def last_changed(self):
|
||||||
# last_changed will be the newest snapshot, but when we have just one snapshot, it should be 0
|
# last_changed will be the newest snapshot, but when we have just one snapshot, it should be 0
|
||||||
|
|||||||
@@ -529,3 +529,13 @@ class ChangeDetectionStore:
|
|||||||
def update_3(self):
|
def update_3(self):
|
||||||
# see https://github.com/dgtlmoon/changedetection.io/pull/835
|
# see https://github.com/dgtlmoon/changedetection.io/pull/835
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# `last_changed` not needed, we pull that information from the history.txt index
|
||||||
|
def update_4(self):
|
||||||
|
for uuid, watch in self.data['watching'].items():
|
||||||
|
try:
|
||||||
|
# Remove it from the struct
|
||||||
|
del(watch['last_changed'])
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
return
|
||||||
7
changedetectionio/templates/_pagination.jinja
Normal file
7
changedetectionio/templates/_pagination.jinja
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{% macro pagination(sorted_watches, total_per_page, current_page) %}
|
||||||
|
{{ sorted_watches|length }}
|
||||||
|
|
||||||
|
{% for row in sorted_watches|batch(total_per_page, ' ') %}
|
||||||
|
{{ loop.index}}
|
||||||
|
{% endfor %}
|
||||||
|
{% endmacro %}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% from '_helpers.jinja' import render_simple_field, render_field %}
|
{% from '_helpers.jinja' import render_simple_field, render_field %}
|
||||||
|
{% from '_pagination.jinja' import pagination %}
|
||||||
<script type="text/javascript" src="{{url_for('static_content', group='js', filename='jquery-3.6.0.min.js')}}"></script>
|
<script type="text/javascript" src="{{url_for('static_content', group='js', filename='jquery-3.6.0.min.js')}}"></script>
|
||||||
<script type="text/javascript" src="{{url_for('static_content', group='js', filename='watch-overview.js')}}" defer></script>
|
<script type="text/javascript" src="{{url_for('static_content', group='js', filename='watch-overview.js')}}" defer></script>
|
||||||
|
|
||||||
@@ -32,22 +33,31 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{% set sort_order = request.args.get('order', 'desc') == 'desc' %}
|
||||||
|
{% set sort_attribute = request.args.get('sort', 'last_changed') %}
|
||||||
|
{% set pagination_page = request.args.get('page', 0) %}
|
||||||
|
|
||||||
<div id="watch-table-wrapper">
|
<div id="watch-table-wrapper">
|
||||||
<table class="pure-table pure-table-striped watch-table">
|
<table class="pure-table pure-table-striped watch-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>#</th>
|
<th>#</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
{% set link_order = "asc" if sort_order else "desc" %}
|
||||||
<th>Last Checked</th>
|
<th><a href="{{url_for('index', sort='label', order=link_order)}}">Website</a></th>
|
||||||
<th>Last Changed</th>
|
<th><a href="{{url_for('index', sort='last_checked', order=link_order)}}">Last Checked</a></th>
|
||||||
|
<th><a href="{{url_for('index', sort='last_changed', order=link_order)}}">Last Changed</a></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
||||||
|
{% set sorted_watches = watches|sort(attribute=sort_attribute, reverse=sort_order) %}
|
||||||
|
{% for watch in sorted_watches %}
|
||||||
|
|
||||||
{% for watch in watches|sort(attribute='last_changed', reverse=True) %}
|
{# WIP for pagination, disabled for now
|
||||||
|
{% if not ( loop.index >= 3 and loop.index <=4) %}{% continue %}{% endif %} -->
|
||||||
|
#}
|
||||||
<tr id="{{ watch.uuid }}"
|
<tr id="{{ watch.uuid }}"
|
||||||
class="{{ loop.cycle('pure-table-odd', 'pure-table-even') }}
|
class="{{ loop.cycle('pure-table-odd', 'pure-table-even') }}
|
||||||
{% if watch.last_error is defined and watch.last_error != False %}error{% endif %}
|
{% if watch.last_error is defined and watch.last_error != False %}error{% endif %}
|
||||||
@@ -113,6 +123,10 @@
|
|||||||
<a href="{{ url_for('rss', tag=active_tag , token=app_rss_token)}}"><img alt="RSS Feed" id="feed-icon" src="{{url_for('static_content', group='images', filename='Generic_Feed-icon.svg')}}" height="15"></a>
|
<a href="{{ url_for('rss', tag=active_tag , token=app_rss_token)}}"><img alt="RSS Feed" id="feed-icon" src="{{url_for('static_content', group='images', filename='Generic_Feed-icon.svg')}}" height="15"></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
{# WIP for pagination, disabled for now
|
||||||
|
{{ pagination(sorted_watches,3, pagination_page) }}
|
||||||
|
#}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user