[Feature] Modern UI roll out (#236)

This PR moves all the collection pages into the new UI in a rough push.
I did not put the same amount of care into these as into search, index, and predict.

## Major changes

- All modals are now migrated to a state based alpine.js implementation.
- jQuery is no longer present in the base layout; ajax is replace by native fetch api
- most of the pps.js is now obsolte (as I understand it; the code is not referenced any more @jebus  please double check)
- in-memory pagination for large result lists (set to 50; we can make that configurable later; performance degrades at around 1k) stukk a bit rough tracked in #235

## Minor things

- Sarch and index also use alpine now
- The loading spinner is now CSS animated (not sure if it currently gets correctly called)

## Not done

- Ihave not even cheked the admin pages. Not sure If these need migrations
- The temporary migration pages still use the old template. Not sure what is supposed to happen with those? @jebus

## What I did to test

- opend all pages in browse, and user ; plus all pages reachable from there.
- Interacted and tested the functionality of each modal superfically with exception of the API key modal (no functional test).

---
This PR is massive sorry for that; just did not want to push half-brokenn state.
@jebus @liambrydon I would be glad if you could click around and try to break it :)

Finally closes #133

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#236
Co-authored-by: Tobias O <tobias.olenyi@envipath.com>
Co-committed-by: Tobias O <tobias.olenyi@envipath.com>
This commit is contained in:
2025-11-26 23:16:44 +13:00
committed by jebus
parent 7f6f209b4a
commit 1a2c9bb543
110 changed files with 10784 additions and 9465 deletions

View File

@ -1,163 +1,109 @@
{% extends "framework.html" %}
{% extends "framework_modern.html" %}
{% block content %}
<div class="panel-group" id="enzyme-detail">
<div class="panel panel-default">
<div
class="panel-heading"
id="headingPanel"
style="font-size:2rem;height: 46px"
>
{{ enzymelink.ec_number }}
<div class="space-y-2 p-4">
<!-- Header Section -->
<div class="card bg-base-100">
<div class="card-body">
<h2 class="card-title text-2xl">{{ enzymelink.ec_number }}</h2>
</div>
</div>
<!-- Name -->
<div
class="panel panel-default panel-heading list-group-item"
style="background-color:silver"
>
<h4 class="panel-title">
<a
id="enzyme-name-link"
data-toggle="collapse"
data-parent="#enzyme-detail"
href="#enzyme-name"
>Enzyme Name</a
>
</h4>
</div>
<div id="enzyme-name" class="panel-collapse in collapse">
<div class="panel-body list-group-item">{{ enzymelink.name }}</div>
</div>
<!-- Enzyme Name -->
<div class="collapse-arrow bg-base-200 collapse">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">Enzyme Name</div>
<div class="collapse-content">{{ enzymelink.name }}</div>
</div>
<!-- Linking Method -->
<div
class="panel panel-default panel-heading list-group-item"
style="background-color:silver"
>
<h4 class="panel-title">
<a
id="enzyme-linking-link"
data-toggle="collapse"
data-parent="#enzyme-detail"
href="#enzyme-linking"
>Linking Method</a
>
</h4>
</div>
<div id="enzyme-linking" class="panel-collapse in collapse">
<div class="panel-body list-group-item">
{{ enzymelink.linking_method }}. &nbsp;<a
href="https://wiki.envipath.org/index.php/Rules#EnzymeLinks"
target="#"
>Learn more &gt;&gt;</a
>
</div>
</div>
{% if enzymelink.kegg_reaction_links %}
<div
class="panel panel-default panel-heading list-group-item"
style="background-color:silver"
<!-- Linking Method -->
<div class="collapse-arrow bg-base-200 collapse">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">Linking Method</div>
<div class="collapse-content">
{{ enzymelink.linking_method }}. &nbsp;<a
href="https://wiki.envipath.org/index.php/Rules#EnzymeLinks"
target="_blank"
class="link link-primary"
>Learn more &gt;&gt;</a
>
<h4 class="panel-title">
<a
id="enzyme-evidence-link"
data-toggle="collapse"
data-parent="#enzyme-detail"
href="#enzyme-evidence"
>Linking Evidence</a
>
</h4>
</div>
<div id="enzyme-evidence" class="panel-collapse in collapse">
<div class="panel-body list-group-item">
</div>
</div>
{% if enzymelink.kegg_reaction_links %}
<!-- Linking Evidence -->
<div class="collapse-arrow bg-base-200 collapse">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">Linking Evidence</div>
<div class="collapse-content">
<ul class="menu bg-base-100 rounded-box">
{% for kl in enzymelink.kegg_reaction_links %}
<a class="list-group-item" href="{{ kl.external_url }}"
>{{ kl.identifier_value }}</a
>
<li>
<a href="{{ kl.external_url }}" class="hover:bg-base-200"
>{{ kl.identifier_value }}</a
>
</li>
{% endfor %}
</div>
</ul>
</div>
{% endif %}
{% if enzymelink.reaction_evidence.all %}
<div
class="panel panel-default panel-heading list-group-item"
style="background-color:silver"
>
<h4 class="panel-title">
<a
id="enzyme-reaction-evidence-link"
data-toggle="collapse"
data-parent="#enzyme-detail"
href="#enzyme-reaction-evidence"
>Linking Evidence - enviPath Reactions</a
>
</h4>
</div>
<div id="enzyme-reaction-evidence" class="panel-collapse in collapse">
<div class="panel-body list-group-item">
{% for r in enzymelink.reaction_evidence.all %}
<a class="list-group-item" href="{{ r.url }}"
>{{ r.name }} <i>({{ r.package.name }})</i></a
>
{% endfor %}
</div>
</div>
{% endif %}
{% if enzymelink.edge_evidence.all %}
<div
class="panel panel-default panel-heading list-group-item"
style="background-color:silver"
>
<h4 class="panel-title">
<a
id="enzyme-edge-evidence-link"
data-toggle="collapse"
data-parent="#enzyme-detail"
href="#enzyme-edge-evidence"
>Linking Evidence - enviPath Pathways</a
>
</h4>
</div>
<div id="enzyme-edge-evidence" class="panel-collapse in collapse">
<div class="panel-body list-group-item">
{% for e in enzymelink.edge_evidence.all %}
<a class="list-group-item" href="{{ e.pathway.url }}"
>{{ e.pathway.name }} <i>({{ r.package.name }})</i></a
>
{% endfor %}
</div>
</div>
{% endif %}
<!-- External DB Reference -->
<div
class="panel panel-default panel-heading list-group-item"
style="background-color:silver"
>
<h4 class="panel-title">
<a
id="enzyme-external-identifier-link"
data-toggle="collapse"
data-parent="#enzyme-detail"
href="#enzyme-external-identifier"
>External DB References</a
>
</h4>
</div>
<div id="enzyme-external-identifier" class="panel-collapse in collapse">
<div class="panel-body list-group-item">
<a
class="list-group-item"
href="http://www.brenda-enzymes.org/enzyme.php?ecno={{ enzymelink.ec_number }}"
target="_blank"
>
Brenda entry for {{ enzymelink.ec_number }}</a
>
{% endif %}
{% if enzymelink.reaction_evidence.all %}
<!-- Linking Evidence - enviPath Reactions -->
<div class="collapse-arrow bg-base-200 collapse">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">
Linking Evidence - enviPath Reactions
</div>
<div class="collapse-content">
<ul class="menu bg-base-100 rounded-box">
{% for r in enzymelink.reaction_evidence.all %}
<li>
<a href="{{ r.url }}" class="hover:bg-base-200"
>{{ r.name }} <i>({{ r.package.name }})</i></a
>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% if enzymelink.edge_evidence.all %}
<!-- Linking Evidence - enviPath Pathways -->
<div class="collapse-arrow bg-base-200 collapse">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">
Linking Evidence - enviPath Pathways
</div>
<div class="collapse-content">
<ul class="menu bg-base-100 rounded-box">
{% for e in enzymelink.edge_evidence.all %}
<li>
<a href="{{ e.pathway.url }}" class="hover:bg-base-200"
>{{ e.pathway.name }} <i>({{ e.pathway.package.name }})</i></a
>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
<!-- External DB References -->
<div class="collapse-arrow bg-base-200 collapse">
<input type="checkbox" checked />
<div class="collapse-title text-xl font-medium">
External DB References
</div>
<div class="collapse-content">
<a
href="http://www.brenda-enzymes.org/enzyme.php?ecno={{ enzymelink.ec_number }}"
target="_blank"
class="link link-primary"
>Brenda entry for {{ enzymelink.ec_number }}</a
>
</div>
</div>
</div>