diff --git a/README.md b/README.md index ce3cc1b..bcd912a 100644 --- a/README.md +++ b/README.md @@ -59,11 +59,11 @@ Le projet de tp utilise un modèle de flux de travail Git pour organiser le dév ## Avancés du projet * [x] Partie 0 - Project creation * [x] Partie 1 - Project organisation -* [ ] Partie 2 - Typescript types -* [ ] Partie 3 - Screens -* [ ] Partie 4 - Components -* [ ] Partie 5 - FlatList -* [ ] Partie 6 - Safe Area +* [X] Partie 2 - Typescript types +* [X] Partie 3 - Screens +* [X] Partie 4 - Components +* [X] Partie 5 - FlatList +* [X] Partie 6 - Safe Area * [ ] Partie 7 - Navigation * [ ] Partie 8 - Hooks * [ ] Partie 9 - Redux Store diff --git a/src/tp-react-native/components/JokeListItem.tsx b/src/tp-react-native/components/JokeListItem.tsx index a959131..272c9f6 100644 --- a/src/tp-react-native/components/JokeListItem.tsx +++ b/src/tp-react-native/components/JokeListItem.tsx @@ -1,7 +1,7 @@ import {StyleSheet, Text, View, FlatList, Image} from 'react-native'; import {SampleJoke} from "../model/SampleJoke"; import {CustomJoke} from "../model/CustomJoke"; -import {darksalmonColor, whiteColor, greyColor, indigoColor, purpleColor} from "../assets/Theme"; +import {darksalmonColor, whiteColor, greyColor, indigoColor} from "../assets/Theme"; type JokeListItemProps = { jokes: CustomJoke[] | SampleJoke[]; diff --git a/src/tp-react-native/data/stub/CustomJokeStub.ts b/src/tp-react-native/data/stub/CustomJokeStub.ts index 61ae94f..1a60bc2 100644 --- a/src/tp-react-native/data/stub/CustomJokeStub.ts +++ b/src/tp-react-native/data/stub/CustomJokeStub.ts @@ -1,3 +1,13 @@ +/** + * @file CustomJokeStub.ts + * @brief Exemple d'utilisation de la classe JokeFactory pour créer des blagues personnalisées. + */ + import { JokeFactory } from '../../model/JokeFactory'; +/** + * @brief Stub de blagues personnalisées créées à l'aide de la classe JokeFactory. + * @constant + * @type {CustomJoke[]} + */ export const customJokeStub = JokeFactory.createCustomJokes('[{"id":"1", "type":"custom", "setup":"one", "punchline":"y\'en a pas", "image":"https://placekitten.com/200/300"},{"id":"2", "type":"custom", "setup":"two","punchline":"y\'en a pas", "image":"https://placekitten.com/200/300"},{"id":"3", "type":"Default", "setup":"three","punchline":"y\'en toujours a pas ;)", "image":"https://placekitten.com/200/300"},{"id":"4", "type":"custom bro", "setup":"four","punchline":"y\'en toujours toujours ap", "image":"https://placekitten.com/200/300"}]'); \ No newline at end of file diff --git a/src/tp-react-native/data/stub/SampleJokeStub.ts b/src/tp-react-native/data/stub/SampleJokeStub.ts index ae9e362..a9068ac 100644 --- a/src/tp-react-native/data/stub/SampleJokeStub.ts +++ b/src/tp-react-native/data/stub/SampleJokeStub.ts @@ -1,2 +1,13 @@ +/** + * @file SampleJokeStub.ts + * @brief Exemple d'utilisation de la classe JokeFactory pour créer des blagues simples. + */ + import { JokeFactory } from '../../model/JokeFactory'; -export const sampleJokeStub = JokeFactory.createCustomJokes('[{"id":1, "type":"custom", "setup":"one", "punchline":"y\'en a pas", "image":"https://placekitten.com/200/300"},{"id":2, "type":"custom", "setup":"two","punchline":"y\'en a pas", "image":"https://placekitten.com/200/300"}]'); \ No newline at end of file + +/** + * @brief Stub de blagues simples créées à l'aide de la classe JokeFactory. + * @constant + * @type {SampleJoke[]} + */ +export const sampleJokeStub = JokeFactory.createSampleJokes('[{"id":1, "type":"custom", "setup":"one", "punchline":"y\'en a pas", "image":"https://placekitten.com/200/300"},{"id":2, "type":"custom", "setup":"two","punchline":"y\'en a pas", "image":"https://placekitten.com/200/300"}]'); \ No newline at end of file diff --git a/src/tp-react-native/model/CustomJoke.ts b/src/tp-react-native/model/CustomJoke.ts index 314b780..1561bec 100644 --- a/src/tp-react-native/model/CustomJoke.ts +++ b/src/tp-react-native/model/CustomJoke.ts @@ -1,18 +1,52 @@ +/** + * @file CustomJoke.ts + * @brief Définition de la classe CustomJoke. + */ + import { Joke } from './Joke'; +/** + * @class + * @brief Représente une blague personnalisée avec un identifiant unique. + * @extends Joke + */ export class CustomJoke extends Joke { - private _id:string; + private _id: string; + + /** + * @brief Constructeur de la classe CustomJoke. + * @param {string} id - L'identifiant unique de la blague. + * @param {string} type - Le type de la blague. + * @param {string} setup - La partie préliminaire de la blague. + * @param {string} punchline - La chute de la blague. + * @param {string} image - L'URL de l'image associée à la blague. + */ constructor(id: string, type: string, setup: string, punchline: string, image: string) { super(type, setup, punchline, image); // Assuming Joke class has these properties this._id = id; } - get id():string { + + /** + * @brief Obtient l'identifiant de la blague. + * @return {string} L'identifiant de la blague. + */ + get id(): string { return this._id; } - set id(id:string) { + + /** + * @brief Modifie l'identifiant de la blague. + * @param {string} id - Le nouvel identifiant de la blague. + */ + set id(id: string) { this._id = id; } + + /** + * @brief Obtient une description textuelle de la blague. + * @return {string} La description de la blague. + */ description(): string { return `ID: ${this.id}, Setup: ${this.setup}, Punchline: ${this.punchline}`; } -} \ No newline at end of file +} diff --git a/src/tp-react-native/model/Joke.ts b/src/tp-react-native/model/Joke.ts index 9304d85..6ba180d 100644 --- a/src/tp-react-native/model/Joke.ts +++ b/src/tp-react-native/model/Joke.ts @@ -1,9 +1,25 @@ +/** + * @file Joke.ts + * @brief Définition de la classe abstraite Joke. + */ + +/** + * @class + * @brief Classe abstraite représentant une blague. + */ export abstract class Joke { private _type: string; private _setup: string; private _punchline: string; private _image: string; + /** + * @brief Constructeur de la classe Joke. + * @param {string} type - Le type de la blague. + * @param {string} setup - La partie préliminaire de la blague. + * @param {string} punchline - La chute de la blague. + * @param {string} image - L'URL de l'image associée à la blague. + */ constructor(type: string, setup: string, punchline: string, image: string) { this._type = type; this._setup = setup; @@ -11,33 +27,82 @@ export abstract class Joke { this._image = image; } + /** + * @brief Obtient le type de la blague. + * @return {string} Le type de la blague. + */ get type() { return this._type; } - get setup():string { + + /** + * @brief Obtient la partie préliminaire de la blague. + * @return {string} La partie préliminaire de la blague. + */ + get setup(): string { return this._setup; } - get punchline():string { + + /** + * @brief Obtient la chute de la blague. + * @return {string} La chute de la blague. + */ + get punchline(): string { return this._punchline; } - get image():string { + + /** + * @brief Obtient l'URL de l'image associée à la blague. + * @return {string} L'URL de l'image associée à la blague. + */ + get image(): string { return this._image; } - set type(theType:string) { + + /** + * @brief Modifie le type de la blague. + * @param {string} theType - Le nouveau type de la blague. + */ + set type(theType: string) { this._type = theType; } + + /** + * @brief Modifie la partie préliminaire de la blague. + * @param {string} theSetup - La nouvelle partie préliminaire de la blague. + */ public set setup(theSetup: string) { this._setup = theSetup; } - public set punchline(thePunchline:string) { + + /** + * @brief Modifie la chute de la blague. + * @param {string} thePunchline - La nouvelle chute de la blague. + */ + public set punchline(thePunchline: string) { this._punchline = thePunchline; } - public set image(theImage:string) { + + /** + * @brief Modifie l'URL de l'image associée à la blague. + * @param {string} theImage - Le nouvel URL de l'image associée à la blague. + */ + public set image(theImage: string) { this._image = theImage; } + + /** + * @brief Obtient un résumé de la blague. + * @return {string} Un résumé de la blague. + */ public summary(): string { - return this.punchline.substring(0,24) + "..."; + return this.punchline.substring(0, 24) + "..."; } + + /** + * @brief Obtient une description textuelle de la blague. + * @return {string} Une description textuelle de la blague. + */ public description(): string { return this.type + this.summary; } diff --git a/src/tp-react-native/model/JokeFactory.ts b/src/tp-react-native/model/JokeFactory.ts index 4102347..8267b7d 100644 --- a/src/tp-react-native/model/JokeFactory.ts +++ b/src/tp-react-native/model/JokeFactory.ts @@ -1,7 +1,21 @@ +/** + * @file JokeFactory.ts + * @brief Définition de la classe JokeFactory. + */ + import { CustomJoke } from "./CustomJoke"; import { SampleJoke } from "./SampleJoke"; +/** + * @class + * @brief Fabrique de blagues permettant de créer des instances de blagues à partir de données JSON. + */ export class JokeFactory { + /** + * @brief Crée des instances de blagues personnalisées à partir d'un tableau JSON. + * @param {string} jsonArray - Tableau JSON représentant les blagues personnalisées. + * @return {CustomJoke[]} Tableau d'instances de blagues personnalisées. + */ public static createCustomJokes(jsonArray: string): CustomJoke[] { const jsonObjects: any[] = JSON.parse(jsonArray); const customJokes: CustomJoke[] = []; @@ -20,6 +34,11 @@ export class JokeFactory { return customJokes; } + /** + * @brief Crée des instances de blagues d'échantillon à partir d'un tableau JSON. + * @param {string} jsonArray - Tableau JSON représentant les blagues d'échantillon. + * @return {SampleJoke[]} Tableau d'instances de blagues d'échantillon. + */ public static createSampleJokes(jsonArray: string): SampleJoke[] { const jsonObjects: any[] = JSON.parse(jsonArray); const sampleJokes: SampleJoke[] = []; diff --git a/src/tp-react-native/model/SampleJoke.ts b/src/tp-react-native/model/SampleJoke.ts index f499b23..cb8e157 100644 --- a/src/tp-react-native/model/SampleJoke.ts +++ b/src/tp-react-native/model/SampleJoke.ts @@ -1,17 +1,51 @@ +/** + * @file SampleJoke.ts + * @brief Définition de la classe SampleJoke. + */ + import { Joke } from "./Joke"; +/** + * @class + * @brief Classe représentant une blague d'échantillon. + * @extends Joke + */ export class SampleJoke extends Joke { - private _id:number; + private _id: number; + + /** + * @brief Constructeur de la classe SampleJoke. + * @param {number} id - L'identifiant de la blague d'échantillon. + * @param {string} type - Le type de la blague. + * @param {string} setup - La partie préliminaire de la blague. + * @param {string} punchline - La chute de la blague. + * @param {string} image - L'URL de l'image associée à la blague. + */ constructor(id: number, type: string, setup: string, punchline: string, image: string) { super(type, setup, punchline, image); // Assuming Joke class has these properties this._id = id; } - get id():number { + + /** + * @brief Obtient l'identifiant de la blague d'échantillon. + * @return {number} L'identifiant de la blague d'échantillon. + */ + get id(): number { return this._id; } - set id(id:number) { + + /** + * @brief Modifie l'identifiant de la blague d'échantillon. + * @param {number} id - Le nouvel identifiant de la blague d'échantillon. + */ + set id(id: number) { this._id = id; } + + /** + * @brief Obtient une description textuelle de la blague d'échantillon. + * @return {string} Une description textuelle de la blague d'échantillon. + */ description(): string { return `ID: ${this.id}, Setup: ${this.setup}, Punchline: ${this.punchline}`; } diff --git a/src/tp-react-native/screens/HomeScreen.tsx b/src/tp-react-native/screens/HomeScreen.tsx index d320234..eb4e7e1 100644 --- a/src/tp-react-native/screens/HomeScreen.tsx +++ b/src/tp-react-native/screens/HomeScreen.tsx @@ -5,16 +5,13 @@ import { sampleJokeStub } from '../data/stub/SampleJokeStub'; import { SafeAreaView } from 'react-native' import JokeListItem from "../components/JokeListItem"; import '../types/extension'; -import {darksalmonColor, whiteColor, greyColor, indigoColor, purpleColor} from "../assets/Theme"; +import {darksalmonColor, indigoColor, purpleColor} from "../assets/Theme"; export default function HomeScreen() { const allJokes = [...customJokeStub, ...sampleJokeStub]; return ( <> - - {/**/} - {/*setStatusBarStyle(STYLES[0]);*/} Catalogue