diff --git a/cryptide_project/package-lock.json b/cryptide_project/package-lock.json index 8c9a4a8..1191522 100644 --- a/cryptide_project/package-lock.json +++ b/cryptide_project/package-lock.json @@ -8,6 +8,10 @@ "name": "cryptide", "version": "1.0.0", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-regular-svg-icons": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2598,6 +2602,63 @@ "tslib": "^2.4.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", + "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", + "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.4.2.tgz", + "integrity": "sha512-0+sIUWnkgTVVXVAPQmW4vxb9ZTHv0WstOa3rBx9iPxrrrDH6bNLsDYuwXF9b6fGm+iR7DKQvQshUH/FJm3ed9Q==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", + "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", + "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", diff --git a/cryptide_project/package.json b/cryptide_project/package.json index 1bb524e..54fa6ca 100644 --- a/cryptide_project/package.json +++ b/cryptide_project/package.json @@ -2,6 +2,10 @@ "name": "cryptide", "version": "1.0.0", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.4.2", + "@fortawesome/free-regular-svg-icons": "^6.4.2", + "@fortawesome/free-solid-svg-icons": "^6.4.2", + "@fortawesome/react-fontawesome": "^0.2.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/cryptide_project/src/Components/GraphContainer.tsx b/cryptide_project/src/Components/GraphContainer.tsx index f965aec..ef1d2bb 100644 --- a/cryptide_project/src/Components/GraphContainer.tsx +++ b/cryptide_project/src/Components/GraphContainer.tsx @@ -3,7 +3,9 @@ import { DataSet, Network} from "vis-network/standalone/esm/vis-network"; import EdgesCreator from "../source/EdgesCreator"; import GraphCreator from "../source/Graph/GraphCreator"; import IndiceChooser from "../source/IndiceChooser"; +import SportIndice from "../source/Indices/SportIndice"; import NetworkGenerator from "../source/NetworkGenerator"; +import Sport from "../source/Sport"; import Stub from "../source/Stub"; import "./GraphContainer.css"; @@ -24,8 +26,14 @@ edgesCreator.CreateAllEdges(network, person, choosenIndices) const graph = GraphCreator.CreateGraph(network) + +let indice = new SportIndice(12, [Sport.TENNIS, Sport.BASEBALL]) console.log(network) console.log(graph) +choosenIndices.forEach((indice) =>{ + console.log(indice.ToString("fr")) +}); +console.log(person) const MyGraphComponent = () => { diff --git a/cryptide_project/src/Translations/en.json b/cryptide_project/src/Translations/en.json index acc8709..3391909 100644 --- a/cryptide_project/src/Translations/en.json +++ b/cryptide_project/src/Translations/en.json @@ -26,5 +26,38 @@ "create_room" : "Create room", "play_solo" : "Single player", - "play" : "PLAY" + "play" : "PLAY", + + "football": "Football", + "basketball": "Basketball", + "baseball": "Baseball", + "tennis": "Tennis", + "bowling": "Bowling", + + "white": "White", + "black": "Black", + "blond": "Blond", + "redhead": "Red", + "brown": "Brown", + + "and": "and", + "or": "or", + "or_sport": "or", + + + "age_indice_start": "The suspect is between", + "age_indice_more_start": "The suspect is older than or", + "age_indice_end": "years old", + + "color_edges_start": "The suspect has at least one friend with", + "color_edges_end": "hair", + + "color_start": "The suspect has", + "color_end": "hair", + + "nb_friends_indice_start": "The suspect has at least", + "nb_friends_indice_end": "friends", + + "sport_start": "The suspect plays at least", + "sport_end": "" } \ No newline at end of file diff --git a/cryptide_project/src/Translations/fr.json b/cryptide_project/src/Translations/fr.json index 6f6ec71..6d0e711 100644 --- a/cryptide_project/src/Translations/fr.json +++ b/cryptide_project/src/Translations/fr.json @@ -26,5 +26,37 @@ "join" : "Rejoindre", "create_room" : "Créer une partie", "play_solo" : "Jouer seul", - "play" : "JOUER" + "play" : "JOUER", + + "football": "Football", + "basketball": "Basketball", + "baseball": "Baseball", + "tennis": "Tennis", + "bowling": "Bowling", + + "white": "Blanc", + "black": "Noir", + "blond": "Blond", + "redhead": "Roux", + "brown": "Brun", + + "and": "et", + "or": "ou", + "or_sport": "ou du", + + "age_indice_start": "Le suspect a entre", + "age_indice_more_start": "Le suspect a ou a plus de", + "age_indice_end": "ans", + + "color_edges_start": "Le suspect a au moins un ami avec les cheveux", + "color_edges_end": "", + + "color_start": "Le suspect a les cheveux", + "color_end": "", + + "nb_friends_indice_start": "Le suspect a au moins", + "nb_friends_indice_end": "amis", + + "sport_start": "Le suspect fait au moins du", + "sport_end": "" } diff --git a/cryptide_project/src/res/names.json b/cryptide_project/src/res/names.json new file mode 100644 index 0000000..6d376b6 --- /dev/null +++ b/cryptide_project/src/res/names.json @@ -0,0 +1,97 @@ +{ + "names": [ + "Emma", + "Olivia", + "Sophia", + "Ava", + "Isabella", + "Mia", + "Amelia", + "Harper", + "Evelyn", + "Abigail", + "Emily", + "Charlotte", + "Scarlett", + "Grace", + "Lily", + "Aria", + "Chloe", + "Zoey", + "Penelope", + "Riley", + "Layla", + "Stella", + "Aurora", + "Natalie", + "Zoe", + "Lucy", + "Hannah", + "Leah", + "Victoria", + "Eleanor", + "Hazel", + "Violet", + "Aurora", + "Ruby", + "Ivy", + "Eleanor", + "Savannah", + "Alice", + "Claire", + "Nora", + "Lillian", + "Mila", + "Peyton", + "Aaliyah", + "Gabriella", + "Eliana", + "Bella", + "Sadie", + "Hailey", + "Aurora", + "Liam", + "Noah", + "Oliver", + "Elijah", + "William", + "James", + "Benjamin", + "Lucas", + "Henry", + "Alexander", + "Jackson", + "Aiden", + "Sebastian", + "Carter", + "Daniel", + "Matthew", + "Wyatt", + "Jack", + "Jayden", + "Owen", + "Noah", + "Ethan", + "Mason", + "Logan", + "Caden", + "Samuel", + "David", + "Joseph", + "Michael", + "Gabriel", + "Caleb", + "Ryan", + "Isaac", + "Luke", + "Andrew", + "Nathan", + "Dylan", + "Adam", + "Joshua", + "Connor", + "Brayden", + "Julian" + ] +} + \ No newline at end of file diff --git a/cryptide_project/src/source/Color.ts b/cryptide_project/src/source/Color.ts index 49c3e0f..acf8dc3 100644 --- a/cryptide_project/src/source/Color.ts +++ b/cryptide_project/src/source/Color.ts @@ -1,9 +1,9 @@ enum Color { - BLANC, - NOIR, + WHITE, + BLACK, BLOND, - ROUX, - BRUN, + REDHEAD, + BROWN, } export default Color \ No newline at end of file diff --git a/cryptide_project/src/source/EdgesCreator.ts b/cryptide_project/src/source/EdgesCreator.ts index fee63e6..8885158 100644 --- a/cryptide_project/src/source/EdgesCreator.ts +++ b/cryptide_project/src/source/EdgesCreator.ts @@ -92,6 +92,7 @@ class EdgesCreator{ if (p != choosenPerson){ const rand = Math.floor(Math.random() * 4) test.set(p.getId(), tabEdgesSize[rand] + p.getFriends().length) + tabEdgesSize.splice(rand, 1) } }); personNetwork.getPersons().forEach((p) => { diff --git a/cryptide_project/src/source/EnumExtender.ts b/cryptide_project/src/source/EnumExtender.ts index 51e94c6..853ebf6 100644 --- a/cryptide_project/src/source/EnumExtender.ts +++ b/cryptide_project/src/source/EnumExtender.ts @@ -1,118 +1,99 @@ import Color from "./Color"; import Sport from "./Sport"; +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faFutbol, faBasketballBall } from '@fortawesome/free-solid-svg-icons'; +import { parseJsonText } from "typescript"; + + +function GetJsonFile(lang: string){ + const response = require(`../Translations/${lang}.json`); + const data = response; + return data +} function ColorToString(color: Color, lang: string): string{ + let json = GetJsonFile(lang) switch(color){ - case Color.BLANC: - switch(lang){ - case "en": - return "White" - default: - return "Blanc" - } - case Color.NOIR: - switch(lang){ - case "en": - return "Black" - default: - return "Noir" - } + case Color.WHITE: + return json.white + case Color.BLACK: + return json.black case Color.BLOND: - switch(lang){ - case "en": - return "Blond" - default: - return "Blond" - } - case Color.ROUX: - switch(lang){ - case "en": - return "Redhead" - default: - return "Roux" - } - case Color.BRUN: - switch(lang){ - case "en": - return "Brown" - default: - return "Brun" - } + return json.blond + case Color.REDHEAD: + return json.redhead + case Color.BROWN: + return json.brown } } function ColorToHexa(color: Color): string{ switch(color){ - case Color.BLANC: + case Color.WHITE: return "#FFFFFF" - case Color.NOIR: + case Color.BLACK: return "#000000" case Color.BLOND: return "#E2BC74" - case Color.ROUX: + case Color.REDHEAD: return "#FF8B00" - case Color.BRUN: + case Color.BROWN: return "#5B3C11" } } function ColorToColorFont(color: Color): string{ switch(color){ - case Color.BLANC: + case Color.WHITE: return "#000000" - case Color.NOIR: + case Color.BLACK: return "#FFFFFF" case Color.BLOND: return "#000000" - case Color.ROUX: + case Color.REDHEAD: return "#000000" - case Color.BRUN: + case Color.BROWN: return "#FFFFFF" } } function SportToString(sport: Sport, lang: string): string{ + let json = GetJsonFile(lang) switch(sport){ case Sport.FOOT: - switch(lang){ - case "en": - return "Football" - default: - return "Football" - } - case Sport.RUGBY: - switch(lang){ - case "en": - return "Rugby" - default: - return "Rugby" - } + return json.football + case Sport.BASEBALL: + return json.baseball case Sport.BASKET: - switch(lang){ - case "en": - return "Basket" - default: - return "Basket" - } + return json.basketball case Sport.TENNIS: - switch(lang){ - case "en": - return "Tennis" - default: - return "Tennis" - } - case Sport.CURLING: - switch(lang){ - case "en": - return "Curling" - default: - return "Curling" - } + return json.tennis + case Sport.BOWLING: + return json.bowling case Sport.AUCUN: return "" } } -export {ColorToString, SportToString, ColorToHexa, ColorToColorFont} + + +function SportToIcon(sport: Sport): string{ + switch(sport){ + case Sport.FOOT: + return "⚽" + case Sport.BASEBALL: + return "⚾" + case Sport.BASKET: + return "🏀" + case Sport.TENNIS: + return "🎾" + case Sport.BOWLING: + return "🎳" + case Sport.AUCUN: + return "" + } +} +export {ColorToString, SportToString, ColorToHexa, ColorToColorFont, SportToIcon, GetJsonFile} diff --git a/cryptide_project/src/source/Graph/GraphCreator.ts b/cryptide_project/src/source/Graph/GraphCreator.ts index 1464e75..5b4ad6b 100644 --- a/cryptide_project/src/source/Graph/GraphCreator.ts +++ b/cryptide_project/src/source/Graph/GraphCreator.ts @@ -1,5 +1,5 @@ import Edge from "./Edge"; -import { ColorToColorFont, ColorToHexa, SportToString } from "../EnumExtender"; +import { ColorToColorFont, ColorToHexa, SportToIcon, SportToString } from "../EnumExtender"; import GraphPerson from "./GraphPerson"; import NodePerson from "./NodePerson"; import PersonNetwork from "../PersonsNetwork"; @@ -13,16 +13,11 @@ class GraphCreator{ network.getPersons().forEach((p) =>{ let label = p.getName() + "\n" + p.getAge() + "\n" for (let i = 0; i