diff --git a/ippisite/ippidb/static/js/targetcentric-near-cavities-rows.js b/ippisite/ippidb/static/js/targetcentric-near-cavities-rows.js new file mode 100644 index 0000000000000000000000000000000000000000..c903056e3623479cfadf1b707ec13e48edb19fbe --- /dev/null +++ b/ippisite/ippidb/static/js/targetcentric-near-cavities-rows.js @@ -0,0 +1,22 @@ +$(document).ready(function(){ + $(".asnyc-construction.now[data-cavity-id]").each(function () { + loadNearCavityRows($(this)); + }); +}); + +function loadNearCavityRows($row){ + if($row.length==0) + return; + $row.addClass("loading"); + $.ajax({ + url: '/cavity/'+$row.data("cavityId")+'/near-cavities', + data: {'chaincount':$row.data("chaincount"), 'cavcount':$row.data("cavcount")}, + success: function(data){ + var $data=$(data); + if ($row.hasClass("show")) + $data.addClass("show"); + $data.insertAfter($row); + $row.remove(); + } + }); +} \ No newline at end of file diff --git a/ippisite/ippidb/templates/targetcentric.html b/ippisite/ippidb/templates/targetcentric.html index 6aa573b228018f0cf35424e99fdf75421bdca39f..6b42291f60a09e18a3f1a0bdd687216e06845e9f 100644 --- a/ippisite/ippidb/templates/targetcentric.html +++ b/ippisite/ippidb/templates/targetcentric.html @@ -8,6 +8,10 @@ <link rel="stylesheet" href="/static/css/targetcentric.css"> {% endblock %} {% block content %} +{% block extra_js %} +{{block.super}} +<script src="{% static '/js/targetcentric-near-cavities-rows.js'%}"></script> +{% endblock extra_js %} <div class="inner-wrap"> @@ -237,7 +241,10 @@ Comparison and druggability prediction of protein-ligand binding sites from phar {% for cavity in cavities %} {% with cavcount=forloop.counter %} {% include "targetcentric_cavity_row.html" with chaincount=chaincount cavcount=cavcount %} - {% include "targetcentric_near_cavities.html" with object=cavity %} + <tr class="collapse out collapseme{{ chaincount }}_{{ cavcount }} asnyc-construction" data-cavity-id="{{cavity.id}}" data-cavcount="{{cavcount}}" data-chaincount="{{chaincount}}"> + <td colspan="27"><i>Loading</i></td> + </tr> + {% include "targetcentric_near_cavities.html" with object=cavityXXX %} {% endwith %} {% endfor %} {% endwith %} diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py index 4a8ed986a0112a93872a9e25708ecfe78d985d13..e90f1b44d9d1019ad22fc51acbde1b8fc59dbd8f 100644 --- a/ippisite/ippidb/urls.py +++ b/ippisite/ippidb/urls.py @@ -74,6 +74,7 @@ urlpatterns = [ ), re_path(r"^targetcentric/$", views.PDBView.as_view(), name="cavities"), re_path(r"^targetcentric/networks$", views.NetworkView.as_view(), name="networks"), + re_path(r"^cavity/(?P<pk>\d+)/near-cavities$", views.NearCavitiesHTMLFragmentView.as_view(), name="near_cavities"), re_path(r"^api/", include(ROUTER.urls)), re_path(r"^compounds/$", views.CompoundListView.as_view(), name="compound_list"), re_path( diff --git a/ippisite/ippidb/views/__init__.py b/ippisite/ippidb/views/__init__.py index db7c984fbfb8cdecfc28dab17d947d0d836405bc..aa04c113ac1476d6d97053541cd6eaf0728b9ee6 100644 --- a/ippisite/ippidb/views/__init__.py +++ b/ippisite/ippidb/views/__init__.py @@ -11,7 +11,7 @@ iPPI-DB views """ from django.contrib.auth.decorators import login_required from django.shortcuts import render -from .targetcentric import PdbViewSet, DistanceViewSet, PDBView, NetworkView +from .targetcentric import PdbViewSet, DistanceViewSet, PDBView, NetworkView, NearCavitiesHTMLFragmentView from .contribute import ippidb_wizard_view, ContributionDetailView from .compound_query import ( CompoundListView, diff --git a/ippisite/ippidb/views/targetcentric.py b/ippisite/ippidb/views/targetcentric.py index 40129fc88975506084d91dcfe9fcfb5436af3391..af2a53b78a2c23b63d8aebecc8ebf9db09ed9b73 100644 --- a/ippisite/ippidb/views/targetcentric.py +++ b/ippisite/ippidb/views/targetcentric.py @@ -4,7 +4,7 @@ iPPI-DB targetcentric views and related classes from itertools import product from functools import reduce from operator import add -from django.views.generic import ListView +from django.views.generic import ListView, DetailView from django.contrib import messages from django.db.models import Case, When, Value, IntegerField, F, Q from rest_framework import viewsets @@ -308,3 +308,16 @@ class NetworkView(ListView): def get_queryset(self): queryset = self.model.objects.all() return queryset.order_by("number") + + +class NearCavitiesHTMLFragmentView(DetailView): + model = Cavity + template_name = "targetcentric_near_cavities.html" + + def get_context_data(self, *, object_list=None, **kwargs): + return dict( + **super().get_context_data(**kwargs), + chaincount=self.request.GET.get('chaincount','0'), + cavcount=self.request.GET.get('cavcount','0'), + avg_std=MetaInformation.objects.first(), + )