From a453ae33260a690441f257ac67d29d131822c06c Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Sun, 2 Apr 2023 19:18:14 +0200 Subject: [PATCH] Add some tools --- src/data/Project.ts | 8 +-- src/data/Tool.ts | 156 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 131 insertions(+), 33 deletions(-) diff --git a/src/data/Project.ts b/src/data/Project.ts index 0383244..fa5efda 100644 --- a/src/data/Project.ts +++ b/src/data/Project.ts @@ -1,11 +1,11 @@ import Organization, {Limouzik} from "./Organization"; -import Tool, {Symfony, React} from "./Tool"; +import Tool, {Symfony, React, Unity3D} from "./Tool"; interface Project { - organization: Organization, + organization: Organization | null, name: string, description: string, - tools: Array + tools: Tool[] } export const SiteWebLimouzik: Project = { @@ -33,5 +33,5 @@ export const LimouzikV4: Project = { organization: Limouzik, name: 'Application V4', description: 'Application V4', - tools: [React] + tools: [Unity3D] } \ No newline at end of file diff --git a/src/data/Tool.ts b/src/data/Tool.ts index 07fc33a..e7842d2 100644 --- a/src/data/Tool.ts +++ b/src/data/Tool.ts @@ -1,9 +1,16 @@ enum ToolType { - LANGUAGE, FRAMEWORK, LIB_OR_PACKAGE, OTHER + LANGUAGE = 0b0001, + FRAMEWORK = 0b0010, + LIB_OR_PACKAGE = 0b0100, + OTHER = 0b1000 } enum ToolPlatform { - MOBILE, WEB_FRONT, WEB_BACK, SYSTEM, DESKTOP + MOBILE = 0b00001, + WEB_FRONT = 0b00010, + WEB_BACK = 0b00100, + SYSTEM = 0b01000, + DESKTOP = 0b10000 } interface Tool { @@ -13,14 +20,28 @@ interface Tool { description: string | null, icon: string | null, url: string, - tools: Array, - platforms: Array + depend_tools: Tool[], + developed_platforms: ToolPlatform[] } export default Tool // RUBY +export const TOOLS: Tool[] = [ + Ruby, Rails, Php, Symfony, Sylius, Javascript, Typescript, React, Hotwire, Dart, Flutter, Rust, + Java, OpenGL, LWJGL, CSharp, Unity3D, GodotEngine +] + +/** + * @param types + * @example + * filterToolByTypes(ToolType.FRAMEWORK | ToolType.LANGUAGE) + */ +export function filterToolByTypes(types: number) { + TOOLS.filter((t) => t.type.valueOf() & types > 0) +} + export const Ruby: Tool = { type: ToolType.LANGUAGE, name: 'Ruby', @@ -28,8 +49,8 @@ export const Ruby: Tool = { icon: null, description: null, url: 'https://www.ruby-lang.org/', - tools: [], - platforms: [ToolPlatform.MOBILE, ToolPlatform.WEB_BACK] + depend_tools: [], + developed_platforms: [ToolPlatform.MOBILE, ToolPlatform.WEB_BACK] } export const Rails: Tool = { @@ -39,8 +60,8 @@ export const Rails: Tool = { icon: null, description: null, url: 'https://rubyonrails.org/', - tools: [Ruby], - platforms: [ToolPlatform.WEB_BACK] + depend_tools: [Ruby], + developed_platforms: [ToolPlatform.WEB_BACK] } // PHP @@ -52,8 +73,8 @@ export const Php: Tool = { version: '5 et 7', description: null, url: 'https://www.php.net/', - tools: [], - platforms: [ToolPlatform.WEB_BACK] + depend_tools: [], + developed_platforms: [ToolPlatform.WEB_BACK] } export const Symfony: Tool = { @@ -63,8 +84,19 @@ export const Symfony: Tool = { icon: null, description: null, url: 'https://symfony.com/', - tools: [Php], - platforms: [ToolPlatform.WEB_BACK] + depend_tools: [Php], + developed_platforms: [ToolPlatform.WEB_BACK] +} + +export const Sylius: Tool = { + type: ToolType.FRAMEWORK, + name: 'Sylius', + version: '1.6', + icon: null, + description: null, + url: 'https://symfony.com/', + depend_tools: [Symfony], + developed_platforms: [ToolPlatform.WEB_BACK] } // JS @@ -76,8 +108,8 @@ export const Javascript: Tool = { icon: null, description: null, url: 'https://www.javascript.com/', - tools: [], - platforms: [ToolPlatform.WEB_BACK, ToolPlatform.WEB_FRONT, ToolPlatform.MOBILE, ToolPlatform.DESKTOP] + depend_tools: [], + developed_platforms: [ToolPlatform.WEB_BACK, ToolPlatform.WEB_FRONT] } export const Typescript: Tool = { @@ -87,8 +119,8 @@ export const Typescript: Tool = { icon: null, description: null, url: 'https://www.typescriptlang.org/', - tools: [], - platforms: Javascript.platforms + depend_tools: [], + developed_platforms: Javascript.developed_platforms } export const React: Tool = { @@ -98,8 +130,8 @@ export const React: Tool = { icon: null, description: null, url: 'https://react.dev/', - tools: [Javascript, Typescript], - platforms: [ToolPlatform.WEB_FRONT] + depend_tools: [Javascript, Typescript], + developed_platforms: [ToolPlatform.WEB_FRONT] } export const Hotwire: Tool = { @@ -109,8 +141,8 @@ export const Hotwire: Tool = { icon: null, description: 'Turbo + Stimulus', url: 'https://stimulus.hotwired.dev/', - tools: [Javascript, Typescript, Rails], - platforms: [ToolPlatform.WEB_FRONT] + depend_tools: [Javascript, Typescript, Rails], + developed_platforms: [ToolPlatform.WEB_FRONT] } // CSS @@ -124,32 +156,98 @@ export const Dart: Tool = { icon: null, description: null, url: 'https://dart.dev/', - tools: [], - platforms: [ToolPlatform.MOBILE, ToolPlatform.SYSTEM, ToolPlatform.WEB_FRONT, ToolPlatform.WEB_BACK, ToolPlatform.DESKTOP] + depend_tools: [], + developed_platforms: [ToolPlatform.MOBILE, ToolPlatform.DESKTOP] } -export const Flutter : Tool = { +export const Flutter: Tool = { type: ToolType.FRAMEWORK, name: 'Flutter', version: '2 - 3', icon: null, description: null, url: 'https://flutter.dev/', - tools: [Dart], - platforms: [ToolPlatform.MOBILE, ToolPlatform.WEB_FRONT, ToolPlatform.WEB_BACK, ToolPlatform.DESKTOP] + depend_tools: [Dart], + developed_platforms: Dart.developed_platforms } // RUST -export const Rust : Tool = { +export const Rust: Tool = { type: ToolType.LANGUAGE, name: 'Rust', version: 'Édition 2018, 2021', icon: null, description: null, url: 'https://www.rust-lang.org/', - tools: [], - platforms: [ToolPlatform.SYSTEM, ToolPlatform.WEB_FRONT, ToolPlatform.WEB_BACK] + depend_tools: [], + developed_platforms: [ToolPlatform.SYSTEM, ToolPlatform.WEB_FRONT, ToolPlatform.WEB_BACK] } -// OTHER \ No newline at end of file +// 3D + +export const Java: Tool = { + type: ToolType.LANGUAGE, + name: 'Java', + version: '5 - 8', + icon: null, + description: null, + url: 'https://www.java.com/', + depend_tools: [], + developed_platforms: [ToolPlatform.MOBILE, ToolPlatform.WEB_BACK, ToolPlatform.DESKTOP] +} + +export const OpenGL: Tool = { + type: ToolType.OTHER, + name: 'OpenGL', + version: '<= 4.0', + icon: null, + description: null, + url: 'https://www.opengl.org/', + depend_tools: [], + developed_platforms: [ToolPlatform.DESKTOP] +} + +export const LWJGL: Tool = { + type: ToolType.LIB_OR_PACKAGE, + name: 'LWJGL', + version: '2 et 3', + icon: null, + description: null, + url: 'https://www.opengl.org/', + depend_tools: [Java, OpenGL], + developed_platforms: [ToolPlatform.DESKTOP] +} + +export const CSharp: Tool = { + type: ToolType.LANGUAGE, + name: 'C#', + version: null, + icon: null, + description: null, + url: 'https://www.microsoft.com', + depend_tools: [], + developed_platforms: [ToolPlatform.DESKTOP, ToolPlatform.MOBILE, ToolPlatform.WEB_FRONT] +} + +export const Unity3D: Tool = { + type: ToolType.OTHER, + name: 'Unity3D', + version: '2018-2019', + icon: null, + description: null, + url: 'https://unity.com/', + depend_tools: [CSharp, OpenGL], + developed_platforms: CSharp.developed_platforms +} + +export const GodotEngine: Tool = { + type: ToolType.OTHER, + name: 'GodotEngine', + version: '3.x', + icon: null, + description: null, + url: 'https://godotengine.org/', + depend_tools: [CSharp, OpenGL], + developed_platforms: CSharp.developed_platforms +} \ No newline at end of file