SushantGautam commited on
Commit
db2cacc
·
1 Parent(s): 3bd1ac2

Add loader component and enhance detail views for domains, fields, subfields, topics, and authors

Browse files
core/static/base.css CHANGED
@@ -10,4 +10,22 @@ body {
10
 
11
  main {
12
  flex: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
 
10
 
11
  main {
12
  flex: 1;
13
+ }
14
+
15
+ #loader {
16
+ position: fixed;
17
+ top: 0;
18
+ left: 0;
19
+ width: 100%;
20
+ height: 100%;
21
+ background: rgba(255, 255, 255, 0.8);
22
+ display: flex;
23
+ justify-content: center;
24
+ align-items: center;
25
+ z-index: 9999;
26
+ }
27
+
28
+ .spinner-border {
29
+ width: 3rem;
30
+ height: 3rem;
31
  }
core/static/base.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ window.addEventListener('load', function () {
2
+ const loader = document.getElementById('loader');
3
+ if (loader) {
4
+ loader.style.display = 'none';
5
+ }
6
+ });
core/templates/author/detail.html ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends "base.html" %}
2
+ {% block title %}{{ item.name }}{% endblock %}
3
+ {% block content %}
4
+ <h2>{{ item.name }}</h2>
5
+ <p><strong>ORCID:</strong> {{ item.orcid }}</p>
6
+ <p><strong>H-Index:</strong> {{ item.h_index }}</p>
7
+ <p><strong>I10-Index:</strong> {{ item.i10_index }}</p>
8
+ <p><strong>Cited By Count:</strong> {{ item.cited_by_count }}</p>
9
+ <p><strong>Works Count:</strong> {{ item.works_count }}</p>
10
+ <p><strong>Mean 2-Year Citedness:</strong> {{ item.mean_2yr_citedness }}</p>
11
+
12
+ <h3>Topics Associated with {{ item.name }}:</h3>
13
+ <ul>
14
+ {% for author_topic in topics %}
15
+ <li><a href="{% url 'topic_detail' author_topic.topic.id %}">{{ author_topic.topic.name }}</a></li>
16
+ {% endfor %}
17
+ </ul>
18
+ {% endblock %}
core/templates/base.html CHANGED
@@ -11,6 +11,13 @@
11
  </head>
12
 
13
  <body>
 
 
 
 
 
 
 
14
  <!-- Navbar -->
15
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
16
  <div class="container-fluid">
@@ -55,9 +62,9 @@
55
  </div>
56
  </footer>
57
 
58
- <!-- Scripts -->
59
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
60
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
 
61
  {% block js %}{% endblock %}
62
  </body>
63
 
 
11
  </head>
12
 
13
  <body>
14
+ <!-- Loader -->
15
+ <div id="loader">
16
+ <div class="spinner-border text-primary" role="status">
17
+ <span class="visually-hidden">Loading...</span>
18
+ </div>
19
+ </div>
20
+
21
  <!-- Navbar -->
22
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
23
  <div class="container-fluid">
 
62
  </div>
63
  </footer>
64
 
 
65
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
66
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
67
+ <script src="{% static 'base.js' %}"></script>
68
  {% block js %}{% endblock %}
69
  </body>
70
 
core/templates/domain/detail.html CHANGED
@@ -1,6 +1,11 @@
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
- <h2>Domain: {{ item.name }}</h2>
5
- <p>ID: {{ item.id }}</p>
6
- {% endblock %}
 
 
 
 
 
 
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
+ <h2>{{ item.name }}</h2>
5
+ <h3>Fields under this Domain:</h3>
6
+ <ul>
7
+ {% for field in fields %}
8
+ <li><a href="{% url 'field_detail' field.id %}">{{ field.name }}</a></li>
9
+ {% endfor %}
10
+ </ul>
11
+ {% endblock %}
core/templates/field/detail.html CHANGED
@@ -1,6 +1,11 @@
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
- <h2>Field: {{ item.name }}</h2>
5
- <p>ID: {{ item.id }}</p>
 
 
 
 
 
6
  {% endblock %}
 
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
+ <h2>{{ item.name }}</h2>
5
+ <h3>Subfields under this Field:</h3>
6
+ <ul>
7
+ {% for subfield in subfields %}
8
+ <li><a href="{% url 'subfield_detail' subfield.id %}">{{ subfield.name }}</a></li>
9
+ {% endfor %}
10
+ </ul>
11
  {% endblock %}
core/templates/subfield/detail.html CHANGED
@@ -1,6 +1,11 @@
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
- <h2>Subfield: {{ item.name }}</h2>
5
- <p>ID: {{ item.id }}</p>
 
 
 
 
 
6
  {% endblock %}
 
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
+ <h2>{{ item.name }}</h2>
5
+ <h3>Topics under this Subfield:</h3>
6
+ <ul>
7
+ {% for topic in topics %}
8
+ <li><a href="{% url 'topic_detail' topic.id %}">{{ topic.name }}</a></li>
9
+ {% endfor %}
10
+ </ul>
11
  {% endblock %}
core/templates/topic/detail.html CHANGED
@@ -1,6 +1,11 @@
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
- <h2>Topic: {{ item.name }}</h2>
5
- <p>ID: {{ item.id }}</p>
 
 
 
 
 
6
  {% endblock %}
 
1
  {% extends "base.html" %}
2
  {% block title %}{{ item.name }}{% endblock %}
3
  {% block content %}
4
+ <h2>{{ item.name }}</h2>
5
+ <h3>Researchers in this Topic:</h3>
6
+ <ul>
7
+ {% for author_topic in authors %}
8
+ <li><a href="{% url 'author_detail' author_topic.author.id %}">{{ author_topic.author.name }}</a></li>
9
+ {% endfor %}
10
+ </ul>
11
  {% endblock %}
core/urls.py CHANGED
@@ -1,7 +1,7 @@
1
  from django.urls import path
2
  from .views import home_page, search_hierarchy, refresh_author_db_view, domain_list, domain_detail
3
  from .views import field_list, field_detail, subfield_list, subfield_detail
4
- from .views import topic_list, topic_detail
5
 
6
 
7
  urlpatterns = [
@@ -10,14 +10,16 @@ urlpatterns = [
10
  path("refresh_author_db", refresh_author_db_view, name="refresh-author-db"),
11
 
12
  path('domain/', domain_list, name='domain_list'),
13
- path('domain/<str:pk>/', domain_detail, name='domain_detail'),
14
 
15
  path('field/', field_list, name='field_list'),
16
- path('field/<str:pk>/', field_detail, name='field_detail'),
17
 
18
  path('subfield/', subfield_list, name='subfield_list'),
19
- path('subfield/<str:pk>/', subfield_detail, name='subfield_detail'),
20
 
21
  path('topic/', topic_list, name='topic_list'),
22
  path('topic/<str:pk>/', topic_detail, name='topic_detail'),
 
 
23
  ]
 
1
  from django.urls import path
2
  from .views import home_page, search_hierarchy, refresh_author_db_view, domain_list, domain_detail
3
  from .views import field_list, field_detail, subfield_list, subfield_detail
4
+ from .views import topic_list, topic_detail, author_detail
5
 
6
 
7
  urlpatterns = [
 
10
  path("refresh_author_db", refresh_author_db_view, name="refresh-author-db"),
11
 
12
  path('domain/', domain_list, name='domain_list'),
13
+ path('domain/<int:pk>/', domain_detail, name='domain_detail'),
14
 
15
  path('field/', field_list, name='field_list'),
16
+ path('field/<int:pk>/', field_detail, name='field_detail'),
17
 
18
  path('subfield/', subfield_list, name='subfield_list'),
19
+ path('subfield/<int:pk>/', subfield_detail, name='subfield_detail'),
20
 
21
  path('topic/', topic_list, name='topic_list'),
22
  path('topic/<str:pk>/', topic_detail, name='topic_detail'),
23
+
24
+ path('author/<str:pk>/', author_detail, name='author_detail'),
25
  ]
core/views.py CHANGED
@@ -1,7 +1,7 @@
1
  from django.shortcuts import render, get_object_or_404
2
- from .models import Domain, Field, Subfield, Topic
 
3
  from django.http import JsonResponse, HttpResponse
4
- from django.shortcuts import render
5
 
6
  from BridgeMentor.utils import refresh_author_db
7
 
@@ -50,7 +50,9 @@ def domain_list(request):
50
 
51
  def domain_detail(request, pk):
52
  domain = get_object_or_404(Domain, pk=pk)
53
- return render(request, "domain/detail.html", {"item": domain})
 
 
54
 
55
  # Field views
56
 
@@ -62,7 +64,9 @@ def field_list(request):
62
 
63
  def field_detail(request, pk):
64
  field = get_object_or_404(Field.objects.select_related("domain"), pk=pk)
65
- return render(request, "field/detail.html", {"item": field})
 
 
66
 
67
  # Subfield views
68
 
@@ -75,7 +79,9 @@ def subfield_list(request):
75
  def subfield_detail(request, pk):
76
  subfield = get_object_or_404(
77
  Subfield.objects.select_related("field__domain"), pk=pk)
78
- return render(request, "subfield/detail.html", {"item": subfield})
 
 
79
 
80
  # Topic views
81
 
@@ -86,6 +92,14 @@ def topic_list(request):
86
 
87
 
88
  def topic_detail(request, pk):
89
- topic = get_object_or_404(Topic.objects.select_related(
90
- "subfield__field__domain"), pk=pk)
91
- return render(request, "topic/detail.html", {"item": topic})
 
 
 
 
 
 
 
 
 
1
  from django.shortcuts import render, get_object_or_404
2
+ # Import Author model
3
+ from .models import Domain, Field, Subfield, Topic, AuthorTopic, Author
4
  from django.http import JsonResponse, HttpResponse
 
5
 
6
  from BridgeMentor.utils import refresh_author_db
7
 
 
50
 
51
  def domain_detail(request, pk):
52
  domain = get_object_or_404(Domain, pk=pk)
53
+ # Get all fields under this domain
54
+ fields = Field.objects.filter(domain=domain)
55
+ return render(request, "domain/detail.html", {"item": domain, "fields": fields})
56
 
57
  # Field views
58
 
 
64
 
65
  def field_detail(request, pk):
66
  field = get_object_or_404(Field.objects.select_related("domain"), pk=pk)
67
+ # Get all subfields under this field
68
+ subfields = Subfield.objects.filter(field=field)
69
+ return render(request, "field/detail.html", {"item": field, "subfields": subfields})
70
 
71
  # Subfield views
72
 
 
79
  def subfield_detail(request, pk):
80
  subfield = get_object_or_404(
81
  Subfield.objects.select_related("field__domain"), pk=pk)
82
+ # Get all topics under this subfield
83
+ topics = Topic.objects.filter(subfield=subfield)
84
+ return render(request, "subfield/detail.html", {"item": subfield, "topics": topics})
85
 
86
  # Topic views
87
 
 
92
 
93
 
94
  def topic_detail(request, pk):
95
+ topic = get_object_or_404(Topic, id=pk)
96
+ authors = AuthorTopic.objects.filter(topic=topic).select_related('author')
97
+ return render(request, 'topic/detail.html', {'item': topic, 'authors': authors})
98
+
99
+ # Author views
100
+
101
+
102
+ def author_detail(request, pk):
103
+ author = get_object_or_404(Author, pk=pk)
104
+ topics = AuthorTopic.objects.filter(author=author).select_related('topic')
105
+ return render(request, 'author/detail.html', {'item': author, 'topics': topics})