Skip to content

Commit

Permalink
Add publications tab
Browse files Browse the repository at this point in the history
Signed-off-by: Nishant Nayak <[email protected]>
  • Loading branch information
nishant-nayak committed Mar 10, 2024
1 parent 6fef417 commit 3e8cd6d
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 31 deletions.
36 changes: 36 additions & 0 deletions corpus/dev_pages_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,41 @@
},
"model": "pages.achievement",
"pk": 3
},
{
"fields": {
"achievement": 1,
"tag": "GSOC"
},
"model": "pages.tag",
"pk": 1
},
{
"fields": {
"achievement": 3,
"tag": "IAS SRFP"
},
"model": "pages.tag",
"pk": 2
},
{
"fields": {
"achievement": 3,
"tag": "SB"
},
"model": "pages.tag",
"pk": 3
},
{
"fields": {
"authors": "John Doe, Jane Doe, Someone Else",
"date": "2023-05-10",
"source": "Journal of Example",
"title": "Example Publication 1",
"url": "https://www.example.com/",
"user": null
},
"model": "pages.publication",
"pk": 1
}
]
3 changes: 2 additions & 1 deletion corpus/pages/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 4.2.7 on 2024-01-19 16:59
# Generated by Django 4.2.7 on 2024-03-10 14:36
import django.db.models.deletion
from django.conf import settings
from django.db import migrations
Expand Down Expand Up @@ -95,6 +95,7 @@ class Migration(migrations.Migration):
("date", models.DateField(verbose_name="Publish Date")),
("url", models.URLField(verbose_name="URL")),
("authors", models.CharField(max_length=256, verbose_name="Authors")),
("source", models.CharField(max_length=512, verbose_name="Source")),
(
"user",
models.ForeignKey(
Expand Down
1 change: 1 addition & 0 deletions corpus/pages/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class Publication(models.Model):
date = models.DateField(verbose_name="Publish Date")
url = models.URLField(verbose_name="URL")
authors = models.CharField(max_length=256, verbose_name="Authors")
source = models.CharField(max_length=512, verbose_name="Source")
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
Expand Down
15 changes: 14 additions & 1 deletion corpus/pages/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.shortcuts import render

from .models import Achievement
from .models import Publication


def index(request):
Expand Down Expand Up @@ -54,8 +55,20 @@ def achievements(request):
achievements_year_map[year].append(achievement)
else:
achievements_year_map[year] = [achievement]

publications_all = Publication.objects.order_by("-date")
publications_year_map = {}
for publication in publications_all:
year = publication.date.year
if year in publications_year_map:
publications_year_map[year].append(publication)
else:
publications_year_map[year] = [publication]
return render(
request,
"pages/achievements.html",
{"achievements_map": achievements_year_map},
{
"achievements_map": achievements_year_map,
"publications_map": publications_year_map,
},
)
3 changes: 1 addition & 2 deletions corpus/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
<html lang="en">

<head>

<!-- Meta tags-->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
Expand Down Expand Up @@ -72,7 +71,7 @@

<!-- Website Title -->
<title>
{% block title %} {% endblock %} | Corpus
{% block title %} {% endblock %} | IEEE NITK
</title>
<link rel="icon" href="{% static 'img/icons/favicon.png' %}" type="image/x-icon">

Expand Down
112 changes: 85 additions & 27 deletions corpus/templates/pages/achievements.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,39 +15,97 @@ <h1 class="text-3xl md:text-5xl lg:text-6xl font-extrabold">Achievements</h1>
</div>
</section>
<!-- Achievements -->
<section class="bg-base-100 px-4 lg:px-10 prose min-w-full">
{% for year, achievements in achievements_map.items %}
<div class="pt-10">
<div class="divider divider-start text-3xl lg:text-5xl">{{ year }}</div>
<ul>
{% for achievement in achievements %}
<li>
{% if achievement.url %}
<a href="{{ achievement.url }}" class="font-bold">{{ achievement.title }}</a>&emsp;<span class="badge badge-outline">{{ achievement.date | date:"F j, Y" }}</span>
{% else %}
<span class="font-bold">{{ achievement.title }}</span>&emsp;<span class="badge badge-outline">{{ achievement.date | date:"F j, Y" }}</span>
{% endif %}
<!-- TODO - Add link to user if user is defined (blocked on user page implementation) -->
<p class="mt-0">{{ achievement.description }}</p>
</li>
{% endfor %}
</ul>
<section class="bg-base-100 px-4 lg:px-16 pt-4 pb-10 min-w-full">
<div role="tablist" class="tabs tabs-bordered">
<a role="tab" class="tab text-xl lg:text-2xl tab-active">Achievements</a>
<a role="tab" class="tab text-xl lg:text-2xl">Publications</a>
</div>
{% empty %}
<div class="pt-10">
<div class="divider divider-start text-3xl lg:text-5xl">{% now "Y" %}</div>
<ul>
<li>
<span class="font-bold">You forgot to add achievements!</span>&emsp;<span class="badge badge-outline">{% now "F j, Y" %}</span>
<p class="mt-0">You probably forgot to add achievements. Add them using: <code>python manage.py loaddata dev_pages_db.json</code></p>
</li>
</ul>
<div class="tabs-content min-w-full prose">
{% for year, achievements in achievements_map.items %}
<div class="pt-10">
<div class="divider divider-start text-3xl lg:text-5xl">{{ year }}</div>
<ul>
{% for achievement in achievements %}
<li>
{% if achievement.url %}
<a href="{{ achievement.url }}" class="font-bold">{{ achievement.title }}</a>&emsp;<span class="badge badge-outline">{{ achievement.date | date:"F j, Y" }}</span>
{% else %}
<span class="font-bold">{{ achievement.title }}</span>&emsp;<span class="badge badge-outline">{{ achievement.date | date:"F j, Y" }}</span>
{% endif %}
<!-- TODO - Add link to user if user is defined (blocked on user page implementation) -->
<p class="mt-0">{{ achievement.description }}</p>
</li>
{% endfor %}
</ul>
</div>
{% empty %}
<div class="pt-10">
<div class="divider divider-start text-3xl lg:text-5xl">{% now "Y" %}</div>
<ul>
<li>
<span class="font-bold">You forgot to add achievements!</span>&emsp;<span class="badge badge-outline">{% now "F j, Y" %}</span>
<p class="mt-0">You probably forgot to add achievements. Add them using: <code>python manage.py loaddata dev_pages_db.json</code></p>
</li>
</ul>
</div>
{% endfor %}
</div>

<div class="tabs-content min-w-full prose hidden">
{% for year, publications in publications_map.items %}
<div class="pt-10">
<div class="divider divider-start text-3xl lg:text-5xl">{{ year }}</div>
<ul>
{% for publication in publications %}
<li>
<a href="{{ publication.url }}" class="font-bold">{{ publication.title }}</a> - {{ publication.source }}&emsp;<span class="badge badge-outline">{{ publication.date | date:"F j, Y" }}</span>
<!-- TODO - Add link to user if user is defined (blocked on user page implementation) -->
<p class="mt-0">{{ publication.authors }}</p>
</li>
{% endfor %}
</ul>
</div>
{% empty %}
<div class="pt-10">
<div class="divider divider-start text-3xl lg:text-5xl">{% now "Y" %}</div>
<ul>
<li>
<span class="font-bold">You forgot to add publications!</span>&emsp;<span class="badge badge-outline">{% now "F j, Y" %}</span>
<p class="mt-0">You probably forgot to add publications. Add them using: <code>python manage.py loaddata dev_pages_db.json</code></p>
</li>
</ul>
</div>
{% endfor %}
</div>
{% endfor %}
</section>
{% endblock %}


{% block script %}
<script src="https://cdn.jsdelivr.net/npm/[email protected]/particles.min.js"></script>
<script>
// Get all tabs and tab contents
var tabs = document.querySelectorAll('.tab');
var tabContents = document.querySelectorAll('.tabs-content');

// Function to remove active class from all tabs and hide all tab contents
function removeActiveClassAndHideContent() {
tabs.forEach(function(tab, index) {
tab.classList.remove('tab-active');
tabContents[index].style.display = 'none';
});
}

// Add click event listener to all tabs
tabs.forEach(function(tab, index) {
tab.addEventListener('click', function() {
removeActiveClassAndHideContent();
tab.classList.add('tab-active');
tabContents[index].style.display = 'block';
});
});



</script>
{% endblock %}

0 comments on commit 3e8cd6d

Please sign in to comment.