Skip to content
Extraits de code Groupes Projets
Valider e149f4c2 rédigé par Brieuc Dubois's avatar Brieuc Dubois
Parcourir les fichiers

frontend: hide ended sessions & multiday sessions

parent 613b0ec7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
import datetime
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
import secrets import secrets
...@@ -55,6 +56,8 @@ def get_sessions(db: Session, user: schemas.User, skip: int = 0, limit: int = 10 ...@@ -55,6 +56,8 @@ def get_sessions(db: Session, user: schemas.User, skip: int = 0, limit: int = 10
db.query(models.Session) db.query(models.Session)
.filter(models.Session.users.any(models.User.id == user.id)) .filter(models.Session.users.any(models.User.id == user.id))
.filter(models.Session.is_active or user.type < 2) .filter(models.Session.is_active or user.type < 2)
.filter(models.Session.end_time <= datetime.datetime.now())
.filter(models.Session.start_time >= datetime.datetime.now())
.offset(skip) .offset(skip)
.limit(limit) .limit(limit)
.all() .all()
......
...@@ -64,32 +64,40 @@ export function displayTime(date: Date): string { ...@@ -64,32 +64,40 @@ export function displayTime(date: Date): string {
const now = new Date(); const now = new Date();
if (now.getTime() - date.getTime() < 1000 * 60 * 60) { if (now.getDate() - date.getDate() < 1000 * 60 * 60 * 24) {
if (now.getTime() - date.getTime() < 1000 * 60) { if (now.getTime() - date.getTime() < 1000 * 60 * 60) {
const seconds = Math.floor((now.getTime() - date.getTime()) / 1000); if (now.getTime() - date.getTime() < 1000 * 60) {
const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);
if (seconds === 0) return 'now'; if (seconds === 0) return 'now';
return seconds + 's'; return seconds + 's';
}
const minutes = Math.floor((now.getTime() - date.getTime()) / (1000 * 60));
return minutes + 'm';
} }
const minutes = Math.floor((now.getTime() - date.getTime()) / (1000 * 60)); const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0');
return minutes + 'm'; return hours + ':' + minutes;
} }
const hours = date.getHours().toString().padStart(2, '0'); const days = Math.floor((now.getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
const minutes = date.getMinutes().toString().padStart(2, '0');
return hours + ':' + minutes; return days + 'd';
} }
export function displayDuration(start: Date, end: Date): string { export function displayDuration(start: Date, end: Date): string | null {
const duration = end.getTime() - start.getTime(); const duration = end.getTime() - start.getTime();
const hours = Math.floor(duration / (1000 * 60 * 60)); const hours = Math.floor(duration / (1000 * 60 * 60));
const minutes = Math.floor((duration % (1000 * 60 * 60)) / (1000 * 60)); const minutes = Math.floor((duration % (1000 * 60 * 60)) / (1000 * 60));
if (hours < 0 || minutes < 0) return null;
if (hours === 0) return minutes + 'm'; if (hours === 0) return minutes + 'm';
else return hours + 'h ' + minutes + 'm'; else return hours + 'h ' + minutes + 'm';
} }
...@@ -60,17 +60,23 @@ ...@@ -60,17 +60,23 @@
</thead> </thead>
<tbody> <tbody>
{#each $sessions.sort((a, b) => a.created_at.getTime() - b.created_at.getTime()) as session (session.id)} {#each $sessions.sort((a, b) => a.created_at.getTime() - b.created_at.getTime()) as session (session.id)}
{@const isHidden =
!session.is_active || session.end_time < new Date() || session.start_time > new Date()}
<tr <tr
on:click={() => (window.location.href = '/session?id=' + session.id)} on:click={() => (window.location.href = '/session?id=' + session.id)}
tabindex="0" tabindex="0"
class="odd:bg-white even:bg-gray-100 text-center hover:cursor-pointer" class="odd:bg-white even:bg-gray-100 text-center hover:cursor-pointer"
class:text-gray-500={!session.is_active} class:text-gray-500={isHidden}
> >
<td class="py-3 px-6" class:line-through={!session.is_active}>{session.id}</td> <td class="py-3 px-6" class:line-through={isHidden}>{session.id}</td>
<td class="py-3 px-6" class:line-through={!session.is_active} <td class="py-3 px-6" class:line-through={isHidden}>
>{displayDuration(new Date(), session.end_time)}</td {#if session.end_time < new Date()}
> {$_('home.sessionEnded')}
<td class="py-3 px-6" class:line-through={!session.is_active}>{session.usersList()}</td> {:else}
{displayDuration(new Date(), session.end_time)}
{/if}
</td>
<td class="py-3 px-6" class:line-through={isHidden}>{session.usersList()}</td>
{#if JWTSession.user()?.is_tutor} {#if JWTSession.user()?.is_tutor}
<td class="py-3 px-6"> <td class="py-3 px-6">
......
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
"remainingDuration": "Durée restante", "remainingDuration": "Durée restante",
"nickname": "Pseudo", "nickname": "Pseudo",
"learningLanguage": "Langue d'apprentissage", "learningLanguage": "Langue d'apprentissage",
"confirm": "Confirmer" "confirm": "Confirmer",
"sessionEnded": "Terminée"
}, },
"login": { "login": {
"email": "Email", "email": "Email",
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter