comment some code and update readme

pull/1/head
Antoine PEREDERII 1 year ago
parent 5d9ada3edd
commit 6265dd9c58

@ -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 ## Avancés du projet
* [x] Partie 0 - Project creation * [x] Partie 0 - Project creation
* [x] Partie 1 - Project organisation * [x] Partie 1 - Project organisation
* [ ] Partie 2 - Typescript types * [X] Partie 2 - Typescript types
* [ ] Partie 3 - Screens * [X] Partie 3 - Screens
* [ ] Partie 4 - Components * [X] Partie 4 - Components
* [ ] Partie 5 - FlatList * [X] Partie 5 - FlatList
* [ ] Partie 6 - Safe Area * [X] Partie 6 - Safe Area
* [ ] Partie 7 - Navigation * [ ] Partie 7 - Navigation
* [ ] Partie 8 - Hooks * [ ] Partie 8 - Hooks
* [ ] Partie 9 - Redux Store * [ ] Partie 9 - Redux Store

@ -1,7 +1,7 @@
import {StyleSheet, Text, View, FlatList, Image} from 'react-native'; import {StyleSheet, Text, View, FlatList, Image} from 'react-native';
import {SampleJoke} from "../model/SampleJoke"; import {SampleJoke} from "../model/SampleJoke";
import {CustomJoke} from "../model/CustomJoke"; import {CustomJoke} from "../model/CustomJoke";
import {darksalmonColor, whiteColor, greyColor, indigoColor, purpleColor} from "../assets/Theme"; import {darksalmonColor, whiteColor, greyColor, indigoColor} from "../assets/Theme";
type JokeListItemProps = { type JokeListItemProps = {
jokes: CustomJoke[] | SampleJoke[]; jokes: CustomJoke[] | SampleJoke[];

@ -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'; 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"}]'); 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"}]');

@ -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'; 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"}]');
/**
* @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"}]');

@ -1,17 +1,51 @@
/**
* @file CustomJoke.ts
* @brief Définition de la classe CustomJoke.
*/
import { Joke } from './Joke'; import { Joke } from './Joke';
/**
* @class
* @brief Représente une blague personnalisée avec un identifiant unique.
* @extends Joke
*/
export class CustomJoke 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) { constructor(id: string, type: string, setup: string, punchline: string, image: string) {
super(type, setup, punchline, image); // Assuming Joke class has these properties super(type, setup, punchline, image); // Assuming Joke class has these properties
this._id = id; 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; 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; this._id = id;
} }
/**
* @brief Obtient une description textuelle de la blague.
* @return {string} La description de la blague.
*/
description(): string { description(): string {
return `ID: ${this.id}, Setup: ${this.setup}, Punchline: ${this.punchline}`; return `ID: ${this.id}, Setup: ${this.setup}, Punchline: ${this.punchline}`;
} }

@ -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 { export abstract class Joke {
private _type: string; private _type: string;
private _setup: string; private _setup: string;
private _punchline: string; private _punchline: string;
private _image: 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) { constructor(type: string, setup: string, punchline: string, image: string) {
this._type = type; this._type = type;
this._setup = setup; this._setup = setup;
@ -11,33 +27,82 @@ export abstract class Joke {
this._image = image; this._image = image;
} }
/**
* @brief Obtient le type de la blague.
* @return {string} Le type de la blague.
*/
get type() { get type() {
return this._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; 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; 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; 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; 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) { public set setup(theSetup: string) {
this._setup = theSetup; 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; 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; this._image = theImage;
} }
/**
* @brief Obtient un résumé de la blague.
* @return {string} Un résumé de la blague.
*/
public summary(): string { 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 { public description(): string {
return this.type + this.summary; return this.type + this.summary;
} }

@ -1,7 +1,21 @@
/**
* @file JokeFactory.ts
* @brief Définition de la classe JokeFactory.
*/
import { CustomJoke } from "./CustomJoke"; import { CustomJoke } from "./CustomJoke";
import { SampleJoke } from "./SampleJoke"; 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 { 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[] { public static createCustomJokes(jsonArray: string): CustomJoke[] {
const jsonObjects: any[] = JSON.parse(jsonArray); const jsonObjects: any[] = JSON.parse(jsonArray);
const customJokes: CustomJoke[] = []; const customJokes: CustomJoke[] = [];
@ -20,6 +34,11 @@ export class JokeFactory {
return customJokes; 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[] { public static createSampleJokes(jsonArray: string): SampleJoke[] {
const jsonObjects: any[] = JSON.parse(jsonArray); const jsonObjects: any[] = JSON.parse(jsonArray);
const sampleJokes: SampleJoke[] = []; const sampleJokes: SampleJoke[] = [];

@ -1,17 +1,51 @@
/**
* @file SampleJoke.ts
* @brief Définition de la classe SampleJoke.
*/
import { Joke } from "./Joke"; import { Joke } from "./Joke";
/**
* @class
* @brief Classe représentant une blague d'échantillon.
* @extends Joke
*/
export class SampleJoke 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) { constructor(id: number, type: string, setup: string, punchline: string, image: string) {
super(type, setup, punchline, image); // Assuming Joke class has these properties super(type, setup, punchline, image); // Assuming Joke class has these properties
this._id = id; 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; 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; 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 { description(): string {
return `ID: ${this.id}, Setup: ${this.setup}, Punchline: ${this.punchline}`; return `ID: ${this.id}, Setup: ${this.setup}, Punchline: ${this.punchline}`;
} }

@ -5,16 +5,13 @@ import { sampleJokeStub } from '../data/stub/SampleJokeStub';
import { SafeAreaView } from 'react-native' import { SafeAreaView } from 'react-native'
import JokeListItem from "../components/JokeListItem"; import JokeListItem from "../components/JokeListItem";
import '../types/extension'; import '../types/extension';
import {darksalmonColor, whiteColor, greyColor, indigoColor, purpleColor} from "../assets/Theme"; import {darksalmonColor, indigoColor, purpleColor} from "../assets/Theme";
export default function HomeScreen() { export default function HomeScreen() {
const allJokes = [...customJokeStub, ...sampleJokeStub]; const allJokes = [...customJokeStub, ...sampleJokeStub];
return ( return (
<> <>
<SafeAreaView style={styles.topSafeArea}/> <SafeAreaView style={styles.topSafeArea}/>
{/*<StatusBar style={styles.status}/>*/}
{/*setStatusBarStyle(STYLES[0]);*/}
<SafeAreaView style={styles.container}> <SafeAreaView style={styles.container}>
<View style={styles.title}> <View style={styles.title}>
<Text style={styles.centered}>Catalogue</Text> <Text style={styles.centered}>Catalogue</Text>

Loading…
Cancel
Save