Showing
13 changed files
with
86 additions
and
47 deletions
| @@ -37,8 +37,12 @@ defineProps({ | @@ -37,8 +37,12 @@ defineProps({ | ||
| 37 | </div> | 37 | </div> |
| 38 | </div> | 38 | </div> |
| 39 | <div class="p-4"> | 39 | <div class="p-4"> |
| 40 | - <h2 class="text-lg font-bold mb-1 line-clamp-1">{{ movie.title }}</h2> | 40 | + <h2 class="text-lg font-bold mb-1 line-clamp-1"> |
| 41 | - <p class="text-sm text-gray-400">{{ useDateFormat(movie.release_date, "DD-MM-YYYY") }}</p> | 41 | + {{ movie.title }} |
| 42 | + </h2> | ||
| 43 | + <p class="text-sm text-gray-400"> | ||
| 44 | + {{ useDateFormat(movie.release_date, "DD-MM-YYYY") }} | ||
| 45 | + </p> | ||
| 42 | </div> | 46 | </div> |
| 43 | </section> | 47 | </section> |
| 44 | </template> | 48 | </template> |
| @@ -47,7 +47,9 @@ watch( | @@ -47,7 +47,9 @@ watch( | ||
| 47 | {{ comment.rating }} | 47 | {{ comment.rating }} |
| 48 | </section> | 48 | </section> |
| 49 | </div> | 49 | </div> |
| 50 | - <p :id="`message${index}`" class="text-gray-300">{{ comment.message }}</p> | 50 | + <p :id="`message${index}`" class="text-gray-300"> |
| 51 | + {{ comment.message }} | ||
| 52 | + </p> | ||
| 51 | </div> | 53 | </div> |
| 52 | </section> | 54 | </section> |
| 53 | <!-- Si aucun commentaire --> | 55 | <!-- Si aucun commentaire --> |
| 1 | <script lang="ts" setup> | 1 | <script lang="ts" setup> |
| 2 | //#region --Props--. | 2 | //#region --Props--. |
| 3 | -const props = defineProps({ | 3 | +defineProps({ |
| 4 | score: { | 4 | score: { |
| 5 | type: Number, | 5 | type: Number, |
| 6 | required: true, | 6 | required: true, |
| @@ -35,7 +35,9 @@ const formatVoteCount = (count: number) => { | @@ -35,7 +35,9 @@ const formatVoteCount = (count: number) => { | ||
| 35 | </section> | 35 | </section> |
| 36 | <section> | 36 | <section> |
| 37 | <p class="font-semibold">Note TMDB</p> | 37 | <p class="font-semibold">Note TMDB</p> |
| 38 | - <div class="text-sm text-gray-400">{{ formatVoteCount(nbVote) }}</div> | 38 | + <div class="text-sm text-gray-400"> |
| 39 | + {{ formatVoteCount(nbVote) }} | ||
| 40 | + </div> | ||
| 39 | </section> | 41 | </section> |
| 40 | </section> | 42 | </section> |
| 41 | </template> | 43 | </template> |
| @@ -56,9 +56,9 @@ const formData = reactive({ | @@ -56,9 +56,9 @@ const formData = reactive({ | ||
| 56 | const v$ = useVuelidate(rules, formData); | 56 | const v$ = useVuelidate(rules, formData); |
| 57 | //#endregion | 57 | //#endregion |
| 58 | 58 | ||
| 59 | -const errormessages = computed(() => { | 59 | +// const errormessages = computed(() => { |
| 60 | - return v$.value.message.$errors.map((e) => e.$message); | 60 | +// return v$.value.message.$errors.map((e) => e.$message); |
| 61 | -}); | 61 | +// }); |
| 62 | 62 | ||
| 63 | //#region --Function--. | 63 | //#region --Function--. |
| 64 | async function submitComment() { | 64 | async function submitComment() { |
| @@ -129,7 +129,7 @@ function handleMessageEvent(event: string) { | @@ -129,7 +129,7 @@ function handleMessageEvent(event: string) { | ||
| 129 | </span> | 129 | </span> |
| 130 | <span v-else>Publier le commentaire</span> | 130 | <span v-else>Publier le commentaire</span> |
| 131 | </v-btn> | 131 | </v-btn> |
| 132 | - <v-btn class="mt-6 mr-4" color="primary" @click="clear"> effacer</v-btn> | 132 | + <v-btn class="mt-6 mr-4" color="primary" @click="clear"> effacer </v-btn> |
| 133 | </VForm> | 133 | </VForm> |
| 134 | </section> | 134 | </section> |
| 135 | </template> | 135 | </template> |
| 1 | // @ts-check | 1 | // @ts-check |
| 2 | import withNuxt from "./.nuxt/eslint.config.mjs"; | 2 | import withNuxt from "./.nuxt/eslint.config.mjs"; |
| 3 | +import js from "@eslint/js"; | ||
| 4 | +import eslintPluginVue from "eslint-plugin-vue"; | ||
| 5 | +import ts from "typescript-eslint"; | ||
| 3 | 6 | ||
| 4 | -export default withNuxt(); | 7 | +export default withNuxt( |
| 5 | -// Your custom configs here | 8 | + // Your custom configs here |
| 9 | + js.configs.recommended, | ||
| 10 | + ...ts.configs.recommended, | ||
| 11 | + ...eslintPluginVue.configs["flat/recommended"], | ||
| 12 | + { | ||
| 13 | + files: ["*.vue", "**/*.vue"], | ||
| 14 | + languageOptions: { | ||
| 15 | + parserOptions: { | ||
| 16 | + parser: "@typescript-eslint/parser", | ||
| 17 | + }, | ||
| 18 | + }, | ||
| 19 | + rules: { | ||
| 20 | + "vue/multi-word-component-names": "off", | ||
| 21 | + }, | ||
| 22 | + }, | ||
| 23 | + // your custom flat configs go here, for example: | ||
| 24 | + // { | ||
| 25 | + // files: ['**/*.ts', '**/*.tsx'], | ||
| 26 | + // rules: { | ||
| 27 | + // 'no-console': 'off' // allow console.log in TypeScript files | ||
| 28 | + // } | ||
| 29 | + // }, | ||
| 30 | + // { | ||
| 31 | + // ... | ||
| 32 | + // } | ||
| 33 | +); |
| @@ -9,8 +9,8 @@ export interface CreditInterface { | @@ -9,8 +9,8 @@ export interface CreditInterface { | ||
| 9 | 9 | ||
| 10 | export type CreditsResponse = { | 10 | export type CreditsResponse = { |
| 11 | id: number; | 11 | id: number; |
| 12 | - cast: CreditInterface[], | 12 | + cast: CreditInterface[]; |
| 13 | - crew: CreditInterface[], | 13 | + crew: CreditInterface[]; |
| 14 | movie_id: unknown; | 14 | movie_id: unknown; |
| 15 | movie: MovieInterface; | 15 | movie: MovieInterface; |
| 16 | -} | 16 | +}; |
| 1 | -import type { CreditInterface, CreditsResponse } from "~/interfaces/credit"; | 1 | +import type { CreditsResponse } from "~/interfaces/credit"; |
| 2 | 2 | ||
| 3 | export interface MovieInterface { | 3 | export interface MovieInterface { |
| 4 | id: number; | 4 | id: number; |
| @@ -12,7 +12,7 @@ export interface MovieInterface { | @@ -12,7 +12,7 @@ export interface MovieInterface { | ||
| 12 | popularity: number; | 12 | popularity: number; |
| 13 | poster_path: string | null; | 13 | poster_path: string | null; |
| 14 | release_date: string; | 14 | release_date: string; |
| 15 | - runtime: number | 15 | + runtime: number; |
| 16 | title: string; | 16 | title: string; |
| 17 | video: boolean; | 17 | video: boolean; |
| 18 | vote_average: number; | 18 | vote_average: number; |
| @@ -21,6 +21,6 @@ export interface MovieInterface { | @@ -21,6 +21,6 @@ export interface MovieInterface { | ||
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | export type Genre = { | 23 | export type Genre = { |
| 24 | - id: number, | 24 | + id: number; |
| 25 | - name: string, | 25 | + name: string; |
| 26 | -} | 26 | +}; |
| @@ -22,10 +22,10 @@ export class MovieComment extends Model { | @@ -22,10 +22,10 @@ export class MovieComment extends Model { | ||
| 22 | return { | 22 | return { |
| 23 | // Attributs. | 23 | // Attributs. |
| 24 | id: this.uid(), | 24 | id: this.uid(), |
| 25 | - createdAt: this.string(''), | 25 | + createdAt: this.string(""), |
| 26 | - username: this.string(''), | 26 | + username: this.string(""), |
| 27 | - message: this.string(''), | 27 | + message: this.string(""), |
| 28 | - rating: this.string(''), | 28 | + rating: this.string(""), |
| 29 | // Relations. | 29 | // Relations. |
| 30 | movie_id: this.attr(null), | 30 | movie_id: this.attr(null), |
| 31 | movie: this.belongsTo(Movie, "movie_id", "id"), | 31 | movie: this.belongsTo(Movie, "movie_id", "id"), |
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | "generate": "nuxt generate", | 9 | "generate": "nuxt generate", |
| 10 | "preview": "nuxt preview", | 10 | "preview": "nuxt preview", |
| 11 | "postinstall": "nuxt prepare", | 11 | "postinstall": "nuxt prepare", |
| 12 | - "lint:js": "eslint --ext \".ts,.vue\" .", | 12 | + "lint:js": "eslint --ext \".ts,.vue\" . --fix", |
| 13 | "lint:prettier": "prettier --write .", | 13 | "lint:prettier": "prettier --write .", |
| 14 | "lint": "npm run lint:js && npm run lint:prettier", | 14 | "lint": "npm run lint:js && npm run lint:prettier", |
| 15 | "format": "prettier --write \"{components,pages,plugins,middleware,layouts,composables,assets}/**/*.{js,jsx,ts,tsx,vue,html,css,scss,json,md}\"", | 15 | "format": "prettier --write \"{components,pages,plugins,middleware,layouts,composables,assets}/**/*.{js,jsx,ts,tsx,vue,html,css,scss,json,md}\"", |
| @@ -173,7 +173,9 @@ onMounted(() => { | @@ -173,7 +173,9 @@ onMounted(() => { | ||
| 173 | 173 | ||
| 174 | <!-- Informations du film --> | 174 | <!-- Informations du film --> |
| 175 | <section class="w-full md:w-2/3 lg:w-3/4"> | 175 | <section class="w-full md:w-2/3 lg:w-3/4"> |
| 176 | - <h1 class="text-3xl md:text-4xl font-bold mb-2">{{ movie.title }}</h1> | 176 | + <h1 class="text-3xl md:text-4xl font-bold mb-2"> |
| 177 | + {{ movie.title }} | ||
| 178 | + </h1> | ||
| 177 | <p v-if="movie.release_date" class="text-gray-400 mb-4"> | 179 | <p v-if="movie.release_date" class="text-gray-400 mb-4"> |
| 178 | {{ useDateFormat(movie.release_date, "DD-MM-YYYY") }} • {{ formatRuntime(movie.runtime) }} | 180 | {{ useDateFormat(movie.release_date, "DD-MM-YYYY") }} • {{ formatRuntime(movie.runtime) }} |
| 179 | </p> | 181 | </p> |
| @@ -187,7 +189,9 @@ onMounted(() => { | @@ -187,7 +189,9 @@ onMounted(() => { | ||
| 187 | <!-- Synopsis --> | 189 | <!-- Synopsis --> |
| 188 | <div class="mb-6"> | 190 | <div class="mb-6"> |
| 189 | <h2 class="text-xl font-bold mb-2">Synopsis</h2> | 191 | <h2 class="text-xl font-bold mb-2">Synopsis</h2> |
| 190 | - <p class="text-gray-300">{{ movie.overview || "Aucun synopsis disponible." }}</p> | 192 | + <p class="text-gray-300"> |
| 193 | + {{ movie.overview || "Aucun synopsis disponible." }} | ||
| 194 | + </p> | ||
| 191 | </div> | 195 | </div> |
| 192 | 196 | ||
| 193 | <!-- Réalisateur et têtes d'affiche --> | 197 | <!-- Réalisateur et têtes d'affiche --> |
| 1 | // vite.config.js | 1 | // vite.config.js |
| 2 | -import vue from '@vitejs/plugin-vue' | 2 | +import vue from "@vitejs/plugin-vue"; |
| 3 | 3 | ||
| 4 | export default { | 4 | export default { |
| 5 | plugins: [vue()], | 5 | plugins: [vue()], |
| @@ -8,4 +8,4 @@ export default { | @@ -8,4 +8,4 @@ export default { | ||
| 8 | environment: "happy-dom", | 8 | environment: "happy-dom", |
| 9 | // Additional test configurations can be added here | 9 | // Additional test configurations can be added here |
| 10 | }, | 10 | }, |
| 11 | -} | 11 | +}; |
| 1 | -import { defineVitestConfig } from '@nuxt/test-utils/config' | 1 | +import { defineVitestConfig } from "@nuxt/test-utils/config"; |
| 2 | -import vue from '@vitejs/plugin-vue' | 2 | +import { fileURLToPath } from "node:url"; |
| 3 | -import { fileURLToPath } from 'node:url' | ||
| 4 | 3 | ||
| 5 | export default defineVitestConfig({ | 4 | export default defineVitestConfig({ |
| 6 | /** | 5 | /** |
| @@ -8,31 +7,31 @@ export default defineVitestConfig({ | @@ -8,31 +7,31 @@ export default defineVitestConfig({ | ||
| 8 | * any custom Vitest config you require | 7 | * any custom Vitest config you require |
| 9 | */ | 8 | */ |
| 10 | test: { | 9 | test: { |
| 11 | - environment: 'nuxt', | 10 | + environment: "nuxt", |
| 12 | globals: true, | 11 | globals: true, |
| 13 | // you can optionally set Nuxt-specific environment options | 12 | // you can optionally set Nuxt-specific environment options |
| 14 | environmentOptions: { | 13 | environmentOptions: { |
| 15 | nuxt: { | 14 | nuxt: { |
| 16 | - rootDir: fileURLToPath(new URL('./', import.meta.url)), | 15 | + rootDir: fileURLToPath(new URL("./", import.meta.url)), |
| 17 | - domEnvironment: 'happy-dom', // 'happy-dom' (default) or 'jsdom' | 16 | + domEnvironment: "happy-dom", // 'happy-dom' (default) or 'jsdom' |
| 18 | overrides: { | 17 | overrides: { |
| 19 | // other Nuxt config you want to pass | 18 | // other Nuxt config you want to pass |
| 20 | }, | 19 | }, |
| 21 | mock: { | 20 | mock: { |
| 22 | intersectionObserver: true, | 21 | intersectionObserver: true, |
| 23 | indexedDb: true, | 22 | indexedDb: true, |
| 24 | - } | 23 | + }, |
| 25 | }, | 24 | }, |
| 26 | }, | 25 | }, |
| 27 | coverage: { | 26 | coverage: { |
| 28 | - provider: 'v8', | 27 | + provider: "v8", |
| 29 | - reporter: ['text', 'json', 'html'], | 28 | + reporter: ["text", "json", "html"], |
| 30 | - } | 29 | + }, |
| 31 | }, | 30 | }, |
| 32 | resolve: { | 31 | resolve: { |
| 33 | alias: { | 32 | alias: { |
| 34 | - '~': fileURLToPath(new URL('./', import.meta.url)), | 33 | + "~": fileURLToPath(new URL("./", import.meta.url)), |
| 35 | - '@': fileURLToPath(new URL('./', import.meta.url)), | 34 | + "@": fileURLToPath(new URL("./", import.meta.url)), |
| 36 | - } | 35 | + }, |
| 37 | - } | 36 | + }, |
| 38 | -}) | 37 | +}); |
-
Please register or login to post a comment