Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #1

Open
wants to merge 31 commits into
base: feedback
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
348b59a
Setting up GitHub Classroom Feedback
github-classroom[bot] Jan 7, 2025
afe628a
add deadline
github-classroom[bot] Jan 7, 2025
9e51080
initial commit
Persson-dev Jan 7, 2025
72c6a03
noms
Persson-dev Jan 7, 2025
9d794aa
real cleanup
VirisOnGithub Jan 7, 2025
bdcb1f6
added base components
VirisOnGithub Jan 7, 2025
6adf062
base playlist template
VirisOnGithub Jan 7, 2025
5d2cba5
selecteur dynamique
Persson-dev Jan 7, 2025
76b311a
change default
Persson-dev Jan 7, 2025
d4a8db9
better add track
Persson-dev Jan 7, 2025
db4c7da
added principal logic
VirisOnGithub Jan 7, 2025
e4ca98d
url
Persson-dev Jan 7, 2025
900a458
fix dupes playlist
VirisOnGithub Jan 7, 2025
c3bb5e6
ça marche sur ma machine
Persson-dev Jan 7, 2025
c6b88d3
one line
Persson-dev Jan 7, 2025
23348d3
working player
VirisOnGithub Jan 7, 2025
9656371
added play/pause
VirisOnGithub Jan 7, 2025
aa524aa
progress bar
VirisOnGithub Jan 7, 2025
f1dac07
Global styling
VirisOnGithub Jan 7, 2025
27a1e07
repeat mode, next not working
VirisOnGithub Jan 8, 2025
345b4be
fixed playing issue
VirisOnGithub Jan 8, 2025
e31ca85
added cursor clicking functionality
VirisOnGithub Jan 8, 2025
95dc78d
complete code refactor and add of last functionalities
VirisOnGithub Jan 15, 2025
d02d8f4
fix: update path separator for song name extraction
VirisOnGithub Jan 15, 2025
d250e48
fix: update track playability check in playlist component
VirisOnGithub Jan 15, 2025
622d24d
fix: correct path separator for song name extraction and enhance play…
VirisOnGithub Jan 15, 2025
2e79df7
fix empty localStorage
Persson-dev Jan 16, 2025
bcfaa8f
hmmmmmmmmm
Persson-dev Jan 16, 2025
ee40959
only upload audio file
Persson-dev Jan 16, 2025
8219b84
fix: truncate long track names in playlist display
VirisOnGithub Jan 16, 2025
3a9365a
feat: add previous song functionality and remove vue-router dependency
VirisOnGithub Jan 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ dist-ssr

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
Expand Down
3 changes: 3 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar"]
}
119 changes: 3 additions & 116 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,118 +1,5 @@
# Boîte musicale

Dans cet exercice, vous devez créer une application web pour gérer une liste de lecture des titres musicaux (playlist).

## Modalité
* Vous devez réaliser l'exercice en binôme.
* Cet exercice est noté, le rendu doit être envoyé sur GitHub Classroom.
* Le compte rendu est obligatoire, et doit impérativement indiquer les noms et prénoms de binôme.

## Consignes
Vous devrez créer une application de gestion de liste de lecture musicale à l’exemple de l'application présent sur [ce lien](https://polytechlyon.github.io/3a-isi1-24-25-tp-jukebox-example/).

Vous devez utiliser le framework Vue 3 pour réaliser cet exercice, sans aucune libraire tierce.

## Fonctionnalités
Il s'agit d'une application mono-page.
L'interface utilisateur comporte trois parties :
* Un contrôleur pour arrêter et reprendre le lecteur audio.
* Une liste de lecture.
* Un formulaire pour ajouter un titre à la liste.

Par simplicité, la liste ne sera pas sauvegardée entre les rechargements de la page.

### Interface utilisateur
#### Contrôleur
Lorsqu'il y a un titre en cours de lecture, le contrôleur affiche l'intitulé de ce titre, ainis qu'une barre indiquant le progrès de la lecture.
Un bouton permet de mettre en pause ou de reprendre le titre, selon l'état de lecture.

L'utilisateur peut choisir le mode de répétition grâce à un contrôle adequate.
Les modes de répétition disponibles sont Liste, Titre, ou Aucun.

#### Liste de lecture
La liste de lecture affiche les intitulés des titres ajoutés par l'utilisateur.
Chaque item est accompagné de deux boutons : un pour jouer le titre, et un pour le supprimer.

L'intitulé du titre en cours de lecture est mis en évidence, par exemple avec un texte en gras.

Les titres qui ne fonctionnent pas, par exemple, à cause d'un lien défectueux, auront le bouton de lecture grisé.
Leurs items seront marqués, par exemple par un texte barré.

#### Formulaire d'ajout
Ce formulaire permet d'ajouter un titre à la liste de lecture.
Deux types d'ajout sont possibles : soit par lien, soit par fichier.

L'utilisateur précise le mode d'ajout souhaité grâce à un contrôle adéquat.

Pour un ajout par lien, l'utilisateur doit saisir l'URL d'un fichier audio accessible en ligne.
Le formulaire d'ajout ne vérifie pas la validité du lien.
L'intitulé du titre est être déduit automatiquement du lien.

Pour un ajout par fichier, l'utilisateur doit sélectionner un fichier audio depuis son système de fichiers.
Le formulaire d'ajout ne vérifie pas le format de fichier.
L'intitulé du titre est déduit automatiquement du nom de fichier.

Au lieu de la déduction automatique de l'intitulé, vous pouvez, selon votre choix, fournir un champ de saisi dédié à cette fin.

### Lecture
Lorsque le mode de répétition Liste est choisi (le mode par défaut), le lecteur joue les titres de la liste dans l'ordre.
Quand la liste est terminée, la lecture reprend de début de la liste.
Si le mode de répétition Aucun est choisi, le lecteur joue les titres dans l'ordre aussi.
Par contre, quand la liste est terminée, la lecture s'arrête.
Si le mode de répétition Titre est choisi, le lecteur joue le titre en cours de lecture en boucle.

Lorsque l'utilisateur clique sur la barre du progrès, la lecture saute à la position correspondante.

Lorsqu'un titre défectueux est détecté, il est marqué comme tel.
Le lecteur passe automatiquement au titre suivant à chaque fois qu'un titre défectueux est rencontré.
Un titre peut être défectueux pour plusieurs raisons, par exemple, un lien invalide ou un fichier audio corrompu.

## Contraintes
* Vous devez utiliser Vue 3 pour réaliser cet exercice.
* Vous ne pouvez pas utiliser de librairie tierce.
* Évitez d'utiliser l'attribut `controls` de l'élément `audio`.

# Compte rendu
Le compte rendu doit être fourni en complétant le fichier [`Rapport.md`](Rapport.md) et doit indiquer les noms et prénoms des membres du binôme.
Il doit, d'une manière brève, décrire et justifier les choix de conception et de réalisation.
Il doit aussi décrire les difficultés rencontrées et les solutions apportées.

Les extensions réalisées doivent être mentionnées, d'une manière claire, dans le compte rendu.

## Extensions
Une fois que toutes les fonctionnalités ci-dessus sont réalisées avec succès, les fonctionnalités supplémentaires suivantes peuvent être réalisées afin d'obtenir des points de bonus.
L'application présente sur [ce lien](https://polytechlyon.github.io/3a-isi1-24-25-tp-jukebox-extensions-example/) donne un exemple de la réalisation de ces extensions.

Les points de bonus peuvent être rapportés à la note finale du module ISI 1.
Cependant, la note finale ne peut pas dépasser 20/20.

### Sauvegarde des titres publics
Les titres ajoutés par lien public sont sauvegardés entre rafraichissements de page.
Les titres ajoutés par fichier ne sont pas sauvegardés.

### Organisation de plusieurs listes de lecture
L'utilisateur peut créer plusieurs listes de lecture.
Chaque liste aura son propre nom.
Pour visualiser et organiser les listes de lecture, l'utilisateur doit naviguer vers la vue de gestion des listes, accessible par un lien dédié.
Cette vue affiche la liste des noms des listes de lecture, ainis que le nombre de titres dans chaque liste.
Chaque item, correspondant à une liste de lecture, est accompagné d'un bouton de suppression, et d'un bouton de sélection.
La liste actuellement sélectionnée ne peut pas être supprimée.

En sélectionnant une liste, l'utilisateur est redirigé vers la vue principale de l'application, mais avec la liste sélectionnée chargée.

Un formulaire permet de créer une nouvelle liste de lecture.

Cette extension nécessite l'utilisation de l'API de navigation de Vue Router.

## Références
* [Vue 3](https://vuejs.org/)
* [Méthode statique `createObjectURL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL_static)
* [Élément d'audio embarqué](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio)
* [Vue Router](https://router.vuejs.org/) (pour l'extension de plusieurs listes de lecture)





# Vue 3 + Vite

This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

Learn more about IDE Support for Vue in the [Vue Docs Scaling up Guide](https://vuejs.org/guide/scaling-up/tooling.html#ide-support).
4 changes: 2 additions & 2 deletions Rapport.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Compte Rendu TP Jukebox

## Binôme
- Nom Prénom
- Nom Prénom
- PRIBYLSKI Simon
- RENIERS Clément

## Choix de conception et de réalisation

Expand Down
13 changes: 13 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/play-pause.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>JukeboXXXXX</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
Loading