nenuscanner/templates/index.html

147 lines
5.9 KiB
HTML

{% extends "base.html" %}
{% block extracss %}
<style>
.project {
display: none;
}
</style>
{% endblock %}
{% block content %}
<section class="section">
<div class="container">
<h1 class="title">Bienvenue sur NenuScanner</h1>
{% if projects %}
<div class="content">
<p>Voici les projets existants dans la base de données :
<div class="fixed-grid has-6-cols">
<div class="grid">
{% for project in projects %}
<a href="#" id="project-{{ loop.index0 }}" class="cell p-2 has-text-centered has-text-white-dark" style="border: solid; border-width: 1px; border-radius: 5px;">
<div>
<strong>{{ project.name }}</strong>
</div>
<div>
<em>({{ project.objects | length }} objets)</em>
</div>
</a>
{% endfor %}
</div>
</div>
{% for project in projects %}
<div class="project project-{{ loop.index0 }}">
<h2>{{ project.name }} <em>({{ project.objects | length }} objets)</em></h2>
<div class="fixed-grid has-6-cols mb-5">
<div class="grid">
{% for object in project.objects %}
<a href="/object/{{ object.id }}" class="cell p-2 has-text-centered has-text-white-dark" style="border: solid; border-width: 1px; border-radius: 5px;">
<div>
<strong>{{ object.name }}</strong>
</div>
<div>
{% if object.acquisitions %}
<img src="/data/objects/{{ object.id }}/{{ object.acquisitions[0].id }}/{{ leds[0] }}.jpg">
{% else %}
<em>Pas d'acquisitions</em>
{% endif %}
</div>
</a>
{% endfor %}
</div>
</div>
</div>
{% endfor %}
</div>
{% else %}
<p>Il n'y a aucun projet pour le moment...</p>
{% endif %}
<div class="field">
<div class="control">
<button id="add-object" class="button is-link">Ajouter un nouvel objet</button>
</div>
</div>
<div id="add-object-modal" class="modal">
<div class="modal-background"></div>
<form action="/object/create" method="POST">
<div class="modal-content">
<div class="field">
<label class="label has-text-white-dark">Nom du projet</label>
<div class="control">
<input class="input" type="text" name="project" placeholder="Nom du projet" required>
</div>
</div>
<div class="field">
<label class="label has-text-white-dark">Nom de l'objet</label>
<div class="control">
<input class="input" type="text" name="name" placeholder="Nom de l'objet" required>
</div>
</div>
<div class="field is-grouped is-grouped-centered">
<div class="control">
<button class="button is-link">Créer un objet</button>
</div>
</div>
</div>
<button class="modal-close is-large" aria-label="close"></button>
</form>
</div>
</div>
</section>
{% endblock content %}
{% block extrajs %}
<script>
document.addEventListener('DOMContentLoaded', () => {
let addObjectButton = document.getElementById('add-object');
let addObjectModal = document.getElementById('add-object-modal');
// Modal button show the modal
addObjectButton.addEventListener('click', () => {
addObjectModal.classList.add('is-active');
});
(document.querySelectorAll('.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button') || []).forEach((close) => {
close.addEventListener('click', () => {
addObjectModal.classList.remove('is-active');
});
});
});
let projects = document.getElementsByClassName('project');
for (let i = 0; i < {{ projects | length }}; i++) {
let clickedProject = document.getElementById('project-' + i);
clickedProject.addEventListener('click', () => {
let same = clickedProject.classList.contains('has-text-link');
if (same) {
clickedProject.classList.remove('has-text-link');
clickedProject.classList.add('has-text-white-dark');
} else {
clickedProject.classList.remove('has-text-white-dark');
clickedProject.classList.add('has-text-link');
}
for (let j = 0; j < {{ projects | length }}; j++) {
if (j !== i) {
let otherProject = document.getElementById('project-' + j);
otherProject.classList.remove('has-text-link');
otherProject.classList.add('has-text-white-dark');
}
}
for (let p of projects) {
if (p.classList.contains('project-' + i) && !same) {
p.style.display = "block";
} else {
p.style.display = "none";
}
}
});
}
</script>
{% endblock extrajs %}